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