Взаємодія між процесами — Вікіпедія

Взаємодія між процесами (англ. 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.