Hệ điều hành: Process Internals
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Process không chỉ là một cái icon trên Task Manager. Nó là một thế giới riêng.
1. Process Control Block (PCB) - CMND của Process
Để quản lý hàng ngàn Process, OS tạo cho mỗi thằng một hồ sơ (PCB - struct trong Kernel C). Nó chứa:
- PID (Process ID): Số định danh (Vd: 1305).
- State: Đang chạy (Running) hay đang ngủ (Waiting)?
- Program Counter: Đang chạy đến dòng lệnh nào rồi? (Để lúc khác chạy tiếp đúng chỗ đó).
- CPU Registers: Giá trị các biến tạm.
- Memory Limits: Nó được dùng RAM từ đâu đến đâu.
- Open Files: Danh sách file đang mở.
Khi Context Switch xảy ra (Chuyển từ Chrome sang Spotify): OS phải lưu toàn bộ PCB của Chrome vào RAM, rồi nạp PCB của Spotify vào CPU. Quá trình này tốn khoảng vài micro-seconds (khá đắt đỏ).
2. Process Memory Layout (Bản đồ trí nhớ)
Một Process trong RAM được chia làm 4 vùng:
3. Thread vs Process - Deep Dive
Tại sao nói Thread nhẹ hơn Process?
- Process: Mỗi thằng 1 nhà riêng (PCB riêng, RAM riêng, Table file riêng). Tạo mới giống như xây nhà mới (Clone cả đống dữ liệu).
- Thread: Anh em chung nhà.
- Dùng chung: Code section, Data section, Heap, Open Files.
- Dùng riêng: Stack (Mỗi thread chạy hàm riêng nên cần Stack riêng), Registers (Biến tạm riêng).
👉 Hệ quả:
- Tạo Thread cực nhanh (vì không cần cấp RAM mới cho Heap/Code).
- Giao tiếp giữa Thread cực nhanh (biến global dùng chung).
- Nhưng 1 Thread lỗi (ghi bậy vào Heap chung) -> Cả đám Thread khác chết chùm (Process Crash).
4. Fork() System Call
Trong Linux, cách duy nhất tạo process mới là lệnh fork().
int main() {
if (fork() == 0) {
// Con chạy dòng này
// Lột xác thành chương trình khác (Vd: Chrome)
execlp("/bin/chrome", "chrome", NULL);
} else {
// Cha chạy dòng này
printf("Con đã chạy Chrome!");
}
}
Lưu ý: fork() tạo bản sao (Clone). exec() lột xác (Thay thế toàn bộ Code/Data của process hiện tại bằng chương trình mới).
Kết quả: In ra "Hello" 2 lần. Sau lệnh fork, hệ thống có 2 process giống hệt nhau (Cha và Con) chạy tiếp từ dòng đó.
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense