Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 17 стр.

UptoLike

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