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 cho biết, chuỗi thực thi tiến trình nào dưới đây là an toàn (safe)?
Trả lời:
Đáp án đúng: C
Để xác định chuỗi thực thi tiến trình nào là an toàn, ta cần kiểm tra xem với thứ tự đó, hệ thống có thể cấp phát tài nguyên cho từng tiến trình một cách tuần tự hay không mà không rơi vào trạng thái deadlock. Tổng số tài nguyên là 12.
* **Kiểm tra đáp án A (A > B > C):**
* Tiến trình A đang giữ 3 tài nguyên và cần thêm 4 tài nguyên nữa để hoàn thành. Hệ thống hiện có 12 - 3 - 4 - 2 = 3 tài nguyên đang không được sử dụng. Vì 3 < 4, tiến trình A không thể hoàn thành ngay lập tức.
* Tuy nhiên, sau khi tiến trình A hoàn thành (giả sử), hệ thống sẽ có 3 + 3 + 4 = 10 tài nguyên. Lúc này, tiến trình B đang giữ 4 tài nguyên và cần thêm 5 tài nguyên nữa để hoàn thành. Vì 10 > 5, tiến trình B có thể hoàn thành.
* Sau khi B hoàn thành, hệ thống có 10 + 4 + 5 = 19 tài nguyên. Tiến trình C đang giữ 2 tài nguyên và cần thêm 5 tài nguyên nữa. Vì 19 > 5, tiến trình C có thể hoàn thành.
* Vậy, chuỗi A > B > C là an toàn.
* **Kiểm tra đáp án B (A > C > B):**
* Tiến trình A đang giữ 3 tài nguyên và cần thêm 4 tài nguyên nữa. Hệ thống hiện có 3 tài nguyên đang không được sử dụng. Vì 3 < 4, tiến trình A không thể hoàn thành ngay lập tức. (Tương tự như trên).
* Sau khi tiến trình A hoàn thành (giả sử), hệ thống sẽ có 10 tài nguyên. Tiến trình C đang giữ 2 tài nguyên và cần thêm 5 tài nguyên nữa để hoàn thành. Vì 10 > 5, tiến trình C có thể hoàn thành.
* Sau khi C hoàn thành, hệ thống có 10 + 2 + 5 = 17 tài nguyên. Tiến trình B đang giữ 4 tài nguyên và cần thêm 5 tài nguyên nữa. Vì 17 > 5, tiến trình B có thể hoàn thành.
* Vậy chuỗi A > C > B cũng an toàn.
* **Kiểm tra đáp án C (B > A > C):**
* Tiến trình B đang giữ 4 tài nguyên và cần thêm 5 tài nguyên nữa. Hệ thống hiện có 3 tài nguyên đang không được sử dụng. Vì 3 < 5, tiến trình B không thể hoàn thành ngay lập tức.
* Sau khi tiến trình B hoàn thành (giả sử), hệ thống sẽ có 3 + 4 + 5 = 12 tài nguyên. Tiến trình A đang giữ 3 tài nguyên và cần thêm 4 tài nguyên nữa để hoàn thành. Vì 12 > 4, tiến trình A có thể hoàn thành.
* Sau khi A hoàn thành, hệ thống có 12 + 3 + 4 = 19 tài nguyên. Tiến trình C đang giữ 2 tài nguyên và cần thêm 5 tài nguyên nữa. Vì 19 > 5, tiến trình C có thể hoàn thành.
* Vậy chuỗi B > A > C cũng an toàn.
* **Kiểm tra đáp án D (B > C > A):**
* Tiến trình B đang giữ 4 tài nguyên và cần thêm 5 tài nguyên nữa. Hệ thống hiện có 3 tài nguyên đang không được sử dụng. Vì 3 < 5, tiến trình B không thể hoàn thành ngay lập tức.
* Sau khi tiến trình B hoàn thành (giả sử), hệ thống sẽ có 12 tài nguyên. Tiến trình C đang giữ 2 tài nguyên và cần thêm 5 tài nguyên nữa để hoàn thành. Vì 12 > 5, tiến trình C có thể hoàn thành.
* Sau khi C hoàn thành, hệ thống có 12 + 2 + 5 = 19 tài nguyên. Tiến trình A đang giữ 3 tài nguyên và cần thêm 4 tài nguyên nữa. Vì 19 > 4, tiến trình A có thể hoàn thành.
* Vậy chuỗi B > C > A cũng an toàn.
Như vậy, cả 4 đáp án đều cho chuỗi thực thi an toàn. Có lẽ đề bài bị sai sót, vì thông thường chỉ có 1 đáp án đúng duy nhất.
50 câu hỏi 60 phút