Справочник по Ada 2005
D.2.1 Модель диспетчеризации задач
Модель диспетчеризации задач определяет планирование задач, основанное на концептуальных очередях готовности, упорядоченных по приоритету.
Статическая семантика
Существует следующий определяемый языком библиотечный пакет:
package Ada.Dispatching is
pragma Pure(Dispatching);
Dispatching_Policy_Error : exception;
end Ada.Dispatching;
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. Действие установки базового приоритета задачи откладывается, пока затронутая задача выполняет защищённое действие.