ОС: Соответствует ли следующий алгоритм условиям для адекватного развития процессов?

"Дан следующий алгоритм для двух процессов, 0 и 1:

Process (i)
REPEAT WHILE Interest [j] = 1 DO;
START
     Interest [i]:=1;
     Critical Section;
     Interest [i]:=0;
     Non-critical Section;
END

где i=0,1; j=1-i;,% представляет собой вектор общих переменных размера 2 и инициализируется в 0.

Проверьте, выполнены ли требования взаимного исключения. Соответствует ли алгоритм условиям для адекватного развития процессов?"

Можете ли вы помочь мне обосновать эту проблему из моего класса ОС?

1 ответ

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

и то и другое Interest [0] := 0 а также Interest [1] := 0поэтому оба процесса вышли бы из цикла while.

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