Page 111 - 6571
P. 111

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

                  Нехай  об’єкт  mutex  –  семафор  з  початковим  значенням  1.
            Виконання операції P(mutex) – це те ж саме, що і очікування,

            доки  значення  змінної  lock  не  стане  рівним  1,  і  подальше
            присвоєння  їй  значення  0.  Аналогічно  виконання  операції
            V(mutex) - це присвоєння змінній lock значення 1 (за умови, що

            вона має значення 0). Дані міркування  приводять  до вирішення
            задачі критичної секції, показаному в лістингу 16.


                  Лістинг 16 – Рішення задачі критичної секції з використанням
            підходу на основі м’ютексів
                  sem mutex = 1;
                  process CS[i = 1 to n] {
                    while (true) {
                      P(mutex);

                      критична секція;
                      V(mutex);
                      некритична секція;
                    }
                  }

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

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

            мафора в якості прапорця синхронізації. Виконуючи операцію V,
            процес встановлює прапорець, а при виконанні операції P – очі-
            кує  установки  прапорця,  після  чого  скидає  його.  Якщо  кожен

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

            процесів.  Таким  чином,  бажаною  є  саме  реалізація  семафорів  з
            активним очікуванням.





                                                        110
   106   107   108   109   110   111   112   113   114   115   116