10 Планирование
и диспетчеризация процессов. Функции планировщика - диспетчера. Процедуры
"Приостановить процесс", "Возобновить процесс".
Функции
планировщика-диспетчера
Во многих ОС эти функции могут
быть представлены неразрывной последовательностью, поэтому введем термин
планировщик-диспетчер. Планировщик - это программа, ответственная за постановку
процессов в очередь-на-выполнение и управляющая этой очередью. Диспетчер - это
программа, которая выбирает процессы из очереди-на-выполнение, переводит их в
активное состояние и передает им контроль над CPU. Основная функция -
возможность управлять действиями большого числа процессов.
Приостановка процесса
В ходе своего выполнения
системный процесс может установить, что требуемый ресурс занят или в данный
момент процессу не требуется производить каких-либо действий. Тогда процесс
может "сознательно" приостановить свое выполнение до момента
активизации его другим процессом. При этой процедуре адрес блока управления
процессом (БУП) записывается в стек, затем для активизации другого процесса
вызывается системный планировщик. Результатом этого действия является то, что
"приостановленный" процесс не помещается в очередь-на-выполнение,
т.е. не активизируется.
Схемы очередей блоков
управления процессами до а. и после б. "приостановки":
Алгоритм "Приостановить
процесс": Алгоритм "Возобновитьь
процесс":
НАЧАЛО
Анализ прерывания
procedure "ПРИОСТ"
IF1<приостанавлемй
процесс не является системным и находится в ОП>
блокировать процесс по условию
выгрузки из ОП
IF2<есть
свободный блок запроса в очереди приостановок>
создать блок запроса в очереди приостановок
разблокировать процесс
"откачки"
формровать код возврата по
удачному завершению
передать
управление диспетчеру
FI2
формирование кода возврата по
перегрузке системы
передать
управление диспетчеру
FI1
формировать код возврата по
невозможности приостановки
передать управление диспетчеру
КОНЕЦ
|
НАЧАЛО
Анализ прерывания
procedure "ВОЗОБНОВИТЬ"
IF1<процесс не системный и
был выгружен из ОП>
IF2<есть свободные блоки
запросов в очереди возобновлений>
поместить блок запроса в очередь возобновлений
разблокировать процесс подкачек
блокировать процесс по условию
загрузки в ОП
формировать код возврата по
удачному завершению
переход к диспетчеру
FI2
формирование кода возврата по
перегрузке системы
переход к диспетчеру
FI1
формировать код возврата по
невозможности приостановки
переход к диспетчеру
КОНЕЦ
|
|