Page 133 - 6571
        P. 133
     але мають суттєві відмінності у визначенні і, отже, у використан-
            ні їх для сигналізації.
                  Паралельна програма, що використовує монітори для взаємо-
            дії і синхронізації, містить два типи модулів: активні процеси та
            пасивні  монітори.  За  умови,  що  всі  спільні  змінні  знаходяться
            всередині моніторів, два процеси взаємодіють, викликаючи про-
            цедури одного і того ж монітора. Пропонована модульність має
            дві важливі переваги. По-перше – процес, що викликає процедуру
            монітора,  може  не  знати  про  конкретну  реалізацію  процедури
            (важливими є лише видимі результати виклику процедури). По-
            друге – реалізуючи монітор можна не піклуватися про те, де і як
            використовуються процедури монітора, і вільно змінювати його
            реалізацію, не змінюючи при цьому видимих процедур і резуль-
            татів  їх  роботи.  Дані  переваги  дають  можливість  створювати
            процеси та монітори незалежно один від одного, що загалом по-
            легшує написання паралельної програми.
                  Завдяки своїй корисності та ефективності монітори застосо-
            вуються в багатьох мовах програмування. Закладені в основі мо-
            ніторів  механізми  синхронізації  (неявне  виключення  та  умовні
            змінні для сигналізації) реалізовані також в операційних системах
            сімейства Unix. Також, умовні змінні підтримуються декількома
            бібліотеками програмування, наприклад POSIX (Pthreads).
                  Принцип використання монітора полягає у групуванні пред-
            ставлення та реалізації спільного ресурсу (класу). Він складається
            з  інтерфейсу  та  тіла.  Інтерфейс  визначає  операції  (методи),  що
            виконуються  над  ресурсом.  Тіло  включає  в  себе  змінні,  що  до-
            зволяють зберігати стан ресурсу і процедури, які реалізують ме-
            тоди (операції) інтерфейсу.
                  У  різних  мовах  програмування  монітори  оголошуються  і
            створюються по-різному. Для простоти викладу вважатимемо, що
            монітор є статичним об’єктом, а його тіло та інтерфейс описані
            наступним чином.
                  monitor mname {
                    оголошення глобальних змінних;
                    оператори ініціалізації;
                    процедури;
                  }
                                                        132
     	
