Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700363.doc
Скачиваний:
16
Добавлен:
01.05.2022
Размер:
3.69 Mб
Скачать

Дисциплина планирования vrr

Дисциплина планирования загрузки процессоров VRR (Virtual Round Robin – Виртуальное круговое планирование) назначает приоритеты процессов, вышедших из состояния блокировки, в зависимости от причины самоблокирования процесса (определяет очередь готовых процессов, в которую будет помещен процесс).

На рис. 8 приведена схема работы дисциплины VRR.

Рис.8. Планирование VRR

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

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

Планирование на основе множества очередей с обратными связями

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

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

Концепция планирования на основе множества очередей с обратными связями поясняется на рис. 9.

Рис.9. Планирование на основе множества очередей с обратными связями

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

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

2.3 Планирование в многопользовательской системе – справедливое планирование

Рассмотренные до настоящего времени дисциплины планирования загрузки процессоров выполняли планирование исключительно на основе приоритетов процессов, при этом ни как не учитывалась принадлежность этих процессов к той или иной задаче или пользователю.

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

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

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

Более эффективным является справедливое планирование на основе приоритетов, с использованием комбинации приоритетов процессов и пользователей. Наиболее известной дисциплиной планирования такого рода является дисциплина FSS (Fire-Share Scheduler), применяемая в некоторых UNIX системах.

Согласно дисциплине FSS, приоритет для -го процесса, принадлежащего -му пользователю, вычисляется по следующей формуле:

( 0 )

где - базовый (начальный) приоритет -го процесса;

- коэффициент использования процессора -м процессом;

- коэффициент использования процессора -м пользователям;

- относительный приоритет -го пользователя, причем .

Дисциплина FSS является вытесняющей. Если появляется готовый к выполнению процесс с приоритетом более высоким, чем у текущего процесса, то текущий процесс снимается с выполнение в пользу наиболее приоритетного.

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

При каждом прерывании таймера обновляются коэффициенты использования процессора процессом и пользователем. Коэффициенты использования процессора обновляются по следующей формуле:

( 0 )

где интервал времени между прерываниями таймера.

Таким образом, пока процесс исполняется, растет приоритет использования процессора процессом и пользователем, владеющим данным процессом.

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

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