Đáp án đúng: B
Câu hỏi này kiểm tra kiến thức về các điều kiện cần để xảy ra deadlock và các phương pháp ngăn chặn deadlock trong hệ điều hành. Một trong những phương pháp ngăn chặn deadlock là phá vỡ một trong bốn điều kiện cần để deadlock xảy ra. Bốn điều kiện đó là:
1. **Loại trừ tương hỗ (Mutual exclusion):** Tài nguyên chỉ có thể được sử dụng bởi một tiến trình tại một thời điểm.
2. **Giữ và chờ tài nguyên (Hold and wait):** Tiến trình đang 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 mình.
4. **Chờ vòng tròn (Circular wait):** Tập hợp các tiến trình {P0, P1, ..., Pn} đang chờ, trong đó 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ữ.
Quy định "Nếu tiến trình đang giữ tài nguyên thì phải hoàn trả trước khi yêu cầu tài nguyên khác" nhằm mục đích ngăn chặn điều kiện "giữ và chờ tài nguyên" (Hold and Wait). Nếu một tiến trình buộc phải trả lại tài nguyên đang giữ trước khi yêu cầu tài nguyên mới, nó không thể đồng thời giữ tài nguyên và chờ tài nguyên khác, do đó phá vỡ điều kiện cần thiết cho deadlock.
Vì vậy, đáp án đúng là B.