Spec-Zone.ru › Ada 95
Справочник по Ada 95

D.2.1 Модель диспетчеризации задач

Модель диспетчеризации задач задает прерывистое планирование, основанное на концептуальных очередях готовности, упорядоченных по приоритету.

Динамическая семантика

Задача выполняется (то есть становится выполняющейся задачей) только тогда, когда она готова (см. 9.2) и доступны необходимые ей ресурсы выполнения. Процессоры выделяются задачам на основе активного приоритета каждой задачи.
Реализация может определять, будет ли в многопроцессорной системе задача, ожидающая доступа к защищённому объекту, занимать свой процессор.
Диспетчеризация задач — это процесс выбора одной готовой задачи для выполнения на процессоре. Этот выбор производится в определённые моменты во время выполнения задачи, называемые точками диспетчеризации задач. Задача достигает точки диспетчеризации задач всякий раз, когда она блокируется и когда она становится готовой. Кроме того, завершение accept_statement (см. 9.5.2) и завершение задачи являются точками диспетчеризации для выполняющейся задачи. Другие точки диспетчеризации задач определены в этом приложении.
Политики диспетчеризации задач задаются с помощью концептуальных очередей готовности, состояний задач и прерывания задач. Очередь готовности — это упорядоченный список готовых задач. Первая позиция в очереди называется головой очереди, а последняя позиция — хвостом очереди. Задача готова, если она находится в очереди готовности или выполняется. Каждый процессор имеет одну очередь готовности для каждого значения приоритета. В любой момент времени каждая очередь готовности процессора содержит ровно набор задач этого приоритета, готовых к выполнению на этом процессоре, но не выполняющихся ни на каком процессоре; то есть те задачи, которые готовы, не выполняются ни на каком процессоре и могут быть выполнены с использованием этого процессора и других доступных ресурсов. Одна задача может находиться в очередях готовности более чем одного процессора.
Каждый процессор также имеет одну выполняющуюся задачу, которая является задачей, в данный момент выполняемой этим процессором. Всякий раз, когда задача, выполняющаяся на процессоре, достигает точки диспетчеризации задачи, выбирается одна задача для выполнения на этом процессоре. Выбранной задачей является та, которая находится в начале очереди готовности наивысшего приоритета, непустой очереди; эта задача затем удаляется из всех очередей готовности, к которым она принадлежит.
Прерывимый ресурс — это ресурс, который, будучи выделен одной задаче, может быть (временно) выделен другой. Процессоры являются прерывимыми ресурсами. Доступ к защищённому объекту (см. 9.5.1) является не прерывимым ресурсом. Когда задача более высокого приоритета направляется на процессор, а ранее выполнявшаяся задача размещается в соответствующей очереди готовности, последняя задача называется прерванной.
Новая выполняющаяся задача также выбирается всякий раз, когда есть непустая очередь готовности с более высоким приоритетом, чем приоритет выполняющейся задачи, или когда политика диспетчеризации задач требует, чтобы выполняющаяся задача вернулась в очередь готовности. Это также точки диспетчеризации задач.

Разрешения реализации

Реализация имеет право определять дополнительные ресурсы как ресурсы выполнения и определять соответствующие политики распределения для них. Такие ресурсы могут иметь определённое реализацией воздействие на диспетчеризацию задач (см. D.2.2).
Реализация может наложить ограничения на задачи, чей активный приоритет находится в диапазоне Interrupt_Priority.
ПРИМЕЧАНИЯ
7 Раздел 9 описывает обстоятельства, при которых задача становится готовой. Состояние готовности зависит от правил активации и завершения задач, инструкций ожидания и вызовов входов. Когда задача не готова, она считается заблокированной.
8 Пример возможного определённого реализацией ресурса выполнения — страница физической памяти, которую нужно загрузить определённой страницей виртуальной памяти, прежде чем задача сможет продолжить выполнение.
9 Очереди готовности — чисто концептуальны; нет требования, чтобы такие списки физически существовали в реализации.
10 Пока задача выполняется, она не находится в никакой очереди готовности. Всякий раз, когда задача, выполняющаяся на процессоре, добавляется в очередь готовности, выбирается новая выполняющаяся задача для этого процессора.
11 В многопроцессорной системе задача может находиться в очередях готовности более чем одного процессора. В крайнем случае, если несколько процессоров используют один и тот же набор готовых задач, содержимое их очередей готовности идентично, и поэтому они могут рассматриваться как использующие одну очередь готовности, и могут быть реализованы таким образом. Таким образом, модель диспетчеризации охватывает многопроцессорные системы, где диспетчеризация реализуется с использованием одной очереди готовности, а также те, которые имеют отдельные области диспетчеризации.
12 Приоритет задачи определяется правилами, указанными в этом подразделе, и в D.1, «Приоритеты задач», D.3, «Заблокирование приоритета потолка» и D.5, «Динамические приоритеты».


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API