Справочник по Ada 95
D.12 Другие оптимизации и правила детерминизма
Данный пункт описывает различные требования к улучшению отклика и детерминизма в реальной системе в режиме реального времени.
Требования к реализации
Если реализация блокирует прерывания (см. C.3) не в результате прямого действия пользователя (например, выполнения защищенного действия), то должно быть верхнее ограничение на продолжительность этого блокирования.
Реализация должна распознавать защищенные типы без входов. Надстройка по приобретению ресурса выполнения объекта такого типа (см. 9.5.1) должна быть минимизирована. В частности, не должно быть никакой накладной работы из-за оценки условий entry_barrier.
Unchecked_Deallocation должно поддерживаться для завершенных задач, которые обозначены типами доступа, и должно иметь эффект освобождения всех хранилищ, связанных с задачей. Это включает в себя любое хранилище системы выполнения или кучи, которое было неявно выделено для задачи реализацией.
Требования к документации
Реализация должна документировать верхнее ограничение на продолжительность блокирования прерываний, вызванного реализацией. Если это различается для разных прерываний или уровней приоритетов прерываний, то оно должно быть задокументировано для каждого случая.
Метрики
Реализация должна документировать следующие метрики:
- Накладные расходы, связанные с получением взаимно исключительного доступа к защищенному объекту без входов. Это должно быть измерено следующим образом:
- Для защищенного объекта следующей формы:
protected Lock is
procedure Set;
function Read return Boolean;
private
Flag : Boolean := False;
end Lock;
procedure Set;
function Read return Boolean;
private
Flag : Boolean := False;
end Lock;
protected body Lock is
procedure Set is
begin
Flag := True;
end Set;
function Read return Boolean
Begin
return Flag;
end Read;
end Lock;
procedure Set is
begin
Flag := True;
end Set;
function Read return Boolean
Begin
return Flag;
end Read;
end Lock;
- Время выполнения, в тактах процессора, вызова Set. Это измеряется между точкой непосредственно перед вызовом и точкой непосредственно после завершения вызова. Функция Read должна вызываться позже, чтобы убедиться, что Set действительно был вызван (а не оптимизирован). Вызывающая задача должна иметь достаточно высокий приоритет, чтобы не быть прерванной в течение периода измерения. Защищенный объект должен иметь достаточно высокий приоритет потолка, чтобы позволить задаче вызвать Set.
- Для многопроцессорной системы, если она поддерживается, метрика должна быть представлена в случае, когда нет конфликта (по ресурсу выполнения) со стороны задач, выполняемых на других процессорах.