Bài giảng lập trình hệ điều hành chương 6 deadlock

45 500 1
Bài giảng lập trình hệ điều hành   chương 6  deadlock

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An Deadlock gì? Các phương pháp xử lý Deadlock o Ngăn chặn Deadlock o Tránh Deadlock o Phát phục hồi từ Deadlock 9/27/2013 Chương 6: Deadlock • Hệ thống máy tính bao gồm tập hợp nguồn tài nguyên • Các kiểu tài nguyên R1, R2, , Rm o Ví dụ: CPU cycles, memory space, I/O devices • Mỗi tài nguyên Ri có Wi thể • Tiến trình sử dụng tài nguyên theo bước sau: o Yêu cầu (request) o Sử dụng (use) o Giải phóng (release) 9/27/2013 Chương 6: Deadlock • Một tập hợp tiến trình bị nghẽn, tiến trình giữ tài nguyên chờ để xin tài nguyên khác, mà tài nguyên lại bị giữ tiến trình khác tập hợp • Ví dụ o Hệ thống có ổ chứa băng từ o P1 P2, tiến trình giữ ổ cần ổ • Ví dụ: mô sử dụng semaphore o Các semaphores A B, khởi tạo P0 wait (A); wait (B); 9/27/2013 P1 wait(B) wait(A) Chương 6: Deadlock 9/27/2013 Chương 6: Deadlock Deadlock phát sinh điều kiện sau thỏa lúc: • Loại trừ hỗ tương: tiến trình sử dụng tài nguyên thời điểm • Giữ chờ: Một tiến trình giữ tài nguyên chờ để đạt tài nguyên khác bị giữ tiến trình khác • Không trưng dụng: tài nguyên giải phóng cách tự nguyện tiến trình giữ nó, sau tiến trình hoàn thành • Chờ đợi vòng tròn: tồn tập hợp {P0, P1, …, Pn} tiến trình chờ đợi sau: P0 đợi tài nguyên mà P1 giữ, P1 đợi tài nguyên mà P2 giữ, …, Pn–1 đợi tài nguyên mà Pn giữ Pn lại chờ đợi tài nguyên mà P0 giữ 9/27/2013 Chương 6: Deadlock • Bao gồm tập hợp đỉnh V tập hợp cạnh E • V chia làm dạng: o P = {P1, P2, …, Pn}, tập hợp tiến trình tồn hệ thống o R = {R1, R2, …, Rm}, tập hợp tài nguyên tồn hệ thống • E chia làm dạng: o Cạnh yêu cầu: cạnh có hướng Pi →Rj o Cạnh cấp phát: cạnh có hướng Rj →Pi 9/27/2013 Chương 6: Deadlock • Tiến trình: • Tài nguyên với thể hiện: • Pi yêu cầu thể Rj: Pi Rj • Pi giữ thể Rj: Pi Rj 9/27/2013 Chương 6: Deadlock 9/27/2013 10 Chương 6: Deadlock • Nội dung ma trận Need = Max – Allocation Need ABC P0 P1 2 P2 0 P3 1 P4 • Hệ thống trạng thái an toàn dãy < P1, P3, P4, P2, P0> thõa mãn tiêu chí an toàn 9/27/2013 31 Chương 6: Deadlock • Kiểm tra Request1 ≤ Available (nghĩa là, (1,0,2) ≤ (3,3,2)) ⇒ true P0 P1 P2 P3 P4 Allocation ABC 010 302 302 211 002 Need ABC 743 020 600 011 431 Available ABC 230 • Sự thực giải thuật an toàn cho thấy dãy thõa mãn yêu cầu an toàn  yêu cầu P1 đáp ứng • Yêu cầu (3,3,0) P4 cấp không? • Yêu cầu (0,2,0) P0 cấp không? 9/27/2013 32 Chương 6: Deadlock • Cho phép hệ thống bước vào trạng thái deadlock • Giải thuật phát • Sơ đồ phục hồi 9/27/2013 34 Chương 6: Deadlock • Dùng biến đổi đồ thị cấp phát tài nguyên, gọi đồ thị chờ (wait-for) • Đồ thị chờ: o Các nút tiến trình o Pi →Pj Pi đợi Pj • Định giải thuật tìm kiếm chu trình đồ thị • Deadlock tồn hệ thống đồ thị wait-for chứa chu trình • Một giải thuật phát chu trình đồ thị yêu cầu theo thứ tự n2 thao tác, với n số cạnh đồ thị 9/27/2013 35 Chương 6: Deadlock Đồ thị cấp phát tài nguyên 9/27/2013 Đồ thị wait-for tương ứng 36 Chương 6: Deadlock • Available: vector có chiều dài m số lượng thể sẵn dùng loại tài nguyên • Allocation: ma trận n x m định nghĩa số lượng thể loại tài nguyên cấp phát cho tiến trình • Request: ma trận n x m lượng yêu cầu tiến trình Nếu Request [i,j] = k, tiến trình Pi yêu cầu thêm k thể tài nguyên loại Rj 9/27/2013 37 Chương 6: Deadlock Đặt Work Finish vectors có chiều dài tương ứng m n, khởi tạo: a Work = Available b For i = 0,1,2, …, n-1 if Allocation[i] ≠0 then Finish[i] = false; else Finish[i] = true; Tìm số i để hai điều kiện sau thỏa: a Finish[i] == false b Request[i] ≤Work Nếu không tồn i, nhảy đến bước Work = Work + Allocation[i] Finish[i] = true Nhảy đến bước If Finish[i] == false cho vài i, ≤ i ≤ n, then hệ thống trạng thái deadlock Ngoài ra, if Finish[i] == false, then Pi bị deadlock Giải thuật yêu cầu O(m x n2) thao tác để xác định hệ thống có trạng thái deadlock hay không 9/27/2013 38 Chương 6: Deadlock • Năm tiến trình P0 đến P4; có kiểu tài nguyên A (7 thể hiện), B (2 thể hiện), C (6 thể hiện) • Hiện trạng thời điểm T0: P0 P1 P2 P3 P4 Allocation ABC 010 200 303 211 002 Request ABC 000 202 000 100 002 Available ABC 000 • Dãy dẫn đến Finish[i] = true với i Hệ thống không trạng thái deadlock 9/27/2013 39 Chương 6: Deadlock • P2 yêu cầu thêm thể tài nguyên loại C P0 P1 P2 P3 P4 Request ABC 000 201 001 100 002 • Trạng thái hệ thống? o P0 không yêu cầu thêm tài nguyên nào, hệ thống không đủ tài nguyên để thỏa nhu cầu tiến trình khác o Deadlock xảy ra, bao gồm tiến trình P1, P2, P3, P4 9/27/2013 40 Chương 6: Deadlock • Sử dụng giải thuật thường xuyên phụ thuộc vào: o Việc deadlock xảy thường xuyên nào? o Bao nhiêu tiến trình bị ảnh hưởng deadlock, cần phải quay lại (rollback) xuất hiện? • Cần tiến trình để mở chu trình (cycle) • Nếu giải thuật phát deadlock gọi ít, có nhiều chu trình xuất đồ thị Khi đó, khó biết tiến trình số tiến trình bị deadlock gây deadlock 9/27/2013 41 Chương 6: Deadlock • Khi phát deadlock, số cách dùng để phục hồi từ deadlock: o Phục hồi tay: cho phép thao tác viên phục hồi tay o Phục hồi tự động: hai tùy chọn dùng để xóa deadlock: • Hủy tiến trình: Ngưng nhiều tiến trình để xóa chu trình sinh deadlock • Trưng dụng: nhiều tài nguyên từ nhiều tiến trình bị deadlock 9/27/2013 42 Chương 6: Deadlock • Hai phương pháp: o Hủy bỏ tất tiến trình bị deadlock • Chi phí lớn: tiến trình tính toán thời gian dài  việc tính toán lại nhiều thời gian o Hủy bỏ lần tiến trình đến chu trình deadlock bị loại trừ • Chi phí phải xem xét, sau buớc phải chạy lại giải thuật phát deadlock • Thế nên hủy bỏ tiến trình theo thứ tự nào? o o o o o o 9/27/2013 Độ ưu tiên tiến trình Tiến trình diễn lâu chưa tiếp diễn Số tài nguyên mà tiến trình sử dụng Số tài nguyên mà tiến trình cần để hoàn thành Có tiến trình cần phải kết thúc Tiến trình tương tác hay không (batch process) 43 Chương 6: Deadlock • Chọn nạn nhân: o Chọn tài nguyên tiến trình bị trưng dụng o Cần xác định thứ tự trưng dụng để tối thiểu hóa chi phí • Quay lại (rollback): o Đưa tiến trình quay lai trạng thái an toàn o Khởi động lại tiến trình từ trạng thái o Đòi hỏi hệ thống phải lưu lại thông tin trạng thái an toàn tất tiến trình chạy • Đói tài nguyên (starvation): o Tránh tình trạng tiến trình liên tục bị chọn nạn nhân 9/27/2013 44 Chương 6: Deadlock [...]...9/27/2013 11 Chương 6: Deadlock 9/27/2013 12 Chương 6: Deadlock • Nếu đồ thị không có chu trình (cycle)  không có deadlock • Nếu đồ thị có một chu trình: o Nếu một tài nguyên chỉ có một thể hiện thì deadlock xảy ra o Nếu một tài nguyên có vài thể hiện, có khả năng deadlock xảy ra 9/27/2013 13 Chương 6: Deadlock • Đảm bảo rằng hệ thống sẽ không bao giờ bước vào trạng thái deadlock bằng các biện... deadlock bằng các biện pháp ngăn chặn hay tránh deadlock • Cho phép hệ thống bước vào trạng thái deadlock và sau đó phục hồi lại • Bỏ qua vấn đề này và xem như hệ thống sẽ không bao giờ xảy ra deadlock o Biện pháp này được sử dụng trong hầu hết các hệ điều hành, bao gồm cả UNIX 9/27/2013 15 Chương 6: Deadlock Thắt chặt lại các cách thức yêu cầu tài nguyên của tiến trình • Loại trừ hỗ tương: không yêu cầu... 9/27/2013 32 Chương 6: Deadlock • Cho phép hệ thống bước vào trạng thái deadlock • Giải thuật phát hiện • Sơ đồ phục hồi 9/27/2013 34 Chương 6: Deadlock • Dùng một biến đổi của đồ thị cấp phát tài nguyên, gọi là đồ thị chờ (wait-for) • Đồ thị chờ: o Các nút là các tiến trình o Pi →Pj nếu Pi đang đợi Pj • Định kỳ thực hiện giải thuật tìm kiếm chu trình trong đồ thị • Deadlock tồn tại trong hệ thống nếu... không tạo ra chu trình trong đồ thị cấp phát tài nguyên o Việc kiểm tra trạng thái an toàn được thực hiện bằng giải thuật phát hiện chu trình (cycle-detection algorithm) 9/27/2013 24 Chương 6: Deadlock Yêu cầu tài nguyên của P2 đối với R2 sẽ không được cấp phát, mặc dù R2 đang sẵn dùng, bởi vì có thể tạo ra chu trình, dẫn tới deadlock 9/27/2013 25 Chương 6: Deadlock • Được áp dụng trong hệ thống có nhiều... Pj hoàn thành o Khi Pj hoàn thành, Pi có thể lấy các tài nguyên cần thiết, thực thi tiếp, trả lại số tài nguyên đã chiếm và kết thúc o Khi Pi kết thúc, Pi+1 có thể lấy các tài nguyên mà nó cần, … 9/27/2013 21 Chương 6: Deadlock • Nếu hệ thống ở trong trạng thái an toàn  không có deadlock • Nếu hệ thống ở trong trạng thái không an toàn  có thể có deadlock • Tránh deadlock  đảm bảo rằng hệ thống sẽ... 9/27/2013 29 Chương 6: Deadlock • 5 tiến trình từ P0 đến P4; 3 loại tài nguyên A (10 thể hiện), B (5 thể hiện), và C (7 thể hiện) • Hiện trạng tại thời điểm T0 Allocation Max Available ABC ABC ABC P0 0 1 0 753 332 P1 2 0 0 322 P2 3 0 2 902 P3 2 1 1 222 P4 0 0 2 433 9/27/2013 30 Chương 6: Deadlock • Nội dung của ma trận Need = Max – Allocation Need ABC P0 7 4 3 P1 1 2 2 P2 6 0 0 P3 0 1 1 P4 4 3 1 • Hệ thống... trong đồ thị • Deadlock tồn tại trong hệ thống nếu và chỉ nếu đồ thị wait-for chứa một chu trình • Một giải thuật phát hiện chu trình trong đồ thị yêu cầu theo thứ tự n2 thao tác, với n là số cạnh trong đồ thị 9/27/2013 35 Chương 6: Deadlock Đồ thị cấp phát tài nguyên 9/27/2013 Đồ thị wait-for tương ứng 36 Chương 6: Deadlock ... cho mỗi dạng tài nguyên • Mỗi tiến trình phải khai báo số lượng tối đa các thể hiện của mỗi dạng tài nguyên mà nó cần • Khi một tiến trình yêu cầu một tài nguyên, nó có thể phải chờ đợi • Khi một tiến trình có được tất cả tài nguyên mà nó cần, nó phải trả lại hết các tài nguyên trong một khoảng thời gian hữu hạn 9/27/2013 26 Chương 6: Deadlock Đặt n = số lượng tiến trình, m = số các loại tài nguyên... toàn 9/27/2013 22 Chương 6: Deadlock 1 Mỗi loại tài nguyên có một thể hiện: o Sử dụng giải thuật đồ thị cấp phát tài nguyên (Resource-AllocationGraph Algorithm) 2 Mỗi loại tài nguyên có hơn một thể hiện: o Sử dụng giải thuật Banker 9/27/2013 23 Chương 6: Deadlock • Được áp dụng trong hệ thống chỉ có một thể hiện cho mỗi dạng tài nguyên • Cạnh "dự định yêu cầu" Pi → Rj chỉ ra rằng tiến trình Pj có thể... tiến trình phải yêu cầu các tài nguyên theo thứ tự tăng 9/27/2013 18 Chương 6: Deadlock Yêu cầu thông tin bổ sung về cách thức tài nguyên được yêu cầu • Mô hình đơn giản và hữu ích nhất là yêu cầu mỗi tiến trình khai báo số lượng tối đa của mỗi dạng tài nguyên mà nó cần o Với những thông tin được biết trước, ta có thể xây dựng các giải thuật để bảo đảm rằng hệ thống sẽ không đi vào trạng thái deadlock ... có nhiều chu trình xuất đồ thị Khi đó, khó biết tiến trình số tiến trình bị deadlock gây deadlock 9/27/2013 41 Chương 6: Deadlock • Khi phát deadlock, số cách dùng để phục hồi từ deadlock: o Phục... dùng để xóa deadlock: • Hủy tiến trình: Ngưng nhiều tiến trình để xóa chu trình sinh deadlock • Trưng dụng: nhiều tài nguyên từ nhiều tiến trình bị deadlock 9/27/2013 42 Chương 6: Deadlock • Hai... 9/27/2013 Chương 6: Deadlock • Tiến trình: • Tài nguyên với thể hiện: • Pi yêu cầu thể Rj: Pi Rj • Pi giữ thể Rj: Pi Rj 9/27/2013 Chương 6: Deadlock 9/27/2013 10 Chương 6: Deadlock 9/27/2013 11 Chương

Ngày đăng: 14/04/2016, 15:21

Tài liệu cùng người dùng

Tài liệu liên quan