Page 123 - 6571
P. 123

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

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

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

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

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

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

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

                  1. Рішення задачі про читачів та письменників як задачі вза-
            ємного виключення. Процесам-письменникам потрібен взаємови-
            ключний доступ до бази даних. Доступ процесів-читачів як групи

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

            ного читача і письменника.
                  Нехай  змінна  rw  –  це  семафор  взаємного  виключення  з

            початковим  значенням  1,  а  змінна  nr  служить  для  підрахунку
            числа активних читачів. У протоколі входу для процесів-читачів
            значення  змінної  nr  спочатку  збільшується  на  1,  а  потім

            виконується перевірка, чи вона рівна 1. Щоб уникнути взаємного
            впливу  процесів-читачів,  додавання  і  перевірка  повинні


                                                        122
   118   119   120   121   122   123   124   125   126   127   128