- •Архитектура операционной системы
- •1. Монолитные системы
- •2. Многоуровневые системы
- •3. Виртуальные машины
- •Архитектура, основанная на ядре
- •Режим ядра и пользовательский режим
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Микроядерная архитектура
- •Процессы и потоки
- •Реализация процессов
- •Назначение потоков
- •Реализация потоков
- •Планирование Процессов
- •Пример 1. Планирование в Windows 2000
- •Пример 2. Планирование в unix
- •Цели планирования
- •Схемы планирования
- •Взаимодействие процессов и потоков
- •Состояние состязания
- •Критические области
- •Взаимоисключение с активным ожиданием
- •Семафоры
- •Мьютексы
- •Мониторы
- •Взаимные блокировки
- •Основные направления решения проблемы тупиков
- •Предотвращение тупиков
- •Обнаружение тупика
- •Восстановление после тупика
- •Организация мультизадачности ос
- •Опрос (проверка флагов)
- •Исключения
- •Прерывания
- •Классификация прерываний
- •3 Класса прерываний:
- •Механизм прерываний
- •Приоритеты прерываний
- •Организация памяти
- •Функции ос по управлению памятью
- •Стратегии управления памятью
- •Фрагментация памяти
- •Способы борьбы с фрагментацией:
- •Типы адресов памяти
- •Учет свободных и занятых областей памяти
- •Учет памяти с помощью битовых карт
- •Учет памяти с помощью связных списков
- •Виртуальная память
- •Файлы подкачки
- •Вопросы по модулю №1
Планирование Процессов
В любой ОС переключение процессов ведется в соответствии с определенной стратегией планирования.
Бывает 2 типа планирования.
Без переключений (при котором у процесса нельзя отобрать ресурсы ЦП);
С переключениями (Во время выполнения процесса ресурсы ЦП можно предоставлять другим процессам).
Также планирование бывает Приоритетным (важность процесса назначается). Оно подразделяется на планирование
Со статическим приоритетом (приоритеты не изменяются во время выполнения). Такой механизм легко реализуется, но он не реагирует на изменения ситуации.
С динамическим приоритетом (сложнее в реализации, но ОС реагирует на изменения ситуации).
Пример 1. Планирование в Windows 2000
в Windows 2000 нет центрального потока планирования. Вместо этого, когда какой-нибудь поток не может более выполняться, этот поток сам переходит в режим ядра и запускает планировщика, чтобы определить, на какой поток переключиться. Поток запускает планировщика при одном из следующих условий:
1. поток блокируется на семафоре, мьютексе, событии, операции ввода-вывода и т.д.
2. истекает квант времени работающего потока.
3. завершается операция ввода-вывода.
4. истекает ожидание таймера.
Интерфейс Win32 API содержит два вызова, которые предоставляют возможность процессам влиять на планирование. Алгоритм планирования в большой степени определяется этими вызовами. Это вызовы: SetPriorityClass – устанавливает класс приоритета всех потоков вызывающего процесса, и SetThreadPriority – устанавливает приоритет отдельного потока. Другими словами, программа пользователя задает относительный приоритет процесса или потока.
Планировщик работает следующим образом. В системе существуют 32 уровня приоритета, которые система хранит в виде массива. В ОС задана схема преобразования входной информации – пары значений приоритетов (процесса и потока) в один из уровней системного приоритета. Эта схема приведена в таблице.
Приоритеты потоков Win32 |
Классы приоритетов процессов Win32 |
|||||
Реального времени |
Высокий |
Выше нормы |
Нормальный |
Ниже нормы |
Неработающий |
|
Критичный ко времени |
31 |
15 |
15 |
15 |
15 |
15 |
Самый высокий |
26 |
15 |
12 |
10 |
8 |
6 |
Выше нормы |
25 |
14 |
11 |
9 |
7 |
5 |
Нормальный |
24 |
13 |
10 |
8 |
6 |
4 |
Ниже нормы |
23 |
12 |
9 |
7 |
5 |
3 |
Самый низкий |
22 |
11 |
8 |
6 |
4 |
2 |
Неработающий |
16 |
1 |
1 |
1 |
1 |
1 |
Алгоритм планирования состоит в циклической процедуре сканирования массива от приоритета 31 до приоритета 0. Как только найден непустой элемент, выбирается поток в начале очереди и запускается на выполнение. Отработав квант времени, поток ставится в конец очереди, и запускается следующий поток. При планировании не учитывается, какому процессу принадлежит поток. Планировщик смотрит только на потоки.
Приоритеты с 16 по 31 называются приоритетами реального времени. Это приоритеты, зарезервированные для самой системы и ее потоков. Пользовательские потоки работают с приоритетами от 1 до 15.
Кроме того, в системе есть нулевой поток (с приоритетом 0), который работает в фоновом режиме и занимает все процессорное время, на которое больше никто не претендует. Его работа заключается в обнулении страниц для менеджера памяти.