Это пример живого замка, тупика или голода?

Схема планирования: приоритетное планирование

Ситуация:

Процесс L (Низкий приоритет) получает спин-блокировку для ресурса (R). Находясь все еще в критическом разделе, L получает выгоду из-за прибытия другого процесса - H (более высокий приоритет) в очередь готовности.,

Однако H также требуется доступ к ресурсу R, и поэтому он пытается получить спин-блокировку, в результате чего H переходит в состояние ожидания ожидания. Поскольку используются спин-блокировки, H фактически никогда не переходит в состояние ожидания и всегда будет в состоянии выполнения или состоянии готовности (в случае, если процесс с более высоким приоритетом прибывает в очередь готовности), предотвращая выполнение L или любого процесса с приоритетом ниже H.

A) Все процессы с приоритетом меньше H могут считаться находящимися под голодом

B) Все процессы с приоритетом меньше H, а также процесс H можно считать находящимися в тупике. [Но тогда разве процессы не должны находиться в состоянии ожидания, чтобы система считалась тупиковой?]

C) Все процессы с приоритетом меньше H, а также процесс H можно считать находящимися в режиме реального времени. [Но тогда только состояние H постоянно изменяется, все процессы с низким приоритетом остаются в состоянии готовности. Разве состояние всех процессов не должно изменяться (как часть спин-блокировки) непрерывно, если система находится в режиме прямой блокировки?]

D) Только H можно считать находящимся в режиме прямой блокировки, все процессы с более низким приоритетом находятся в состоянии голодания, а не в режиме прямой блокировки.

E) H не будет прогрессировать, но его нельзя считать находящимся в режиме прямой блокировки. Все процессы с более низким приоритетом находятся в состоянии голода, а не в режиме реального времени.

Какие из приведенных выше утверждений являются правильными? Вы можете объяснить?

1 ответ

Это не livelock, потому что определение livelock требует, чтобы "состояния процессов, вовлеченных в livelock, постоянно менялись по отношению друг к другу", и в этом случае состояния фактически не меняются.

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

Ситуацию также можно рассматривать как взаимоблокировку с двумя ресурсами в графе ресурсов и двумя процессами, пытающимися получить эти ресурсы в противоположных направлениях: первый процесс владеет блокировкой и нуждается в процессоре, чтобы продолжить, тогда как второй процесс владеет процессором и нужен замок, чтобы продолжить.

Другие вопросы по тегам