ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
29
он начнет ждать, когда "читатель" возьмет очередную запись из буфера, но "чита-
тель" не сможет этого сделать, так как для этого необходимо войти в критическую
секцию, вход в которую заблокирован процессом "писатели".
Мониторы
Монитор
– это механизм организации параллелизма высокого уровня, кото-
рый содержит множество переменных состояний, очередей и множество процедур,
необходимых для реализации динамического распределения и доступа к общим ре-
сурсам (рис. 3.3).
Рис. 3.3. Схема использования монитора.
Критический участок программируется в мониторе
Монитор представляет собой централизованный семафор или совокупность
семафоров, спрятанных от пользователей процессов в одном системном процессе, и
потому недоступным пользовательским программам, которые не могут их нару-
шить. Процессы, использующие монитор для синхронизации, не имеют прямого
доступа к переменным состояния, и могут воспользоваться ресурсами только путем
вызова процедур монитора (или макрокоманд).
Монитор при создании автоматически инициирует число ресурсов и включает
процедуры, позволяющие блокировать и активизировать процессы. Вход в монитор
находится под жестким контролем системы, и только через монитор осуществляется
взаимоисключение процессов. Если процесс обращается к монитору и требуемый
ресурс занят, то процесс переводится в состояние ожидания. Со временем некото-
рый процесс обращается к монитору для возвращения ресурса, и монитор оповещает
процесс о том, что может выделить ресурс и покинуть очередь. Режимом ожидания
управляет сам монитор, который для гарантии получения ресурса процессом
повышает приоритеты процессов критических областей
.
Достоинства монитора:
логические возможности не меньше, чем у семафоров;
упрощение написания параллельных программ. Достаточно знать
процедуры организации параллельных вычислений;
1...,21,22,23,24,25,26,27,28,29,30 32,33,34,35,36,37,38,39,40,41,...180