7.4 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005 Một tập các quá trình bị nghẽn, mỗi một chiếm giữ một tài nguyên và chờ đợi tậu tài nguyê
Trang 1Chương 6: Deadlocks
Trang 27.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Trang 3MỤC TIÊU
Phát triển một mô tả deadlocks, hiện tượng ngăn cản
tập các giao dịch cạnh tranh hoàn tất nhiệm vụ củachúng
Giới thiệu một số phương pháp khác nhau để ngăn
ngừa, tránh deadlocks trong hệ thống máy tính
Giới thiệu phương pháp phát hiện và phục hồi từ
deadlocks
Trang 47.4 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Một tập các quá trình bị nghẽn, mỗi một chiếm giữ một tài
nguyên và chờ đợi tậu tài nguyên bị chiếm giữ bởi quá trìnhkhác trong tập hợp
Trang 5VÍ DỤ QUA CẦU
Lưu thông chỉ theo một chiều
Mỗi phần của cầu được xem như một tài nguyên
Nếu deadlock xảy ra nó sẽ được giải quyết nếu một xe lùilại (trưng các tài nguyên và cuộn lại)
Một vài xe có thể bị lùi lại khi deadlock xảy ra
Có thể xảy ra “sự chết đói”
Trang 67.6 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Các kiểu tài nguyên: R1, R2, , Rm
Các chu kỳ CPU, không gian bộ nhớ, các thiết bị I/O
Mỗi tài nguyên kiểu Ri có Wi thể hiện
Mỗi quá trình sử dụng một tài nguyên như sau:
z Yêu cầu tài nguyên
z Sử dụng tài nguyên
z Giải phóng tài nguyên
Trang 7ĐẶC TRƯNG DEADLOCK
Loại trừ tương hỗ (Mutual exclusion): chỉ một quá trình
sử dụng một tài nguyên tại một thời điểm
Giữ và chờ (Hold and wait): một quá trình chiếm giữ ít
nhất một tài nguyên và chờ tậu các tài nguyên bổ xung bịchiếm giữ bởi các quá trình khác
Không có trưng dụng: một tài nguyên chỉ có thể được giải
phóng bởi sự tình nguyện của quá trình chiếm giữ nó (saukhi quá trình đã hoàn thành nhiệm vụ của nó)
Chờ đợi vòng tròn: Tồn tại một tập {P0, P1, …, P0} các quá
trình chờ đợi sao cho P0 chờ một tài nguyên bị chiếm giữ
bởi P1, P1 chờ một tài nguyên bị chiếm giữ bởi P2, …, P n–1 chờ một tài nguyên bị chiếm giữ bởi Pn, và Pn chờ một tài
Điều kiện cần để deadlock xảy ra:
Trang 87.8 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
V được phân hoạch thành hai kiểu:
z P = {P1, P2, …, P n}, gồm tất cả các quá trình trong hệthống
z R = {R1, R2, …, R m}, gồm tất cả các kiểu tài nguyêntrong hệ thống
Cung yêu cầu – cung hướng từ Pi đến Rj : Pi → R j
Cung gán – hướng từ Rjđến Pi : R j → P i
Một tập các đỉnh V và một tập các cung E.
Trang 9ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN (Cont.)
Quá trình
Kiều tài nguyên với 4 thể hiện
P i yêu cầu thể hiện của R j
P i đang chiếm giữ một thể hiện của kiểu tài nguyên R j
P i
P i
R j
Trang 107.10 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Trang 11ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN VỚI DEADLOCK
Trang 127.12 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Trang 147.14 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
CÁC PHƯƠNG PHÁP QUẢN LÝ DEADLOCKS
Đảm bảo hệ thống không bao giờ rơi vào trạng thái
deadlock
Cho phép hệ thống rơi vào trạng thái deadlock sau đó phát
hiện và phục hồi
Bỏ lơ vấn đề và xem như deadlocks không bao giờ xảy ra
(được sử dụng trong hầu hết các HĐH kể cả UNIX)
Trang 15NGĂN NGỪA DEADLOCK
Loại trừ tương hỗ (Mutual Exclusion) : không được yêu
cầu đối với các tài nguyên có thể chia sẻ nhưng có hiệu lựcđối với tài nguyên có thể chia sẻ
Giữ và chờ (Hold and Wait) : Phải đảm bảo rằng mỗi khi
quá trình yêu cầu một tài nguyên nó không chiếm giữ mộttài nguyên nào
z Đòi hỏi quá trình yêu cầu và được cấp phát tất cả cáctài nguyên cần thiết trước khi bắt đầu thực hiện / chỉcho phép quá trình yêu cầu các tài nguyên khi nó khôngchiếm giữ một tài nguyên nào
z Hiệu suất sử dụng tài nguyên thấp, có thể xảy ra chếtđói
Ngăn cản một trong bốn điều kiện cần để xảy ra deadlock
Trang 167.16 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Deadlock Prevention (Cont.)
Không có trưng dụng (no preemption):
z Nếu một quá trình đang chiếm giữ một số tài nguyên yêucầu tài nguyên khác nhưng không thể được cấp phátngay, các tài nguyên bị chiếm giữ bởi quá trình bị trưngdụng
z Các tài nguyên bị trưng dụng được thêm vào danh sáchcác tài nguyên quá trình (bị trưng dụng) chờ
z Quá trình sẽ được khởi động lại chỉ khi nó có thể tậu lạicác tài nguyên cũ cũng như các tài nguyên mới yêu cầu
Chờ đợi vòng tròn (Circular Wait) – áp đặt một thứ tự toàn
phần trên các kiểu tài nguyên và đòi hỏi mỗi quá trình yêu cầutài nguyên theo thứ tự tăng
Trang 17TRÁNH Deadlock
Mô hình đơn giản nhất và hữu dụng nhất là đòi hỏi mỗi quátrình phải khai báo số lượng tối đa các tài nguyên cần thiếtcủa mỗi kiểu
Thuật toán tránh deadlock kiểm tra trạng thái cấp phát tàinguyên và đảm bảo rằng không xảy ra chờ đợi vòng tròn
Trạng thái cấp phát tài nguyên được định nghĩa bởi số tàinguyên sẵn có, số tài nguyên đã được cấp phát và các đòihỏi tối đa của các quá trình
Đòi hỏi hệ thống phải có thông tin tiên quyết
Trang 187.18 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
TRẠNG THÁI AN TOÀN
Khi một quá trình yêu cầu một tài nguyên sẵn có, hệ thống phảixác định nếu cấp phát ngay, hệ thống vẫn trong trạng thái an toàn
Hệ thống trong trạng thái an toàn nếu tồn tại một dãy <P 1 , P 2 , …,
P n> của TẤT CẢ các quá trình trong hệ thống sao cho đối vớimỗi Pi, tất cả các tài nguyên mà Pi cần được thỏa mãn bởi các
tài nguyên nó hiện có + các tài nguyên bị chiếm giữ bởi các P j,
Trang 19 Tránh ⇒ đảm bảo hệ thống không bao giờ rơi vào trạng
thái không an toàn
Trang 207.20 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
TRẠNG THÁI AN TOÀN, KHÔNG AN TOÀN &
Deadlock
Trang 21THUẬT TOÁN TRÁNH DEADLOCK
Mỗi kiểu tài nguyên có đúng một thể hiện Sử dụng đồ thị
cấp phát tài nguyên
Mỗi kiểu tài nguyên có một vài thể hiện Sử dụng thuật toán
banker
Trang 227.22 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Cung Claim (Claim edge) P i → R j chỉ ra rằng P j có thể yêu
cầu tài nguyên R j ; được biểu diễn bởi đường đứt quãng
Cung Claim được chuyển thành cung Request khi quá trình
yêu cầu tài nguyên
Cung Request được chuyển thành cung Assignment khi tài
nguyên được cấp cho quá trình
Khi tài nguyên được giải phóng, cung Assignment được
chuyển thành cung Claim
Các tài nguyên phải được khai báo trước
Trang 23ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN
Trang 247.24 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
TRẠNG THÁI KHÔNG AN TOÀN TRONG ĐỒ THỊ
CẤP PHÁT TÀI NGUYÊN
Trang 25THUẬT TOÁN ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN
Giả sử quá trình P i yêu cầu một tài nguyên R j
Yêu cầu có thể được cấp chỉ nếu việc chuyển cung
Request thành cung Assignment không gây ra chutrình trong đồ thị cấp phát tài nguyên
Trang 267.26 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
THUẬT TOÁN Banker
Đa thể hiện
Mỗi quá trình phải khai báo số tố đa các thể hiện của mỗi
kiểu tài nguyên cần thiết
Khi quá trình yêu cầu một tài nguyên, có thể nó phải chờ
Khi quá trình nhận được tất cả các tài nguyên cần thiết nó
phải trả lại chúng sau một khoảng thời gian hữu hạn
Trang 27CẤU TRÚC DỮ LIỆU CHO THUẬT TOÁN
Banker’s
Available : Vector độ dài m available [j] = k, có nghĩa là có
sẵn k thể hiện của kiểu tài nguyên R j
Max : ma trận n x m Max [i,j] = k, có nghĩa là quá trình P i
có thể yêu cầu nhiều nhất k thể hiện của kiểu tài nguyên R j
Allocation : ma trận n x m Allocation[i,j] = k có nghĩa là P i
hiện được cấp phát k thể hiện của R j.
Need : ma trận n x m Need[i,j] = k có nghĩa là P i có thể cần
thêm k thể hiện nữa của R j
Need [i,j] = Max[i,j] – Allocation [i,j].
n = số quá trình, m = số các kiểu tài nguyên
Trang 287.28 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
THUẬT TOÁN AN TOÀN
1. Work và Finish là các vectors độ dài m và n, tương ứng
Khởi động:
Work = Available Finish [i] = false for i = 0, 1, …, n- 1.
2 Tìm i sao cho hai điều kiện sau thỏa mãn:
(a) Finish [i] = false (b) Need i ≤ Work
Nếu không tìm thấy, go to 4
3 Work = Work + Allocation i
Finish[i] = true
go to 2
4 Nếu Finish [i] == true với mọi i, hệ thông trong trạng thái an toàn.
Trang 29THUẬT TOÁN YÊU CẦU TÀI NGUYÊN ĐỐI VỚI
QUÁ TRÌNH Pi
Request = vector Request đối với quá trình P i Nếu Request i [j]
= k có nghĩa P i muốn k thể hiện của kiểu tài nguyên R j.
1 Nếu Request i ≤ Need i go to 2 Nếu không thông báo lỗi
“tiêu thụ tài nguyên vượt quá khai báo”
2 Nếu Request i ≤ Available, go to 3 Nếu không P i phải chờ, (tài nguyên không có sẵn)
3 Giả định cấp phát các tài nguyên được yêu cầu cho P i bằngcách sủa đổi trạng thái như sau:
Available = Available – Request;
Allocation i = Allocation i + Request i;
Need i = Need i – Request i ;
z Nếu trạng thái mới là an toàn ⇒ Cấp phát tài nguyên cho Pi
z Nếu trạng thái mới không an toàn ⇒ Pi phải chờ, trạng
Trang 307.30 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
5 quá trình P0, P1, P2, P3, và P4
3 Kiểu tài nguyên:
A (10 thể hiện), B (5 thể hiện), và C (7 thể hiện).
Tức cảnh tại thời điểm T0:
Trang 31 Thuật toán an toàn cho ra dãy an toàn < P1, P3, P4, P2, P0>, như vậy
hệ thống trong trạng thái an toàn
Trang 327.32 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Kiểm tra Request1 ≤ Need1 ((1,0,2) ≤ (1, 2, 2) ⇒ true )
Kiểm tra Request1 ≤ Available ( (1,0,2) ≤ (3,3,2) ⇒ true ).
Giả định cấp phát theo yêu cầu của P0
Chạy thuật toán an toàn, tìm được dãy an toàn < P1, P3, P4, P0, P2>;
như vậy có thể cấp theo yêu cầu của P0
Yêu cầu (3,3,0) bởi P4 được cấp?
Yêu cầu (0,2,0) bời P0 được cấp?
Trang 33PHÁT HIỆN DEADLOCKS
Cho phép hệ thống rơi vào trạng thái deadlock
Thuật toán phát hiện deadlock
Sơ đồ phục hồi
Trang 347.34 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
MỖI KIỂU TÀI NGUYÊN CHỈ CÓ MỘT THỂ HIỆN
Thuật toán phát hiện chu trình trong một đồ thị có độ phức
tạp thời gian O(n2) , n = số đỉnh của đồ thị.
Trang 35ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN & ĐỒ THỊ CHỜ
Đồ thị cấp phát tài nguyên Đồ thị chờ tương ứng
Trang 367.36 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
MỖI KIỂU TÀI NGUYÊN CÓ MỘT VÀI THỂ HIỆN
Available : vector độ dài m, available[j]=k : kiểu tài nguyên Rj
còn k thể hiện
Allocation : ma trận n x m, Allocation[i, j] = k : quá trình i
được cấp k thể hiện của kiểu tài nguyên j
Request : ma trận n x m, Request [i, j] = k : P i yêu cầu thêm
k thể hiện của kiểu tài nguyên R j
Trang 37THUẬT TOÁN PHÁT HIỆN
Initialize:
(a) Work = Available
Finish[i] = false; otherwise, Finish[i] = true.
2 Tìm một chỉ số i sao cho:
(a) Finish[i] == false
Nếu không tìm thấy, go to 4
Finish[i] = true
go to 2.
Trang 387.38 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
VD THUẬT TOÁN PHÁT HIỆN
5 quá trình : P0, P1, P2, P3 và P4;
3 kiểu tài nguyên
A (7 thể hiện), B (2 thể hiện), và C (6 thể hiện).
Tức cảnh tại thời điểm T0:
Chạy thuật toán ta được dãy an toàn <P0, P2, P3, P1, P4> ;
finish[i] == true với mọi i; hệ thống không trong trạng thái deadlock
Trang 407.40 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts - 7 th Edition, Feb 14, 2005
Cuộn lại tất cả các quá trình bị deadlock
Lần luợt cuộn lại từng quá trình bị deadlock đến tận khi chu trình
deadlock bị loại bỏ
Chọn quá trình “nạn nhân”?
z Độ ưu tiên của quá trình
z Quá trình đã chạy được bao lâu, còn bao lâu nữa nó sẽ hoàntất
z Lượng tài nguyên quá trình chiếm giữ
z Lượng tài nguyên quá trình cần thêm
z Bao nhiêu quá trình bị cuộn lại
z Quá trình ở dạng trao đổi hay bó?
Trang 41PHỤC HỒI TỪ DEADLOCK
Tối thiểu hóa “giá”
Chết đói : một quá trình luôn bị chọn là “nạn nhân”
Trang 42End of Chapter 6