Протокол приоритетного потолка


В вычислениях в реальном времени протокол потолка приоритетов — это протокол синхронизации общих ресурсов , позволяющий избежать неограниченной инверсии приоритетов и взаимной взаимоблокировки из-за неправильной вложенности критических секций . В этом протоколе каждому ресурсу назначается потолок приоритета, который равен наивысшему приоритету любой задачи , которая может заблокировать ресурс. Протокол работает путем временного повышения приоритетов задач в определенных ситуациях, поэтому для него требуется планировщик , поддерживающий динамическое планирование приоритетов . [1]

Существует два варианта протокола: исходный протокол приоритета потолка ( OCPP ) и протокол немедленного приоритета потолка ( ICPP ). Поведение двух схем потолка в наихудшем случае идентично с точки зрения планирования. Оба варианта работают за счет временного повышения приоритета задач. [2]

В OCPP приоритет задачи X повышается, когда задача Y с более высоким приоритетом пытается получить ресурс, заблокированный X. Затем приоритет задачи повышается до потолка приоритета ресурса, гарантируя, что задача X быстро завершит свой критический участок, разблокировав ресурс. Задаче разрешается блокировать ресурс только в том случае, если ее динамический приоритет выше, чем предельные значения приоритета всех ресурсов, заблокированных другими задачами. В противном случае задача блокируется в ожидании ресурса. [2]

В ICPP приоритет задачи сразу повышается, когда она блокирует ресурс. Приоритет задачи устанавливается равным максимальному приоритету ресурса, поэтому никакая задача, которая может заблокировать ресурс, не может быть запланирована. Это обеспечивает свойство OCPP, согласно которому «задача может заблокировать ресурс только в том случае, если ее динамический приоритет выше, чем предельный уровень приоритета всех ресурсов, заблокированных другими задачами». [2]

ICPP называется «Ceiling Locking» в Ada , «Priority Protect Protocol» в POSIX и «Priority Ceiling Emulation» в RTSJ . [3] Он также известен как «Протокол наивысшего приоритета шкафчика» (HLP). [4]