Page 46 - 6571
P. 46

отже, на нього не можуть вплинути неподільні дії, створені приб-
                  лизно в той же час.
                        Кожне  виконання  паралельної  програми  породжує  історію.
                  Для всіх, окрім хіба що самих тривіальних програм, число мож-

                  ливих історій є досить великим. Справа в тому, що наступною в
                  історії може стати неподільна дія будь-якого процесу. Отже, іс-
                  нує багато способів чергування дій, навіть якщо виконання про-

                  грами  завжди  починається  з  одного  і  того  ж  вихідного  стану.
                  Крім того, у кожному процесі зазвичай є умовні оператори, і, от-
                  же, можливі різні дії при різних змінах в стані.
                        Мета синхронізації – виключити небажані історії паралельної

                  програми. Взаємне виключення полягає в комбінуванні неподіль-
                  них  дій,  що  реалізуються  безпосередньо  апаратним  забезпечен-

                  ням  у  вигляді  послідовностей  дій,  які  називаються  критичними
                  секціями.  Вони  повинні  бути  неподільними,  тобто  їх  не  можна
                  перервати діями інших процесів, які посилаються на ті ж змінні.
                  Синхронізація за умовою (умовна синхронізація) означає, що дію

                  буде виконано, коли стан задовольнятиме заданій логічній умові.
                  Обидві форми синхронізації можуть призупиняти процеси, обме-
                  жуючи множину наступних неподільних дій.

                        Властивістю програми називається атрибут, який є істинним
                  при будь-якій можливій історії програми і, отже, при всіх її вико-
                  наннях. Існує два типи властивостей: безпека і живучість. Влас-
                  тивість безпеки полягає в тому, що програма ніколи не потрапляє

                  в «поганий» стан (при якому деякі змінні можуть мати небажані
                  значення). Властивість живучості означає, що програма зрештою
                  завжди  потрапляє  в  «хороший»  стан,  тобто  стан,  в  якому  всі

                  змінні мають бажані значення.
                        Прикладом  властивості  безпеки  є  часткова  коректність
                  (правильність).  Програма  частково  коректна  (правильна),  якщо
                  правильний її заключний стан (за умови, що програма завершу-

                  ється). Якщо програмі не вдається завершити виконання, то вона
                  може ніколи не видати правильний результат, але не існує такої
                  історії, при якій програма завершується з неправильним резуль-

                  татом виконання. Завершуваність – це приклад властивості жи-
                  вучості. Програма завершується, якщо завершується кожен цикл
                  або виклик процедури, тобто довжина кожної історії кінцева. То-

                  тальна  (повна)  коректність  програми  –  це  властивість,  що


                                                              45
   41   42   43   44   45   46   47   48   49   50   51