Page 134 - 6571
P. 134

Процедури  реалізують  видимі  операції.  Глобальні  змінні  є
                  спільними  для  усіх  процедур  тіла  монітора.  Вони  називаються
                  глобальними,  оскільки  існують  і  зберігають  свої  значення  увесь
                  час  існування  монітора.  У  процедурах  існує  можливість  також

                  використовувати локальні змінні, копії яких створюються під час
                  кожного виклику функції.
                        Монітор як один із абстрактних типів даних володіє наступ-

                  ними  трьома  властивостями.  По-перше,  поза  монітором  видимі
                  тільки  імена  процедур,  що  представляють  собою  єдине  «вікно»
                  оголошення  монітора.  Таким  чином,  щоб  змінити  стан  ресурсу,
                  представлений глобальними змінними, процес повинен виклика-

                  ти  одну  із  процедур  монітора.  Виклик  процедури  монітора  має
                  наступний вигляд.

                        call mname.opname(arguments)

                  де: mname – ім’я монітора; opname – ім’я однієї із його операцій
                  (процедур), що може бути викликана з аргументами arguments.

                  Якщо  ім’я  opname  унікальне  в  області  видимості  процесу,  що
                  викликає процедуру, то частина « mname.» може бути опущена.
                        По-друге,  оператори  всередині  монітора  (в  оголошеннях  і

                  процедурах) не можуть звертатися до змінних, оголошених поза
                  межами монітора.
                        І по-третє, глобальні змінні ініціалізуються до виклику про-

                  цедур монітора, оскільки усі оператори ініціалізації виконуються
                  під час його створення.
                        Одна  із  найбільш  привабливих  властивостей  монітора  (в
                  принципі, як і будь-якого іншого абстрактного типу даних) – це

                  можливість його відносно незалежної розробки. Однак, це озна-
                  чає, що розробник монітора не знає заздалегідь порядку виклику

                  його процедур. Тому необхідне введення предикату, що буде іс-
                  тинним незалежно від порядку викликів процедур монітора. Інва-
                  ріантом  монітора  виступає  предикат,  що  визначає  «розумні»
                  стани глобальних змінних у випадку, коли процеси не звертають-

                  ся до них. Код ініціалізації монітора повинен створити стан, що
                  задовольняє інваріанту, а кожна процедура повинна його підтри-
                  мувати. Інваріант монітора аналогічний глобальному інваріанту,

                  але для змінних в межах одного монітора. Рядок інваріанта почи-
                  нається символами « ## ».



                                                             133
   129   130   131   132   133   134   135   136   137   138   139