Взаємодія між процесами
Взаємодія між процесами (англ. Inter-Process Communication, скорочено англ. IPC) — набір засобів обміну повідомленнями між процесами.
Засоби IPC можуть використовуватись для взаємодії процесів:
- які виконуються на одному комп'ютері (для багатомашинних систем — під управлінням однієї операційної системи), також відомі як власне IPC;
- які виконуються на різних комп'ютерах (для багатомашинних систем — під управлінням окремих операційних систем), також відомі як засоби міжмашинної взаємодії;
- для забезпечення взаємодії процесу з самим собою — наприклад, для синхронізації або обміну даними між різними нитками одного процесу.
Для взаємодії процесів, що виконуються на одному комп'ютері (під управлінням однієї операційної системи) використовують (механізми взаємодії забезпечуються ядром операційної системи, в якій виконуються процеси):
- сигнали — асинхронні (неочікувані) повідомлення, що не передають дані між процесами, а сповіщають про подію (надзвичайну ситуацію), на яку процес має відреагувати виконанням наперед визначеної дії (функції або команди залежно від використаних засобів програмування);
- неіменовані та іменовані канали (англ. pipes) передачі даних як синхронних (очікуваних) повідомлень; відправлення повідомлення відбувається подібно до операції запису в файл, отримання — подібно до читання даних з файлу, якщо канал порожній — процес, що очікує дані призупиняється до надходження даних в канал.
- черги повідомлень — пакети даних, що передаються між процесами з повідомленням отримувача про надходження пакету;
- сегменти подільної пам'яті — засіб, що дозволяє кільком процесам сумісно використовувати (поділяти) фрагмент оперативної пам'яті з метою обміну даними; відправлення даних відбувається шляхом запису в пам'ять, отримання — читанням з пам'яті.
Взаємодія процесів, що виконуються на різних комп'ютерах — під управлінням окремих операційних систем, міжмашинна взаємодія — забезпечується через спеціальну абстракцію — сокет. Залежно від рівня використання сокетів, існують наступні засоби міжмашинної взаємодії процесів (механізми взаємодії узгоджено забезпечуються ядрами операційних систем, в яких виконуються процеси):
- пряме використання сокетів — технологія, що вимагає програмування на низькому рівні і реалізації протокола передачі даних;
- RPC (Remote Procedure Call), віддалений виклик процедур — технологія, що забезпечує взаємодію між процесами подібно до виклику функцій, дані в один бік передаються як аргументи функцій (віддалених процедур), в іншому — як результати виконання функцій (віддалених процедур).
- CORBA — технологія, що передбачає можливість взаємодії між процесами як між об'єктами CORBA, є подальшим розвитком технології RPC.
Також існують і інші технології, які здебільшого є модифікаціями існуючих: XML-RPC, SOAP тощо. Окрім того, сокети можуть використовуватись також для взаємодії процесів в межах однієї машини, так наприклад працює x.Org.
Засоби міжмашинної взаємодії також можуть використовуватись для забезпечення процесів, що виконуються на одній машині, всі означені засоби також можуть використовуватись для обміну даних різних нитей одного процесу.
Одним з елегантно реалізованих засобів IPC є конвеєр команд операційних систем UNIX (базується на механізмі неіменованих каналів передачі даних).
- Ч. Хоар (1989). Взаимодействующие последовательные процессы. Мир. ISBN 5-03-001043-2.