Взаємодія між процесами
Взаємодія між процесами (англ. 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.
|
![]() | Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. (січень 2016) |