- •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, структурированная обработка исключений, файлы, отображаемые в память)
19) Стратегия «обнаружение-устранение» для борьбы с взаимоблокировками. (с использованием графов Холта, матриц распределения ресурсов)
Стратегии борьбы с блокировками
«Страусовый алгоритм»:
Допущение, что блокировки в системе можно игнорировать. Усилия, затраченные на преодоление блокировок, могут себя не оправдать.
Обнаружение и устранение:
Дать возможность произойти блокировке, обнаружить ее и предпринять действия для ее исправления.
Способы восстановления:
- принудительная выгрузка ресурса;
- восстановление через откат (прежде чем захватить ресурс, процесс сохраняет свое состояние (checkpoint, контрольная точка), в случае конфликта можно вернуться к сохраненному состоянию);
- выгрузить процесс целиком (если нет побочных эффектов (процесс не влияет на состояние системы)).
Обнаружение тупика в случае единственности ресурса каждого типа:
В текущем состоянии построить граф Холта;
Обнаружить на нем цикл по какому-либо алгоритму:
Процесс |
Захват ресурса |
Ждет ресурс |
A |
R |
S |
B |
- |
T |
C |
- |
S |
D |
V |
S, T |
E |
T |
V |
F |
W |
S |
G |
V |
U |
Алгоритм:
Выполняется для каждой вершины графа, в начале все ребра не маркированы.
Список посещенных вершин пустой, выбираем начальную вершину M.
M добавляем в список. Если M в списке есть, то обнаружен цикл.
Если у M имеется немаркированное исходящее ребро, то идем к шагу 4, иначе – к шагу 5.
Выбираем любое немаркированное ребро, маркируем его, переходим к новой вершине и объявляем её текущей; переходим к шагу 2.
Удаляем последнюю вершину из списка, выбираем ее текущей, переходим к шагу 3.
Обнаружение тупика, если имеется несколько ресурсов каждого типа:
(E1, E2, …, Em)=E – вектор ресурсов;
Ej- сколько ресурсов типа j (1 j m)
(A1, A2, …, Am)=A – вектор доступных ресурсов
Матрица текущего распределения ресурсов:
, где – сколько процесс i получил ресурсов типа j.
Матрица запросов ресурсов:
Алгоритм:
Все процессы не маркированы:
В матрице R ищем строку, соответствующую немаркированному процессу, которая меньше либо равна А, (ri A).
Если такая строка найдена, то маркируем процесс, прибавляем строку к вектору А, возвращаемся к шагу 1.
Если процессов нет, то конец.
Если находятся немаркированные процессы, то они в тупике.
Пример: Находится ли система в тупике?
E=(4, 2, 3, 1) A=(2, 1, 0, 0)
20) Стратегия избегания блокировок. Алгоритм банкира. (диаграмма траекторий ресурсов, алгоритм банкира для одного вида ресурсов)
Избежание взаимных блокировок
Траектория ресурсов
1 – захват принтера
2 – захват плоттера
3 – освобождение принтера
4 – освобождение плоттера
Точка на траектории ресурсов может двигаться только вверх и вправо.
Если во время планирования точка, обозначающая состояние системы, попадет в область Х, то со временем в системе возникнет блокировка, т.к. точка не может двигаться вниз и влево; любое состояние в области серого цвета является безопасным состоянием. В таком состоянии планировщик, путем аккуратного планирования ресурсов может избежать возникновения тупика.
Алглритм Банкира для одного вида ресурсов
Цель алгоритма: проверить, приводит ли удовлетворение запроса на ресурс к выходу из безопасного состояния системы.
Пусть имеется один ресурс некоторого типа.
А |
3 |
9 |
В |
2 |
4 |
С |
2 |
7 |
Максимальное число ресурсов, которое процесс может запросить без учета уже запрошеных
Сколько процесс уже имеет ресурсов
Чтобы проверить, приводит ли запрос к безопасному состоянию, необходимо описать матрицу распределения ресурсов (см. выше). При этом:
A, B, C – имена банка;
2ой столбец – выданные кредиты;
3ий столбец – необходимо кредитов.
Свободных кредитов 3. Можем полностью обеспечить кредитами клиента В.
A |
3 |
9 |
|
A |
3 |
9 |
|
A |
3 |
9 |
|
A |
3 |
9 |
|
A |
0 |
- |
B |
2 |
4 |
B |
4 |
4 |
B |
0 |
- |
B |
0 |
- |
B |
0 |
- |
||||
C |
2 |
7 |
C |
2 |
7 |
C |
2 |
7 |
C |
0 |
- |
C |
0 |
- |
||||
Свободно 3 |
Свободно 1 |
Свободно 5 |
Свободно 7 |
Свободно 10 |
Клиент, чей запрос будет полностью удовлетворен, вернет все взятые кредиты.
Рассмотрим состояние:
A |
3 |
9 |
2 |
A |
4 |
9 |
|
A |
4 |
9 |
|
A |
4 |
9 |
B |
2 |
4 |
B |
4 |
4 |
B |
4 |
4 |
B |
0 |
- |
|||
C |
2 |
7 |
C |
2 |
7 |
C |
2 |
7 |
C |
2 |
7 |
|||
Свободно 3 |
Свободно 2 |
Свободно 0 |
Свободно 7 |
|||||||||||
|
небезопасно |
небезопасно |
небезопасно |
Недопустимо
Т.о., запрос от А на предоставление ему 1 единицы кредита следует отклонить.