Page 64 - 4868
P. 64

Ошибка! Стиль не определен.                                                                62

                     6. У чому полягає суть процесу умовної синхронізації?
                     7. Які  властивості  неподільних  дій  забезпечують  можливість  реалізації
               взаємного виключення та умовної синхронізації?



                        ЛЕКЦІЯ 10. ЗАДАЧА КРИТИЧНОЇ СЕКЦІЇ ТА АКТИВНІ
                                                    БЛОКУВАННЯ



                     10.1. Постановка задачі критичної секції
                     В  паралельних  програмах  використовуються  два  основних  типи
               синхронізації:  1) взаємне  виключення  і  умовна  синхронізація.Одним  із  видів
               реалізацій       механізму        синхронізації       є     використання         критичних
               секцій.Завдання  критичної  секції  пов’язане  з  програмною  реалізацією
               неподільних  дій.Дана  проблема  виникає  під  час  написання  більшості

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

               інтерес  до  неї  не  згасає,  оскільки  критичні  секції  коду  зустрічаються  в
               більшості  паралельних  програм.Крім  того,  рішення  даної  задачі  можна
               використовувати для реалізації довільних операторів await.
                     У задачі  критичної секції передбачається, що  n процесів неодноразово
               виконують  спочатку  критичну,  а  потім  некритичну  секцію  коду.Критичній
               секції  передує  протокол  входу,  а  слідує  за  нею  протокол  виходу.Таким
               чином, передбачається, що процес має наступний вигляд:
                     process CS[i = 1 to n] {
                       while (true) {
                         протокол входу;
                         критична секція;
                         протокол виходу;
                         некритична секція;
                       }
                     }
                     Кожна критична секція є послідовністю операторів, що мають доступ до
               деякого  спільного  об’єкту.Кожна  некритична  секція  –  це  ще  одна
               послідовність  операторів.Передбачається,  що  процес,  який  увійшов  в
               критичну секцію, обов’язково коли-небудь із неї вийде.Таким чином, процес
               може  завершитися  тільки  поза  критичною  секцією.Розробимо  відповідні
               протоколи  входу  і  виходу,  які  задовольняють  наступним  чотирьом
               властивостям.
                     1.  Взаємне  виключення.У  будь-який  момент  часу  тільки  один  процес

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

               обов’язково вдасться.
   59   60   61   62   63   64   65   66   67   68   69