Cài đặt phần kiểm tra an toàn của thuật toán Banker để xác định trạng thái hệ thống có an toàn (SAFE) hay không.
Có n tiến trình và m loại tài nguyên. Cho ma trận Allocation (đang giữ), Max (nhu cầu tối đa) và vector Available (còn rảnh). Tính Need = Max − Allocation.
Thuật toán an toàn:
Work = Available; Finish[i] = false mọi i.i có Finish[i] = false và Need[i] ≤ Work (theo từng tài nguyên). Để output xác định, chọn i nhỏ nhất thoả mãn.Work += Allocation[i], Finish[i] = true, lặp lại bước 2.Finish[i] = true → SAFE, ngược lại UNSAFE.Ví dụ: n=5, m=3, dữ liệu kinh điển → in SAFE.
Dòng 1: n m. Tiếp theo n dòng ma trận Allocation (mỗi dòng m số). Tiếp n dòng ma trận Max. Dòng cuối: m số Available. (Đọc theo token.)
1 ≤ n ≤ 200; 1 ≤ m ≤ 50; 0 ≤ các giá trị ≤ 100000.
Một chuỗi: SAFE hoặc UNSAFE.
Ví dụ:
Đầu vào:
5 3
0 1 0
2 0 0
3 0 2
2 1 1
0 0 2
7 5 3
3 2 2
9 0 2
2 2 2
4 3 3
3 3 2
Đầu ra:
SAFE
Giải thích:
Đang tải editor...