Page 149 - 6571
P. 149

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

            виходу. Нарешті, перед тим, як закрити двері для виходу, перукар
            повинен дочекатися, поки піде відвідувач. Таким чином, перукар
            і відвідувач проходять через послідовність синхронізованих ета-

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

            важливі етапи: перебування в кріслі перукаря і вихід з перукарні.
            Для даних етапів будемо використовувати лічильники з назвами

            cinchair  та  cleave.  Перукар  циклічно  проходить  через  три
            етапи: звільнення від роботи, стрижка і завершення стрижки. Ви-
            користаємо для них змінні-лічильники bavail, bbusy та bdone.
            Всі лічильники в початковому стані мають значення 0. Оскільки

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

                  C1: cinchair >= cleave Ùbavail >= bbusy >= bdone

                  Щоб забезпечити рандеву відвідувача і перукаря перед поча-
            тком стрижки, необхідно накласти умову, що відвідувач не може

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

                  С2: cinchair <= bavail Ùbbusy <= cinchair

                  Нарешті, відвідувачі не можуть виходити з перукарні раніше,
            ніж перукар завершить стрижку:

                  С3: cleave <= bdone

                  Інваріант  монітора  для  перукарні,  таким  чином  перетворю-
            ється в кон’юнкцію трьох предикатів:

                  BARBER: C1 ÙC2 ÙC3

                  Значення  лічильників,  що  використовуються  для  за-

            пам’ятовування  етапів  через  які  проходять  процеси,  не  можуть
            зростати безмежно, оскільки вони лежать в діапазоні значень ти-
            пів  змінних.  Якщо  б  синхронізація  залежала  тільки  від  різниці


                                                        148
   144   145   146   147   148   149   150   151   152   153   154