Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль1.doc
Скачиваний:
10
Добавлен:
25.08.2019
Размер:
276.48 Кб
Скачать

Пример 2. Планирование в unix

Когда запускается низкоуровневый планировщик, он ищет непустую очередь с наивысшим приоритетом (т.е. начиная с наименьшего отрицательного значения). В этой очереди запускается первый процесс. Он отрабатывает квант времени (как правило, 100 мс) и помещается в конец своей очереди. Из очереди извлекается следующий процесс. Таким образом процессы, входящие в одну группу приоритетов, используют процессор в порядке циклической очереди.

Чтобы дать другим очередям доступ к процессору, раз в секунду приоритет каждого процесса пересчитывается по формуле:

Priority = CPU_usage+nice+base

Здесь base – базовое значение приоритета, зависящее от того, работает процесс в режиме ядра или режиме пользователя. Nice – слагаемое приоритета, устанавливаемое администратором (по умолчанию оно ноль, но может иметь диапазон от -20 до +20). CPU_usage – слагаемое, которое зависит от использования времени процессора данным процессом (счетчик использования ЦП в таблице процессов, увеличивается при каждом прерывании по таймеру, если процесс использовал процессор). Этот счетчик прибавляется к приоритету, чтобы процесс, уже хорошо попользовавшийся процессором, попал в менее приоритетную очередь. Однако чтобы процесс не остался навечно в очереди с более низким приоритетом, используются еще другие нюансы алгоритма.

Цели планирования

  1. Справедливость (ни один процесс не должен пострадать от бесконечного откладывания).

  2. Увеличение реактивности системы.

  3. Максимизация пропускной способности.

  4. Минимизация накладных расходов.

  5. Учет приоритетов.

  6. Предсказуемость. (Задание должно выполниться за примерно определенное время)

  7. Исключение бесконечного откладывания (С увеличением времени ожидания приоритет процесса растет).

  8. Постепенное снижение производительности при больших нагрузках (Или вся система сразу остановится, либо она будет постепенно уменьшать производительность, давая пользователю возможность что-то исправить).

Схемы планирования

  1. Планирование по сроку завершения. Здесь принимаются все меры для того, чтобы процесс выполнился к определенному сроку. Его результаты могут быть важны вовремя и бесполезны позже. Такой способ реализуется очень сложно.

  2. Планирование по принципу FIFO. Самый простой способ планирования. Процессор предоставляется процессам по мере их поступления. Выполняются процессы до завершения. Это самый предсказуемый и самый плохой принцип для интерактивных сред (без переключений).

  3. Циклическое планирование. Осуществляется как FIFO, но каждый раз для работы с процессором процессу предоставляется ограниченное время. Не успевший выполниться идет в конец очереди готовых процессов. Это самый удобный принцип для систем разделения времени (с переключением).

  4. Кратчайшее задание – первым! Выбирается готовый процесс с минимальным оценочным временем работы (без переключений).

  5. По принципу наименьшего остающегося времени. Схема аналогична предыдущей, но с переключениями.

  6. По принципу наибольшего относительного времени реакции. Планирование без переключений, согласно которому приоритет каждого задания определяется по формуле:

, где a – время обслуживания, b – время ожидания.