– процессы при останавливаются в порядке вызовов wait;
– процессы запускаются в порядке вызовов signal.
§ 5. Способы выполнения операции сигнализации
Выполнение операции signal возможно процессом, работаю-
щем в мониторе и вызывавшем некоторую процедуру. Поскольку
signal, вообще говоря, запускает другой процесс, то может полу-
читься, что данную процедуру выполняют одновременно два про-
цесса, что невозможно по определению монитора.
Разрешение этого противоречия возможно с помощью исполь-
зования одн ой из двух стратегий, определяемых при создании опе-
рации signal:
1) SC — “сигнализировать и продолжить” (signal and
continue): сигнализирующий процесс продолжает работу, а про-
цесс, получивший сигнал (и находящийся в оче ред и FIFO), выпол -
няется после заверщения сигнализирующего процесса;
2) SW — “сигнализировать и ожидать” (signal and wait): сиг-
нализирующий процесс приостанавливается, а процесс, получив-
ший сигнал вып олняется сразу.
Стратегия “сигнализировать и продолжить” не прерывает об-
служивания. Процесс, выполнивший операцию signal, сохраняет
исключительный доступ к процедуре монитора до своего заверше-
ния, а процесс, получивший сигнал, будет иметь исключи тельный
доступ к этой процед уре монитора сразу после завершения вызвав-
шего процесса.
Стратегия “сигнализировать и ожидать” означает прерывание
сигнализирующего процесс а и немедленное начало выполнения вы-
званного процесса с возобновлением прерванного процесса после
завершения вызванного.
В этой стратегии имеются различные варианты выполнения: по-
скольку сигнализир овавший процесс приостанавливается сразу, то
это значит, что он помещается в очередь; может быть вариант, ко-
гда он помещается не в конец очереди, а в начало (это называется
“сигнализировать и срочно ожидать”). Кроме того, возможны раз-
личные варианты поведени я в случае, если вызванный процесс в
свою очередь вызовет другой процесс.
Иллюстрация работы монитора представлена на рис. 2.
18