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

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

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

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

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

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

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

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

Реализация может определять дополнительные ресурсы как ресурсы выполнения и соответствующие им политики распределения. Такие ресурсы могут оказывать определённое влияние на диспетчеризацию задач.
Реализация может накладывать определённые ограничения на задачи, чей активный приоритет находится в диапазоне 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