- •Тема 1. Операционные системы
- •Тема 2. История ос
- •0.Аналитическая машина Чарльза Бэббиджа
- •Тема 3. Архитектура ос
- •Тема 4. Процессы и потоки
- •Тема 5. Обработка прерываний
- •Тема 6. Управление процессами и потоками
- •Тема 10.Взаимоблокировки
- •Тема 11.Управление памятью
- •Тема 12.Виртуальная память
- •Тема 13. Стратегии замещения виртуальной памяти
- •Тема 13.Файловые системы
- •Тема 14. Реализация некоторых подсистем ос Windows
- •Ipc (обмен)
- •Ipc (синхронизация)
- •Тема 15. Реализация некоторых подсистем ос Linux
- •Тема 7. Межпроцессное взаимодействие (Inter-Process Communication, ipc)
- •6.2) Аппаратная поддержка (xchg)
- •Тема 8. Примитивы межпроцессного взаимодействия
- •1) Семафоры
- •2) Мьютексы (mutex)
- •3) Мониторы
- •4) Очереди сообщений
- •5) Барьеры
- •Тема 9. Классические проблемы межпроцессного взаимодействия
Ipc (обмен)
Каналы (pipe) именованные и неименованные, в режиме побайтного обмена или в режиме сообщений, двусторонние
Сокеты (socket) — типичный интерфейс BerkeleySockets
RemoteProcedureCall (RPC) — высокоуровневый интерфейс для обращения к коду на удалённых узлах
Ipc (синхронизация)
Семафорименованныйилинеименованный, защищённый ACL: CreateSemaphore(), OpenSemaphore(), DuplicateHandle(), ReleaseSemaphore(), WaitForSingleObject()
Мьютекс: CreateMutex(), OpenMutex(), ReleaseMutex(), WaitForSingleObject()
Критическая секция — «мьютекс пространства пользователя»: EnterCriticalSection(), LeaveCriticalSection()
Событие уведомления и синхронизации — объект ядра
Событие может быть в сигнализированном и несигнализированном состоянии
SetEvent(), ResetEvent(), PulseEvent()
Планирование
Нет центрального потока планирования
Квант — 20 мс / 180 мс
Квант для активного окна длиннее
Моменты планирования:
Блокирование на семафоре/вводе-выводе/...
Порождение события (up на семафоре, …)
Истечение кванта
Завершение операции ввода-вывода
Истечение времени ожидания
Приоритеты
32 приоритета (31-16, 15-1)
Приоритет 0 для потока обнуления страниц
SetPriorityClass() — выбор класса приоритета для процесса и всех его потоков: real-time, high, abovenormal, normal, idle
SetThreadPriority() — выборотносительногоприоритетапотокавклассе: time critical, highest, above normal, normal, below normal, lowest, idle
Динамическое изменение приоритета
Приоритет повышается при:
Завершении операции ввода-вывода
Освобождении семафора/мьютекса/...
Приоритет понижается при:
Использовании потоком целого кванта
Концепции управления памятью
Каждый процесс имеет своё виртуальное адресное пространство
Для 32-битного режима 2 (3) ГБ используются для пространства пользователя, 2 (1) ГБ — для пространства ядра
В 64-битном режиме работает слой WOW64 для обеспечения работы 32-битных приложений, им выделяются полные 4 ГБ
Виртуальное адресное пространство
Организация адресного пространства
Страничная
Страница 4 кБ
Большая страница размером 4 МБ
Поддерживается CoW
Поддерживаются файлы, отображаемые в память
Страница виртуальной памяти
Недействительная (invalid)
Задействованная (commited)
Зарезервированная (reserved)
Читаемая
Записываемая
[Исполняемая]
Файл подкачки
Стратегия just-in-time — выделение дискового пространства под страницу тогда, когда надо её выгрузить
Инициализируется после запуска первого пользовательского процесса (smss.exe)
Страница в файле подкачки не освобождается, пока загруженная в память страница не изменится
До 16 файлов подкачки
Реализация управления памятью
Алгоритм замещения — LRU посредством бит A (access) и D (dirty)
Категории страничных ошибок:
Страница не сохранена (commited)
Нет привилегий на такое обращение
Попытка изменения CoW-страницы
Необходимо увеличение стека
Страница сохранена, но не отображена
Мягкие/жёсткие страничные ошибки
Диспетчер памяти может загружать страницы как по необходимости, так и по опережающей стратегии
Диспетчер памяти оперирует рабочими наборами, описываемыми максимальным и минимальным размерами (20/50 — 45/345)
Для задания (job) существует общий рабочий набор