Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 56 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
56
Dung lượng
604,41 KB
Nội dung
Deadlock Mô hình hóa hệ thống Đồ thị cấp phát tài nguyên Phương pháp giải deadlock Ngăn deadlock Tránh deadlock Phát deadlock Phục hồi khỏi deadlock CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com From A.Gottlieb https://fb.com/tailieudientucntt Vấn đề deadlock hệ thống Một tập process deadlock(ed) process tập giữ tài nguyên chờ tài nguyên mà process khác tập giữ Ví dụ ● Giả sử hệ thống có printer DVD drive Quá trình P1 giữ DVD drive, trình P2 giữ printer Bây P1 yêu cầu printer phải đợi, P2 yêu cầu DVD drive phải đợi CuuDuongThanCong.com https://fb.com/tailieudientucntt Mô hình hóa hệ thống Hệ thống gồm loại tài nguyên, kí hiệu R1, R2,…, Rm ● Tài nguyên: CPU cycle, không gian nhớ, thiết bị I/O, file,… • Mỗi loại tài nguyên Ri có Wi thực thể (instance) Process sử dụng tài nguyên theo bước ● Yêu cầu (request): process phải chờ yêu cầu không đáp ứng ● Sử dụng (use): process sử dụng tài nguyên ● Hoàn trả (release): process hoàn trả tài nguyên CuuDuongThanCong.com https://fb.com/tailieudientucntt Các tác vụ yêu cầu hoàn trả gọi qua system call Ví dụ ● request/release device ● open/close file ● allocate/free memory CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlock: Điều kiện cần (1/2) Bốn điều kiện cần (necessary condition) để xảy deadlock Mutual exclusion: tài nguyên cấp phát cho nhiều trình (tức không chia sẻ được) Hold and wait: trình giữ tài nguyên phép yêu cầu thêm tài nguyên khác Nhận xét: “mutual exclusion” “mutual exclusion” chương đồng hai khái niệm khác CuuDuongThanCong.com https://fb.com/tailieudientucntt Deadlock: Điều kiện cần (2/2) No preemption: (= no resource preemption) không lấy lại tài nguyên cấp phát cho trình, ngoại trừ trình tự hoàn trả Circular wait: tồn tập {P1,…,Pn} trình đợi cho P1 đợi tài nguyên mà P2 giữ P2 đợi tài nguyên mà P3 giữ … Pn đợi tài nguyên mà P1 giữ Để ý: Nếu tài nguyên gồm nhiều instance “tài nguyên” đề cập instance tài nguyên CuuDuongThanCong.com https://fb.com/tailieudientucntt Bốn điều kiện cần cho deadlock: nhận xét Liên quan đến sách cấp phát tài nguyên hệ thống Đặc điểm tónh hệ thống tài nguyên ● Luôn sai, không thay đổi theo thời gian CuuDuongThanCong.com https://fb.com/tailieudientucntt Resource Allocation Graph (1/2) Resource allocation graph (RAG) đồ 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 } (Tất process hệ thống) R = {R1, R2,…, Rm } (Tất loại tài nguyên hệ thống) ● Tập cạnh E gồm loại: Request edge: cạnh có hướng từ Pi đến Rj Assignment edge: cạnh có hướng từ Rj đến Pi CuuDuongThanCong.com https://fb.com/tailieudientucntt Resource Allocation Graph (2/2) Ký hiệu Process: Pi Rj Loại tài nguyên với thực thể: Pi yêu cầu thực thể Rj : Pi giữ thực thể Rj : CuuDuongThanCong.com Rj Pi Rj Pi https://fb.com/tailieudientucntt 10 Giải thuật cấp phát tài nguyên (4/4) (chép laïi) Allocation Need Available A B C A B C A B C P0 3 P1 2 P2 0 P3 1 1 P4 0 CuuDuongThanCong.com P4 yêu cầu (3, 3, 0) P0 yêu cầu (0, 2, 0) theo giải thuật cấp phát tài nguyên có thỏa mãn hay không? https://fb.com/tailieudientucntt 42 Phát deadlock Chấp nhận xảy deadlock hệ thống, kiểm tra trạng thái hệ thống giải thuật phát deadlock Nếu có deadlock tiến hành phục hồi hệ thống Các giải thuật phát deadlock thường sử dụng RAG Giải thuật phát deadlock thiết kế cho trường hợp Mỗi loại tài nguyên có thực thể Mỗi loại tài nguyên có nhiều thực thể CuuDuongThanCong.com https://fb.com/tailieudientucntt 43 Mỗi loại tài nguyên có thực thể Sử dụng wait-for graph ● Wait-for graph dẫn xuất từ RAG cách bỏ node biểu diễn tài nguyên ghép cạnh tương ứng: Có cạnh từ Pi đến Pj Pi chờ tài nguyên từ Pj P5 P5 R1 R3 R4 P1 P2 P3 R2 P4 R5 P1 P2 P3 P4 ● Gọi định kỳ giải thuật kiểm tra có tồn chu trình waitfor graph hay không Giải thuật phát chu trình (depth first search) có thời gian chạy O(n 2), với n số đỉnh graph CuuDuongThanCong.com https://fb.com/tailieudientucntt 44 Mỗi loại tài nguyên có nhiều thực thể • Phương pháp dùng wait-for graph không áp dụng cho trường hợp loại tài nguyên có nhiều instance Giả thiết: sau đáp ứng yêu cầu tài nguyên, process hoàn tất trả lại tất tài nguyên giải thuật optimistic! Giải thuật phát deadlock trường hợp loại tài nguyên có nhiều instance: cấu trúc liệu Available: vector độ dài m • số instance sẵn sàng loại tài nguyên • Allocation: ma trận n m • số instance loại tài nguyên cấp phát cho process • Request: ma trận n m • yêu cầu process • Request [i, j ] = k Pi yêu cầu thêm k instance Rj CuuDuongThanCong.com https://fb.com/tailieudientucntt 45 Giải thuật phát deadlock (1/4) Các biến Work Finish vector kích thước m n Khởi tạo: Work Available i = 1, 2,…, n, Allocation i Finish[ i ] false không Finish[ i ] true Tìm trình i thỏa mãn: trình không giữ tài nguyên nên không deadlock Finish[ i ] = false Request i • Work Nếu không tồn i thế, đến bước Work Work + Allocation i Finish[ i ] true quay bước Nếu trình i cấp phát theo yêu cầu (Bước 2) giả sử i xong, i trả lại tất tài nguyên Nếu tồn i với Finish[ i ] = false, hệ thống trạng thái deadlock Hơn nữa, Finish[ i ] = false Pi bị deadlocked CuuDuongThanCong.com https://fb.com/tailieudientucntt 46 Giải thuật phát deadlock (2/4) Nhận xét: ● Giải thuật phát deadlock không quan tâm đến tính chất an toàn / không an toàn ● Khi giải thuật phát deadlock không thấy hệ thống deadlock, chưa tương lai hệ thống không deadlock Vd: Hệ thống không an toàn, trình (đều giữ tài nguyên) yêu cầu tối đa CuuDuongThanCong.com https://fb.com/tailieudientucntt 47 Giải thuật phát deadlock (3/4) • Hệ thống có trình P0 ,…, P4 loại tài nguyên: A, gồm instance; B, instance; C, instance 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 Chạy giải thuật, tìm chuỗi P0, P2, P3, P1, P4 với Finish[ i ] = true cho i, hệ thống không bị deadlocked CuuDuongThanCong.com https://fb.com/tailieudientucntt 48 Giải thuật phát deadlock (4/4) Nhưng thêm vào P2 yêu cầu instance C, nghóa có ma trận Request: Request A B C P0 0 P1 2 P2 0 P3 0 P4 0 ● Hệ thống có bị deadlocked? Có thể thu hồi tài nguyên giữ process P0 không đủ đáp ứng yêu cầu process khác • Vậy tồn deadlock, gây process P1 , P2 , P3 , P4 CuuDuongThanCong.com https://fb.com/tailieudientucntt 49 Phục hồi khỏi deadlock Các giải pháp phát deadlock ● báo người vận hành (operator), người xử lý tiếp ● hệ thống tự động phục hồi cách phá deadlock: Giải pháp chấm dứt trình Giải pháp lấy lại tài nguyên Giải pháp Rollback CuuDuongThanCong.com https://fb.com/tailieudientucntt 50 Phục hồi khỏi deadlock: Chấm dứt trình (1) Chấm dứt tất process bị deadlocked, Chấm dứt process bị deadlocked, lấy lại tài nguyên để cấp phát cho process deadlocked, không deadlock ● Sau lần, sử dụng giải thuật phát deadlock để xác định deadlock hay không ● Dựa yếu tố để chọn process cần chấm dứt? Độ ưu tiên process Loại tài nguyên mà process sử dụng Tài nguyên mà process cần thêm để hoàn tất công việc – Thời gian thực thi process thời gian lại Process interactive process hay batch process CuuDuongThanCong.com https://fb.com/tailieudientucntt 51 Phục hồi khỏi deadlock: Chấm dứt trình (2) Ngoài ra, chấm dứt process không deadlocked giữ tài nguyên mà process deadlocked cần CuuDuongThanCong.com https://fb.com/tailieudientucntt 52 Phục hồi khỏi deadlock: Chấm dứt trình (3) Vấn đề: Chạy lại trình bị chấm dứt đưa đến kết không mong đợi ● Ví dụ trình cập nhật sở liệu Quá trình cộng thêm vào record sở liệu bị chấm dứt Khi chạy trình lần thứ hai, trình lần cộng thêm vào record kết sai! CuuDuongThanCong.com https://fb.com/tailieudientucntt 53 Phục hồi khỏi deadlock: Lấy lại tài nguyên (resource preemption) Các bước ● Tạm dừng trình P cần lấy lại tài nguyên, lấy lại tài nguyên từ P, cấp phát chúng cho trình deadlocked ● Khi tài nguyên trả lại, cấp phát chúng lại cho P, tiếp tục P Giải pháp thường khó thực ● Ví dụ: (giả sử hệ thống không sử dụng spooling cho printer) Quá trình in laser printer Tạm dừng trình, lấy tờ giấy in riêng Cấp phát laser printer cho trình khác Khi trình khác in xong, cho trình cũ tiếp tục CuuDuongThanCong.com https://fb.com/tailieudientucntt 54 Phục hồi khỏi deadlock: Rollback Hệ thống phải “checkpoint” thường xuyên trình ● Checkpoint trình nghóa ghi trạng thái trình thời điểm (vd ghi vào file) để sau tiếp tục trình từ trạng thái Xử lý deadlock: vòng lặp ● Xác định trình P giữ tài nguyên mà trình Q deadlocked cần ● Rollback trình P thời điểm mà chưa có tài nguyên ● Cấp phát tài nguyên cho trình Q ● Tiếp tục P ● Thoát vòng lặp không phát deadlock CuuDuongThanCong.com https://fb.com/tailieudientucntt 55 Bài tập • Hệ thống có q trình P0 ,…, P4 Các thông tin tài nguyên hệ thống bảng đây: Allocation P0 P1 P2 P3 P4 • • • Max Available A B C D A B C D A B C D 1 0 0 4 0 6 5 5 6 Tìm ma trận Need Kiểm tra hệ thống có trạng thái an tồn khơng? Nếu P1 u cầu thêm số lượng tài nguyên A,B,C,D tương ứng 56 (0,4,2,0) P1 có cấp phát khơng? CuuDuongThanCong.com https://fb.com/tailieudientucntt ... CuuDuongThanCong.com https://fb.com/tailieudientucntt 43 Mỗi loại tài nguyên có thực thể Sử dụng wait-for graph ● Wait-for graph dẫn xuất từ RAG cách bỏ node biểu diễn tài nguyên ghép cạnh tương ứng: Có... nguyên tối đa cần • Giải thuật tránh deadlock điều khiển trạng thái cấp phát tài nguyên (resource-allocation state) cho 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... Ngăn Mutual Exclusion ● nonsharable resource (vd: printer): không làm ● sharable resource (vd: read-only file tác vụ cho phép lên file đọc): không cần thiết CuuDuongThanCong.com https://fb.com/tailieudientucntt