IPC що це таке – розповідаємо про Inter-process Communication

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мал. 4. Потоки інформації

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мал. 5. Принцип дії мережі

загальний стан речей

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

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

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

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

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

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

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

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

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

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

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

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

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

  • локальний

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

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

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

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

  • віддалений

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

  • високорівнева

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылка на основную публикацию