logo search
СПЗ_лекції

3. Міжпроцесна взаємодія.

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

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

Рис.4.1.Взаємне виключення з використанням критичних областей

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

Використовується також рішення, яке вимагає апаратного забезпечення. Багато комп’ютерів, особливо розроблених з розрахунком на декілька процесорів, мають команду TSL RX.LOCK (перевірити і заблокувати), яка діє так: в регістр RX зчитується вміст слова пам’яті lock, а в комірці пам’яті lock зберігається деяке нульове значення.