Page 42 - 6571
P. 42
вигляді окремих функцій, кожна з яких виконується в іншому по-
тоці. За наявності декількох процесорів виконання декількох по-
токів може відбуватися паралельно. Цей рівень вимагає ретельно-
го проектування синхронізації і взаємодії між процесами, які в
свою чергу багато в чому визначаються архітектурою обчислю-
вальної системи.
Ще одним рівнем паралелізму виступають об’єкти та проце-
си, що є характерними для розподілених програмних систем.
Наступний етап проектування – це планування зв’язків або
комунікацій між частинами програми. Методи зв’язування, як
правило, визначаються архітектурою обчислювальної системи
(спільні змінні, канали і т.д.), а їх конкретна програмна реалізація
задається обраним інструментом програмування – мовою або бі-
бліотекою.
Оскільки, під час розпаралелювання декілька потоків про-
грами працюють в межах однієї задачі, то їх функціонування по-
требує координування, тому важливим моментом проектування
таких систем є синхронізація. Необхідно передбачити, які із за-
вдань повинні виконуватися паралельно, а які послідовно; якщо
деякі частини програми були виконані раніше, то чи варто проце-
сору зайнятися виконанням інших частин програми.
При некоректній організації зв’язків і синхронізації зазвичай
з’являються наступні проблеми:
1. «Гонка даних» виникає через те, що декілька задач одноча-
сно намагаються обновити та використовувати спільні дані. Ця
проблема найчастіше виникає у випадку, якщо відбувається од-
ночасна модифікація даних. Однак проблема «гонки даних» та-
кож часто виникає і у випадку, коли одна задача повинна неодно-
разово використовувати дані, що оновлюються іншою задачею.
При відсутності узгодженості процесу, «задача-споживач» може
використовувати застарілі дані (при випереджувальному зчиту-
ванні) або втратити дані («задача-виробник» може при записі за-
терти ще невикористані дані).
2. Іншою проблемою є некоректне планування послідовності
виконання задач, яка відома під назвою «нескінченна відстрочка»
при якій задача не буде жодного разу виконана.
3. Ще однією пасткою, пов’язаною із процесом очікування є
проблема взаємного блокування. У найпростішому випадку взаємне
41