Lesson 08 — IPC: Giao tiếp liên tiến trình

1. Các cơ chế IPC — Nhấn để xem chi tiết

2. Walk-through: ls | grep .go

Bấm từng bước để thấy shell tạo pipe, fork, redirect và exec.

Shell Pipe Buffer (64KB) kernel RAM Child 1 execve(ls) stdout → fd[1] (dup2) Ghi vào pipe Child 2 execve(grep) stdin ← fd[0] (dup2) Đọc từ pipe pipe(fd) fork() #1 fork() #2 wait(children)
// Nhấn "Bước tiếp theo" để bắt đầu...

3. Bảng so sánh cơ chế IPC

Cơ chế Tốc độ Hướng Số lượng Phù hợp với
Shared Memory Nhanh nhất 2 chiều Nhiều-nhiều Video, database buffer, data lớn
Anonymous Pipe Nhanh 1 chiều 1 parent + children Shell pipeline, parent-child streaming
Named Pipe (FIFO) Nhanh 1 chiều Bất kỳ (qua tên) Daemon ↔ CLI tool, log streaming
Message Queue Trung bình 2 chiều Nhiều-nhiều Task queue, event notification, priority
Signal Nhanh (async) 1 chiều Bất kỳ → bất kỳ Shutdown, reload config, child exit
Socket (Unix) Trung bình 2 chiều Nhiều-nhiều Client-server, cross-machine, microservices

Chọn nhanh theo tình huống:

4. Mô phỏng Signal

Chọn signal và gửi từ Process A đến Process B. Quan sát hành vi mặc định và custom handler.

Process A (sender)
PID: 1001
Đang chạy...
Process B (receiver)
PID: 1002
Đang chạy...
Process A SIGTERM Process B
// Chọn signal và nhấn "Gửi Signal"...