Асинхронні паралельні процеси

Процеси називаються паралельними, якщо вини існують (працюють) одночасно.

Зменшення габаритів та вартості апаратури комп’ютерів сприяють подальшому розвитку багато процесорних систем і, як кінцевий результат, реалізацію максимального паралелізму на всіх рівнях. Якщо певні операції можна виконувати паралельно, то комп’ютери наступних генерацій будуть фізично виконувати їх паралельно.

Паралельні процеси можуть бути повністю незалежними або взаємодіючими. Останні можуть бути конкуруючими, або такими, що сумісно виконують спільну роботу.

Як правило, найчастіше маємо справу з паралельними процесами, яким необхідно час від часу синхронізуватися та взаємодіяти. Усі подібні паралельні процеси називаються асинхронними.

Керуючі конструкції організації паралелізму.

У багатьох сучасних мовах програмування передбачено спеціальні конструкції для організації паралелізму, зокрема в „Ада”, це пара операторів parbegin / parend. Як правило, це парні оператори:

- Перший оператор, показує, що послідовність команд у програмі може бути розділена на декілька послідовностей, що виконуються паралельно;

- Другий оператор, вказує, що зазначені послідовності, що виконувалися паралельно, повинні злитися в один потік і повинно відновитися послідовне виконання команд.

Приклад розпаралелювання виконання команд.

Пари операторів, що забезпечують розпаралелення на рівні алгоритму:

parbegin / parend – початок – завершення блоку паралельного виконання;

cobegin / coend – початок – завершення блоку суміщеного виконання;

 

Приклад. Обчислити вираз x := (-b + (b ** 2 - 4 * a * c) ** 0.5) / (2 * a).

Цей вираз обчислюється за допомогою послідовного процесора наступним чином:

1 b ** 2

2 4 * a

3 (4 * a) * c

4 (b ** 2) – (4 * a * c)

5 (b ** 2 – 4 * a * c) ** 0.5

6 -b

7 (-b) + ((b ** 2 – 4 * a * c) ** 0.5)

8 2 * a

9 (-b + (b ** 2 – 4 * a * c) ** 0.5) / (2 * a).

Кожен з цих операторів виконується послідовно, що визначається прийнятими у системі правилами кодування операторів.

У системі з паралельною обробкою, матимемо:

1 parbegin

temp1 := -b

temp2 := b ** 2

temp3 := 4 * a

temp4 := 2 * a

parnd

2 temp5 := temp3 * c

3 temp5 := temp2 – temp5

4 temp5 := temp5 ** 0.5

5 temp5 := temp1 + temp5

6 x := temp5 / temp4

Операції першого оператора виконуються паралельно, решта операторів виконується послідовно. У загальному час обчислення виразу скорочується.