Đáp án đúng: C
Để đánh giá tính an toàn khi tiến trình C thực thi trước, ta cần xem xét trạng thái tài nguyên hiện tại và nhu cầu của các tiến trình.
Hiện tại:
* Tổng số tài nguyên: 12
* A đang giữ 3, cần tối đa 9 (cần thêm 6)
* B đang giữ 3, cần tối đa 4 (cần thêm 1)
* C đang giữ 3, cần tối đa 5 (cần thêm 2)
* Tài nguyên sẵn có: 12 - 3 - 3 - 3 = 3
Nếu C chạy trước:
* C hoàn thành, trả lại 5 tài nguyên (3 đang giữ + 2 đã dùng).
* Số tài nguyên sẵn có lúc này: 3 (ban đầu) + 5 = 8
* A cần 6 tài nguyên, B cần 1 tài nguyên.
* Vì 8 > 6 + 1, nên hệ thống có thể cấp phát đủ tài nguyên cho A và B hoàn thành.
Như vậy, nếu cho C thực thi trước, hệ thống vẫn an toàn.
Các phương án:
* A sai vì việc C cần thêm tài nguyên nhiều nhất không đảm bảo tính an toàn.
* B **đúng** vì C đang giữ 3 tài nguyên, ít hơn số tài nguyên sẵn có (3), nhưng quan trọng hơn là sau khi C chạy xong, hệ thống có đủ tài nguyên để các tiến trình còn lại hoàn thành.
* C sai vì C cần thêm 2 tài nguyên, nhỏ hơn số tài nguyên sẵn có ban đầu (3), và quan trọng là xét trạng thái sau khi C chạy.
* D sai vì số tài nguyên C cần tối đa (5) lớn hơn số tài nguyên sẵn có ban đầu (3), nhưng điều này không quyết định tính an toàn của hệ thống khi C chạy trước.