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

14. Алгоритми планування задач в ос qnx-6

Для планирования потоков необходимо определить начальные условия:

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

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

  3. поток должен работать до тех пор, пока не выполниться или не завершиться

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

1 – Поиск выполняющегося потока

2 – есть ли готовый к выполнению поток с более высоким приоритетом?

3 – удалить текущий поток из очереди выполнения, поставить вместо него на выполнение новый поток

4 – сейчас выполняется поток с карусельной диспетчеризацией?

5 – продолжить выполнение текущего потока до истечения его кванта времени

6 – использовал ли он более одного кванта времени? 7 – имеется ли другой готовый к выполнению поток с таким же приоритетом? 8 – начать отсчёт кванта времени для данного потока заново

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

15. Дисципліни та правила диспетчеризації потоків в ос qnx-6.

QNX-6 поддерживает 4:

FIFO, RR, адаптивная и спорадическая.

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

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

RR – Round Robin, аналогично FIFO за исключением того, что поток не будет работать бесконечно долго если есть потоки того же самого приоритета. При RR диспетчеризации поток работает в течении предопределенного интервала времени (sched_rr_get_interval). Ядро запуская RR поток засекает время. Если поток не блокируется в течении выделенного ему кванта времени, то ядро проверяет наличие другого готового к выполнению потока с тем же приоритетом, если такого нет поток опять будет запущен, то есть будет выделен очередной квант времени.

Правила диспетчеризации для однопроцессорной системы:

только один поток может выполняться в данный момент времени;

всегда выполняется поток с наивысшим приоритетом;

поток работает до тех пор, пока он не блокируется или не завершается;

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]