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
   70   71   72   73   74   75   76   77   78   79   80