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

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 выполняет прерываемую часть, а затем блокирует себя, чтобы T2 могла выполнить. Время выполнения T1 измеряется отдельно и вычитается.
  • Верхняя граница времени выполнения asynchronous_select в случае, если асинхронной передачи управления не происходит. Это измеряется между точкой непосредственно перед выполнением задачей asynchronous_select с непустой прерываемой частью, и точкой, где задача продолжает выполнение сразу после него. Время выполнения прерываемой части вычитается.

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

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


Spec-Zone.ru

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