- •Архитектура операционной системы
- •1. Монолитные системы
- •2. Многоуровневые системы
- •3. Виртуальные машины
- •Архитектура, основанная на ядре
- •Режим ядра и пользовательский режим
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Микроядерная архитектура
- •Процессы и потоки
- •Реализация процессов
- •Назначение потоков
- •Реализация потоков
- •Планирование Процессов
- •Пример 1. Планирование в Windows 2000
- •Пример 2. Планирование в unix
- •Цели планирования
- •Схемы планирования
- •Взаимодействие процессов и потоков
- •Состояние состязания
- •Критические области
- •Взаимоисключение с активным ожиданием
- •Семафоры
- •Мьютексы
- •Мониторы
- •Взаимные блокировки
- •Основные направления решения проблемы тупиков
- •Предотвращение тупиков
- •Обнаружение тупика
- •Восстановление после тупика
- •Организация мультизадачности ос
- •Опрос (проверка флагов)
- •Исключения
- •Прерывания
- •Классификация прерываний
- •3 Класса прерываний:
- •Механизм прерываний
- •Приоритеты прерываний
- •Организация памяти
- •Функции ос по управлению памятью
- •Стратегии управления памятью
- •Фрагментация памяти
- •Способы борьбы с фрагментацией:
- •Типы адресов памяти
- •Учет свободных и занятых областей памяти
- •Учет памяти с помощью битовых карт
- •Учет памяти с помощью связных списков
- •Виртуальная память
- •Файлы подкачки
- •Вопросы по модулю №1
Пример 2. Планирование в unix
Когда запускается низкоуровневый планировщик, он ищет непустую очередь с наивысшим приоритетом (т.е. начиная с наименьшего отрицательного значения). В этой очереди запускается первый процесс. Он отрабатывает квант времени (как правило, 100 мс) и помещается в конец своей очереди. Из очереди извлекается следующий процесс. Таким образом процессы, входящие в одну группу приоритетов, используют процессор в порядке циклической очереди.
Чтобы дать другим очередям доступ к процессору, раз в секунду приоритет каждого процесса пересчитывается по формуле:
Priority = CPU_usage+nice+base
Здесь base – базовое значение приоритета, зависящее от того, работает процесс в режиме ядра или режиме пользователя. Nice – слагаемое приоритета, устанавливаемое администратором (по умолчанию оно ноль, но может иметь диапазон от -20 до +20). CPU_usage – слагаемое, которое зависит от использования времени процессора данным процессом (счетчик использования ЦП в таблице процессов, увеличивается при каждом прерывании по таймеру, если процесс использовал процессор). Этот счетчик прибавляется к приоритету, чтобы процесс, уже хорошо попользовавшийся процессором, попал в менее приоритетную очередь. Однако чтобы процесс не остался навечно в очереди с более низким приоритетом, используются еще другие нюансы алгоритма.
Цели планирования
Справедливость (ни один процесс не должен пострадать от бесконечного откладывания).
Увеличение реактивности системы.
Максимизация пропускной способности.
Минимизация накладных расходов.
Учет приоритетов.
Предсказуемость. (Задание должно выполниться за примерно определенное время)
Исключение бесконечного откладывания (С увеличением времени ожидания приоритет процесса растет).
Постепенное снижение производительности при больших нагрузках (Или вся система сразу остановится, либо она будет постепенно уменьшать производительность, давая пользователю возможность что-то исправить).
Схемы планирования
Планирование по сроку завершения. Здесь принимаются все меры для того, чтобы процесс выполнился к определенному сроку. Его результаты могут быть важны вовремя и бесполезны позже. Такой способ реализуется очень сложно.
Планирование по принципу FIFO. Самый простой способ планирования. Процессор предоставляется процессам по мере их поступления. Выполняются процессы до завершения. Это самый предсказуемый и самый плохой принцип для интерактивных сред (без переключений).
Циклическое планирование. Осуществляется как FIFO, но каждый раз для работы с процессором процессу предоставляется ограниченное время. Не успевший выполниться идет в конец очереди готовых процессов. Это самый удобный принцип для систем разделения времени (с переключением).
Кратчайшее задание – первым! Выбирается готовый процесс с минимальным оценочным временем работы (без переключений).
По принципу наименьшего остающегося времени. Схема аналогична предыдущей, но с переключениями.
По принципу наибольшего относительного времени реакции. Планирование без переключений, согласно которому приоритет каждого задания определяется по формуле:
, где a – время обслуживания, b – время ожидания.