Giả sử, hệ thống có 12 tài nguyên. Có 3 tiến trình A, B, C đang chạy. Tại thời điểm, trạng thái sử dụng tài nguyên các tiến trình như sau.
Hãy chọn phát biểu ĐÚNG khi đánh giá an toàn cho chuỗi tiến trình nếu cho tiến trình B thực thi trước?
A.
Sẽ là an toàn (safe) vì số tài nguyên B cần thêm ít hơn số tài nguyên sẵn có.
B.
Sẽ là an toàn (safe) vì B đang giữ tài nguyên ít hơn số tài nguyên sẵn có.
C.
Sẽ là không an toàn (unsafe) số tài nguyên B cần tối đa là ít nhất.
D.
Sẽ là không an toàn (unsafe) số tài nguyên B cần tối đa lớn hơn số tài nguyên sẵn có.
Trả lời:
Đáp án đúng: A
Để đánh giá xem chuỗi tiến trình có an toàn nếu B thực thi trước, ta cần xem xét các bước sau:
1. **Tài nguyên sẵn có**: Ban đầu có 12 tài nguyên.
2. **Trạng thái hiện tại**:
* A đang giữ 3 tài nguyên, cần tối đa 9.
* B đang giữ 4 tài nguyên, cần tối đa 5.
* C đang giữ 2 tài nguyên, cần tối đa 7.
3. **Nếu B chạy trước**:
* B cần thêm tối đa (5-4) = 1 tài nguyên.
* Sau khi B chạy xong, trả lại 5 tài nguyên cho hệ thống. Lúc này, số tài nguyên sẵn có là 12 (ban đầu) - 4 (B đang giữ) + 5 (B trả lại) = 13.
* Tiếp theo, xét A. A cần thêm (9-3) = 6 tài nguyên. Vì 13 > 6, A có thể chạy.
* Sau khi A chạy xong, trả lại 9 tài nguyên cho hệ thống. Lúc này, số tài nguyên sẵn có là 13 - 3 + 9 = 19.
* Cuối cùng, xét C. C cần thêm (7-2) = 5 tài nguyên. Vì 19 > 5, C có thể chạy.
* Vậy, chuỗi B -> A -> C là an toàn.
4. **Đánh giá các đáp án**:
* A. Đúng, vì số tài nguyên B cần thêm (1) ít hơn số tài nguyên sẵn có (12).
* B. Sai, B đang giữ 4 tài nguyên, nhưng việc đánh giá an toàn không chỉ dựa vào số tài nguyên đang giữ, mà còn số tài nguyên cần thêm.
* C. Sai, chuỗi là an toàn, không phải không an toàn. Số tài nguyên B cần tối đa là 5, không phải là yếu tố duy nhất quyết định.
* D. Sai, chuỗi là an toàn, không phải không an toàn.
50 câu hỏi 60 phút





