Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

33

IPC – це поняття, пов’язане з операційною системою, але є сенс розібратися в тому, що це таке, більш докладно.

Цим і займемося.

Теоретична сторінка

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

А тепер уявіть, що звична для нас робота нашої ОС перетворилася у свого злого двійника, який не просто не схожий на свій оригінал, але ще і виконує всі свої обов’язки.

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 1. Якщо хоча б одна шестерня перестане крутитися, то вся система перестане працювати справно

Такий розвиток подій цілком могло відбуватися, не будь вбудований в нашу систему IPC.

Якщо добре вивчити питання про залежність програм один від одного, то можна зрозуміти, що додатків, що не залежать один від одного, досить мала кількість.

Це цілком логічно, так як для високого коефіцієнта роботи будь-якої системи просто необхідна передача інформації між складовими.

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 2. Якщо не буде передачі актуальних даних, то всі процеси і обчислення будуть неправильні

Наприклад, коли у людини в роботі виникає питання, який залежить від його роботи, він бере потрібну йому інформацію з якогось джерела, будь те людина чи будь-який інший джерело.

Хоч «ядро» нашого комп’ютера запрограмовано шукати інформацію в якомусь певному джерелі, принцип роботи, по суті, той самий.

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 3. Активний пошук інформації

Читайте також:

Який Інтернет краще підключити для дому. Огляд всіх можливих варіантів

Як передати великий файл через Інтернет: кращі способи – інструкція

Топ браузерів 2017 року: кращі програми для роботи в інтернеті

Патч корд: вчимося розрізняти і вибирати комутаційні шнури — керівництво

повернутися до меню ^

Принцип роботи

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

Саме за такої потреби в постійному обміні інформацією з іншими програмами, операційну систему вбудовується не мала кількість механізмів, які відповідають за підтримання постійного і безпомилкового потоку інформації.

Такі механізми або програми носять назву «межпроцессорное взаємодія» – з перекладу Inter-process Communication (IPC).

Важливо: IPC – це механізм або програма, яка забезпечує стабільний взаємний обмін даними в потоків інформації процесу/процесорів.

Працює ця програма безпосередньо в самій операційній системі, і є основою для передачі будь-якої інформації.

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 4. Потоки інформації

повернутися до меню ^

Приклади роботи IPC

Ще до розвитку мережевих технологій актуальним стало питання про необхідність передачі інформації від процесора до процесора, які працюють на одному комп’ютері.

Існує просто величезна кількість прикладів, коли ця програма була використана досить примітивних, на сьогоднішній час, механізмах.

Розглянемо один з ключових прикладів, що наочно відобразить всю важливість IPC навіть в дуже простих і ранніх системах, що вже говорити про його потреби на сьогоднішній день.

Більш старі версії сучасного IPC були присутні ще в MS-DOS.

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

У той час вирішення даного питання було дуже проблематичним.

Справа в тому, що такий зв’язок могла проводити обмін даними, якщо тільки їх платформи або операційні системи ставилися до однакових моделей.

У сучасній мережі дані проблеми вже давно нікого не турбують. Ось вам короткий наочний приклад роботи в таких мережах.

Коли ви робите будь-який вихід в Інтернет, ваш браузер – один процес (програма) – входить у взаємозв’язок з web-сервером – іншим процесором (програмою).

Дані процеси виконуються на двох різних комп’ютерах, в двох різних місцях:

  • браузер у вас в системі;
  • сервер – в будь-якій іншій системі або абсолютно в будь-якому місці.

І ви абсолютно не ставите питанням, яка у серверів операційна система.

Торкаючись загальний принцип роботи таких форм як IPC, і не тільки таких, як вона, в основному використовується концепція «клієнт-сервер».

Зрозуміло, що «клієнт» — це програма, яка запитує інформацію, а запит інформації йде вже до «сервера» — додатком яке надає потрібну інформацію.

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 5. Принцип дії мережі

повернутися до меню ^

Загальне положення

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

Нижче будуть перераховані області взаємодії IPC, як в одній системі, так і в багатокористувацької мережі.

На сьогоднішній день вимоги до операційних систем збільшується пропорційно з ростом рівня технологій.

Даний ріст викликаний тим, що кожен день на наші операційні системи виходить все більше і більше якихось доповнень які в свою чергу покращують характеристики нашого комп’ютера.
Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 6. Чим вищий рівень технології, тим більше на неї попит

Але мало хто знає, що сучасні операційні системи, які підтримують багатозадачність своєї системи, повинні мати у собі такі програми або механізми, які забезпечують синхронізацію процесорів без взаємовиключення і з мінімальними затримками.

Дані критерії мають дуже високу важливість у роботі нашого комп’ютера.

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

В реальності така «ідеальна» система неможлива, так як рано чи пізно виникають ситуації, коли процесів необхідний доступ до деяких спільних ресурсів.

Для отримання даної можливості, на рівні операційної системи водяться спеціальні ресурси, які надають їм таку можливість.

Але тут, звичайно ж, не без винятків. При виконанні паралельних процесів можуть виникати проблеми.

Наприклад: при спільній роботі, кожен процес, який звертається до подільних даними, робить неможливим для всіх інших процесів одночасне звернення до цих даних – цей феномен називається взаимоисключением.

повернутися до меню ^

Три основних види IPC

  • Локальний

Цей вид IPC повністю прив’язаний до свого комп’ютера, робота здійснюється лише в межах однієї системи (комп’ютера).

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

З-за своєї обмеженості, в плані комунікаційного простору, дані IPC, можуть працювати лише в межах своєї локальної системи.

Але завдяки такому обмеженню для них можуть використовуватися більш швидкі і прості інтерфейси.

  • Віддалений

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

  • Високорівневий

Останній і, мабуть, один із самих важких у використанні вид IPC – високорівневий.

Даний вид являє собою пакет програмного забезпечення.

Цей пакет даних створює так званий «проміжний шар», який надає можливість спілкування між системною платформою і додатком.

Читайте також:

Маршрутизатор і роутер: в чому різниця?

Що таке локальна мережа LAN. Чим відрізняється від WAN LAN, у чому різниця?

Невизначена мережу без доступу до інтернету — Що робити?

Налаштувати локальну мережу через роутер, Wi-Fi, мережевий доступ до принтерів

повернутися до меню ^

Забезпечення коректної роботи обміну даних

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

Ось приклади їх галузі діяльності:

1Конкурентні ситуації між процесами. Можемо уявити собі ідеальну систему, в якій проходить лише одна дія, це зчитування даних з одного файлу. Дана система перебувати в повному спокої до тих пір, поки одному з процесів не знадобитися змінити цей файл. У такому випадку між процесами виникає «конкурентна ситуація». Це можна порівняти з камінчиком в якомусь механізмі.

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

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 7. Чергу процесів для запису даних

А щодо тих процесів, які вимагають невід’ємною швидкості свого рішення?

Раніше, коли створювали згадані вище черги, виникла проблема, при якій деякі процеси могли довго чекати своєї черги, в той час, коли цей процес був неотлагаемым.

Через деякий час була придумана ідея створення черг, які здійснювали такий розпорядок процесів, які не заважали основним або більш важливим процесам.

Також, існує термін, який і в теорії, і на практиці обґрунтований своєю назвою – це глухий кут.

Його особливість в тому, що хоч процеси вже звільнилися, вони не можуть переходити на наступний щабель для завершення процесу.

Якщо простіше пояснити, то на практиці виходить наступне: у нас є процес X, коли він отримує доступ до файлу X, він починає чекати, коли звільнитися файл Y, для завершення своєї роботи. Але разом з ними процес Y, отримавши доступ до файлу Y, чекає, поки звільниться файл X.

Дані процеси замикаються між собою в даний момент і чекають взаємного звільнення файлу, при цьому, не звільняючи свій файл.

Такого «замикання» можна уникнути, якщо користувач подбати про те, щоб ресурси були пронумеровані.

Також вони повинні бути побудовані строго у висхідному порядку номерів.

Inter-process Communication (IPC) — докладне керівництво по механізму/програмі

Рис. 8. Наочний «глухий кут»

повернутися до меню ^

Сучасні приклади роботи ICP

Щоб наочно зобразити взаємодія програм на одному комп’ютері, існує знайомий нам ресурс – буфер обміну.

Не дивуйтеся, наш старий добрий буфер обміну також є однією з механізмів IPC.

А принцип його роботи укладено в наступному: виділений вами текст з текстового редактора, після виділення поміщається в електронну таблицю або в ту ж програму для верстки.

Ви самі можете переконатися, що сліди механізмів межпроцессорного взаємодії можна виявити навіть у дрібних деталях.

Було безліч спроб створення програм або механізмів, які забезпечили б швидку й ефективну передачу інформації між процесорами.

Хоч було створено досить багато подібних засобів, багато з них до цих пір збереглися або послужили в якості основи для майбутніх моделей.

Варто зауважити, що багато з них були реалізовані в Windows 9x, а ще більше в Windows NT/2000.

Хотілося б звернути вашу увагу на той факт, що існування універсального способу обміну даними, який був би корисний у всіх ситуаціях, просто неможливо.

В яку б середу не потрапив користувач – все рівно якийсь із способів буде краще, хоч великої різниці в нормальних умовах, між ними і немає.

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

Для тих людей, які думають, що розвитку в даній технології не передвіщається, є один факт, який змінить вашу думку.

Програми та механізми, які пов’язані з IPC, безпосередньо пов’язані з операційній системою. Тобто, ефективність і надійність даних ресурсів буде зростати в міру поліпшення роботи операційної системи.