Page 37 - 4868
P. 37
35 Ошибка! Стиль не определен.
2. Іншою проблемою є некоректне планування послідовності виконання
задач, яка відома під назвою «нескінченна відстрочка». при якій задачане
буде жодного разу виконана.
3. Ще однією пасткою, пов’язаною із процесом очікування є проблема
взаємного блокування. У найпростішому випадку взаємне блокування
виникає, якщо задача під порядковим номером1очікує даних (сигналу) від
задачі під порядковим номером 2, яка в свою чергу очікує даних від задачі
під порядковим номером 1. Однак на практиці ситуація може виявитися ще
більш заплутаною.
Всі описані вище проблеми повинні бути виявлені і вирішені на етапі
проектуванняпрограми.
Існує ряд прийомів, шро використовуються під час проектування та
написання паралельних програм. Коротко опишемо основні із них:
1. Ітеративний паралелізм– використовується для реалізації декількох
процесів (часто ідентичних), кожен з яких включає в себе цикли. Процеси
програми, що виступають ітеративними програмами, працюють спільно над
вирішенням однієїзадачі.При цьому вони взаємодіють і синхронізуються або
за допомогою спільних змінних, або через механізм передачі повідомлень.
Такий паралелізм характерний, насамперед, синхронізацією паралельних
обчислень.
2. Рекурсивний паралелізм– використовується в програмах з однією або
декількома рекурсивними процедурами, виклик яких є незалежним.
Данатехнологія носить назву «розділяй та володарюй» або «перебір з
поверненнями».
3. Виробники та споживачі– це парадигма взаємодіючих
нерівноправних процесів. Одні з процесів «виробляють» дані, інші – їх
«споживають». Часто такі процеси організовуються в конвеєр, через який
проходить інформація. Кожен процес конвеєра «споживає вихід» свого
попередника і «виробляє» вхідні дані для свого наступника.
4. Клієнти та сервери–це найбільш поширена модель взаємодії в
розподілених системах. Клієнтський процес надсилає запит на сервер і чекає
відповіді. Серверний процес очікує запит від клієнта, після чого виконує
обробку цього запиту. Сервер може бути реалізований у вигляді одиничного
процесу, що обслуговує одночасно декілька клієнтських процесів. Сервер
може виступати багатопоточною програмою, кожен потік якої обслуговує
свого клієнта. Якщо клієнт і сервер працюють на одному процесорі, то вони
представляють собою паралельне програмне узагальнення процедур – сервер
виконує роль процедури, а клієнт виконує її виклик. Однак якщо код
клієнтської і серверної програми рознесений в просторі, то говорять
провіддалений виклик процедур.
5. Керівникта робітники– модель організації обчислень, при якій існує
потік, що координує роботу всіх інших потоків. Як правило, керуючий потік
розподіляє дані та збирає і аналізує результати. Ця парадигма часто
використовується в задачах оптимізації і статистичної обробки інформації, в
процесі обробки зображень та інших наукових обчисленнях з ітеративними