Page 63 - 4868
P. 63
61 Ошибка! Стиль не определен.
зазнавати втручання з боку іншого процесу. Наприклад, твердження в
середині наступної неподільної дії не є критичним.
{x == 0 y == 0}
<x = x+1; {x == 1 y == 0}; y = y+1;>
{x == 1 y == 1}
Ці дві властивості неподільних дій призводять до виникнення двох
способів використання синхронізації для усунення взаємного впливу:
взаємного виключення та умовної синхронізації. Розглянемо наступний
фрагмент:
co P : ... a;...
1
// P : ... S ;{C} S ;...
2 1 2
oc
деa – оператор присвоєння в процесі P , аS та S – оператори в процесі
1 1 2
P .Критичне твердженняC є передумовою оператора S .
2 2
Припустимо, щоa впливає на C .Перший спосіб позбутися даного
впливу полягає у використанні взаємного виключення, з метою
«приховування» твердженняC від оператораa .Для цього оператори S та S
1 2
другого процесу можна об’єднати в єдину неподільну дію.
<S ; S ;>
1 2
Тепер оператори S та S виконуються неподільним чином, і стан
1 2
змінних стає невидимим для інших процесів.
Інший спосіб уникнути взаємного впливу процесів – використання
умовної синхронізації, з метою посилення передумови оператора a .Зокрема,
можна замінити присвоєння a наступною умовною неподільною дією:
<await (!CorB)a;>
де B – предикат, що характеризує множину станів, при яких виконання
присвоєння a зробитьCістинним. Таким чином, в даному виразі втручання
усувається або очікуванням того, щоC стане хибним (тоді оператор S не
2
буде виконаним), або забезпеченням того, що виконання a зробитьC істинним
(що дозволить виконання оператора S ).
2
Запитання для самоперевірки
1. Які існують три основні методи усунення взаємного впливу процесів
один на одного?
2. Що розуміють під множиною посилань процесу в контексті
паралельної програми?
3. За якої умови два процеси не впливають один на одного?
4. При яких умовах змінна називається глобальним інваріантом по
відношенню до множини процесів?
5. У чому полягає суть процесу взаємного виключення?