Đáp án đúng: D
Deadlock (tắc nghẽn) xảy ra khi một tập hợp các tiến trình bị chặn, vì mỗi tiến trình giữ một tài nguyên và chờ đợi để có được một tài nguyên do một tiến trình khác trong tập hợp đó nắm giữ. Để xảy ra deadlock, cần phải đồng thời thỏa mãn bốn điều kiện Coffman:
1. **Loại trừ hỗ tương (Mutual Exclusion):** Ít nhất một tài nguyên phải được giữ ở chế độ độc quyền; nghĩa là, chỉ có một tiến trình có thể sử dụng tài nguyên tại một thời điểm. Nếu một tiến trình khác yêu cầu tài nguyên đó, tiến trình yêu cầu phải bị trì hoãn cho đến khi tài nguyên được giải phóng.
2. **Giữ và chờ (Hold and Wait):** Một tiến trình giữ ít nhất một tài nguyên và đang chờ để có được các tài nguyên khác do các tiến trình khác giữ.
3. **Không trưng dụng (No Preemption):** Tài nguyên chỉ có thể được giải phóng tự nguyện bởi tiến trình đang giữ nó, sau khi tiến trình đó đã hoàn thành nhiệm vụ của nó.
4. **Chu trình (Circular Wait):** Tồn tại một tập hợp {P0, P1, ..., Pn} các tiến trình đang chờ, sao cho P0 đang chờ một tài nguyên do P1 giữ, P1 đang chờ một tài nguyên do P2 giữ, ..., Pn-1 đang chờ một tài nguyên do Pn giữ, và Pn đang chờ một tài nguyên do P0 giữ. Điều này thường được biểu diễn bằng đồ thị cấp phát tài nguyên.
Như vậy, đáp án đầy đủ và chính xác nhất là D, bao gồm cả 4 điều kiện cần để xảy ra deadlock.