Bài giảng Hệ điều hành - Chương 6: Deadlocks giúp người học hiểu rõ vấn đề bài toán deadlock và các tính chất của deadlock, hiểu được các phương pháp giải quyết 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 04/2015 Câu hỏi ôn tập chương Phân biệt semaphore với monitor? Nêu ứng dụng giải pháp? Áp dụng semaphore vào tốn reader-writer, giải thích rõ hoạt động? CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Mục tiêu chương Hiểu vấn đề tốn deadlock tính chất deadlock Hiển phương pháp giải deadlock Bảo vệ Ngăn (Deadlock prevention) Tránh (Deadlock avoidance) Kiểm tra (Deadlock detection) Phục hồi (Deadlock recovery) CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Nội dung Bài toán deadlock Mơ hình hệ thống Các tính chất deadlock Phương pháp giải deadlock CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Vấn đề deadlock Tình huống: Một tập tiến trình bị block, tiến trình giữ tài nguyên chờ tài nguyên mà tiến trình khác tập giữ Ví dụ 1: Hệ thống có file A B đĩa P1 P2 tiến trình mở file yêu cầu mở file P1 mở, nắm giữ file A yêu cầu file B; P2 mở, nắm giữ file B yêu cầu mở file A P1 muốn hồn tất phải có file A B, P2 Ví dụ 2: Bài toán triết gia ăn tối Mỗi người cầm đũa chờ lại CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Mơ hình hóa hệ thống Các loại tài nguyên, kí hiệu R1, R2,…,Rm, bao gồm: CPU cycle, không gian nhớ, thiết bị I/O, file, semaphore, Mỗi loại tài nguyên Ri có Wi thực thể Giả sử tài nguyên tái sử dụng theo chu kỳ Yêu cầu: tiến trình phải chờ yêu cầu không đáp ứng ngày Sử dụng: tiến trình sử dụng tài ngun Hồn trả: tiến trình hồn trả tài ngun Các tác vụ yêu cầu hoàn trả system call Ví dụ: Request/release device Open/close file Allocate/free memory Wait/signal CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Định nghĩa Một tiến trình gọi deadlock đợi kiện mà không xảy Thơng thường, có nhiều tiến trình bị liên quan deadlock Một tiến trình gọi trì hỗn vơ hạn định bị trì hoãn khoảng thời gian dài lặp lặp lại hệ thống đáp ứng cho tiến trình khác Ví dụ: Một tiến trình sẵn sàng để xử lý khơng nhận CPU CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Điều kiện cần để xảy deadlock Loại trừ hỗ tương (Mutual exclusion): tài nguyên giữ theo nonsharable mode Giữ chờ cấp thêm tài nguyên (Hold and wait): Một tiến trình giữ tài ngun đợi thêm tài nguyên trình khác giữ CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Điều kiện cần để xảy deadlock (tt) Không trưng dụng (No Preemption): tài nguyên bị lấy lại mà trả lại từ tiến trình giữ tài ngun muốn Chu trình đợi vòng tròn (Circular wait): tồn tập (P0,…,Pn} trình đợi cho P0 đợi tài nguyên mà P1 giữ P1 đợi tài nguyên mà P2 giữ … Pn đợi tài nguyên mà P0 giữ CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlocks Đồ thị cấp phát tài nguyên - RAG RAG: Resource-Allocation Graph Là đồ thị có hướng, với tập đỉnh V tập cạnh E Tập đỉnh V gồm loại: P = {P1, P2,…,Pn} (All process) R = {R1, R2,…,Rn} (All resource) Tập cạnh E gồm loại: Cạnh yêu cầu: Pi Rj Cạnh cấp phát: Rj Pi CuuDuongThanCong.com 10 https://fb.com/tailieudientucntt Deadlocks Các phương pháp giải deadlock Bảo đảm hệ thống khơng rơi vào tình trạng deadlock cách ngăn (Prevention) tránh (Avoidance) deadlock Khác biệt Ngăn deadlock: khơng cho phép (ít nhất) điều kiện cần cho deadlock Tránh deadlock: q trình cần cung cấp thơng tin tài nguyên cần để hệ thống cấp phát tài nguyên cách thích hợp CuuDuongThanCong.com 16 https://fb.com/tailieudientucntt Deadlocks Các phương pháp giải deadlock (tt) Cho phép hệ thống vào trạng thái deadlock, sau phát deadlock (Detection) phục hồi hệ thống (Recovery) Bỏ qua vấn đề, xem deadlock không xảy hệ thống Khá nhiều hệ điều hành sử dụng phương pháp Deadlock không phát hiện, dẫn đến việc giảm hiệu suất hệ thống Cuối cùng, hệ thống ngưng hoạt động phải khởi động lại CuuDuongThanCong.com 17 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock Ngăn deadlock cách ngăn điều kiện cần deadlock Ngăn mutual exclusion Đối với tài ngun khơng chia sẻ (ví dụ: printer): không làm Đối với tài nguyên chia sẻ (ví dụ: read-only file): khơng cần thiết CuuDuongThanCong.com 18 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock (tt) Hold and wait Cách 1: Mỗi tiến trình u cầu tồn tài nguyên cần thiết lần Nếu có đủ tài nguyên hệ thống cấp phát, khơng đủ tài nguyên tiến trình phải bị block Cách 2: Khi u cầu tài ngun, tiến trình khơng giữ tài ngun Nếu có phải trả lại trước yêu cầu CuuDuongThanCong.com 19 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock (tt) Ngăn no preemption: tiến trình A có giữ tài nguyên yêu cầu tài nguyên khác tài nguyên chưa cấp phát thì: Cách 1: Hệ thống lấy lại tài nguyên mà A giữ A bắt đầu lại có tài nguyên bị lấy lại với tài nguyên yêu cầu Cách 2: Hệ thống xem tài nguyên mà A yêu cầu Nếu tài nguyên giữ tiến trình khác đợi thêm tài nguyên, tài nguyên hệ thống lấy lại cấp phát cho A Nếu tài ngun giữ tiến trình khơng đợi tài nguyên, A phải đợi tài nguyên A bị lấy lại Tuy nhiên hệ thống lấy lại tài nguyên mà tiến trình khác yêu cầu CuuDuongThanCong.com 20 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock (tt) Ngăn Circular wait: gán thứ tự cho tất tài nguyên hệ thống Tập hợp tài nguyên: R = {R1, R2,…,Rm} Hàm ánh xạ: F: R N (Với N tập hợp số tự nhiên) Ví dụ: Có tài nguyên tape drive, disk drive printer Và hàm F ví dụ sau: F(tape drive) = F (disk drive) = F (printer) = 12 CuuDuongThanCong.com 21 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock (tt) Ngăn Circular wait (tt): Dựa vào hàm F trên, cách sau sử dụng để ngăn Circular wait: Mỗi tiến trình u cầu thực thể loại tài nguyên theo thứ tự tăng dần (định nghĩa hàm F) Cụ thể, process yêu cầu thực thể Ri Sau đó, process yêu cầu thêm thực thể Rj F(Rj) > F(Ri) (Tất nhiên, người lập trình chọn cách khác, ví dụ process sau có Ri, yêu cầu Rj F(Rj) ≤ F(Ri) CuuDuongThanCong.com 22 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock (tt) Ngăn Circular wait (tt): Chứng minh chế ngăn Circular wait phản chứng: Giả sử tồn process (P1, P2, P3, P4) với thực thể tài nguyên (R1, R2, R3, R4) tạo thành chu trình bị deadlock hình Một process Pi giữ thực thể tài nguyên Ri-1 (Với P0 P0 giữ thực thể tài nguyên R4) yêu cầu thực thể tài nguyên Ri Giả sử yêu cầu tài nguyên từ P1 tới P4 thỏa (sẽ tạo deadlock), theo quy ước chế trên, phải có: F(R4) < F(R1) F(R1) < F(R2) F(R2) < F(R3) F(R3) < F(R4) Vậy F(R4) < F(R4) mâu thuẫn CuuDuongThanCong.com 23 https://fb.com/tailieudientucntt Deadlocks Ngăn deadlock (tt) Ngăn Circular wait (tt): Lưu ý rằng: Việc tạo hàm F cấp phát theo thứ tự tự thân khơng thể ngăn deadlock, mà phụ thuộc vào cách mà người lập trình lập trình CuuDuongThanCong.com 24 https://fb.com/tailieudientucntt Deadlocks Tránh deadlock Ngăn deadlock sử dụng tài nguyên không hiệu Tránh deadlock đảm bảo hiệu suất sử dụng tài nguyên tối đa đến mức Yêu cầu tiến trình khai báo số lượng tài nguyên tối đa cần để thực công việc Giải thuật tránh deadlock kiểm tra trạng thái cấp phát tài nguyên để đảm bảo hệ thống không rơi vào deadlock Trạng thái cấp phát tài nguyên định nghĩa dựa số tài nguyên lại, số tài nguyên cấp phát yêu cầu tối đa tiến trình CuuDuongThanCong.com 25 https://fb.com/tailieudientucntt Deadlocks Trạng thái safe unsafe Một trạng thái hệ thống gọi an toàn (safe) tồn chuỗi thứ tự an tồn Một chuỗi q trình chuỗi an toàn Với i = 1, …, n yêu cầu tối đa tài nguyên Pi thỏa bởi: Tài nguyên mà hệ thống có sẵn sàng Cùng với tài nguyên mà tất Pj (j