Kiểu tài nguyên chỉ có nhiều thực thể

Một phần của tài liệu giáo trình nguyên lý hệ điều hành Chương 2: QUẢN LÝ TIẾN TRÌNH; CHƯƠNG 3. LẬP LỊCH CPU; CHƯƠNG 4. ĐỒNG BỘ HOÁ TIẾN TRÌNH; CHƯƠNG 5. BẾ TẮC (Trang 53 - 54)

CHƯƠNG 5 BẾ TẮC 5.1 Mô hình hệ thống

5.5.2. Kiểu tài nguyên chỉ có nhiều thực thể

Phương pháp dùng đồ thị đợi – chờ không áp dụng được cho trường hợp mỗi loại tài nguyên có nhiều thực thể.

Giải thuật phát hiện bế tắc trường hợp mỗi loại tài nguyên có nhiều thực thể có các cấu trúc dữ liệu:

Available: vector độ dài m, số thực thể sẵn sàng của mỗi loại tài nguyên

Allocation: ma trận n  m, số thực thể của mỗi loại tài nguyên đã cấp phát cho mỗi tiến trình

Request: ma trận n  m, yêu cầu hiện tại của mỗi tiến trình. Request [i, j ] = k  Pi đang yêu cầu thêm k thực thể của Rj

Thuật toán phát hiện bế tắc:

1. Các biến WorkFinish là vector kích thước mn. Khởi tạo: Work := Available

Với i = 1, 2,…, n, nếu Allocationi 0 thì Finish[ i ] := false;ngược lại, thì Finish[ i ] := true.

2. Tìm i thỏa mãn:

Finish[ i ] := false và Requesti  Work Nếu không tồn tại i như thế, đến bước 4.

3. Work := Work + Allocationi; Finish[ i ] := true; quay về bước 2.

4. Nếu tồn tại i với Finish[ i ] = false, thì hệ thống đang ở trạng thái bế tắc. Hơn thế nữa, nếu Finish[ i ] = false thì Pi bị bế tắc.

Ví dụ minh họa: xét hệ thống với 5 tiến trình P0 đến P4 và 3 loại tài nguyên A, B, C. Loại tài nguyên A có 7 thực thể, loại tài nguyên B có 2 thực thể và loại tài nguyên C có 6 thực thể. Giả sử rằng tại thời điểm T0, chúng ta có trạng thái cấp phát tài nguyên sau:

Áp dụng giải thuật, tìm được chuỗi P0, P2, P3, P1, P4  với Finish[ i ] = true, i = 1,…, n, vậy hệ thống không bị bế tắc.

74

Một phần của tài liệu giáo trình nguyên lý hệ điều hành Chương 2: QUẢN LÝ TIẾN TRÌNH; CHƯƠNG 3. LẬP LỊCH CPU; CHƯƠNG 4. ĐỒNG BỘ HOÁ TIẾN TRÌNH; CHƯƠNG 5. BẾ TẮC (Trang 53 - 54)