Диспетчер, диспетчирование: Определение, функции. RMS, EDF.



Диспетчер (планировщик задач) для операционной системы — системное программное обеспечение, промежуточный слой между ОС РВ и функциональными задачами, обеспечивающий заданную временную диаграмму доступа задач к ресурсам.

Функции диспетчера:

- создание процессов для функциональных задач;

- создание обработчиков событий;

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

Известны два типа построения диспетчера с запуском задач по расписанию (Time Triggered) и с запуском задач по событиям (Event Triggered). Запуск задач по расписанию обычно строится на базе часов реального времени, либо по прерываниям от внешнего источника тактирующих импульсов. Так как часы реального времени, как правило, строятся на базе аппаратного таймера, вызывающего прерывания с заданным периодом повторения, можно считать первый тип разновидностью второго.

Так же для решения задачи наиболее эффективного планирования в ОСРВ выделяют два наиболее интенсивно развивающихся подхода:

- Статические алгоритмы планирования (RMS — Rate Monotonic Scheduling). Используют приоритетное вытесняющее планирование. Приоритет присваивается каждой задаче до того, как она начала выполняться. Преимущество отдается задачам с самыми короткими периодами выполнения.

- Динамические алгоритмы планирования (EDF — Earliest Deadline First Scheduling). Приоритет задачам присваивается динамически, причем предпочтение отдается задачам с наиболее ранним предельным временем начала (завершения) выполнения.

В целом при больших загрузках системы EDF более эффективен, нежели RMS.

4. Циклический алгоритм планирования (round-robin).

Планирование задач может осуществляться либо циклически (round-robin) с выделением каждой задаче кванта времени, на который она получает процессор, либо по приоритетам, когда запуск задачи с более высоким приоритетом приостанавливает выполнение задач с более низким.

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

1. Подпрограммы не должны содержать циклов ожидания.

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

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

Можно отметить следующие преимущества циклического алгоритма.

1. Простота использования и прозрачность для понимания.

2. Если исключить из рассмотрения прерывания, система полностью детерминирована. Задачи всегда вызываются в одной и той же последовательности, что позволяет достаточно просто произвести анализ «наихудшего случая» и вычислить максимальную задержку.

3. Минимальные размеры кода и данных. Кроме того, в отличие от алгоритмов с вытеснением, для всех задач необходим только один стек.

4. Отсутствуют ошибки, обусловленные «гонками».

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

Планирование задач по приоритетам.

Планирование задач по приоритетам может иметь различные релизации. Так что в литературе можно встретить такие термины как time-slicing (нарезание времени) и time-sharing (разделение времени), которые означают разлиные способы планирования по приоритетам.

Как правило, алгоритм реализуется следующим образом: каждой задаче отводится определенное количество квантов времени (обычно кратно 1 мс), в течение которых задача может монопольно занимать процессорное время. После того как заданный интервал времени истекает, управление передается следующей готовой к выполнению задаче, имеющей наивысший приоритет. Та, в свою очередь, выполняется в течение отведенного для нее промежутка времени, после чего все повторяется в стиле round robin.

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


Дата добавления: 2018-08-06; просмотров: 441; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!