Когда задача наследует потолок приоритета в многопроцессорном PCP
Подробно: наследует ли задача верхний предел приоритета, только когда она выполняет критическую секцию или уже когда она выбрана для следующей критической секции (например, после блокировки). Я не мог найти ответ на этот вопрос в газетах, которые я прочитал, некоторые из них:
- "Протоколы синхронизации в реальном времени для мультипроцессоров с общей памятью" от Rajkumar
- "Улучшенный анализ и оценка времени блокировки для протокола приоритета многопроцессорного приоритета", Yang et al.
- "Синхронизация: протоколы доступа к общим ресурсам" Midonnet et al.
Рассмотрим следующий пример: три задачи T1
, T2
, T3
(с приоритетами P1 > P2 > P3
) работают на двух процессорах: T1
на p1
а также T2
, T3
на p2
, T1
а также T3
получить доступ к глобальному ресурсу R
защищен семафором с использованием MPCP. Следующий график:
| t | p1 | p2 |
|:-:|:--------------:|:-----------------------------------------------------:|
| 1 | T1 runs | T3 runs |
| 2 | T1 accesses R | T3 accesses R |
| 3 | T1 acquires R | T3 gets blocked |
| 4 | T1 executes CS | T2 gets activated and runs |
| 5 | T1 releases R | Does T3 inherit the priority ceiling and preempt T2? |
В t=5
, T1
выпускает семафор, на котором T3
заблокирован. Есть ли T3
наследовать приоритетный потолок немедленно и таким образом выгрузить T2
или T3
помещен в очередь ожидания p2
и наследует потолок приоритета, как только он запланирован на данном процессоре и, таким образом, может выполнить критическую секцию?