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

D.2.2 Прагмы управления диспетчеризацией задач

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

Синтаксис

Форма pragma Task_Dispatching_Policy следующая:
pragma Task_Dispatching_Policy(policy_идентификатор);
Форма pragma Priority_Specific_Dispatching следующая:
pragma Priority_Specific_Dispatching (
policy_идентификатор, first_priority_выражение, last_priority_выражение);

Правила разрешения имен

Ожидаемый тип для first_priority_выражение и last_priority_выражение — Integer.

Правила допустимости

policy_идентификатор в pragma Task_Dispatching_Policy должен быть именем политики диспетчеризации задач.
policy_идентификатор в pragma Priority_Specific_Dispatching должен быть именем политики диспетчеризации задач.
Оба first_priority_выражение и last_priority_выражение должны быть статическими выражениями в диапазоне System.Any_Priority; last_priority_выражение должно иметь значение, большее или равное first_priority_выражение.

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

Pragma Task_Dispatching_Policy задает единую политику диспетчеризации задач.
Pragma Priority_Specific_Dispatching задаёт политику диспетчеризации задач для указанного диапазона приоритетов. Задачи с базовыми приоритетами в указанном диапазоне приоритетов в прагме Priority_Specific_Dispatching определяют свои активные приоритеты в соответствии с указанной политикой диспетчеризации. Задачи с активными приоритетами в указанном диапазоне приоритетов в прагме Priority_Specific_Dispatching диспетчеризуются в соответствии с указанной политикой диспетчеризации.
Если разбиение содержит одну или несколько прагм Priority_Specific_Dispatching, политика диспетчеризации для приоритетов, не охваченных никакими прагмами Priority_Specific_Dispatching, — FIFO_Within_Priorities.

Правила после компиляции

Прагма Task_Dispatching_Policy — прагма конфигурации. Прагма Priority_Specific_Dispatching — прагма конфигурации.
Диапазоны приоритетов, указанные в более чем одной прагме Priority_Specific_Dispatching в одном разбиении, не должны перекрываться.
Если разбиение содержит одну или несколько прагм Priority_Specific_Dispatching, оно не должно содержать прагму Task_Dispatching_Policy.
Этот абзац был удалён.

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

Политика диспетчеризации задач определяет детали диспетчеризации задач, которые не покрываются базовой моделью диспетчеризации задач. Эти правила управляют моментом вставки и удаления задач из очередей готовности. Единая политика диспетчеризации задач задаётся прагмой Task_Dispatching_Policy. Прагма Priority_Specific_Dispatching назначает различные политики диспетчеризации поддиапазонам System.Any_Priority.
Если ни одна из прагм не применяется ни к одному из модулей программы, составляющих разбиение, политика диспетчеризации задач для данного разбиения не определена.
Если разбиение содержит одну или несколько прагм Priority_Specific_Dispatching, для текущей запущенной задачи процессора происходит точка диспетчеризации задач, всякий раз, когда есть непустая очередь готовности для данного процессора с более высоким приоритетом, чем приоритет запущенной задачи.
Задача, у которой изменился базовый приоритет, может переместиться из одной политики диспетчеризации в другую. Она немедленно подчиняется новой политике диспетчеризации.
Абзацы с 7 по 13 были перемещены в D.2.3.

Требования к реализации

Реализация должна позволять для одного разбиения задать политику блокировки (см. D.3) как Ceiling_Locking, а также указать одну или несколько прагм Priority_Specific_Dispatching.

Требования к документации

Абзацы с 14 по 16 были перемещены в D.2.3.

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

Реализации разрешено определять другие политики диспетчеризации задач, но не обязательно поддерживать указание более чем одной политики диспетчеризации задач на разбиение.
Реализация не обязана поддерживать pragma Priority_Specific_Dispatching, если её невозможно поддерживать в целевой среде.
Абзацы с 19 по 21 были удалены.


Spec-Zone.ru

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