2.7 Inter-Process Communication (IPC)
Vì mỗi Process (mục 2.2) có vùng nhớ riêng biệt, IPC là tập hợp cơ chế để các process trao đổi dữ liệu với nhau một cách an toàn.
| Khái niệm | Giải thích |
|---|---|
| Pipe | Kênh truyền dữ liệu 1 chiều giữa 2 process có quan hệ cha-con; dữ liệu ra khỏi process này chảy thẳng vào process kia (VD: lệnh ls | grep txt trong Linux) |
| Named Pipe (FIFO) | Giống Pipe nhưng có tên trên hệ thống file, cho phép cả những process không liên quan (không phải cha-con) giao tiếp |
| Socket | Kênh giao tiếp 2 chiều, dùng được giữa 2 process trên cùng máy hoặc khác máy qua mạng — nền tảng của mọi giao tiếp mạng (web, API...) |
| Shared Memory | Vùng bộ nhớ được nhiều process cùng truy cập trực tiếp; nhanh nhất trong các cơ chế IPC vì không cần copy dữ liệu qua kernel |
| Message Queue | Hàng đợi tin nhắn do kernel quản lý; các process gửi/nhận message theo thứ tự, không cần đồng bộ thời gian thực như Shared Memory |
Liên kết: IPC là câu trả lời cho câu hỏi "Process nói chuyện với nhau bằng cách nào?" — khác với Thread (mục 2.2) vốn đã chia sẻ sẵn bộ nhớ nên không cần IPC. Khi dùng Shared Memory, các process thường cần thêm cơ chế đồng bộ ở mục 2.8 (Mutex/Semaphore) để tránh xung đột dữ liệu.