Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС / lecture_10.doc
Скачиваний:
126
Добавлен:
01.05.2014
Размер:
44.03 Кб
Скачать

Var busy: Boolean;

Procedure Request; (* запрос*)

Begin

If busy then wait (free);

Busy := true;

Выдать ресурс;

End;

Procedure Release; (* освобождение*)

Begin

Взять ресурс;

Busy := false;

SIGNAL (free);

End;

Begin

Busy := false;

End.

Единственный ресурс динамически запрашивается и освобождается процессами, которые обращаются к процедурам RequestиRelease. Если процесс обращается к процедуреRequestв тот момент, когда ресурс используется, значение переменнойbusyбудетtrueиRequestвыполнит операциюWAIT(free). Эта операция заблокирует обратившийся процесс, и он будет помещён в конец очереди процессов, ожидающих доступа к монитору. Когда процесс, использующий ресурс, обратится к процедуреRelease, операция монитораSIGNALдеблокирует процесс, находящийся в начале очереди, не позволяя исполняться никакой другой процедуре внутри того же монитора. Этот деблокированный процесс готов возобновить выполнение процедурыRequest.

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

Использование мониторов имеет ряд преимуществ по сравнению с низкоуровневыми средствами:

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

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

Соседние файлы в папке Лекции по ОС