Similar presentations:
OS_prezentation
1. Операционные системы: внутреннее устройство
Ядро, процессы, планирование, память, файлы и среда выполнения.2. О чём будет идти речь
12
3
4
Ядро и процессы
Как программа общается с железом?
Планирование
Как ОС решает, кому отдать процессорное время?
Память и файлы
Как ОС хранит данные пользователя?
Среда выполнения
Контейнеры, загрузка, безопасность, тенденции
2
3. Как работает системный вызов:
1Обёртка
Библиотека libc (стандартная библиотека C) кладёт номер вызова и
аргументы в регистры
2
Инструкция syscall
Syscall (system call, системный вызов): переключает процессор из
режима пользователя (Кольцо 3) в режим ядра (Кольцо 0)
3
Проверки
Ядро сохраняет регистры, проверяет номер и аргументы, копирует
данные из памяти пользователя
4
Выполнение
Ядро выполняет работу например, чтение из файла через файловую
систему и драйвер диска
5
Возврат
Инструкция sysret (system return) возвращает управление обратно в
программу (Кольцо 3)
vDSO (virtual Dynamic Shared Object): вызов clock_gettime работает без входа в ядро.
3
4. Прерывания и исключения
1Прерывания
От устройств (таймер,
клавиатура, диск, сеть).
Приходят асинхронно;
обработчик ищется в таблице
IDT (Interrupt Descriptor
Table).
2
Исключения
Вызваны самой инструкцией:
деление на ноль, ошибка
доступа, page fault. Page fault
(страничная ошибка) —
штатный механизм
виртуальной памяти.
3
Системные
вызовы
Программное прерывание по
инициативе приложения:
запрос услуги ядра.
Таймерное прерывание срабатывает десятки–тысячи раз в секунду — и даёт ОС возможность отобрать
процессор. Это основа вытесняющей многозадачности.
4
5. Процесс изнутри: PCB и fork
Что ядро хранит о процессеfork() + exec()
fork создаёт копию процесса
COW (Copy-on-Write): страницы общие,
копируются при первой записи
exec заменяет программу в процессе
Windows делает это одним вызовом
CreateProcess
PCB (Process Control Block) — «паспорт»
процесса
PID (номер процесса), родитель, состояние,
приоритет
Сохранённые регистры процессора
Таблицы страниц, открытые файлы
fork()
копия (COW)
exec()
новая программа
5
6. Потоки: модели и цена
11:1 — потоки ядра
Linux, Windows: каждый
поток виден ядру и
планируется отдельно.
Можно выполнять на разных
ядрах.
2
M:N и корутины
Async/await, корутины C++20
(функции, которые сами
уступают управление): M
лёгких задач на N потоках
ядра, переключение без
ядра.
3
Цена
переключения
Между потоками одного
процесса таблицы страниц не
меняются, поэтому это
дешевле, чем переключение
между процессами.
6
7. Переключение контекста
1Прерывание таймер или ввод-вывод передаёт
2
Сохранение
регистры задачи A записываются в её
PCB
3
Выбор
планировщик выбирает следующую
задачу B
4
Загрузка
регистры B и таблицы страниц B;
сбрасывается кэш TLB
5
Возврат
управление передаётся B в режиме
пользователя
управление ядру
Скрытая цена
Кэши и TLB (Translation Lookaside
Buffer, кэш адресов) «остывают»:
данные нового процесса
приходится подгружать заново.
Поэтому планировщики стараются
не переносить задачу между
ядрами без необходимости.
7
8. Планировщик: что наиболее важно
1Время оборота
Две породы задач
от появления задачи до её завершения
2
Время ожидания
I/O-bound: упираются в ввод-вывод
сколько задача просидела в очереди готовых
3
Время отклика
до первой реакции — важно для интерактивных
4
CPU-bound: упираются в процессор
Пропускная способность
сколько задач завершается в единицу времени
5
Справедливость
никто не должен голодать
работа процессора
ожидание I/O
I/O — Input/Output (ввод-вывод); CPU — Central
Processing Unit (процессор)
8
9. 1. FCFS: просто и опасно
Задачи: P1 = 24 мс, P2 = 3 мс, P3 = 3 мс; все пришли в момент 0.P1
0
17 мс
среднее ожидание
P2
24
P3
27
30
FCFS (First Come, First Served) — первым пришёл, первым
обслужен
Минус: конвейерный эффект (короткие задачи ждут за длинной)
Просто, но для диалога с пользователем не годится
9
10. 2. SJF: оптимально, но нужен оракул
Задачи: P1 = 24 мс, P2 = 3 мс, P3 = 3 мс; все пришли в момент 0.P2
0
P3
3
3 мс
среднее ожидание
P1
6
30
SJF (Shortest Job First) — сначала самые короткие задачи
Минус: длину заранее не знаем (оцениваем по истории
выполнения), риск голодания длинных задач
Вытесняющая версия — SRTF (Shortest Remaining Time First),
минус в частых переключениях контекста.
10
11. 3. Round Robin: по кругу
Задачи: P1 = 24 мс, P2 = 3 мс, P3 = 3 мс; все пришли в момент 0.P1
0
P2
4
P3
7
5,7 мс
среднее ожидание (квант 4
мс)
P1
10
P1
14
P1
18
P1
22
P1
26
Round Robin («по кругу»): каждому по кванту времени, затем в
конец очереди
Минус: не учитывает приоритет задач. Квант мал — съедают
переключения; велик — получается FCFS
На практике квант — единицы–десятки миллисекунд
30
11
12. 4. MLFQ: учится на поведении
Очередь 1: высокий приоритет, квант 8 мсиспользовал весь квант
Новая задача — в самую верхнюю очередь
Израсходовала квант — опускается ниже
Отдала CPU раньше (ввод-вывод) — остаётся на
уровне
Периодически все поднимаются наверх (boost)
— защита от голодания
Минус: сложно настраивать (число очередей,
кванты)
Очередь 2: квант 16 мс
использовал весь квант
Очередь 3: FCFS, низкий приоритет
MLFQ (Multi-Level Feedback Queue) —
многоуровневая очередь с обратной связью:
быстро обслуживает короткие и интерактивные
задачи, не зная времён выполнения.
12
13. Планировщик Linux: CFS → EEVDF
CFS (2007–2023)EEVDF (с Linux 6.6)
Completely Fair Scheduler — «абсолютно
справедливый планировщик»
Earliest Eligible Virtual Deadline First — первым идёт
допущенная задача с ближайшим сроком
vruntime (virtual runtime, виртуальное
время работы): запускается задача с
минимальным vruntime
Вес задаёт nice (−20…19); задачи
хранятся в красно-чёрном дереве
Минус: нет срока ответа, много эвристик
Lag (“долг” процессора) — насколько
задаче недодали времени; допускаются
задачи с lag ≥ 0
Среди допущенных выбирается
ближайший виртуальный срок
Короткий slice (выделенный отрезок
времени) — ранний срок — быстрый
отклик. Минус: сложнее настройка
(нужно заранее подбирать slice)
13
14. Планировщики современных ОС
ОСПланировщик
Приоритеты
Реальное время
Linux
EEVDF (с 6.6); раньше CFS (2007–
2023)
nice −20…19, веса
SCHED_FIFO/RR,
SCHED_DEADLINE
Windows
Приоритетный, вытесняющий;
round-robin внутри уровня
32 уровня; 1–15
динамические
Уровни 16–31
(реальное время, не
жёсткое)
macOS / iOS
Mach: приоритет падает по мере
расхода CPU
0–127; классы QoS
(Quality of Service)
Полосы реального
времени
Android
Ядро Linux + EAS (Energy-Aware
Scheduling, учёт энергии)
nice и cgroups (группы
ресурсов ядра)
FIFO/RR для критичных
потоков
14
15. Виртуальные адреса и кэш TLB
Структура виртуального адреса:PML4
9 бит
PDPT
9 бит
PD
9 бит
PT
9 бит
Смещение
12 бит
PML4 — Page Map Level 4; PDPT — Page Directory Pointer Table; PD — Page Directory; PT — Page Table
Уровни нужны для экономии: таблицы для неиспользуемых областей не создаются
Одно обращение к памяти — до четырёх обращений к таблицам, поэтому есть кэш TLB (Translation
Lookaside Buffer)
Huge pages (большие страницы 2 МиБ, 1 ГиБ) пропускают уровни и снижают нагрузку на TLB
Пятиуровневая схема (LA57, 5-level paging) расширяет адрес до 57 бит
15
16. Замещение страниц
1FIFO
FIFO (First In, First Out): вытесняет самую
старую. Аномалия Биледи: больше кадров —
больше промахов.
3
Clock (алгоритм часов)
Приближает LRU битом обращения: «вторая
попытка». Основа практических схем.
2
LRU
LRU (Least Recently Used): вытесняет давно не
использованную. Точный учёт дорог.
4
Оптимальный
Вытеснить страницу, нужную позже всех.
Нереализуем, но служит эталоном.
Thrashing: рабочее множество не помещается в ОЗУ, и система «буксует» на подкачке.
16
17. inode и слой VFS
Приложения: open, read, writeVFS (Virtual File System): единый интерфейс
ext4 | NTFS | FAT | NFS
Блочный слой и драйвер диска
inode (index node, индексный узел) хранит
метаданные: размер, права, время, указатели
на блоки; имени в нём нет
Имя — запись в каталоге, указывающая на
inode, поэтому возможны жёсткие ссылки
Удаление файла уменьшает счётчик ссылок;
место освобождается при нуле
ext4 (Fourth Extended File System), NTFS (New
Technology File System), FAT (File Allocation
Table), NFS (Network File System)
Диск
17
18. Журналирование и Copy-on-Write
ЖурналированиеCopy-on-Write
ext4 (Fourth Extended File System), NTFS (New
Technology File System)
btrfs (B-tree FS), ZFS (Zettabyte FS), APFS (Apple FS)
Сначала запись в журнал, потом применение
изменений. После сбоя журнал проигрывают
или откатывают. Обычно журналируются
метаданные.
Блоки не перезаписываются: новые данные
пишутся в другое место, затем переключается
указатель. Снимки почти бесплатны, есть
контрольные суммы.
fsync (системный вызов)— единственный способ гарантировать, что данные на диске, а не в кэше ОС.
18
19. Виртуальные машины и контейнеры
Виртуальные машиныКонтейнеры
Приложения
Приложения
Гостевая ОС
Гостевая ОС
Приложения
Приложения
Среда контейнеров (Docker)
Гипервизор
Общее ядро ОС хоста
Оборудование
Оборудование
У каждой ВМ своё ядро: полная изоляция, но
тяжелее и дольше стартует.
Общее ядро; запуск за секунды; изоляция даёт
само ядро.
19
20. Как устроены контейнеры
1Namespaces
Что процесс видит: свои PID,
сеть, файловая система, имя
хоста, пользователи.
2
cgroups
control groups (группы
управления ресурсами).
Сколько может использовать:
лимиты и учёт CPU, памяти,
ввода-вывода.
3
VT-x / AMD-V
Аппаратная виртуализация
Intel и AMD: гость
исполняется прямо на
процессоре. На ней работает
KVM (Kernel-based Virtual
Machine).
Контейнер = процесс + namespaces + cgroups + слои файловой системы.
20
21. Что происходит при включении
1Прошивка
UEFI (Unified Extensible Firmware Interface) запускает самотест POST
(Power-On Self-Test)
2
EFI-раздел
ищет загрузчик на разделе ESP (EFI System Partition)
3
Загрузчик
GRUB (GRand Unified Bootloader) или Windows Boot Manager грузит
ядро и initramfs (временную файловую систему в памяти)
4
Ядро
настраивает память, драйверы и монтирует корневую файловую
систему
5
Первый процесс
init или systemd (системный менеджер) запускает службы и экран
входа
Secure Boot проверяет подпись загрузчика; Windows 11 требует UEFI, Secure Boot и TPM 2.0 (Trusted
Platform Module).
21
22. Как ОС защищает себя и вас
1Права
uid/gid (номера пользователя и группы), биты
rwx (чтение, запись, выполнение); в Windows —
ACL (список контроля доступа) и UAC (контроль
учётных записей).
3
Защита памяти
ASLR (случайное размещение адресов), NX/DEP
(запрет исполнения данных), канарейки стека.
2
Изоляция
Раздельные адресные пространства, seccomp
(фильтр системных вызовов), песочницы
Android, iOS и браузеров.
4
Доверенная загрузка
Secure Boot, TPM (доверенный модуль
платформы) и шифрование диска (BitLocker,
LUKS).
22
23. ОС там, где их не замечают
500 из 500Марс
VxWorks
суперкомпьютеров рейтинга
TOP500 (500 самых мощных в
мире) работают на Linux с
ноября 2017 года
вертолёт Ingenuity летал под
управлением Linux — на
другой планете
ОС реального времени в
марсоходах Curiosity и
Perseverance
Android тоже построен на ядре Linux — оно одно из самых массовых в мире.
23
24. Куда движутся ОС
1WSL
Windows Subsystem for Linux: Linux внутри Windows,
полноценная среда разработки
2
Rust в ядре Linux
С версии 6.1 (конец 2022 года) часть кода ядра можно писать
на Rust ради безопасности памяти
3
ARM вместо x86
ARM (Advanced RISC Machines): Apple M1 (2020), серверы,
Windows для ARM
4
ИИ в системе
NPU (Neural Processing Unit, нейропроцессор) и локальные
модели становятся частью ОС
24
25. Выводы:
Режим ядра и прерывания — основа
защиты и вытесняющей
многозадачности
Планирование эволюционировало от
FCFS к MLFQ, CFS и EEVDF:
справедливость плюс быстрый
отклик
Виртуальная память и файловые
системы строятся на таблицах, кэшах
и журналах
25
programming