Tiến trình & Luồng
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Sau bài này, bạn sẽ phân biệt được Process vs Thread, hiểu các trạng thái tiến trình, và thuật toán lập lịch CPU — chủ đề quan trọng trong thi FE.
1. Process (Tiến trình) vs Thread (Luồng)
🏠 Ví dụ: Chrome Browser
Mở 1 tab Chrome = 1 Process (có bộ nhớ riêng, crash tab A không ảnh hưởng tab B).
Trong 1 tab, nhiều việc chạy đồng thời (tải hình, chạy JS, render CSS) = nhiều Thread (chung bộ nhớ).
| Đặc điểm | Process | Thread |
|---|---|---|
| Định nghĩa | Chương trình đang chạy | Đơn vị nhỏ nhất của Process |
| Bộ nhớ | Riêng biệt (không chia sẻ) | Chia sẻ bộ nhớ của Process |
| Tạo mới | Chậm, tốn tài nguyên | Nhanh, nhẹ |
| Giao tiếp | IPC (Inter-Process Communication) | Trực tiếp qua shared memory |
| Crash | Process A crash ≠ ảnh hưởng B | 1 Thread crash → cả Process chết |
| Ví dụ | Chrome tab, Word vs Excel | Download file + render page |
2. Trạng thái của Process — HAY RA THI! 🔥
Một process trải qua 5 trạng thái:
| Trạng thái | Ý nghĩa | Chuyển sang |
|---|---|---|
| New | Vừa được tạo | → Ready (OS chấp nhận) |
| Ready | Sẵn sàng, chờ CPU | → Running (được CPU chọn) |
| Running | Đang chạy trên CPU | → Waiting / Ready / Terminated |
| Waiting | Chờ I/O hoặc sự kiện | → Ready (I/O xong) |
| Terminated | Đã hoàn thành | Giải phóng tài nguyên |
3. Lập lịch CPU (CPU Scheduling)
| Thuật toán | Mô tả | Ưu điểm | Nhược điểm |
|---|---|---|---|
| FCFS | First Come First Served | Đơn giản | Convoy Effect (job dài chặn job ngắn) |
| SJF | Shortest Job First | Thời gian chờ trung bình tối ưu | Khó biết trước thời gian job |
| Round Robin | Chia time slice đều | Công bằng, phản hồi nhanh | Overhead do context switch |
| Priority | Ưu tiên theo mức quan trọng | Linh hoạt | Starvation (job ưu tiên thấp đợi mãi) |
💡 Giải pháp Starvation: Aging
Tăng dần mức ưu tiên cho process chờ lâu. Chờ càng lâu → ưu tiên càng cao → cuối cùng sẽ được chạy!
4. Deadlock (Bế tắc) — CỰC KỲ QUAN TRỌNG!
⚠️ Deadlock xảy ra khi nào?
Khi 2+ process giữ tài nguyên mà cái kia cần, ĐỒNG THỜI không ai chịu nhả ra.
Ví dụ: A giữ máy in, cần scanner. B giữ scanner, cần máy in → cả hai chờ mãi!
4 điều kiện Deadlock (phải đủ cả 4 mới xảy ra):
| # | Điều kiện | Ý nghĩa dễ nhớ |
|---|---|---|
| 1 | Mutual Exclusion | Tài nguyên chỉ 1 process dùng tại 1 thời điểm |
| 2 | Hold & Wait | Giữ tài nguyên + chờ thêm tài nguyên khác |
| 3 | No Preemption | Không thể cưỡng chiếm tài nguyên |
| 4 | Circular Wait | A chờ B chờ C chờ A (vòng tròn) |
📝 Tóm tắt nhanh
- Process = chương trình đang chạy (bộ nhớ riêng), Thread = đơn vị nhỏ trong Process (bộ nhớ chung)
- 5 trạng thái: New → Ready → Running → Waiting/Terminated
- Round Robin: công bằng nhất | SJF: nhanh nhất | Priority: có thể Starvation
- Deadlock cần 4 điều kiện: ME + H&W + NP + CW
🎯 Câu hỏi ôn thi FE #1
Hỏi: Thuật toán lập lịch nào chia CPU thành các time slice bằng nhau?
Đáp: Round Robin
🎯 Câu hỏi ôn thi FE #2
Hỏi: Process vs Thread: cái nào chia sẻ bộ nhớ?
Đáp: Thread (chia sẻ bộ nhớ của process cha). Process có bộ nhớ riêng biệt.
🎯 Câu hỏi ôn thi FE #3
Hỏi: Nêu 4 điều kiện cần để Deadlock xảy ra?
Đáp: Mutual Exclusion, Hold & Wait, No Preemption, Circular Wait
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense