Page 60 - 4868
P. 60

Ошибка! Стиль не определен.                                                                58

                     Таким  чином,  критичне  твердження  C  є  інваріантним  щодо  дії
               присвоєння a .
                     В  якості  прикладу  розглянемо  останню  з  наведених  вище  програм.
               Передумова  першого  процесу  є  критичним  твердженням.  На  нього  не
               впливає оператор присвоєння в другому процесі, оскільки істинна наступна

               трійка:
                     {(x == 0  x == 2)  (x == 0 x == 1)}
                     x = x+2;
                     {x == 0 x == 2}

                     Перший  предикат  спрощується  до  x == 0,  тому  після  додавання  2  до
               змінної  x  значення  змінної  x  буде  або  0,  або  2.  Дана  трійка  висловлює
               наступний  факт:  якщо  другий  процес  виконується  перед  першим,  то  на
               початку виконання першого процесу змінна x буде мати значення 2. У даній
               програмі  є  ще  три  критичних  твердження:  постумова  першого  процесу  та
               перед- і постумова другого процесу. Усі інші докази взаємного невтручання
               аналогічні наведеному.

                     Запитання для самоперевірки

                     1. Що розуміють під терміном «логіка програмування»?
                     2. Із яких правил складається будь-яка формальна логічна система?
                     3. Коли логіка програмування є несуперечливою щодо інтерпретації?
                     4. Коли логіка програмування є повною щодо інтерпретації?
                     5. Як називаються формули у логіці програмування?
                     6. З чого складається «трійка» у логіці програмування?
                     7. Які  чотири  найбільш  важливих  правила  виведення  у  логіці
               програмування Ви знаєте?
                     8. Що таке інваріант циклу у паралельній програмі?
                     9. У якому випадку говорять, що один процес втручається в (впливає на)
               інший?
                     10. В чому полягає принцип взаємного невтручання?



                              ЛЕКЦІЯ 9. ТЕХНІКА УСУНЕННЯ ВЗАЄМНОГО
                                                     ВТРУЧАННЯ



                     9.1. Неперетинні множини змінних
                     Процеси  в  паралельній  програмі  виконуються  спільно  для  отримання
               загального  результату.  Ключова  вимога  для  отримання  правильного
               результату полягає в тому, що процеси не повинні впливати один на одного.
               Множина  процесів  вільна  від  взаємного  впливу,  якщо  в  одному  процесі
               немає  дій  присвоєння,  які  втручаються  в  критичні  твердження  іншого
               процесу.
                     Розглянемо три основні методи  усунення взаємного  впливу, які можна
               використовувати для розробки коректних паралельних програм: неперетинні
   55   56   57   58   59   60   61   62   63   64   65