Операционные системы и программное обеспечение на платформе zSeries

       

Управление задачами


Напомним, что задача (task) представляет собой минимальную единицу работы, которой система предоставляет процессорные кванты. Задачи порождаются по инициативе приложений (с помощью макровызова ATTACH) для распараллеливания выполнения отдельных фрагментов кода программы. Любая программа, как минимум, представляет собой одну задачу, но может быть построена в виде совокупности параллельно выполняемых задач.

Для каждой задачи z/OS строит специальный управляющий блок - блок управления задачей TCB (Task Control Block), который содержит основные атрибуты задачи и размещается в адресном пространстве соответствующего приложения (в области планировщика работ SWA/ESWA пользовательского региона). В общем случае с каждым адресным пространством ассоциируется несколько TCB, включая некоторые системные задачи, обслуживающие выполнение пользовательских приложений. Все блоки TCB связаны между собой в иерархическую цепочку с помощью специальных указателей.

Наряду с задачами в z/OS существует еще один тип работ - так называемые "запросы на выполнение сервисных программ". Эти запросы инициируются системным кодом, исполняемым в некотором адресном пространстве, для выполнения действий, затрагивающих другое адресное пространство. Запросы выполняются в невытесняющем режиме и имеют ряд ограничений, связанных с невозможностью применения системных вызовов (SVC-прерываний) и использования памяти вне области SQA. Для каждого такого запроса система строит управляющий блок, получивший название SRB (System Request Block).

Таким образом, в любой момент времени в системе присутствует некоторое количество работ в виде задач и запросов, которые готовы к выполнению и нуждаются в предоставлении процессорного времени. Проблема распределения процессорного времени решается с помощью специальной системной программы, тесно связанной с процедурой обработки прерываний, которая называется диспетчер (dispatcher) или планировщик работ [7].

Диспетчер формирует очереди работ WUQ (Work Unit Queue) из числа вновь созданных, а также готовых к выполнению, но ранее прерванных задач и запросов (рис. 5.12).
Очереди имеют двухуровневую организацию. На первом уровне формируется цепочка ASCB - управляющих блоков адресных пространств, страницы которых представлены в физической памяти (swap in) и у которых имеется хотя бы одна задача или запрос, готовые к выполнению (т.е. не ожидающие завершения какого-либо события). ASCB упорядочены в соответствии с диспетчерскими приоритетами, установленными для различных адресных пространств с помощью менеджера управления рабочей нагрузкой WLM. Каждое адресное пространство располагает собственной очередью готовых к выполнению задач и запросов в виде цепочки управляющих блоков TCB и SRB, на которую имеется указатель в ASCB (очередь второго уровня). SRB всегда имеют преимущество перед TCB. Любое событие, изменяющее статус адресного пространства и его работ, приводит к изменению очереди.


Рис. 5.12.  Диспетчеризация работ

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

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

  • загрузка адреса таблицы сегментов в управляющий регистр CR;
  • восстановление ранее сохраненных регистров процессора;
  • восстановление старого PSW и передача управления следующей работе.



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