Параллельное программирование

Диспетчирование


Диспетчер (рис. 9.3) включается в трех случаях: по признаку "конец задания", по признаку "процессор свободен" и по прерыванию в моменты времени k?, k = 0, 1, ....


увеличить изображение
Рис. 9.3.  Вычислительный процесс в АСУ коллективного доступа

Признак "конец задания" формируется в случае окончания выполнения каждого из заданий, ранее назначенных на процессор.

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

При входе в диспетчер проверяется (блок 1) необходимость выполнения программы реконфигурации в момент времени k?, k = 0, 1, .... Затем (блок 2) проверяется, произведено ли включение диспетчера по признакам "конец задания" или "процессор свободен". Если да, то при наличии ранее прерванных заданий (блок 3), обладающих не более высоким приоритетом, чем приоритет прерванного обменом или выполненного задания, производится восстановление первого из таких заданий (блок 4). Если ранее прерванных заданий нет, необходимо обращение к очереди заданий.

Одновременно возможно обращение к очереди только одного процессора, поэтому при каждом обращении проверяется (блок 5), произведена ли блокировка обращения к очереди в результате выполнения диспетчера на другом процессоре. Если такая блокировка установлена некоторым процессором, на котором диспетчер производит аналогичные работы, то диспетчер на данном процессоре пребывает в режиме ожидания, циклически выполняя блок 5. При отсутствии блокировки она устанавливается (блок 6).

Если включение диспетчера произошло по признаку "процессор свободен" (блок 7), то при наличии заданий в очереди (блок 10) производится назначение на процессор задания, составляющего голову очереди (блок 13). Если включение диспетчера произошло по признаку "конец задания" (блок 8), то выполненное задание исключается из списка выполняемых данным процессором заданий (блок 9). Далее также производится назначение нового задания (блок 13) при наличии заданий в очереди (блок 10).

Если в результате выполнения блоков 7 и 8 оказалось, что диспетчер включен в момент времени k?, k = 0, 1, ..., при наличии заданий в очереди (блок 11) проверяется (блок 12), является ли приоритет выполняемого на процессоре задания ниже приоритета задания, составляющего голову очереди. Если является, то для дальнейшего выполнения выбирается задание, составляющее голову очереди.

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


Содержание раздела