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

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

Этот пункт определяет требования к незамедлительности завершения прерванной конструкции.

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

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

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

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

Метрики

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

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

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


Spec-Zone.ru

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