Page 65 - 4868
P. 65
63 Ошибка! Стиль не определен.
3.Відсутність зайвих затримок.Якщо один процес намагається увійти в
свою критичну секцію, а інші виконують свої некритичні секції або уже
завершили своє виконання, першому процесу дозволяється вхід в критичну
секцію.
4.Можливістьвходу.Процес, який намагається увійти в критичну секцію,
рано чи пізно це зробить.
Перші три властивості є властивостями безпеки, четверта – властивістю
живучості.Для взаємного виключення поганим є стан, коли два процеси
перебувають у своїх критичних секціях.Для відсутності взаємного
блокування поганим є стан, коли всі процеси очікують входу у секцію, але
жоден із процесів не може його виконати.У рішенні з активним очікуванням
такий стан називається станом з відсутнім живим блокуванням, оскільки
процеси працюють у середині вічного циклу.Для відсутності зайвих затримок
поганим є стан, коли один-єдиний процес, який намагається увійти в
критичну секцію, не може цього зробити, навіть якщо всі інші процеси
знаходяться поза межами критичних секцій.Можливість входу є властивістю
живучості, оскільки вона залежить від стратегії планування.
Тривіальний спосіб вирішення задачі критичної секції полягає в
обмеженні кожної критичної секції кутовими дужками, тобтоу використанні
безумовних операторів await. Із семантики кутових дужок випливає
задоволення умови 2.Інші три властивості будуть задовольнятися при
безумовній справедливій стратегії планування, оскільки вона гарантує, що
процес, який намагається виконати неподільну дію, яка відповідає його
критичній секції, зрештою це зробить, незалежно від дій інших
процесів.Однак при такому «рішенні» виникає проблема реалізації оператора
неподільності (кутові дужки).
Всі чотири зазначені властивості важливі, проте найбільш суттєвим є
взаємне виключення.Для опису властивості взаємного виключення необхідно
визначити, чи знаходиться процес у своїй критичній секції.Щоб спростити
запис, побудуємо рішення для двох процесів, CS1 та CS2, якелегко
узагальнюється для n процесів.
Нехай in1 та in2 – логічні змінні з встановленим початковим значенням
«хиба».Коли процес CS1 (CS2) знаходиться у своїй критичній секції, змінній
in1 (in2) присвоюється значення «істина».Поганий стан, якого необхідно
уникати, виникає у випадку, якщо змінні in1 та in2 одночасно мають
значення «істина».Таким чином, потрібно, щоб для будь-якого стану
виконувалося заперечення умови поганого стану.
MUTEX:(in1 in2)
Предикат MUTEX – це глобальний інваріант.Він повинен задовольнятися
в початковому стані і після кожної операції присвоєння значень змінним in1
та in2.Зокрема, перед тим, як процес CS1 увійде в критичну секцію,
присвоївши тим самим змінній in1 значення «істина», він повинен
переконатися, що змінна in2 має значення «хиба».Дану дію можна
реалізувати за допомогою наступної умовної неподільної операції.