Page 133 - 6571
P. 133

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

            пасивні  монітори.  За  умови,  що  всі  спільні  змінні  знаходяться
            всередині моніторів, два процеси взаємодіють, викликаючи про-
            цедури одного і того ж монітора. Пропонована модульність має

            дві важливі переваги. По-перше – процес, що викликає процедуру
            монітора,  може  не  знати  про  конкретну  реалізацію  процедури
            (важливими є лише видимі результати виклику процедури). По-
            друге – реалізуючи монітор можна не піклуватися про те, де і як

            використовуються процедури монітора, і вільно змінювати його
            реалізацію, не змінюючи при цьому видимих процедур і резуль-

            татів  їх  роботи.  Дані  переваги  дають  можливість  створювати
            процеси та монітори незалежно один від одного, що загалом по-
            легшує написання паралельної програми.
                  Завдяки своїй корисності та ефективності монітори застосо-

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

            сімейства Unix. Також, умовні змінні підтримуються декількома
            бібліотеками програмування, наприклад POSIX (Pthreads).
                  Принцип використання монітора полягає у групуванні пред-
            ставлення та реалізації спільного ресурсу (класу). Він складається

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

            тоди (операції) інтерфейсу.
                  У  різних  мовах  програмування  монітори  оголошуються  і
            створюються по-різному. Для простоти викладу вважатимемо, що
            монітор є статичним об’єктом, а його тіло та інтерфейс описані

            наступним чином.

                  monitor mname {
                    оголошення глобальних змінних;
                    оператори ініціалізації;
                    процедури;
                  }





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