Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОС часть 1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.23 Mб
Скачать

2.3 Аппаратная реализация взаимоисключения

Главным фактором является наличие одной аппаратной команды, которая осуществляет чтение переменной, запись ее значения в область сохранения и установку нужного конкретного значения этой переменной. Подобная команда, обычно называемая TestAndSet, после запуска выполняет все эти действия до конца без прерываний. Неделимая команда TestAndSet(a,b) читает значение логической переменной b, копирует его в а, а затем устанавливает для b значение “истина”.

Program примерtestandset;

Var активный : логический;

Procedure процессодин;

Var первомувходитьнельзя : логической;

Begin

While истина do

Begin

Первомувходитьнельзя:=истина;

While первомувходитьнельзя do

Testandset(первомувходитьнельзя, активный);

Критическийучастокодин;

Активный:=ложь;

Прочиеоператоры1;

End;

End;

Procedure процессдва;

Var второмувходитьнельзя : логической;

Begin

While истина do

Begin

Второмувходитьнельзя:=истина;

While второмувходитьнельзя do

Testandset(второмувходитьнельзя, активный);

Критическийучастокдва;

Активный:=ложь;

Прочиеоператоры2;

End;

End;

Begin

Активный:=ложь;

Parbegin

Процессодин;

Процессдва;

Parebd

End.

2.4 Реализация взаимоисключения с помощью семафоров

Семафор – защищенная переменная, значение которой можно опрашивать и менять только при помощи специальных операций P и V. Операция P(S) выполняется следующим образом S:=S-1. V(S) – S:=S+1. Если одновременно несколько процессов попытаются выполнить операцию P(S), это будет разрешено только одному из них, а остальным придется ждать. Семафоры и операции над ними могут быть реализованы как программно, так и аппаратно. Как правило, они реализуются в ядре операционной системы.

3. Тупиковые ситуации

Процесс находится в состоянии тупика, если он ожидает события, которое никогда не произойдет. “Зависание” системы – ситуация, когда один или более процессов находятся в состоянии тупика.

Операционная система выполняет по преимуществу функции администратора ресурсов. Она отвечает за распределение обширных наборов ресурсов различных типов. Рассмотрим ресурсы, которые являются “оперативно-перераспределяемыми” такие как центральный процессор и основная память. В вычислительной машине самым динамическим ресурсом является центральный процессор. ЦП должен работать в режиме быстрого переключения, обслуживая большое число конкурирующих процессов, чтобы все они могли двигаться в приемлемой скоростью. Если конкретный процесс достигает точки, когда он не может эффективно использовать ЦП, то право управления центральным процессором отбирается у этого процесса и предоставляется другому. Таким образом, организация динамического переключения ресурсов является исключительно важным фактором для обеспечения работы мультипрограммных вычислительных машин.

3.1 Четыре необходимых условия возникновения тупика

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

  2. Процессы удерживают за собой ресурсы, уже выделенные им, ожидая в то же время дополнительных ресурсов (условие ожидания ресурсов).

  3. Ресурсы нельзя отобрать у процессов, удерживающих их, пока эти ресурсы не будут использованы для завершения работы (условие неперераспределяемости).

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