ОС: Соответствует ли следующий алгоритм условиям для адекватного развития процессов?
"Дан следующий алгоритм для двух процессов, 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.