Инверсия приоритета

У меня проблема понимание Priority Inversion

Фрагмент из статьи:

Предположим, существует задача L с низким приоритетом . Этой задаче требуется ресурс R. Предположим, что L работает и получает ресурс R. Теперь есть другая задача H с высоким приоритетом. Это задача также требует ресурса R. Предположим, H начинается после того, как L получает ресурс R.Теперь H нужно дождаться, пока L не освободит ресурс R.

Все работает, как ожидалось, до этого момента, но проблемы возникают, когда новая задача M начинается со средним приоритетом в это время. `Поскольку R все еще используется (L), H не может работать. Поскольку M - это незаблокированная задача с наивысшим приоритетом, она будет запланирована до L. Поскольку L было вытеснено M, L не может отказаться от R. M будет работать , пока не закончится, затем L будет работать - по крайней мере до точки, когда он сможет отказаться от R - и затем будет работать H. {{1} } Таким образом, в приведенном выше сценарии задача со средним приоритетом выполнялась перед задачей с высоким приоритетом , что фактически дает нам инверсию приоритета .

Вопрос актуален ко второй части статьи. Почему процесс с приоритетом H (более высокий) не может упреждать процесс с приоритетом L (более низкий), но процесс с приоритетом M (средний) может упреждать? т.е. если H был заблокирован, так как R использовался, почему не был заблокирован и M?

5
задан CharlesB 6 June 2011 в 11:59
поделиться