Обнаружение тупика - PullRequest
       21

Обнаружение тупика

1 голос
/ 08 ноября 2011

Я не уверен, как правильно обнаруживать тупики. Моя книга содержит эту таблицу для пяти процессов P0-P4 и трех типов ресурсов A, B и C. Ресурс A имеет семь экземпляров, тип ресурса B имеет два экземпляра, а тип ресурса C имеет шесть экземпляров. Это состояние распределения ресурсов в момент времени T0:

   Allocation    Request    Available
    A  B  C      A  B  C    A  B  C
P0  0  1  0      0  0  0    0  0  0
P1  2  0  0      2  0  2
P2  3  0  3      0  0  0
P3  2  1  1      1  0  0
P4  0  0  2      0  0  2

Далее утверждается, что система не находится в тупиковом состоянии, но не предоставляет подробных сведений о технике решения проблем. Может ли кто-нибудь разбить его для меня, чтобы я мог легко выполнить все шаги и попробовать подобную проблему?

Вот моя попытка понять проблему:

P0 имеет 1 ресурс B и не требует ресурсов. P0 отказывается от своих ресурсов

    A  B  C      A  B  C    A  B  C
P0  0  0  0      0  0  0    0  1  0
P1  2  0  0      2  0  2
P2  3  0  3      0  0  0
P3  2  1  1      1  0  0
P4  0  0  2      0  0  2

P1 имеет 2 ресурса A и требует 2 ресурса A и C. Недостаточно доступных ресурсов. P2 имеет 3 ресурса A и C и не требует ресурсов. P2 отказывается от своих ресурсов.

    A  B  C      A  B  C    A  B  C
P0  0  0  0      0  0  0    3  1  3
P1  2  0  0      2  0  2
P2  0  0  0      0  0  0
P3  2  1  1      1  0  0
P4  0  0  2      0  0  2

Надеюсь, я пока на правильном пути.

1 Ответ

0 голосов
/ 08 ноября 2011

Взаимные блокировки возникают, когда один раз процесс находится в состоянии «есть A, нужен B», а другой процесс находится в состоянии «есть B, нужен A».

если я правильно читаю ваши таблицы, то это указывает на тупик:

   Allocation    Request    Available
    A  B  C      A  B  C    A  B  C
P0  0  1  0      1  0  0    0  0  0
P1  2  0  0      2  1  2

P0 имеет ресурс B и требует ресурс A, но ресурс A больше не доступен
P1 имеет 2 ресурса A и требует источника B, но больше нет доступных B.

Взаимоблокировка не может быть устранена, пока не станет доступно больше ресурсов A или B. Это означало бы, что P0 или P1 должны отказаться от некоторых своих распределений (или P2 + делает то же самое).

...