Page 42 - 6571
P. 42

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

                  свою чергу багато в чому визначаються архітектурою обчислю-
                  вальної системи.
                        Ще одним рівнем паралелізму виступають об’єкти та проце-

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

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

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

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

                  сору зайнятися виконанням інших частин програми.
                        При некоректній організації зв’язків і синхронізації зазвичай
                  з’являються наступні проблеми:
                        1. «Гонка даних» виникає через те, що декілька задач одноча-

                  сно  намагаються  обновити  та  використовувати  спільні  дані.  Ця
                  проблема  найчастіше  виникає  у  випадку,  якщо  відбувається  од-
                  ночасна  модифікація  даних.  Однак  проблема  «гонки  даних»  та-

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

                  ванні) або втратити дані («задача-виробник» може при записі за-
                  терти ще невикористані дані).
                        2. Іншою проблемою є некоректне планування послідовності

                  виконання задач, яка відома під назвою «нескінченна відстрочка»
                  при якій задача не буде жодного разу виконана.
                        3. Ще однією пасткою, пов’язаною із процесом очікування є

                  проблема взаємного блокування. У найпростішому випадку взаємне


                                                              41
   37   38   39   40   41   42   43   44   45   46   47