Упреждающее планирование с фиксированным приоритетом (Операционные Системы)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:50, 20 мая 2019.

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

Упреждающий проектировщик имеет своей задачей прерывание времени. Это может дать проектировщику возможность для коммутирования, то есть переключения с одного процесса на другой, позволяет сохранить состояние процесса или потока, чтобы его можно было восстановить и начать возобновление с того же момента выполнения позже.[Источник 1]

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

Упреждающее планирование часто разграничивают с непременным планированием, где задача может выполняться непрерывно от начала до конца. При непременном планировании очередь выполнения одной задачи не может быть занята выполнением другой. Такой вид планирования используется в таких системах реального времени, как Salvo, TinyOS и другие.[Источник 2]


Сравнительная таблица

Основа для сравнения Упреждающее планирование Непременное планирование
Базовые модели Ресурсы для процесса выделяются в ограниченное время Как только ресурсы выделены процессу, он удерживает их до окончания выделенного времени или пока не переключится в состояние ожидания
Прерывание Процесс может быть прерван в ходе выполнения Процесс не может быть прерван до своего завершения или переключения в режим ожидания
Ожидание (голодание) Если процесс с высоким приоритетом часто поступает в очередь готовности, то процесс с низким приоритетом будет голодать Если процесс c длительным временем выполнения нагружает процессор, то процесс с меньшим периодом времени может ожидать
Накладные расходы Упреждающее планирование имеет накладные расходы планирования процессов Непременное планирование не имеет накладных расходов
Гибкость Является гибким Является жестким

Пример упреждающего планирования

Рассмотрим пример упреждающего планирования на рисунке ниже. Имеются четыре процесса P0, P1, P2, P3, из которых P2 приходит в момент времени 0. Следовательно, P2 будет размещен в процессоре, так как в очереди других процессов нет. Следующий процесс P3 приходит в время 1 и теперь оставшееся время для P2 составляет 5 миллисекунд, которое больше, чем время необходимое процессу P3. Таким образом, процессор будет выделен процессу P3.

Схема упреждающего планирования

Источники

  1. Fixed-priority pre-emptive scheduling //yandex. URL: https://yandex.ru/turbo?text=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFixed-priority_pre-emptive_scheduling (дата обращения: 08.05.2019)
  2. Difference Between Preemptive and Non-Preemptive Scheduling in OS //techdifferences. URL: https://techdifferences.com/difference-between-preemptive-and-non-preemptive-scheduling-in-os.html (дата обращения: 12.05.2019)