Page 87 - 6571
P. 87

в  умові  В.  Це  призводить  до  конфлікту  звернення  до  пам’яті,
            оскільки  кожен  призупинений  процес  постійно  звертається  до
            змінних, що використовуються в протоколах критичної секції та
            в умові B.

                  Щоб  зменшити  кількість  конфліктів  звернення  до  пам’яті,
            процес перед повторною спробою увійти в критичну секцію по-

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

                  CSenter;
                    while (!B) { CSexit; Delay; CSenter; }
                    S;
                  CSexit;

                  Кодом  Delay  може  бути,  наприклад,  порожній  цикл,  який
            виконується  випадкову  кількість  раз.  Щоб  уникнути  конфліктів

            пам’яті в циклі у коді Delay слід використовувати тільки локаль-
            ні змінні. Цей тип протоколу «відходу» («back-off») є корисним і

            в самих протоколах CSenter, наприклад, його можна використо-
            вувати  замість  skip  в  циклі  затримки  протоколу  «перевірити-
            встановити».


                  Запитання для самоперевірки

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

                  2. Яким властивостям повинні задовольняти протоколи входу
            в критичну секцію та виходу із неї?
                  3. Коли програма перебуває у стані з відсутнім живим блоку-
            ванням?

                  4. У чому полягає перевага протоколів входу і виходу реалі-
            зованих через змінну lock по відношенню до випадку викорис-

            тання двох змінних?
                  5. Які  Ви  знаєте  інструкції  реалізації  умовних  неподільних
            дій?
                  6. Який принцип роботи інструкції «перевірити-встановити»?

                  7. Що розуміють під циклічним блокуванням у термінах па-
            ралельної програми?
                  8. Який  принцип  роботи  інструкції  «перевірити-перевірити-

            встановити»?

                                                        86
   82   83   84   85   86   87   88   89   90   91   92