Page 37 - 4868
P. 37

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

                     2. Іншою проблемою є некоректне планування послідовності виконання
               задач,  яка  відома  під  назвою  «нескінченна  відстрочка».  при  якій  задачане
               буде жодного разу виконана.
                     3. Ще однією пасткою, пов’язаною  із процесом очікування є проблема
               взаємного  блокування.  У  найпростішому  випадку  взаємне  блокування
               виникає,  якщо  задача  під  порядковим  номером1очікує  даних  (сигналу)  від
               задачі під порядковим номером 2, яка в свою чергу очікує даних від задачі
               під порядковим номером 1. Однак на практиці ситуація може виявитися ще
               більш заплутаною.
                     Всі  описані  вище  проблеми  повинні  бути  виявлені  і  вирішені  на  етапі
               проектуванняпрограми.
                     Існує  ряд  прийомів,  шро  використовуються  під  час  проектування  та
               написання паралельних програм. Коротко опишемо основні із них:
                     1. Ітеративний  паралелізм–  використовується  для  реалізації  декількох

               процесів  (часто  ідентичних),  кожен  з  яких  включає  в  себе  цикли.  Процеси
               програми, що виступають ітеративними програмами, працюють спільно над
               вирішенням однієїзадачі.При цьому вони взаємодіють і синхронізуються або
               за  допомогою  спільних  змінних,  або  через  механізм  передачі  повідомлень.
               Такий  паралелізм  характерний,  насамперед,  синхронізацією  паралельних
               обчислень.
                     2. Рекурсивний паралелізм– використовується в програмах з однією або
               декількома  рекурсивними  процедурами,  виклик  яких  є  незалежним.
               Данатехнологія  носить  назву  «розділяй  та  володарюй»  або  «перебір  з
               поверненнями».
                     3. Виробники        та      споживачі–         це     парадигма        взаємодіючих
               нерівноправних  процесів.  Одні  з  процесів  «виробляють»  дані,  інші  –  їх
               «споживають».  Часто  такі  процеси  організовуються  в  конвеєр,  через  який
               проходить  інформація.  Кожен  процес  конвеєра  «споживає  вихід»  свого
               попередника і «виробляє» вхідні дані для свого наступника.
                     4. Клієнти  та  сервери–це  найбільш  поширена  модель  взаємодії  в
               розподілених системах. Клієнтський процес надсилає запит на сервер і чекає
               відповіді.  Серверний  процес  очікує  запит  від  клієнта,  після  чого  виконує
               обробку цього запиту. Сервер може бути реалізований у вигляді одиничного
               процесу,  що  обслуговує  одночасно  декілька  клієнтських  процесів.  Сервер
               може  виступати  багатопоточною  програмою,  кожен  потік  якої  обслуговує
               свого клієнта. Якщо клієнт і сервер працюють на одному процесорі, то вони
               представляють собою паралельне програмне узагальнення процедур – сервер
               виконує  роль  процедури,  а  клієнт  виконує  її  виклик.  Однак  якщо  код
               клієнтської  і  серверної  програми  рознесений  в  просторі,  то  говорять
               провіддалений виклик процедур.
                     5. Керівникта робітники– модель організації обчислень, при якій існує
               потік, що координує роботу всіх інших потоків. Як правило, керуючий потік
               розподіляє  дані  та  збирає  і  аналізує  результати.  Ця  парадигма  часто
               використовується в задачах оптимізації і статистичної обробки інформації, в
               процесі обробки зображень та інших наукових обчисленнях з ітеративними
   32   33   34   35   36   37   38   39   40   41   42