
- •1 Мультипрограммный режим
- •1.1 Основные положения
- •1.2 Проблема критической секции
- •2 Мониторы Хоара
- •2.1 История создания
- •2.2 Определения и основные характеристики
- •2.3 Принцип работы монитора
- •2.4 Условные переменные
- •2.5 Пример монитора Хоара
- •2.6 Преимущества монитора
- •3 Задача о спящем парикмахере
- •3.1 Постановка задачи
- •3.2 Реализация задачи с помощью сетей Петри
- •3.3 Листинг программы
- •Заключение
- •Список использованных источников
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 – Задача о спящем парикмахере