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

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

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

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

Существует следующий определённый языком библиотечный пакет:
package Ada.Dispatching is
pragma Preelaborate(Dispatching);
procedure Yield;
Dispatching_Policy_Error : exception;
end Ada.Dispatching;
Dispatching служит родителем других определённых языком библиотечных единиц, связанных с диспетчеризацией задач.

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

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

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

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


Spec-Zone.ru

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