Page 71 - 4868
P. 71
69 Ошибка! Стиль не определен.
повторною спробою увійти в критичну секцію повинен робити паузу.Нехай
Delay – деякий код, що уповільнює виконання процесу.Тоді можна
використати наступний протокол, який реалізує умовну неподільну дію.
CSenter;
while (!B) { CSexit;Delay;CSenter; }
S;
CSexit;
Кодом Delay може бути, наприклад, порожній цикл, який виконується
випадкову кількість раз.Щоб уникнути конфліктів пам’яті в циклі у коді
Delay слід використовувати тільки локальні змінні.Цей тип протоколу
«відходу» («back-off») є корисним і в самих протоколах CSenter, наприклад,
його можна використовувати замість skip в циклі затримки протоколу
«перевірити-встановити».
Запитання для самоперевірки
1. Що собою представляє критична секція у термінах паралельної
програми?
2. Яким властивостям повинні задовольняти протоколи входу в
критичну секцію та виходу із неї?
3. Коли програма перебуває у стані з відсутнім живим блокуванням?
4. У чому полягає перевага протоколів входу і виходу реалізованих
через змінну lock по відношенню до випадку використання двох змінних?
5. Які Ви знаєте інструкції реалізації умовних неподільних дій?
6. Який принцип роботи інструкції «перевірити-встановити»?
7. Що розуміють під циклічним блокуванням у термінах паралельної
програми?
8. Який принцип роботи інструкції «перевірити-перевірити-
встановити»?
9. Які існують способи реалізації операторів await?
10. Яке призначення процедури Delay в операторі await?
ЛЕКЦІЯ 11. СПРАВЕДЛИВА СТРАТЕГІЯРІШЕННЯ ЗАДАЧІ
КРИТИЧНОЇ СЕКЦІЇ
11.1. Алгоритм розриву вузла
Рішення задачі критичної секції з циклічним блокуванням забезпечує
взаємне виключення, відсутність взаємних блокувань, активних тупиків і
небажаних пауз.Однак для забезпечення властивості можливості входу їм
необхідна справедлива стратегія планування.Малоймовірно, що процес, який
намагається увійти в критичну секцію, ніколи цього не зробить, однак може
виникнути ситуація, коли декілька процесів будуть «вічно змагатися» за вхід
у критичну секцію.Зокрема, рішення з циклічним блокуванням не керують
порядком, в якому декілька призупинених процесів намагаються увійти в