Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Граур.doc
Скачиваний:
59
Добавлен:
14.11.2019
Размер:
3.7 Mб
Скачать

Общие критерии для сравнения алгоритмов планирования

Планирование бывает краткосрочное, среднесрочное и долгосрочное

- использование времени ЦП

- пропускная способность (кол-во процессов в единицу времени)

- время ожидания (в очереди готовых) – влияет на приоритет процесса

- время оборота (полное время от момента поступления до завершения)

- время отклика (для интерактивных программ – время от поступления в систему до момента первого обращения к

терминалу

- предельный срок выполнения процесса

и т.д.

Планирование в ос unix

Используется принцип кругового планирования в рамках очередей каждого приоритета.

Если процесс не завершается или не блокируется в рамках 1 секунды – он вытесняется.

В общем случае значение приоритета есть функция

 P=F (CPU, nice), т.е. в вычислении приоритета используются две изменяемые составляющие – CPU (системная) и nice (пользовательская). Учитывается история выполнения, величины CPU и nice ограничены.

Пересчет приоритета процесса происходит в момент выбора процесса для выполнения на ЦП 1 раз в секунду.

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

Эти группы используются для оптимизации доступа к блочным устройствам (например, к диску) и обеспечения быстрого отклика операционной системы на системные вызовы.

Группы приоритетов

(в порядке убывания)

- программа свопинга

- управление блочными устройствами ввода/вывода

- управление файлами

- управление байт-ориентированными устройствами ввода/вывода

- пользовательские процессы 

Иерархия обеспечивает эффективное использование устройств ввода/вывода

СPUj (i) - время использования ЦП процессом j за время i;

Pj (i) - приоритет процесса j в начале кванта i (приоритет выше, если значение меньше);

Basej - базовый приоритет j-го процесса (необходим для разделения процессов на фиксированные группы уровней приоритетов);

nicej - пользовательская составляющая приоритета (значение может только увеличиваться до некоторого уровня).

Пример традиционного планирования процессов в ОС Unix

Рассмотрим на примере, как это все работает. Предполагается, что есть три процесса, которые создаются одновременно с одним и тем же базовым приоритетом (в данном случае – это число 60). Таймер прерывает выполнение процесса 60 раз в секунду. Предполагается, что не один процессов не блокируется сам, и нет других процессов, готовых к выполнению. Для простоты пользовательская составляющая nicej игнорируется. Происходит пересчет времени и приоритетов.

Рассмотрим, как работает первый процесс. Он проработал 1 секунду (счетчик 060) – 60 раз его прерывали, по первой формуле получаем: 60/2=30, соответственно приоритет будет пересчитан по второй формуле, и полученное значение будет равно 75. После этого начинает работать второй процесс - третий процесс пока стоит. Когда проработает второй процесс, у него произойдет точно такой же пересчет, как и у первого, потому что они начинали с одинаковых позиций. У первого процесса время, которое он использовал, будет: 30/2=15, и приоритет: 60+15/2=67. У второго процесса приоритет соответственно 75, третий начал работать. Когда третий процесс дойдет до конца своего кванта времени – у него будет приоритет 75. У первого процесса приоритет составит 63.