- Đọc/Ghi ngày, tháng, năm
d) Sử dụng thơng đ iệp:
3.5.4.2 Giải thuật Banker
Khi cĩ tiến trình yêu cầu các tài nguyên, hệđiều hành thử cấp phát, sau đĩ xác định hệ thống cĩ an tồn khơng (dùng giải thuật xác định trạng thái an tồn). Nếu hệ thống an tồn thì cấp phát thực sự các tài nguyên mà tiến trình yêu cầu, ngược lại tiến trình phải đợi.
Giả sử tiến trình Pi yêu cầu kr thể hiện của tài nguyên r. Giải thuật cấp phát được thực hiện như sau:
B1. Nếu kr <= Need[i,r] với mọi r, đến bước 2, ngược lại, xảy ra tình huống lỗi B2. Nếu kr <= Available[r] với mọi r, đến bước 3 , ngược lại Pi phải chờ
B3. Giả sử hệ thống đã cấp phát cho Pi các tài nguyên mà nĩ yêu cầu và cập nhật tình trạng hệ thống như sau:
Available[r]=Available[r]-kr; với mọi r Allocation[i,r] =Allocation[i,r]+ kr; với mọi r Need[i,r] = Need[i,r] - kr; với mọi r
B4: Kiểm tra trạng thái an tồn của hệ thống.
Dùng giải thuật “xác định trạng thái an tồn” để xác định trạng thái của hệ thống sau khi đã thử cấp tài nguyên cho Pi. Nếu trạng thái là an tồn thì các tài nguyên sẽđược cấp phát thật sự cho Pi. Ngược lại, Pi phải chờ.
Ví dụ giả sử tình trạng hiện hành của hệ thống được mơ tả như trong bảng dưới đây. Cột Max là nhu cầu tối đa về mỗi tài nguyên của mỗi tiến trình, Allocation là số lượng của mỗi loại tài nguyên đã cấp cho mỗi tiến trình, Available là số lượng của mỗi loại tài nguyên cịn cĩ thể sử dụng.
Nếu tiến trình P2 yêu cầu 4 R1, 1 R3. hãy cho biết yêu cầu này cĩ thểđáp ứng mà khơng xảy ra deadlock hay khơng?
Max Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 3 2 2 1 0 0 4 1 2