Междупроцесна комуникация (IPC) в ОС
⚡ Умно обобщение
Междупроцесната комуникация (IPC) е набор от механизми на операционната система, които позволяват на процеси и нишки да обменят данни, да координират дейности и да синхронизират действия, независимо дали се изпълняват на един компютър или на няколко машини, свързани чрез мрежа.

Какво е междупроцесна комуникация?
Междупроцесна комуникация (IPC) се използва за обмен на данни между множество нишки в един или повече процеси или програми. Процесите могат да се изпълняват на един компютър или на множество компютри, свързани чрез мрежа. Пълната форма на IPC е междупроцесна комуникация.
Това е набор от програмни интерфейси, които позволяват на програмиста да координира дейности между различни програмни процеси, които могат да се изпълняват едновременно в операционна система. Това позволява на една програма да обработва много потребителски заявки едновременно.
Тъй като всяка потребителска заявка може да доведе до изпълнение на множество процеси в операционната система, тези процеси може да се нуждаят от комуникация помежду си. Всеки IPC подход има своите предимства и ограничения, така че не е необичайно една програма да използва няколко IPC метода.
Подходи за комуникация между процеси
Ето няколко важни метода за комуникация между процесите:
Подходи за междупроцесна комуникация
Тръби
Каналът (тръба) се използва широко за комуникация между два свързани процеса. Това е полудуплексен метод, така че първият процес комуникира с втория процес. За да се постигне пълнодуплексна комуникация обаче, е необходим друг канал.
Преминаване на съобщения
Това е механизъм за комуникация и синхронизация на даден процес. Използвайки предаване на съобщения, процесите комуникират помежду си, без да прибягват до споделени променливи.
Механизмът IPC осигурява две операции:
- Изпрати (съобщение) — размерът на съобщението може да бъде фиксиран или променлив
- Получаване (съобщение)
Опашки за съобщения
Опашката от съобщения е свързан списък от съобщения, съхранени в ядро. Идентифицира се чрез идентификатор на опашка от съобщения. Този метод предлага комуникация между единични или множество процеси с пълен дуплексен капацитет.
директна комуникация
При този тип междупроцесна комуникация, процесите трябва да се наименуват изрично. При този метод се установява връзка между една двойка комуникиращи процеси и между всяка двойка съществува само една връзка.
Непряка комуникация
Непряка комуникация се установява само когато процесите споделят обща пощенска кутия. Всяка двойка процеси може да споделя няколко комуникационни връзки, а една връзка може да комуникира с много процеси. Връзката може да бъде двупосочна или еднопосочна.
Споделена памет
Споделената памет е област от паметта, споделяна между два или повече процеса. Тази памет трябва да бъде защитена от едновременен достъп чрез синхронизиране на процесите, които я използват.
FIFO
FIFO се използва за комуникация между два несвързани процеса. Това е метод с пълен дуплекс, което означава, че първият процес може да комуникира с втория процес, както и обратното.
Защо IPC?
Ето причините за използване на протокола за междупроцесна комуникация за споделяне на информация:
- Това помага за ускоряване на модулността.
- Ускорение на изчисленията.
- Разделяне на привилегиите.
- Удобство.
- Това помага на процесите и операционната система да комуникират и синхронизират действията си.
Термини, използвани в IPC
Следват няколко важни термина, използвани в IPC:
Semaphores: Семафорът е сигнален механизъм. Този метод на операционната система или разрешава, или забранява достъп до ресурс, в зависимост от това как е настроен.
Signals: Сигналът е метод за комуникация между множество процеси чрез сигнализиране. Изходният процес изпраща сигнал, който се разпознава по число, а целевият процес го обработва.
Предложение за четене: Какво е Semaphore? Двоични, броене на типове с пример
Какво е като FIFOS и за разлика от FIFOS
Следната таблица сравнява подобни FIFO и различни FIFO:
| Като FIFOS | За разлика от FIFOS |
|---|---|
| Следва се методът FIFO. | Той използва метод за извличане на специфични спешни съобщения, преди да достигнат до отбора. |
| FIFO съществува независимо както от процесите на изпращане, така и от процесите на получаване. | Винаги готов, така че няма нужда да го отваряте или затваряте. |
| Позволява трансфер на данни между несвързани процеси. | Няма проблеми със синхронизацията между отваряне и затваряне. |

