Протокол потолка приоритета
В вычислениях в реальном времени протокол потолка приоритета — это протокол синхронизации общих ресурсов , позволяющий избежать неограниченной инверсии приоритетов и взаимной тупиковой ситуации из-за неправильного вложения критических секций . В этом протоколе каждому ресурсу назначается потолок приоритета, который равен задачи наивысшему приоритету любой , которая может заблокировать ресурс. Протокол работает путем временного повышения приоритетов задач в определенных ситуациях, поэтому для него требуется планировщик , поддерживающий динамическое планирование приоритетов . [1]
ICPP против OCPP
[ редактировать ]Существует два варианта протокола: протокол первоначального приоритета потолка ( OCPP ) и протокол немедленного приоритета потолка ( ICPP ). Поведение двух схем потолка в худшем случае идентично с точки зрения планирования. Оба варианта работают за счет временного повышения приоритетов задач. [2]
В OCPP приоритет задачи X повышается, когда задача Y с более высоким приоритетом пытается получить ресурс, который X заблокировал. Затем приоритет задачи повышается до самого высокого приоритета, который был заблокирован сам по себе, гарантируя, что задача X быстро завершит свою критическую часть, разблокируя ресурс. Задаче разрешено блокировать ресурс только в том случае, если ее динамический приоритет выше, чем предельные значения приоритета всех ресурсов, заблокированных другими задачами. В противном случае задача блокируется в ожидании ресурса. [2]
В ICPP приоритет задачи немедленно повышается, когда она блокирует ресурс. Приоритет задачи установлен на максимальном уровне приоритета ресурса, поэтому ни одна задача, которая может заблокировать ресурс, не может быть запланирована. Это гарантирует свойство OCPP: «Задача может заблокировать ресурс только в том случае, если ее динамический приоритет выше, чем потолки приоритета всех ресурсов, заблокированных другими задачами». [2]
- ICPP проще реализовать, чем OCPP, поскольку нет необходимости отслеживать отношения блокировки. [2]
- ICPP приводит к меньшему количеству переключений контекста, поскольку блокировка происходит до первого выполнения. [2]
- ICPP требует более приоритетных перемещений, поскольку это происходит при использовании всех ресурсов. [2]
- OCPP меняет приоритет только в том случае, если произошла фактическая блокировка. [2]
ICPP называется «Потолочной блокировкой» в Ada , «Протоколом приоритетной защиты» в POSIX и «Эмуляцией потолка приоритета» в RTSJ . [3] Он также известен как «Протокол наивысшего приоритета шкафчика» (HLP). [4]
См. также
[ редактировать ]Ссылки
[ редактировать ]- Луи Ша; Рагунатан Раджкумар и Джон П. Лехочки (сентябрь 1990 г.). «Протоколы наследования приоритетов: подход к синхронизации в реальном времени» (PDF) . Транзакции IEEE на компьютерах . 39 (9): 1175–1185. дои : 10.1109/12.57058 .
- ^ Ренвик, Кайл; Ренвик, Билл (18 мая 2004 г.). «Как использовать наследование приоритетов» . Embedded.com . Проверено 11 ноября 2014 г.
- ^ Jump up to: а б с д и ж г «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 13 ноября 2014 г. Проверено 13 ноября 2014 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Алан Бернс ; Энди Веллингс (март 2001 г.). Системы реального времени и языки программирования — Ada 95, Java реального времени и POSIX реального времени (3-е изд.). Эддисон Уэсли Лонгмейн. ISBN 0-201-72988-1 .
- ^ http://user.it.uu.se/~yi/courses/rts/dvp-rts-08/notes/synchronization-resource-sharing.pdf [ только URL-адрес PDF ]