Page 57 - 6571
P. 57
7. Дайте визначення поняттю «взаємне виключення»
8. Яка основна вимога повинна задовольнятися для можливо-
сті розпаралелювання будь-якої програми?
9. Яке призначення оператора co під час реалізації паралель-
ної програми?
10. У чому полягає суть незалежності паралельних процесів?
ЛЕКЦІЯ 7
НЕПОДІЛЬНІ ДІЇ ТА ОПЕРАТОРИ ОЧІКУВАННЯ
7.1 Дрібномодульна неподільність
Як згадувалося раніше, виконання паралельної програми мо-
жна представити як чергування неподільних дій, що виконуються
окремими процесами. При взаємодії процесів не всі чергування є
допустимими. Ціль синхронізації – запобігти небажаним чергу-
вання. Це здійснюється шляхом об’єднання дрібномодульних не-
подільних операцій в крупномодульні (складені) дії або затримки
виконання процесу до досягнення програмою стану, що задово-
льняє деякому предикату. Перша форма синхронізації називаєть-
ся взаємним виключенням, а друга – умовною синхронізацією.
Нагадаємо, що неподільна дія виконує неподільну модифіка-
цію стану. Це означає, що будь-який проміжний стан, який може
виникнути при виконанні цієї дії, не повинен бути видимим для
інших процесів. Дрібномодульна неподільна дія – це дія, що реа-
лізується безпосередньо апаратним забезпеченням, на якому ви-
конується програма.
У послідовній програмі неподільними є оператори присвоєн-
ня, оскільки при їх виконанні немає проміжних станів, видимих
програмі (за винятком, можливо, випадків, коли виникає помил-
ка, обумовлена апаратним забезпеченням). Однак у паралельних
програмах оператор присвоєння не є неподільною дією, оскільки
він може бути реалізований у вигляді послідовності дрібномоду-
льних машинних інструкцій. Як приклад розглянемо наступну
програму і припустимо, що дрібномодульні неподільні дії – це
зчитування і запис змінних.
int y = 0, z = 0;
co x = y+z; // y = 1; // z = 2; oc;
56