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