Bài giảng Hệ điều hành - Chương 6: Deadlocks cung cấp cho người học các kiến thức: Giải thuật đồ thị cấp phát tài nguyên, giải thuật banker, phát hiện deadlock, phục hồi deadlock. Mời các bạn cùng tham khảo nội dung chi tiết.
Chương 6: Deadlocks - CuuDuongThanCong.com https://fb.com/tailieudientucntt Câu hỏi ôn tập chương - Deadlock gì? Cho ví dụ thực tế? Một tiến trình gọi bị deadlock? trì hỗn vơ hạn định? Khi xảy deadlock? Các phương pháp giải deadlock? Làm để ngăn deadlock? Làm để tránh deadlock? CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Câu hỏi ôn tập chương – (tt) Sơ đồ sau có xảy deadlock? R3 R1 P1 P3 P2 Deadlock ? R2 CuuDuongThanCong.com R4 https://fb.com/tailieudientucntt Deadlocks Câu hỏi ôn tập chương – (tt) Hệ thống có 18 tape drive tiến trình P0, P1, P2, P3 Tại thời điểm to Max Allocation Need Available P0 10 5 P1 2 P2 15 13 16 P3 10 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Mục tiêu Hiểu thêm phương pháp giải deadlock Tránh deadlock Phát Phục hồi Hiểu thực giải thuật Banker CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Nội dung Giải thuật đồ thị cấp phát tài nguyên Giải thuật banker Phát deadlock Phục hồi deadlock CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Giải thuật đồ thị cấp phát tài nguyên CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Giải thuật Banker Mỗi loại tài nguyên có nhiều thực thể Bắt chước nghiệp vụ ngân hàng Điều kiện: Mỗi tiến trình phải khai báo số lượng thực thể tối đa loại tài nguyên mà cần Khi tiến trình u cầu tài ngun phải đợi Khi tiến trình có đầy đủ tài ngun phải hồn trả khoảng thời gian hữu hạn CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Cấu trúc liệu cho giải thuật Banker n: số tiến trình; m: số loại tài nguyên Available: vector độ dài m Available[j] = k loại tài nguyên Rj có k instance sẵn sàng Max: ma trận n × m Max[i, j] = k tiến trình Pi yêu cầu tối đa k instance loại tài nguyên Rj Allocation: ma trận độ dài n ×m Allocation[i, j] = k Pi cấp phát k instance Rj Need: ma trận độ dài n × m Need[i, j] = k Pi cần thêm k instance Rj Need[i, j] = Max[i, j] - Allocation[i, j] Ký hiệu Y X Y[i] X[i], với i Ví dụ (0, 3, 2, 1) (1, 7, 3, 2) CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Giải thuật an toàn Gọi Work và Finish hai vector độ dài m và n Khởi tạo: Work = Available Finish[i] = false, i = 0, 1, …, n-1 Tìm i thỏa (a) Finish[i] == false (b) Needi ≤ Work (hàng thứ i Need) Nếu không tồn i vậy, đến bước Work = Work + Allocationi Finish[i] = true quay về bước Nếu Finish[i] == true, i = 1,…, n, thì hệ thống ở trạng thái safe CuuDuongThanCong.com 10 https://fb.com/tailieudientucntt Deadlocks Mỗi loại tài nguyên có thực thể Sử dụng wait-for graph Các Pi Node tiến trình Pj Pi chờ tài nguyên từ Pj Mỗi giải thuật kiểm tra có tồn chu trình wait- for graph hay khơng gọi định kỳ Nếu có chu trình tồn deadlock Giải thuật phát chu trình có thời gian chạy O(n2), với n số đỉnh graph CuuDuongThanCong.com 19 https://fb.com/tailieudientucntt Deadlocks Sơ đồ cấp phát tài nguyên sơ đồ wait-for Resource-Allocation Graph CuuDuongThanCong.com Corresponding wait-for graph 20 https://fb.com/tailieudientucntt Deadlocks Mỗi loại tài nguyên có nhiều thực thể Available: vector độ dài m số instance sẵn sàng loại tài nguyên Allocation: ma trận n × m định nghĩa số instance loại tài nguyên cấp phát cho process Request: ma trận n × m định yêu cầu tiến trình Request [i,j] = k ⇔ Pi yêu cầu thêm k instance Rj CuuDuongThanCong.com 21 https://fb.com/tailieudientucntt Deadlocks Giải thuật phát deadlock Gọi Work và Finish vector kích thước m và n Khởi tạo: a Work = Available b For i = 0, 1,…, n-1, Allocationi ≠ thì Finish[i] = false; còn khơng thì Finish[i] = true Tìm i thỏa mãn: a Finish[i] == false b Requesti ≤ Work Nếu không tồn i vậy, đến bước Work = Work + Allocationi Finish[i] = true quay về bước Nếu Finish[i] == false, với số i = 0,…, n-1, thì hệ thống ở trạng thái deadlock Hơn thế nữa, Finish[i] == false thì Pi bị deadlocked Thời gian chạy của giải thuật O(m·n2) CuuDuongThanCong.com 22 https://fb.com/tailieudientucntt Deadlocks Giải thuật phát deadlock - Ví dụ trình P0 ,…, P4 với loại tài nguyên: A (7 instance), B (2 instance), C (6 instance) Tại thời điểm T0 Allocation Request Available A B C A B C A B C P0 0 0 0 P1 0 2 P2 3 0 P3 1 0 P4 0 0 CuuDuongThanCong.com 23 https://fb.com/tailieudientucntt Deadlocks Giải thuật phát deadlock - Ví dụ trình P0 ,…, P4 với loại tài nguyên: A (7 instance), B (2 instance), C (6 instance) Tại thời điểm T0 Chuỗi sẽ cho kết Finish[ i ] = true, i = 1,…, n CuuDuongThanCong.com 24 https://fb.com/tailieudientucntt Deadlocks Giải thuật phát deadlock - Ví dụ (tt) P2 yêu cầu thêm instance C Ma trận Request sau: Allocation Request Available A B C A B C A B C P0 0 0 0 P1 0 2 P2 3 0 P3 1 0 P4 0 0 Hệ thống bị deadlock (Trong tình trạng này, dù P0 thực thi xong, trả tài nguyên lại cho hệ thống lượng tài ngun khơng đủ để đáp ứng Request process lại Deadlock) Deadlocks 25 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phục hồi deadlock Khi deadlock xảy ra, để phục hồi Báo Hệ người vận hành thống tự động phục hồi bằng cách bẻ gãy chu trình deadlock: Chấm Lấy dứt hay nhiều tiến trình lại tài nguyên từ hay nhiều tiến trình CuuDuongThanCong.com 26 https://fb.com/tailieudientucntt Deadlocks Chấm dứt trình Chấm dứt trình bị deadlock Chấm dứt tiến trình khơng deadlock Sử dụng giải thuật phát deadlock để xác định deadlock hay khơng Dựa yếu tố để chấm dứt? Độ ưu tiên tiến trình Thời gian thực thi tiến trình thời gian còn lại Loại tài nguyên mà tiến trình sử dụng Tài nguyên mà tiến trình cần thêm để hồn tất cơng việc Số lượng tiến trình cần chấm dứt Tiến trình interactive hay batch CuuDuongThanCong.com 27 https://fb.com/tailieudientucntt Deadlocks Lấy lại tài nguyên Lấy lại tài nguyên từ tiến trình, cấp phát cho tiến trình khác không còn deadlock Chọn “nạn nhân” để tối thiểu chi phí (có thể dựa số tài nguyên sở hữu, thời gian CPU tiêu tốn, ) Trở lại trạng thái trước deadlock (Rollback): Rollback tiến trình bị lấy lại tài nguyên trở trạng thái safe, tiếp tục tiến trình từ trạng thái Hệ thống cần lưu giữ số thông tin trạng thái tiến trình thực thi Đói tài nguyên (Starvation): để tránh starvation, phải bảo đảm khơng có tiến trình ln ln bị lấy lại tài nguyên deadlock xảy CuuDuongThanCong.com 28 https://fb.com/tailieudientucntt Deadlocks Phương pháp kết hợp để giải deadlock Kết hợp phương pháp Ngăn chặn (Prevention) Tránh (Avoidance) Phát (Detection) Cho phép sử dụng cách giải tối ưu cho lớp tài nguyên hệ thống Phân chia tài nguyên thành lớp theo thứ bậc Sử dụng kỹ thuật thích hợp cho việc quản lý deadlock lớp CuuDuongThanCong.com 29 https://fb.com/tailieudientucntt Deadlocks Ôn tập Giải thuật đồ thị cấp phát tài nguyên Giải thuật banker Phát deadlock Phục hồi deadlock CuuDuongThanCong.com 30 https://fb.com/tailieudientucntt Deadlocks Bài tập Cho hệ thống có tiến trình P1 đến P4 loại tài nguyên R1 (3), R2 (2) R3 (2) P1 giữ R1 yêu cầu R2; P2 giữ R2 yêu cầu R1 R3; P3 giữ R1 yêu cầu R2; P4 giữ R3 yêu cầu R1 Vẽ đồ thị tài nguyên cho hệ thống này? Deadlock? Chuỗi an tồn? (nếu có) CuuDuongThanCong.com 31 https://fb.com/tailieudientucntt Deadlocks Bài tập Tìm Need? Hệ thống có an tồn khơng? Nếu P1 u cầu (0,4,2,0) cấp phát cho khơng? CuuDuongThanCong.com 32 https://fb.com/tailieudientucntt Deadlocks Kết thúc chương CuuDuongThanCong.com https://fb.com/tailieudientucntt ... https://fb.com/tailieudientucntt Deadlocks Sơ đồ cấp phát tài nguyên sơ đồ wait-for Resource-Allocation Graph CuuDuongThanCong.com Corresponding wait-for graph 20 https://fb.com/tailieudientucntt Deadlocks Mỗi... Giải thuật đồ thị cấp phát tài nguyên Giải thuật banker Phát deadlock Phục hồi deadlock CuuDuongThanCong.com 30 https://fb.com/tailieudientucntt Deadlocks Bài tập Cho hệ thống có tiến... xảy deadlock hệ thống • Giải thuật phát deadlock • Cơ chế phục hồi CuuDuongThanCong.com 18 https://fb.com/tailieudientucntt Deadlocks Mỗi loại tài nguyên có thực thể Sử dụng wait-for graph