Page 75 - 6571
P. 75
{x == 0} x = x+1; (x == 1}
{y == 0} y = y+1; (y == 1}
Кожен процес містить один оператор присвоєння і два твер-
дження, отже потрібно довести чотири теореми взаємного не-
втручання. Кожна з них тривіально істинна, оскільки два процеси
посилаються на різні змінні, тому підстановки, пов’язані з аксіо-
мою присвоєння, будуть порожніми.
Неперетинні множини записів і посилань утворюють основу
для більшості паралельних ітераційних алгоритмів, таких, напри-
клад як алгоритм множення матриць. Ще два приклади – різні гі-
лки дерева можливих ходів в ігровій програмі можуть досліджу-
ватись паралельно, а множинні транзакції можуть паралельно пе-
реглядати записи у базі даних.
9.2 Глобальні інваріанти
Ще один, дуже ефективний спосіб уникнення взаємного
втручання полягає у використанні глобального інваріанта для об-
ліку всіх відносин між спільними змінними. Глобальний інварі-
ант можна використовувати при вирішені будь-яких задач
пов’язаних із синхронізацією.
Припустимо, що I – предикат, який посилається на глобальні
змінні. ТодіI називається глобальним інваріантом по відношен-
ню до множини процесів, якщо:
1) I має значення «істина» на початку виконання процесів;
2) I зберігається кожною дією присвоєння.
Умова 1 задовольняється, якщо предикат I має значення «іс-
тина» в початковому стані кожного процесу. Умова 2 задоволь-
няється, якщо для будь-якої дії присвоєння a предикат I має
значення «істина» після виконання a за умови, що предикат I
мав значення «істина» до виконання a. Таким чином, ці дві умо-
ви утворюють приклад використання математичної індукції.
Припустимо, що предикат I є глобальним інваріантом. При-
пустимо, що будь-яке критичне твердження C в обґрунтуванні
кожного процесу P має вигляд I Ù L, де L – предикат відносно
j
локальних змінних. Зокрема, кожна змінна, на яку посилається
предикат L, є або локальною змінною для процесу P , або глоба-
j
льною, в яку записує тільки процес P . Якщо всі критичні твер-
j
74