Главным фактором является наличие одной аппаратной команды, которая осуществляет чтение переменной, запись ее значения в область сохранения и установку нужного конкретного значения этой переменной. Подобная команда, обычно называемая TestAndSet, после запуска выполняет все эти действия до конца без прерываний. Неделимая команда TestAndSet(a,b) читает значение логической переменной b, копирует его в а, а затем устанавливает для b значение “истина”.
Program testandset;
Var активный : boolean;
Procedure процесс1;
Var первомувходитьнельзя : boolean;
Begin
While истина do
Begin
первомувхнельзя:=истина;
While первомувхнельзя do Testandset(первомувхнельзя, активный);
Критическийучастокодин;
Активный:=ложь;
Прочиеоператоры 1;
End;
End;
Begin
Активный:=ложь;
Parbegin
Процесс1;
Процесс2;
Parebd
End.
Процесс находится в состоянии тупика, если он ожидает события, которое никогда не произойдет. “Зависание” системы – ситуация, когда один или более процессов находятся в состоянии тупика.
Операционная система выполняет по преимуществу функции администратора ресурсов. Она отвечает за распределение обширных наборов ресурсов различных типов. Рассмотрим ресурсы, которые являются “оперативно-перераспределяемыми” такие как центральный процессор и основная память. В вычислительной машине самым динамическим ресурсом является центральный процессор. ЦП должен работать в режиме быстрого переключения, обслуживая большое число конкурирующих процессов, чтобы все они могли двигаться в приемлемой скоростью. Если конкретный процесс достигает точки, когда он не может эффективно использовать ЦП, то право управления центральным процессором отбирается у этого процесса и предоставляется другому. Таким образом, организация динамического переключения ресурсов является исключительно важным фактором для обеспечения работы мультипрограммных вычислительных машин.
1.Процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются (условие взаимоисключения).
2.Процессы удерживают за собой ресурсы, уже выделенные им, ожидая в то же время дополнительных ресурсов (условие ожидания ресурсов).
3.Ресурсы нельзя отобрать у процессов, удерживающих их, пока эти ресурсы не будут использованы для завершения работы (условие неперераспределяемости).
4.Существует кольцевая цепь процессов, в которой каждый процесс удерживает за собой один или более ресурсов, требующихся следующему процессу цепи (условие кругового ожидания).