
- •1) Определение операционной системы и ее функции. (виртуальная машина, управление ресурсами, задачи управления ресурсами)
- •1. Назначение и функции операционных систем
- •1.1.Основные понятия и определения
- •1.2.Управление ресурсами
- •3) Функциональные требования, предъявляемые к операционным системам и способы их реализации (расширяемость, переносимость, надежность, совместимость, безопасность, производительность).
- •5) Основные архитектуры операционных систем. (монолитные, многоуровневые, микроядерные, объектно-ориентированные, виртуальные машины)
- •Монолитные системы
- •Многоуровневые системы
- •Клиент – сервер (микроядро)
- •Объектно-ориентированный подход в проектировании ос.
- •Виртуальная машина (вм), Экзоядро
- •6) Абстракция процесса, управление процессами в многозадачной операционной системе. (определение процесса, диаграмма состояния, контекст, дескриптор, квантование, приоритетное планирование, нити)
- •7) Функциональные возможности многозадачности в ос Windows. (способы использования многозадачности, решаемые задачи)
- •8) Планировщик ос Windows. (класс и уровень приоритета, переключение контекста, «неготовые» потоки, динамический приоритет)
- •9) Эффект инверсии приоритетов. (пример, способы преодоления)
- •10) Мультипроцессорная обработка в ос Windows. (термины, вызовы api, назначение)
- •11) Эффект гонки. (пример, способ преодоления)
- •12) Средства синхронизации в режиме пользователя в ос Windows. (interlocked-функции, объект «критическая секция»)
- •13) Задача о критической секции. Алгоритм Петерсона для двух процессов. (условия задачи, объяснение принципа алгоритма)
- •14) Эффект отталкивания (голодания). (пример, модификатор volatile)
- •15) Эффект ложного разделения переменных (влияния кэш линий). (пример)
- •16) Управление объектами ядра в ос Windows. (описатель объекта, таблица описателей объектов процесса, создание, наследование, именование, дублирование)
- •17) Средства синхронизации в режиме ядра в ос Windows. (события, семафоры, мьютексы)
- •18) Эффект взаимоблокировки (возникновение тупика). (определение, условия возникновения, моделирование)
- •19) Стратегия «обнаружение-устранение» для борьбы с взаимоблокировками. (с использованием графов Холта, матриц распределения ресурсов)
- •20) Стратегия избегания блокировок. Алгоритм банкира. (диаграмма траекторий ресурсов, алгоритм банкира для одного вида ресурсов)
- •21) Стратегии предотвращения блокировок. (исключение условий в определении блокировок)
- •22) Методы управления памятью без использования внешней памяти. (фиксированные, динамические и перемещаемые разделы)
- •23) Методы управления памятью с использованием внешней памяти. (сегментный, страничный, сегментно-страничный способ)
- •24) Свопинг. Кэширование. (назначение, принцип работы механизма)
- •25) *Реализация сегментного механизма управления памятью в процессорах семейства x86.
- •26) *Реализация страничного механизма управления памятью в процессорах семейства x86. (размер и основные поля структур данных, особенности реализации)
- •27) *Средства ос Windows для управления виртуальной памятью процесса. (VirtualAlloc, структурированная обработка исключений, файлы, отображаемые в память)
17) Средства синхронизации в режиме ядра в ос Windows. (события, семафоры, мьютексы)
События
События бывают:
- со сбросом вручную;
- с автоматическим сбросом.
HANDLE CreateEvent (
PSECURITY_ATTRIBUTES sa,
BOOL fManualReset,
BOOL fInitialState,
hPCTSTR name);
BOOL SetEvent (HANDLE); – устанавливает в сигнальное состояние
BOOL ResetEvent (HANDLE); – устанавливает в несигнальном состояние
BOOL PulseEvent (HANDLE); – “комбинация” Set и Reset (устанавливает в сигнальное состояние и сбрасывает в несигнальное)
Если событие с автосбросом, только один поток продолжит исполнение, а если со сбросом вручную – оба потока.
Семафоры
Смысл семафоров – подсчет числа доступных ресурсов (счетчик). Определены 2 операции:
возврата ресурсов в пул доступных ресурсов (up-операция, v-операция). Увеличивает счетчик.
захвата ресурсов (down-операция, p-операция).
Если счетчик ресурсов принимает значение 0, то поток блокируется (семафор находится в несигнальном состоянии).
Счетчик не может быть больше максимального числа ресурсов и меньше 0.
CreateSemaphore (
PSECURITY_ATTRIBUTES sa,
LONG lInitialCount,
LONG lMaxCount,
hPCTSTR name);
Операция DOWN:
BOOL ReleaseSemaphore (HANDLE, LONG ReleaseCount);
Мьютексы
Мьютекс, Mutex – от англ. Mutual Exclusion, взаимное исключение.
HANDLE CreateMutex(
PSECURITY_ATTREBUTES sa,
BOOL fInitialOwner,
LPCTSTR name);
BOOL ReleaseMutex (HANDLE);
Мьютекс можно рассматривать как бинарный семафор. Также мьютекс похож и на критическую секцию.
От семафора мьютекс отличается тем, что определено владение мьютексом для захвативших его потоков.
Отличие от критических секций: можно синхронизировать потоки в разных процессах, можно указывать тайм-аут.
Если поток «владеет» мьютексом, то вызов Wait-функции с этим мьютексом завершится успешно, при этом увеличится внутренний счетчик рекурсий. ReleaseMutex выполняет декремент счетчика рекурсий и освобождает мьютекс, если счетчик достигает «0».
Если попытаться освободить мьютекс из процесса, который им не владеет, то будет ошибка:
GetLastError = ERROR_NOT_OWNED
Если поток, владеющий мьютексом, завершается, то он переходит в несигнальное состояние, может быть использован другими потоками, на Wait-функция вернет ошибку.
GetLastError = WAIT_ABANDONED
18) Эффект взаимоблокировки (возникновение тупика). (определение, условия возникновения, моделирование)
Тупики и защита от них
Группа процессов находится в тупиковой ситуации, если каждый процесс из группы ожидает событие, которое может вызвать только другой процесс из этой же группы.
Условия возникновения тупика:
Условие взаимного исключения: каждый ресурс отдан или доступен ровно одному процессу.
Условие удержания и ожидания: процессы, удерживающие полученные ранее ресурсы, могут запрашивать новые.
Условие отсутствия принудительной выгрузки: у процесса нельзя забрать ранее полученный ресурс, процесс, владеющий ресурсом, должен сам освободить его.
Условие циклического ожидания: должно существовать 2 или более процессов, каждый из которых ждет доступа к ресурсу, удерживаемому следующим участком последовательности.
Моделирование блокировок, Холт (Holt)
Введем графические обозначения:
Простейший тупик:
DWORD Thr2(PVOID){ WaitforSingleObject(U); WaitforSingleObject(T); //критическая
секция ReleaseMutex(T); ReleaseMutex(U);
}
DWORD Thr1(PVOID){
WaitforSingleObject(T);
WaitforSingleObject(U);
//критическая секция
ReleaseMutex(U);
ReleaseMutex(T); }
Процесс |
Порядок захвата ресурсов |
Порядок освобождения ресурсов |
A |
|
S, R |
B |
|
T, S |
C |
|
T, R |
Последовательность:
Последовательность:
Здесь
– захват потоком A ресурса
R;
– освобождение потоком A
ресурсов R и S.
Вывод:
тупики возникают не при каждом исполнении;
аккуратным планированием можно избежать блокировок;
блокировки можно обнаружить;