Справочник по Ada 2005
Точность задержки
Данный пункт описывает требования к производительности для оператора задержки. Правила применяются как к оператору задержки на относительное время, так и к оператору задержки до определенного времени. Аналогично, они одинаково применяются к простому оператору задержки и к таковому, который появляется в альтернативе задержки.
Динамические семантика
Действие оператора задержки для Real_Time.Time определяется в терминах Real_Time.Clock:
- Если C1 — значение Clock, прочитанное до того, как задача выполняет оператор задержки на относительное время с продолжительностью D, и C2 — значение Clock, прочитанное после того, как задача возобновляет выполнение после этого оператора задержки, то C2 – C1 >= D.
- Если C — значение Clock, прочитанное после того, как задача возобновляет выполнение после оператора задержки до определенного времени со значением Real_Time.Time T, то C >= T.
Простой оператор задержки с отрицательным или нулевым значением времени завершения не приводит к блокированию вызывающей задачи; тем не менее, это потенциально блокирующая операция (см. 9.5.1).
Когда оператор задержки появляется в альтернативе задержки вызова входа, выбор вызова входа предпринимается независимо от указанного времени завершения. Когда оператор задержки появляется в альтернативе выбора, и вызов помещён в очередь на один из открытых входов, выбор этого вызова входа продолжается независимо от значения выражения задержки.
Требования к документации
Реализация должна задокументировать минимальное значение выражения задержки в операторе задержки на относительное время, которое приводит к фактическому блокированию задачи.
Реализация должна задокументировать минимальное различие между значением выражения задержки в операторе задержки до определенного времени и значением Real_Time.Clock, которое приводит к фактическому блокированию задачи.
Метрики
Реализация должна задокументировать следующие метрики:
- Верхняя граница времени выполнения, в тактах процессора, оператора задержки на относительное время, у которого запрошенное значение выражения задержки меньше или равно нулю.
- Верхняя граница времени выполнения, в тактах процессора, оператора задержки до определенного времени, у которого запрошенное значение выражения задержки меньше или равно значению Real_Time.Clock в момент выполнения оператора. Аналогично для Calendar.Clock.
- Верхняя граница опоздания оператора задержки на относительное время для положительного значения выражения задержки в ситуации, когда задача имеет достаточный приоритет для прерывания процессора, как только она станет готовой, и не должна ожидать каких-либо других ресурсов выполнения. Верхняя граница выражается как функция от значения выражения задержки. Опоздание получается путем вычитания значения выражения задержки из фактической продолжительности. Фактическая продолжительность измеряется с точки непосредственно перед выполнением задачи оператора задержки до точки непосредственно после возобновления выполнения задачи после этого оператора.
- Верхняя граница опоздания оператора задержки до определенного времени в ситуации, когда значение запрошенного времени завершения находится после момента начала выполнения задачи оператора, задача имеет достаточный приоритет для прерывания процессора, как только она станет готовой, и не должна ожидать каких-либо других ресурсов выполнения. Верхняя граница выражается как функция от разницы между запрошенным временем завершения и значением часов в момент начала выполнения оператора. Опоздание оператора задержки до определенного времени получается путем вычитания запрошенного времени завершения из реального времени, когда задача возобновляет выполнение после этого оператора.
ПРИМЕЧАНИЯ
Этот абзац был удален.