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

D.6 Прерывание с приоритетом

Этот подпункт определяет требования к срочности завершения прерванного блока.

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

В системе с одним процессором прерванный блок завершается немедленно в первой точке, которая находится вне выполнения операции отложенного прерывания.

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

В многопроцессорной системе реализация должна документировать любые условия, которые приводят к задержке завершения прерванного блока по сравнению со сроком, указанным для однопроцессорной системы.

Метрики

Реализация должна документировать следующие метрики:
  • Время выполнения, в тактах процессора, необходимое для того, чтобы оператор abort_statement привел к завершению прерванной задачи. Это измеряется в ситуации, когда задача T2 прерывает задачу T1 и прерывает T1. У T1 нет кода завершения. T2 должна проверить, завершена ли T1, используя атрибут Terminated.
  • В многопроцессорной системе верхняя граница в секундах задержки завершения прерванной задачи по сравнению со сроком, необходимым для однопроцессорной системы.
  • Верхняя граница времени выполнения asynchronous_select в тактах процессора. Это измеряется между точкой непосредственно перед выполнением задачей T1 защищенной операции Pr.Set, которая устанавливает условие condition барьера входа entry_barrier Pr.Wait в значение True, и точкой, где задача T2 возобновляет выполнение непосредственно после вызова входа Pr.Wait в asynchronous_select. T1 прерывает T2 во время выполнения ею прерывимой части, а затем блокирует себя, чтобы T2 могла выполниться. Время выполнения T1 измеряется отдельно и вычитается.
  • Верхняя граница времени выполнения asynchronous_select в случае, если не происходит асинхронной передачи управления. Это измеряется между точкой непосредственно перед выполнением задачей asynchronous_select с непустой прерывимой частью и точкой, где задача продолжает выполнение сразу после неё. Время выполнения прерывимой части вычитается.

Рекомендации по реализации

Несмотря на то, что оператор abort_statement включён в список потенциально блокирующих операций (см. 9.5.1), рекомендуется реализовывать этот оператор таким образом, чтобы он никогда не требовал блокировки задачи, выполняющей abort_statement.
В многопроцессорной системе задержка, связанная с прерыванием задачи на другом процессоре, должна быть ограничена; для достижения этого реализация должна использовать периодическое опрошивание, если это необходимо.
ПРИМЕЧАНИЯ
32 Прерывание не изменяет активного или базового приоритета прерванной задачи.
33 Прерывание не может быть более немедленным, чем это разрешено правилами отсрочки прерывания во время завершения и в защищенных действиях.


Spec-Zone.ru

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