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

D.9 Точность задержки

Данный пункт описывает требования к производительности для delay_statement. Правила применимы как к delay_relative_statement, так и к delay_until_statement. Аналогично, они одинаково применяются к простому delay_statement и к тому, который используется в delay_alternative.

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

Эффект delay_statement для Real_Time.Time определяется в терминах Real_Time.Clock:
  • Если C1 — значение Clock, считанное до того, как задача выполняет delay_relative_statement с продолжительностью D, а C2 — значение Clock, считанное после возобновления выполнения задачи после этого delay_statement, то C2 - C1 >= D.
  • Если C — значение Clock, считанное после возобновления выполнения задачи после delay_until_statement со значением Real_Time.Time T, то C >= T.
Простой delay_statement с отрицательным или нулевым значением времени окончания не приводит к блокированию вызывающей задачи; тем не менее, это потенциально блокирующая операция (см. 9.5.1).
Когда delay_statement появляется в delay_alternative вызова timed_entry_call, попытка выбора вызова входа предпринимается независимо от указанного времени окончания. Когда delay_statement появляется в selective_accept_alternative, и вызов очередится на одном из открытых входов, выбор этого вызова входа продолжается независимо от значения выражения задержки.

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

Реализация должна задокументировать минимальное значение выражения задержки delay_relative_statement, которое приводит к фактическому блокированию задачи.
Реализация должна задокументировать минимальную разницу между значением выражения задержки delay_until_statement и значением Real_Time.Clock, которая приводит к фактическому блокированию задачи.

Метрики

Реализация должна задокументировать следующие метрики:
  • Верхняя граница времени выполнения, в циклах процессора, delay_relative_statement, значение выражения задержки которого меньше или равно нулю.
  • Верхняя граница времени выполнения, в циклах процессора, delay_until_statement, значение выражения задержки которого меньше или равно значению Real_Time.Clock в момент выполнения оператора. Аналогично для Calendar.Clock.
  • Верхняя граница запаздывания delay_relative_statement для положительного значения выражения задержки в ситуации, когда задача имеет достаточный приоритет для прерывания процессора, как только она становится готовой и не должна ждать других ресурсов выполнения. Верхняя граница выражается как функция от значения выражения задержки. Запаздывание получается путем вычитания значения выражения задержки из фактической продолжительности. Фактическая продолжительность измеряется с точки непосредственно перед выполнением задачи delay_statement до точки сразу после возобновления выполнения задачи после этого оператора.
  • Верхняя граница запаздывания delay_until_statement в ситуации, когда значение запрошенного времени окончания находится после момента начала выполнения оператором задачи, задача имеет достаточный приоритет для прерывания процессора, как только она становится готовой, и ей не нужно ждать других ресурсов выполнения. Верхняя граница выражается как функция от разницы между запрошенным временем окончания и значением часов в момент начала выполнения оператора. Запаздывание delay_until_statement получается путем вычитания запрошенного времени окончания из реального времени возобновления выполнения задачи после этого оператора.
ПРИМЕЧАНИЯ
32 Время выполнения delay_statement, которое не приводит к блокированию задачи (например, ``delay 0.0;''), представляет интерес в ситуациях, когда задержки используются для достижения произвольного кругового распределения задач среди задач с одинаковым приоритетом.


Spec-Zone.ru

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