- •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, структурированная обработка исключений, файлы, отображаемые в память)
21) Стратегии предотвращения блокировок. (исключение условий в определении блокировок)
Предотвращение блокировок:
Атака взаимного исключения;
Атака условия удержания и ожидания;
Пример: Если все ресурсы запрашиваются одновременно, то тупиков не возникнет; если мы ожидаем несколько ресурсов WaitForMultipleObjects(), то тупиков тоже нет.
Атака условия отсутствия принудительной выгрузки;
Атака условия циклического ожидания. Если все ресурсы пронумерованы и каждый процесс имеет право захватывать ресурс только с большим порядковым номером, чем номера уже захваченных ресурсов, то тупика не возникнет.
22) Методы управления памятью без использования внешней памяти. (фиксированные, динамические и перемещаемые разделы)
Управление памятью
Типы адресов:
Символьные имена |
|
Id переменных в программе |
|
Транслятор |
|
Виртуальные адреса |
Условные адреса, вырабатываемые транслятором |
|
|
|
|
Физические адреса |
Номера ячеек |
При загрузке программы в память, виртуальные адреса отображаются в физические.
Работа перемещающего загрузчика состоит из загрузки программы в последовательные ячейки, начиная с некоторого адреса, и настройки смещений внутри программы относительно этого адреса.
0 |
|
|
#100 |
Величины смещений в коде программы складываются с БА (при загрузке программы) |
|
Jmp #10 |
|||
#10 |
|
|||
|
||||
|
||||
|
||||
|
|
|||
|
||||
|
Виртуальное адресное пространство |
Физическое адресное пространство |
Динамическое преобразование адреса происходит при каждом обращении к адресу, но при этом используются виртуальные адреса.
Методы распределения памяти
Существует 2 основных способа:
- без использования дискового пространства (ДП);
- с использованием ДП.
Методы без использования ДП разделяются на:
с использованием фиксированных разделов;
с использованием динамических разделов;
с использованием перемещаемых разделов;
Методы с использованием ДП разделяются на:
страничный способ;
сегментный способ;
сегментно-страничный.
Без использования ДП с использованием фиксированных разделов
|
|
Физическая память |
|
|
|
Индивидуальные очереди задач |
|||||||
|
|
|
|
|
|
||||||||
|
Раздел |
|
|
|
|
|
|||||||
|
|
|
|
||||||||||
Очередь задач к разделам (общая) |
|
|
|
|
|
||||||||
Раздел |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
………… |
|||||||||
|
Раздел |
|
|||||||||||
|
|
|
|||||||||||
|
|
|
|
|
|
||||||||
|
Раздел |
|
|
|
|
|
|||||||
|
|
|
|
Перед началом работы оператор разделяет физическую память на разделы заданного размера. Поступающие в систему задачи либо занимают свободный раздел подходящего размера, либо попадают в очередь. Очередь может быть либо общей для всех разделов, либо индивидуальной для каждого.
Достоинства: простота
Недостатки: недостаточная гибкость
Динамические разделы
ОС |
|
ОС |
|
ОС |
|
ОС |
|
|
31 |
|
33 |
|
33 |
|
|
|
|
|
||
|
32 |
|
32 |
|
32
|
|
|
|
|
|
|
34 |
|
|
|
|
||||
|
||||||
t0 |
|
t1 |
|
t2 |
|
t3 |
|
Занятая память |
|
Свободная память |
Распределение памяти по разделам заранее неизвестно. ОС ведет таблицы занятых и свободных разделов. При поступлении новой задачи для ее загрузки выбирается свободный раздел подходящего размера.
Принцип выбора (способы):
первый подходящий
наименьший подходящий
наибольший подходящий
Достоинства: большая гибкость, уровень мультипрограммирования не зависит от начального разбиения на разделы
Недостатки: фрагментация памяти (наличие большого числа несмежных свободных участков памяти маленького размера)
Такой способ разделения памяти используется для управления кучей процесса.
Перемещаемые разделы
Данный способ расширят управление динамическими разделами путем добавления процедуры сжатия (перемещение занятой области в одну последовательную область). В результате свободная память размещается в последовательных ячейках.
Достоинства: неразделенная свободная область памяти
Недостатки: в отличии от предыдущих способов нельзя использовать перемещающий загрузчик; процедура сжатия может быть затратна по времени (поэтому обычно сжатие выполняется когда не удается выполнить загрузку программы)