Межпроцессное взаимодействие (IPC / Inter-Process Communication)
IPC — это технологический стек для передачи сообщений и общих данных между независимыми потоками выполнения.
Mechanisms: 1. Pipes (Anonymous/Named). 2. Message Queues. 3. Shared Memory. 4. Semaphores. 5. Sockets. 6. RPC.
graph LR
Center["Межпроцессное взаимодействие (IPC / Inter-Process Communication)"]:::main
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Простыми словами
Представь, что программы — это люди, живущие в разных квартирах. Они не могут заходить друг к другу без спроса. IPC — это как телефонная линия, почтовые ящики в подъезде или общее место на парковке, где они могут оставить друг другу тяжелые вещи. Это позволяет им жить отдельно, но работать вместе.
🤓 Expert Deep Dive
Реализация IPC требует поддержки со стороны 'Ядра' (Kernel). Ядро выступает в роли арбитра, который пересылает пакеты между процессами или выделяет общие регионы памяти. В микроядерных ОС (как QNX) всё общение происходит исключительно через IPC, что делает их очень надежными, но медленными из-за частого 'Переключения контекста' (Context Switch). В современных 'Облачных' средах IPC эволюционировал в 'Межсервисное взаимодействие' через брокеры сообщений (Kafka, RabbitMQ), что позволяет масштабировать системы на тысячи серверов, сохраняя ту же логику 'Передачи записок', что и внутри одного компьютера.