Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OC - Лекция 5 / ОПЕРАЦИОННЫЕ СИСТЕМЫ_5.ppt
Скачиваний:
22
Добавлен:
21.05.2015
Размер:
207.36 Кб
Скачать

Монитор читатели - писатели

//Пусть существуют процессы только читающие данные (читатели)

//и процессы изменяющие данные(писатели).

//Одновременно к данным могут обращаться несколько процессов-читателей.

//Только один процесс-писатель может имеет доступ к данным.

monitor Reader_Writer;

 

var

//читатели

Reader:integer;

somebody_writes:boolean;

//кто-то пишет

read_allowed,

//читать разрешается

write_allowed:condition;

//писать разрешается

//начало чтения procedure Begin_Read; begin

//если кто-то пишет или очередь писателей

if (somebody_writes) or queue(write_allowed) then read_allowed.Wait; Reader:=Reader+1;

read_allowed.Signal; end;

11

Монитор читатели - писатели

//конец чтения

 

 

procedure End_Read;

//конец записи

begin

procedure End_Write;

 

Reader:=Reader+1;

begin

 

if Reader=0 then

somebody_writes:=false;

write_allowed.Signal;

if queue(write_allowed)

end;

then write_allowed.Signal

//начало записи

else

procedure Begin_Write;

read_allowed.Signal;

begin

end;

//если кто-то пишет или

 

 

// очередь писателей

begin

if (Reader>0) or somebody_writes

Reader:=0;

then write_allowed.Wait;

somebody_writes:=false;

 

somebody_writes:=true;

end.

end;

 

 

 

 

 

 

12

Использование монитора

освобождает процессы от необходимости явно разделять информацию

Если несколько процессов разделяют ресурс и работают с ним одинаково, то в мониторе нужна только одна процедура работы с ресурсом, тогда как решение с семафорами требует наличия в каждом процессе собственного экземпляра критического участка.

13

Тупики (deadlock, clench)

P1:

P2:

…..

….

P(чтение)

P(печать)

P(печать)

P(чтение)

…..

…..

Процесс заблокирован в некотором состоянии, если он не может работать, когда система находится в этом состоянии.

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

Состояние безопасно, если никакой процесс не

может отобразить его в тупиковое.

14

 

Условия наличия тупика

Коффман, Элфик, Шошани сформулировали четыре необходимых условия наличия тупика:

Условие взаимоисключения - процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются;

Условие ожидания ресурсов – процессы удерживают за собой уже выделенные ресурсы, требуя выделения дополнительных ресурсов;

Условие неперераспределяемости – ресурсы нельзя отобрать у процесса, пока он не завершит работу с ними;

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

15

Четыре направления по проблеме тупиков

Предотвращение тупиков

Обход тупиков

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

Восстановление после тупиков

16

Предотвращение тупиков

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

Достоинство: полное исключение тупиков.

Недостаток: такой подход часто приводит к нерациональному использованию ресурсов.

17

Обход тупиков

Цель средств обхода тупиков заключается в том, чтобы можно было предусмотреть менее жесткие ограничения, чем в случае предотвращения тупиков.

Методы обхода тупиков учитывают возможность возникновения тупика, однако в этом случае принимаются меры по аккуратному обходу тупика.

18

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

Методы обнаружения тупиков применяются в системах, допускающих возможность возникновения тупиков.

Когда это происходит, система обнаруживает тупик программным путём и принимает меры для вывода из тупика

( например перераспределяя ресурсы).

Выход из тупика может выполняться автоматически или под управлением оператора.

19

Восстановление после тупиков

Методы восстановления после тупиков применяются для устранения тупиковых ситуаций. Например:

восстановление при помощи принудительной выгрузки;

восстановление через откат;

восстановление путем уничтожения одного или нескольких процессов.

20

Соседние файлы в папке OC - Лекция 5