3.4. Функции планировщика-диспетчера

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

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

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

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

3.4.1 Приостановка процесса

В ходе своего выполнения системный процесс может установить, что требуемый ресурс занят или в данный момент процессу не требуется производить каких-либо действий. Тогда процесс может "сознательно"приостановить свое выполнение до момента активизации его другим процессом. При этой процедуре адрес блока управления процессом (БУП) записывается в стек, затем для активизации другого процесса вызывается системный планировщик. Результатом этого действия является то, что "приостановленный" процесс не помещается в очередь-на-выполнение, т.е. не активизируется.



Рис. 3. Схемы очередей блоков управления процессами
до а. и после б. "приостановки".

Алгоритм "Приостановить процесс"

  • НАЧАЛО
  • Анализ прерывания
  • procedure "ПРИОСТ"
  • IF1<приостанавлемй процесс не является системным и находится в ОП>
 
  • блокировать процесс по условию выгрузки из ОП
  • IF2<есть свободный блок запроса в очереди приостановок>
             
  • создать блок запроса в очереди приостановок
  • разблокировать процесс "откачки"
  • формровать код возврата по удачному завершению
  • передать управление диспетчеру
           
  • FI2
  • формирование кода возврата по перегрузке системы
  • передать управление диспетчеру
  • FI1
  • формировать код возврата по невозможности приостановки
  • передать управление диспетчеру
  • КОНЕЦ