JavaScript is required

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 sau đó đến tiến trình A?

A.

Sẽ là an toàn (safe) vì số tài nguyên A cần thêm lớn hơn số tài nguyên sẵn có.

B.

Sẽ là an toàn (safe) vì số tài nguyên A cần thêm ít hơn (số sẵn + số B đang giữ).

C.

Sẽ là không an toàn (unsafe) số tài nguyên A cần tối đa là lớn nhất.

D.

Sẽ là không an toàn (unsafe) số tài nguyên A ít hơn số cần thêm của B.

Trả lời:

Đáp án đúng: B


Để đánh giá tính an toàn của chuỗi tiến trình B -> A, ta cần phân tích trạng thái tài nguyên: 1. **Tài nguyên hiện có:** 12 2. **B thực thi trước:** * B đang giữ: (1, 2, 2) * B cần thêm: (4, 1, 0) * Sau khi B hoàn thành, tài nguyên trả lại: 1 + 2 + 2 = 5 * Tổng tài nguyên có sẵn sau khi B kết thúc: 12 + 5 = 17 3. **A thực thi sau B:** * A đang giữ: (2, 0, 0) * A cần thêm: (3, 0, 3) * Để A có thể hoàn thành, cần (3, 0, 3) tài nguyên. * Số tài nguyên A cần thêm (3, 0, 3) < số tài nguyên sẵn có (17, ?, ?). Vì A cần (3,0,3) mà sau khi B trả lại tài nguyên, hệ thống có tổng 17 tài nguyên, A hoàn toàn có thể lấy đủ để hoàn thành. * Vậy chuỗi B -> A là an toàn. Vậy đáp án đúng là: "B. Sẽ là an toàn (safe) vì số tài nguyên A cần thêm ít hơn (số sẵn + số B đang giữ)."

Câu hỏi liên quan