Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС-мониторы хоара.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
103.16 Кб
Скачать

2.5 Пример монитора Хоара

Пример монитора Хоара:

Monitor Resource;

condition free; {условие – свободный}

Var busy : Boolean;

Procedure Request; {запрос}

Begin

If busy then WAIT(free);

busy:=true;

TakeOff; {выдать ресурс}

End;

Procedure Release;

Begin

TakeOn; {взять ресурс}

busy:=false;

SIGNAL(free)

End;

Begin

busy:=false;

End

Единственный ресурс динамически запрашивается и освобождается процессами, которые обращаются к процедурам REQUEST и RELEASE. Если процесс обращается к REQUEST в тот момент, когда ресурс используется, то значение busy=true, и REQUEST выполнит операцию монитора WAIT(free). Обратившийся процесс помещается в конец очереди процессов, ожидающих, пока не будет выполнено условие free.

Когда процесс, использующий ресурс, обращается к RELEASE, операция монитора SIGNAL(free) деблокирует процесс из начала очереди. Он готов сразу после операции WAIT(free), которая его и блокировала, возобновить выполнение процедуры REQUEST.

Если же SIGNAL(free) выполняется в то время, когда нет ожидающего условия free процесса, то никакие действия не выполняются.

Доступ к разделяемым переменным ограничен телом монитора, а мониторы входят в состав ядра ОС, поэтому разделяемые переменные становятся системными переменными, что автоматически исключает критические интервалы (два процесса никогда не смогут получить одновременного доступа к разделяемым переменным).

Процедуры монитора выполняются только по требованиям процесса.

2.6 Преимущества монитора

Преимущества монитора перед другими средствами синхронизации:

· в форме монитора легко реализовать любой механизм;

· повышается наглядность;

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

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

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

3 Задача о спящем парикмахере

Задача о парикмахере, который спит на работе, является аллегорической демонстрацией подсистемы управления процессами и была сформулирована Дейкстрой в 1968 г.

3.1 Постановка задачи

Парикмахерская состоит из комнаты ожидания О и комнаты, в которой стоит кресло парикмахера З. Через двери Д можно попасть из комнаты О в комнату З, а из комнаты З на улицу. Если парикмахер заходит в комнату ожидания и никого там не находит, то он идет спать. Если клиент заходит в парикмахерскую и находит спящего парикмахера, то он его будит. В комнате ожидания число мест ограничено и равно N.

Согласно данной задаче необходимо определить элементы который будут запрограммированы отдельными процессами, разработать алгоритм и программно его реализовать.

Рисунок 3 – Задача о спящем парикмахере