Page 107 - 4868
P. 107
105 Ошибка! Стиль не определен.
для усіх процедур тіла монітора. Вони називаються глобальними, оскільки
існують і зберігають свої значення увесь час існування монітора. У
процедурах існує можливість також використовувати локальні змінні, копії
яких створюються під час кожного виклику функції.
Монітор як один із абстрактних типів даних володіє наступними трьома
властивостями. По-перше, поза монітором видимі тільки імена процедур, що
представляють собою єдине «вікно» оголошення монітора. Таким чином,
щоб змінити стан ресурсу, представлений глобальними змінними, процес
повинен викликати одну із процедур монітора. Виклик процедури монітора
має наступний вигляд.
call mname.opname(arguments)
де: mname – ім’я монітора; opname – ім’я однієї із його операцій (процедур),
що може бути викликана з аргументами arguments. Якщо ім’я opname
унікальне в області видимості процесу, що викликає процедуру, то частина
« mname.» може бути опущена.
По-друге, оператори всередині монітора (в оголошеннях і процедурах)
не можуть звертатися до змінних, оголошених поза межами монітора.
І по-третє, глобальні змінні ініціалізуються до виклику процедур
монітора, оскільки усі опеартори ініціалізації виконуються під час його
створення.
Одна із найбільш привабливих властивостей монітора (впринципі, як і
будь-якого іншого абстрактного типу даних) – це можливість його відносно
незалежної розробки. Однак, це означає, що розробник монітора не знає
заздалегідь порядку виклику його процедур. Тому необхідне введення
предикату, що буде істинним незалежно від порядку викликів процедур
монітора. Інваріантом монітора виступає предикат, що визначає «розумні»
стани глобальних змінних у випадку, коли процеси не звертаються до них.
Код ініціалізації монітора повинен створити стан, що задовольняє інваріанту,
а кожна процедура повинна його підтримувати. Інваріант монітора
аналогічний глобальному інваріанту, але для змінних в межах одного
монітора. Рядок інваріанта починається символами « ## ».
15.2. Процедура взаємного виключеннята умовні змінні
Процедура взаємного виключення в моніторах забезпечується неявно, а
умовна синхронізація програмується за допомогою так званих умовних
змінних.
Спочатку зовнішній процес викликає процедуру монітора. Вона
перебуває в активному стані до того часу, поки деякий процес виконує її
оператори. У будь-який момент часу може бути активним тільки один
екземпляр тільки однієї процедури монітора, тобто одночасно не можуть
бути активними ні два виклики різних процедур, ні два виклики однієї і тієї ж
самої процедури.
Процедури моніторів за визначенням виконуються із взаємним
виключенням. Воно забезпечується реалізацією мови, бібліотекою або