Незалежні і взаємодіючі процеси

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

З точки зору зовнішнього спостерігача, кожен з цих процесів є послідовним, якщо структура апаратної частини комп'ютера є однопроцессорной. Оскільки всі процеси присутні в системі, і зокрема, в ОП, одночасно, то з точки зору роботи ОС, їх можна інтерпретувати як паралельні. Це дозволяє вважати, що під паралельними процесами можна розуміти не тільки процеси, одночасно виконуються в різних процесорах або каналах введення / виводу, а й ті послідовні процеси, які спільно використовують (розділяють) один і той же процесор, ОП, або інший системний ресурс, і хоча б частково перекриваються в часі.

Мультипрограммная ОС на логічному рівні може бути представлена ​​як сукупність послідовних процесів, які, з одного боку, конкурують між собою за використання ресурсів і переходять з одного стану в інший, а з іншого боку - діють майже незалежно один від одного і встановлюють в необхідні моменти зв'язку між собою шляхом передачі один одному даних, повідомлень, або синхронізуючих сигналів. У зв'язку з цим, всі паралельні процеси можна розділити на дві групи:

1. Незалежні - характеризуються тим, що безлічі даних які вони використовують, не перетинаються один з одним. Під даними потрібно розуміти загальні області ОП, а також файли зовнішньої пам'яті. Незалежні процеси не впливають на результати роботи один одного, оскільки не можуть змінити значення даних інших процесів. Вони можуть бути лише причиною затримок у виконанні інших процесів, оскільки поділяють поряд з ними ресурси системи;

2. Взаємодіючі процеси спільно використовують різні системні ресурси, і зокрема, загальні дані. Виконання одного процесу цього типу може вплинути на виконання іншого.

Різні системні ресурси можуть спільно використовуватися декількома процесами. Такі ресурси називаються розділяються. У кожен момент часу, до ресурсу такого типу може мати доступ тільки один з взаємодіючих процесів. Ресурси системи, які не допускають одночасного використання декількома процесами, називаються критичними. Якщо кільком взаємодіє процесам необхідно використовувати критичний ресурс, то в мультипрограмних ОС повинен бути передбачений захист від одночасного доступу процесів до таких ресурсів. В іншому випадку, в ході роботи системи можуть виникати помилки (тупикові ситуації / конфлікти / клінчі), коли кілька процесів одночасно намагаються отримати доступ до критичного ресурсу. Причиною виникнення таких помилок є те, що процеси в мультипрограмних системах розвиваються з різними абсолютними швидкостями, і при цьому, їх відносні швидкості невідомі і не можуть бути змінені в самому процесі. Тому вплив, який чинять один на одного взаємодіючі процеси, в більшості випадків непередбачувано і невідтворювані.

Взаємодіяти один з одним можуть процеси двох типів:

2) спільно виконують загальну обчислювальну роботу.

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

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

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

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

Ті області в програмах конкуруючих процесів, в яких відбувається звернення до критичних ресурсів, називаються критичними секціями (критичними інтервалами).

Незалежні і взаємодіючі процеси

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

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

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

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

Ці засоби поділяються на дві групи:

1) кошти синхронізації процесів і потоків, в які входять кошти, що забезпечують вирішення проблеми взаємного виключення;

2) кошти обміну даними між процесами і потоками.