Зв'язок між процесами (IPC) в ОС
⚡ Розумний підсумок
Міжпроцесна комунікація (IPC) — це набір механізмів операційної системи, які дозволяють процесам і потокам обмінюватися даними, координувати дії та синхронізувати їх, незалежно від того, чи виконуються вони на одному комп'ютері, чи на кількох машинах, підключених до мережі.

Що таке комунікація між процесами?
Зв'язок між процесами (IPC) використовується для обміну даними між кількома потоками в одному або кількох процесах чи програмах. Процеси можуть виконуватися на одному комп'ютері або на кількох комп'ютерах, підключених до мережі. Повна форма IPC - це міжпроцесна комунікація.
Це набір програмних інтерфейсів, що дозволяють програмісту координувати дії між різними програмними процесами, які можуть виконуватися одночасно в операційній системі. Це дозволяє одній програмі обробляти багато запитів користувачів одночасно.
Оскільки кожен запит користувача може призвести до запуску кількох процесів в операційній системі, цим процесам може знадобитися взаємодіяти один з одним. Кожен підхід IPC має свої переваги та обмеження, тому не є незвичайним, що одна програма використовує кілька методів IPC.
Підходи до міжпроцесної комунікації
Ось кілька важливих методів міжпроцесної комунікації:
Підходи до комунікації між процесами
Труби
Канала широко використовується для зв'язку між двома пов'язаними процесами. Це напівдуплексний метод, тому перший процес взаємодіє з другим процесом. Однак, для досягнення повнодуплексного зв'язку потрібен ще один канал.
Повідомлення проходить
Це механізм для зв'язку та синхронізації процесів. Використовуючи передачу повідомлень, процеси взаємодіють один з одним, не вдаючись до спільних змінних.
Механізм IPC забезпечує дві операції:
- Надіслати (повідомлення) — розмір повідомлення може бути фіксованим або змінним
- Отримати (повідомлення)
Черги повідомлень
Черга повідомлень – це пов’язаний список повідомлень, які зберігаються в ядро. Він ідентифікується ідентифікатором черги повідомлень. Цей метод забезпечує зв’язок між одним або кількома процесами з повнодуплексною здатністю.
прямий зв'язок
У цьому типі міжпроцесної комунікації процеси повинні явно називати один одного. У цьому методі встановлюється зв'язок між парою взаємодіючих процесів, і між кожною парою існує лише один зв'язок.
Непряме спілкування
Непрямий зв'язок встановлюється лише тоді, коли процеси використовують спільну поштову скриньку. Кожна пара процесів може використовувати кілька каналів зв'язку, а один канал може взаємодіяти з багатьма процесами. Канал може бути двонаправленим або однонаправленим.
Спільна пам'ять
Спільна пам'ять — це область пам'яті, що використовується двома або більше процесами. Ця пам'ять має бути захищена від одночасного доступу шляхом синхронізації процесів, які її використовують.
FIFO
FIFO використовується для зв'язку між двома непов'язаними процесами. Це повнодуплексний метод, що означає, що перший процес може зв'язуватися з другим процесом, і навпаки також може відбуватися навпаки.
Чому IPC?
Ось причини використання протоколу міжпроцесної комунікації для обміну інформацією:
- Це допомагає пришвидшити модульність.
- Прискорення обчислень.
- Розділення привілеїв.
- Зручність.
- Це допомагає процесам та операційній системі взаємодіяти та синхронізувати свої дії.
Терміни, що використовуються в МПК
Нижче наведено кілька важливих термінів, які використовуються в IPC:
Semaphores: Семафор — це сигнальний механізм. Цей метод ОС або дозволяє, або забороняє доступ до ресурсу, залежно від того, як він налаштований.
Signals: Сигнал — це метод зв'язку між кількома процесами за допомогою сигналізації. Процес-джерело надсилає сигнал, який розпізнається за числом, а процес-приймач його обробляє.
Пропозиція для читання: Що таке Semaphore? Двійкові, типи підрахунку з прикладом
Що таке FIFOS і чим відрізняється від FIFOS
У наступній таблиці порівнюються подібні та відмінні від FIFO операції:
| Як FIFOS | На відміну від FIFOS |
|---|---|
| Він дотримується методу FIFO. | Він використовує метод для отримання певних термінових повідомлень, перш ніж вони потраплять на фронт. |
| FIFO існує незалежно від процесів відправлення та отримання. | Завжди готовий, тому немає потреби його відкривати чи закривати. |
| Дозволяє передавати дані між непов’язаними процесами. | Немає проблем із синхронізацією між відкриттям та закриттям. |

