Висновки

Паралелізм в С++ програмі досягається за рахунок поділу на декілька процесів або декілька потоків. Процес – це ²одиниця роботи², що реалізується операційною системою. Якщо програма – це артефакт (продукт діяльності) роз­робника, то процес – це артефакт операційної системи. Додаток може складати­ся з декількох процесів, які можуть бути не пов’язані з будь-якою кон­кретною програмою. Операційні системи можуть керувати сотнями і навіть ти­сячами процесів, які завантажуються паралельно.

Деякі дані та атрибути процесу зберігаються в блоці керування процеса­ми (process control block – PCB), або БУП, що використовує операційна система для ідентифікації процесу. Багатозадачність (виконання одночасно декількох процесів) реалізується шляхом перемикання контексту. Біжучий стан процесу, який виконується, і його контекст зберігаються в БУП-блоці, що дозволяє успі­шно відновити цей процес в наступний раз, коли від буде призначений центра­льному процесору. Займаючи процесор, процес перебуває в стані виконання, а коли він очікує використання ЦП, - то в стані готовності (очікування). Отрима­ти інформацію про процеси, що виконуються в системі, можемо за допомогою утиліти ps.

Процеси, які створюють інші процеси, вступають з ними в ²родинні² від­ношення. Творець процесу називається батьківським, а створений процес – до­чірнім. Дочірні процеси успадковують від батьків множину атрибутів. ²Свята задача² батьківського процесу – почекати, коли дочірній не залишить систему. Для створення процесів передбачені різні системні функції: fork (), fork-exec (), system () та posit_spavn (). Функції fork (), fork-exec (), та posit_spavn () створю­ють процеси, які є асинхронними, в тоц час як system () створює дочірній про­цес, який є синхронним по відношенню до батьківського. Асинхронні батьків­ські процеси можуть викликати функцію wait (), після чого ²синхронно² очіку­вати, доки дочірні процеси де завершаться або поки не буде прочитано коди завершення для дочірніх процесів, що вже завершилися.

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