Пример 12 граничного приоритета

Рассмотрим добавление второго ресурса, который будет разделен этими тремя задачами из Примера 10 (Задачи High, Medium, и Low). Предположим, что Задача High должна последовательно обратиться к Ресурсам 1 и 2. Если Задача Low начинается первой и обращается к Ресурсу 1 (запускается со времени 1 и отмечен наклонными чертами вправо на Рисунке 6), она может быть выгружена Задачей Medium (во время 2) даже при использовании приоритетного наследования, потому что приоритет Задачи Low’s не увеличен, пока Задача High не запросит доступ к Ресурсу 1. Таким образом, Задача Medium начинает выполняться и обращается к Ресурсу 2 (отмеченный наклонными чертами влево на рисунке). Прежде, она завершена, Задача High активизируется (во время 3) и узнает, что не может обратиться ни к какому ресурсу (во время 4), потому что оба ресурса блокированы двумя более-низко-приоритетными задачами. Это приводит к блокировке Задачи High на время, необходимое для выполнения двумя другими задачами доступа к ресурсу. Задача High может продолжиться только тогда, когда задачи, которые блокировали эти ресурсы, выполнятся (время от времени 5 и 6). В самом плохом случае, если задача совместно использует М ресурсов с более-низко-приоритетными задачами, она может быть блокирована на М отсчетов времени. Алгоритм, который решает такие Проблемы, называютпротоколом граничных приоритетов (priority ceiling protocol). Его основная идея состоит в том, что задача может вытеснить другую задачу, которая в настоящее время обращается к ресурсу и может обратиться к другому ресурсу, только если приоритет этого нового доступа будет выше чем наиболее высокий из приоритетов, которые могут быть унаследованы выгружаемой задачей. Если используются семафоры, чтобы управлять доступом к ресурсу, каждому Семафору назначается приоритет (перекрывающий) равный самому высокому приоритету всех задач, которые могут обратиться к этому Семафору.

Рисунок 5 Иллюстрация взаимной блокировки

Рисунок 6 Иллюстрация множественной блокировки

Rajkumar [10] дал примеры, иллюстрирующие предотвращение взаимной и многократной блокировки для протокола граничного приоритета. Подобный протокол, названный политикой ресурса Стека (Stack resource policy) был описан в статье Baker [11]. Предлагаем читателю применить протокол граничного приоритета к Примерам 11 и 12.

Нужно помнить, что, вообще то, инверсия приоритетов не может быть устранена, хотя ею можно управлять, минимизируя продолжительность блокирования задач из-за нее. Различные виды блокировок могут быть учтены при использовании Теорем 1 и 2 [12] при использовании следующей методики:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: