Типы задач в системе, диспетчерский и граничный приоритеты, очередь задач и её структура

Задача – это независимая единица работы, которая может участвовать в конкурентной борьбе за ресурсы вычислительной системы.

С каждой задачей в системе связан блок управления задачей TCB – Task Control Blok. Каждая задача имеет в системе свой приоритет. Он либо приписывается пользова­телем, либо системой, либо обоими. Кроме этого каждая задача имеет следующие состояния:

- активности

- готовности

- ожидания

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

1) Подпрограммы управляющей программы, которые выполняются в состоянии “задача” для программ супервизора функционируют как задачи.

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

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

Задача появляется в системе по следующим причинам.

1)При загрузке ОС создается задача главного планировщика

2)По действию оператора EXEC системная задача формирует макрокоманду ATTACH

3)В системной задаче необходимо выполнить команду ATTACH

4)ATTACH выполняется в программе пользователя при создании подзадачи.

Вся информация, необходимая для управления задачей, сосредоточена в TCB. Для каждой задачи блок TCB создается в момент возникновения и ликвидируется в момент завершения задачи. Блок TCB представляет собой таблицу, находящуюся в основной памяти и содержащую адреса управляющих блоков и таблиц, связанных с выполнением задачи, приоритеты задачи, адреса следующих TCB, очереди, адреса порождающей и порожденной задач, ключи защиты, тип задачи, код завершения и т.д.

Все блоки ТСВ последовательно связаны друг с другом в очередь задач. В момент образования задачи ТСВ заносится в очередь задач, а в момент завершения задачи выводится из нее. Место блока ТСВ в очереди задач определяется диспетчерским приоритетом задачи, который выражается числом от 0 до 255. Когда несколько задач одновременно претендуют на один ресурс, конфликты разрешаются, как правило, на основе сравнения диспетчерских приоритетов. В случае равенства приоритетов, конфликт разрешается в пользу задачи, выдавшей запрос первой. В начале очереди находится TCB с наивысшим приоритетом. ЦП-м управляет задача, находящаяся в состоянии готовности и имеющая максимальный приоритет – активная задача. Активную задачу определяет диспетчер, который входит в состав супервизора.

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

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

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

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

Кроме диспетчерских приоритетов для каждой задачи определяется значение граничного приоритета. В качестве граничного приоритета первоначально устанавливается начальное значение диспетчерского приоритета. Граничный приоритет некоторой задачи определяет максимальное значение диспетчерских приоритетов ее подзадач. Диспетчерский приоритет подзадачи может превысить ее собственный граничный приоритет, но не может быть больше граничного приоритета порождающей задачи, в противном случае подзадаче устанавливается новое значение граничного приоритета, равное максимальному значению диспетчерского приоритета подзадачи. Для организации очереди задач образуется список блоков ТСВ, соответствующий структуре очереди задач. Для организации этого списка имеется четыре поля ТСВ:

1) Поле, содержащие адрес ТСВ основной задачи пользователя;

2) Поле, содержащие адрес ТСВ порождающей задачи для текущей подзадачи;

3) Поле, содержащие адрес ТСВ предыдущей подзадачи (расположенной на одном уровне с текущей подзадачей);

4) Поле, содержащие адрес ТСВ последней порожденной подзадачи для данной задачи.