I.KHÁI NIỆM: Deadlock bắt nguồn từ sự xung đột về tài nguyên của 2 hoặc nhiều tiến trình đang hoạt động đồng thời trên hệ thống... •Tuy nhiên, với những tài nguyên thuộc loại không ch
Trang 1Operating System Concepts
Trang 2NỘI DUNG CHÍNH:
I.Khái niệm
II Các điều kiện hình thành Deadlock III Xử lý Deadlock
III.1 Ngăn chặn và tránh Deadlock
III.2 Phát hiện và phục hồi Deadlock
III.3 Bỏ qua Deadlock
Trang 3Hình ảnh tắc nghẽn trong đời sống thường ngày
Trang 4I.KHÁI NIỆM:
Deadlock bắt nguồn từ sự xung đột về tài nguyên của
2 hoặc nhiều tiến trình đang hoạt động đồng thời trên
hệ thống
Trang 6Ví dụ 2:
Giả sử không gian bộ nhớ còn trống là 300Kb, và trong hệ thống có hai tiến trình P1 và P2 hoạt động đồng thời P1 và P2 yêu cầu được sử dụng bộ nhớ như sau:
Trang 7• Số tài nguyên được yêu cầu không được vượt quá
tổng số tài nguyên sẵn có trong hệ thống Nếu yêu cầu không được đáp ứng tức thì thì tiến trình đó sẽ đi vào trạng thái chờ
Trang 8II ĐIỀU KIỆN HÌNH THÀNH DEADLOCK:
1 Độc quyền sử dụng: Tồn tại ít nhất 1 tài nguyên không thể chia sẻ và được giữ bởi duy nhất 1 tiến trình.
3 Không đòi lại tài nguyên từ tiến trình đang giữ nó: Không
một tiến trình nào có thể tự giải phóng tài nguyên mà nó đang chiếm giữ
4 Tồn tại chu trình trong đồ thị cấp phát tài nguyên: Một tập
các tiến trình đang ở trong trạng thái chờ {P0, P1, , Pn} mà khi
đó P0 đang chờ 1 tài nguyên được giữ bởi P1, P1 đang chờ tài
nguyên được giữ bởi P2, , Pn đang chờ tài nguyên được giữ
bởi P0
Trang 9ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN:
Đồ thị có hướng G(V,E) gồm:
V = {P1,P2,P3} U {R1,R2,R3,R4}
E = { (P1,R1), (R1,P2), (P2,R3), (R3,P3), (R2,P1), (R2,P2) }
Trang 10Tồn tại 2 chu trình:
Chu trình 1: P1R1P2R3P3R2P1Chu trình 2: P2R3P3R2P2
ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN:
Trang 11Tồn tại chu trình nhưng không xảy ra Deadlock
ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN:
Trang 12III XỬ LÝ DEADLOCK
1. Sử dụng một giao thức để ngăn chặn hoặc tránh
deadlocks, bảo đảm rằng hệ thống sẽ không bao giờ
đi vào trạng thái deadlock.
2. Cho phép hệ thống đi vào trạng thái deadlock, phát
hiện nó, và phục hồi
3. Bỏ qua vấn đề này và giả thiết rằng deadlock không
bao giờ xảy ra trong hệ thống Giải pháp này được dùng trong nhiều hệ điều hành kể cả UNIX.
Trang 13III.1.1.NGĂN CHẶN DEADLOCK
Đảm bảo rằng ít nhất một trong bốn điều kiện dẫn
đến deadlock không cùng tồn tại:
1 Độc quyền sử dụng:
•Điều kiện này gần như không tránh khỏi
•Tuy nhiên, với những tài nguyên thuộc loại không chia sẻ được thì hệ điều hành có thể sử dụng kỹ thuật SPOOL để tạo ra nhiều tài nguyên ảo cung cấp cho các tiến trình đồng thời
Trang 14Giả sử không gian bộ nhớ còn trống là 300Kb, và trong hệ thống có hai tiến trình P1 và P2 hoạt động đồng thời P1 và P2 yêu cầu
được sử dụng bộ nhớ như sau:
Trang 152 Giữ và chờ cấp thêm tài nguyên:
Phương pháp 1: Yêu cầu tất cả tài nguyên trước khi thực thi công việc.
Phương pháp 2: Yêu cầu cấp phát tài nguyên trước khi thực hiện, và giải phóng nó trước khi yêu cầu tài nguyên mới.
III.1.1.NGĂN CHẶN DEADLOCK
Trang 16Nhược điểm:
1 Lãng phí tài nguyên, thời gian.
2 Một tiến trình cần sử dụng nhiều tài nguyên thường được sử dụng có
thể phải chờ vô hạn định, vì một trong những tài nguyên mà nó cần lại
có thể được giao cho một số tiến trình khác
Trang 173 Không đòi lại được tài nguyên từ tiến trình đang giữ nó
- R1 sẽ bị thu hồi, cấp phát cho P2
- P1 sẽ hoạt động trở lại, sau khi được cung cấp đầy đủ R1,R2
III.1.1.NGĂN CHẶN DEADLOCK
Trang 184 Tồn tại chu trình trong đồ thị cấp phát tài nguyên:
III.1.1.NGĂN CHẶN DEADLOCK
Điều kiện này có thể ngăn chặn bằng cách phân lớp tài nguyên của hệ thống Theo đó, nếu một tiến trình được cấp phát tài nguyên ở lớp L, thì sau đó nó chỉ có thể yêu cầu các tài nguyên ở lớp thấp hơn lớp L
Trang 20Ví dụ:
Xét một hệ thống với 12 ổ băng từ và 3 quá trình: P 0 , P 1 ,
P 2 Quá trình P 0 yêu cầu 10 ổ băng từ, quá trình P 1 có thể cần 4 và quá trình P 2 có thể cần tới 9 ổ băng từ Giả sử rằng tại thời điểm t 0 , quá trình P 0 giữ 5 ổ băng từ, quá trình P 1 giữ 2 và quá trình P 2 giữ 2 ổ băng từ (Do đó, có
Trang 21Thứ tự <P 1 , P 0 , P 2 > thoả điều kiện an toàn.
- P 1 có thể được cấp phát tức thì tất cả các ổ đĩa từ và sau đó trả lại chúng (sau đó hệ thống có 5 ổ băng từ sẳn dùng).
- P 0 có thể nhận tất cả ổ băng từ và trả lại chúng (sau đó hệ thống
Trang 222 Giải thuật cấp phát tài nguyên:
Trang 23Các bước thực hiện:
+ Xác định thứ tự <P 0 , P 1 , …, P n > thỏa tiêu chuẩn an toàn.
3 Giải thuật Banker:
+ Sử dụng giải thuật yêu cầu tài nguyên để quyết định tài
nguyên (loại TN, số lượng) Pi được cấp phát
+ Sử dụng giải thuật an toàn để xác định trạng thái này có
an toàn không Và đi đến quyết định cấp phát tài nguyên cho tiến trình đang xét
Trang 24Các CTDL được sử dụng trong thuật toán Banker:
Available: một vector có chiều dài m; Available[j]= k, có
k thể hiện của loại tài nguyên R j sẳn dùng.
Max: một ma trận n x m; Max[ i , j ] = k, P i có thể yêu cầu nhiều nhất k thể hiện của loại tài nguyên R j
Allocation: một ma trận n x m; Allocation[ i, j ] = k, P i
hiện được cấp k thể hiện của loại tài nguyên R j
Need: một ma trận n x m; Need[ i, j ] = k, P i có thể cần thêm k thể hiện của R j
Need[ i, j ] = Max[ i,j ] – Allocation [ i, j ].
Trang 251) Work, Finish: các vector có chiều dài m và n tương ứng Khởi tạo Work:=Available và Finish[i]:=false cho i = 1, 2, …,n.
Trang 26Request i : vector yêu cầu cho P i Nếu Request i [j] = k, P i
muốn k thể hiện của Rj
1) Nếu Request i ≤ Need i , di chuyển tới bước 2 Ngược lại, phát sinh một điều kiện lỗi vì quá trình vượt quá yêu cầu tối đa của nó.
2) Nếu Request i ≤ Available, di chuyển tới bước 3 Ngược lại, P i phải chờ vì tài nguyên không sẳn có.
3.2 Giải thuật yêu cầu tài nguyên
Trang 273) Giả sử hệ thống cấp phát các tài nguyên được yêu cầu tới quá trình P i bằng cách thay đổi trạng thái sau: Available := Available – Request i ;
Allocation i := Allocation i + Request i ;
Need i := Need i – Request i ;
Nếu kết quả trạng thái cấp phát tài nguyên là an toàn, thì giao dịch được hoàn thành và quá trình P i được cấp phát tài nguyên của nó Tuy nhiên, nếu trạng thái mới là không an toàn, thì P i phải chờ Request i và
trạng thái cấp phát tài nguyên cũ được phục hồi.
3.2 Giải thuật yêu cầu tài nguyên
Trang 28Xét một hệ thống với 5 quá trình từ P 0 tới P 4 , và 3 loại tài nguyên A, B, C Tài nguyên A có 10 thể hiện, tài nguyên B có 5 thể hiện và tài nguyên C có 7 thể hiện Giả sử rằng tại thời điểm T 0 trạng thái hiện tại của hệ thống như sau:
A B C A B C A B C P0 0 1 0 7 5 3 3 3 2 P1 2 0 0 3 2 2
P2 3 0 2 9 0 2 P3 2 1 1 2 2 2 P4 0 0 2 4 3 3
3.3 Thí dụ minh họa
Trang 29Need = Max - Allocation
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3
Trang 30Chúng ta khẳng định rằng hệ thống hiện ở trong trạng thái an toàn
Thứ tự <P1, P3, P4, P2, P0> thỏa tiêu chuẩn an toàn
P1 3 0 2 0 2 0
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1
- Thực thi giải thuật an toàn để xác định trạng thái mới có an toàn hay không và tìm
thứ tự <P1, P3, P4,P0, P2> thỏa yêu cầu an toàn Chúng ta có thể cấp phát tài nguyên
theo yêu cầu của tiến trình P1.
Trang 31III.2.1.PHÁT HIỆN DEADLOCK
Nếu một hệ điều hành không sử dùng giải thuật ngăn chặn hay phòng chống deadlock thì hiện tượng này có thể xảy ra.
Trong môi trường này thì hệ điều hành phải chuẩn bị:
Giải thuật kiểm tra tình trạng của hệ thống để xác định có deadlock hay không.
Một giải thuật để phục hồi deadlock.
Trang 32III.2.1.PHÁT HIỆN DEADLOCK
1 Loại tài nguyên có 1 thể hiện:
Sử dụng đồ thị chờ
Trang 33III.2.1.PHÁT HIỆN DEADLOCK
1 Loại tài nguyên có nhiều thể hiện:
Sử dụng thuật toán tương tự như Banker
1 Gọi Word và Finish là các vector có chiều dài m và n tương
Trang 34III.2.1.PHÁT HIỆN DEADLOCK
1 Loại tài nguyên có nhiều thể hiện:
Sử dụng thuật toán tương tự như Banker
Finish[i] = true
Quay trở lại bước 2
4.If Finish[i] == false, cho một vài i, 1 ≤ i ≤ n, thì hệ thống đang
ở trong trạng thái deadlock.
thống có ở trong trạng thái deadlock hay ko ?
Trang 35III.2.1.PHÁT HIỆN DEADLOCK
1 Loại tài nguyên có nhiều thể hiện:
Ví dụ:
A B C A B C A B C P0 0 1 0 0 0 0 0 0 0 P1 2 0 0 2 0 2
P2 3 0 3 0 0 0 P3 2 1 1 1 0 0 P4 0 0 2 0 0 2
-> Trạng thái này là an toàn
Trang 36III.2.1.PHÁT HIỆN DEADLOCK
1 Loại tài nguyên có nhiều thể hiện:
Request
A B C P0 0 0 0
Trạng thái mới này không an toàn
Trang 37III.2.2.PHỤC HỒI DEADLOCK
Khi deadlock xảy ra có 2 cách để giải quyết:
- Thông báo cho người điều hành biết,sau đó khắc phục bằng tay
Trang 38III.2.2.PHỤC HỒI DEADLOCK
Hủy bỏ một tiến trình ở thời điểm hiện tại cho đến
khi chu trình deadlock bị xóa ( hủy bỏ một phần )
Trang 39III.2.2.PHỤC HỒI DEADLOCK
Các yếu tố xác định tiến trình nào bị hủy:
1 Mức độ ưu tiên của tiến trình
2 Tiến trình đã thực hiện được bao lâu và còn bao lâu nữa thì hoàn thành?
3 Tiến trình đang sử dụng bao nhiêu loại tài nguyên?
4 Tiến trình cần bao nhiêu tài nguyên nữa để hoàn
thành?
5 Bao nhiêu tiến trình sẽ cần được kết thúc
6.Tiến trình độc lập hay liên quan đến các tiến trình khác.
Trang 40III.2.2.PHỤC HỒI DEADLOCK
2 Đòi lại tài nguyên:
Bước 1: Đòi lại một phần tài nguyên từ các tiến trình
Bước 2: Đưa các tài nguyên này đến các tiến trình khác cho đến khi chu
trình deadlocks bị phá bỏ.
Ba vấn đề cần được xác định khi dùng phương pháp này:
1 Chọn nạn nhân: Những tài nguyên và tiến trình nào bị đòi lại ? Việc
chọn nạn nhân này chủ yếu dựa trên yếu tố chi phí.
2 Quay trở lại: Chúng ta phải quay tiến trình tới một số mức an toàn và
khởi động lại nó từ mức đó.
3 Sự đói tài nguyên: Không cho một tiến trình bị đòi tài nguyên nhiều
lần.