ch ương 7: deadlock (khoá chết)
Post on 31-Dec-2015
75 Views
Preview:
DESCRIPTION
TRANSCRIPT
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007
Chương 7: Deadlock (khoá chết)
Nguyễn Đôn Quang TríNguyễn Thanh Tuấn
7.2 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Chương 7: Deadlock
Các vấn đề về Deadlock Mô hình hệ thống Mô tả Deadlock Phương pháp để xử lý Deadlock Phòng chống Deadlock Tránh Deadlock Phát hiện Deadlock Phục hồi từ Deadlock
7.3 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Mục đích của chương
Để mô tả deadlocks, nhằm ngăn chặn hoàn toàn các tiến trình xảy ra từ việc hoàn thành công việc của chúng.
Để giới thiệu một số các phương pháp khác nhau hoặc tránh deadlock trong một hệ thống máy tính.
7.4 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Các vấn đề Deadlock
Là một tập các tiến trình mỗi tiến trình nắm giữ một tài nguyên và việc chờ để thu được một tài nguyên khác được nắm giữ bởi một tiến trình khác trong tập.
Ví dụ Hệ thống có 2 đĩa cứng. Tiến trình P1 và P2 mỗi tiến trình nắm giữ một đĩa và
mỗi nhu cầu của một số khác. Ví dụ
Tín hiệu cờ A và B, khởi tạo ban đầu là 1
P0 P1
chờ (A); chờ (B)
chờ (B); chờ (A)
7.5 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ qua cầu
Sự giao thông 1 chiều. Tất cả các phần của một cầu có thể được
xem như là một nguồn tài nguyên. Nếu deadlock xảy ra, nó có thể được giải
quyết nếu một chiếc xe hơi lùi lại (ưu tiên cho các nguồn tài nguyên và phục hồi).
Một số chiếc xe có thể bị tắc nghẽn nếu deadlock xảy ra.
7.6 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Mô hình hệ thống
Nguồn tài nguyên loại R1, R2, . . ., Rm
Chu kỳ CPU , không gian nhớ, thiết bị vào/ra
Mỗi loại tài nguyên Ri lại có Wi trường.
Mỗi tiến trình lại sử dụng lại sử dụng một nguồn tài nguyên như sau: Yêu cầu Sử dụng Thoát
7.7 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Mô tả Deadlock
Loại trừ lẫn nhau: chỉ một tiến trình hiện thời có thể sử dụng một nguồn tài nguyên.
Giữ và chờ đợi: Một tiến trình nắm giữ ít nhất một nguồn tài nguyên là việc chờ đợi để thu được bổ sung nguồn tài nguyên được nắm giữ bởi các tiến trình khác.
Không có sự ưu tiên: Một nguồn tài nguyên có thể được giả phóng chỉ tự ý bởi tiến trình nắm giữ nó, sau đó tiến trình đó đã hoàn thành tác vụ của nó.
Chu trình chờ đợi: một tập hợp các tiến trình {P0, P1, …, P0} đang chờ mà trong đó P0 đang chờ một nguồn tài nguyên được nắm giữ bởi P1, P1 đang chờ tài nguyên được giữ bởi P2, …, Pn–1 đang chờ tài nguyên đang được giữ bởi quá trình Pn, and P0 đang chờ tài nguyên đang được giữ bởi quá trình P0.
Deadlock có thể xảy ra nếu 4 trạng thái giữ xảy ra cùng một lúc.
7.8 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Đồ thị cấp phát tài nguyên
Một tập các đỉnh V được chia làm hai loại nút: P = {P1, P2, …, Pn}, là tập hợp các quá trình
hoạt động trong hệ thống. R = {R1, R2, …, Rm}, là tập hợp chứa tất cả
các loại tài nguyên trong hệ thống. Cạnh yêu cầu – hướng cạnh từ Pi Rj
Cạnh gán - hướng cạnh từ Rj Pi
Đồ thị này chứa một tập các đỉnh V và tập hợp các cạnh E
7.9 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Đồ thị cấp phát tài nguyên (Tiếp.)
Tiến trình
Loại tài nguyên với 4 thể hiện
Pi yêu cầu thể hiện của Rj
Pi đang giữ một đối tượng của Rj
Pi
Pi
Rj
Rj
7.10 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Một ví dụ về đồ thị cấp phát tài nguyên
7.11 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Đồ thị cấp phát tài nguyên với một deadlock
7.12 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Đồ thị cấp phát tài nguyên có chu trình nhưng không có deadlock
7.13 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tóm lại
Nếu đồ thị cấp phát tài nguyên không có chu trình không có deadlock.
Nếu đồ thị cấp phát tài nguyên có chu trình Mỗi loại tài nguyên có đúng một thể
hiện, thì có deadlock. Nếu một loại tài ngugyên có nhiều thể
hiện thì có thể có deadlock.
7.14 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ Java về Deadlock
Luồng A Luồng B
7.15 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ về Java Deadlock
Deadlock có thể có nếu:
Luồng A -> khoá Y -> Luồng B -> khoá X -> Luồng A
7.16 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Xử lý Deadlocks trong Java
7.17 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Xử lý Deadlocks trong Java
7.18 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Các phương pháp xử lý Deadlocks
Đảm bảo rằng hệ thống sẽ không bao giờ rơi vào tình trạng deadlock.
Có thể cho phép hệ thống đi vào deadlock, phát hiện nó và phục hồi.
Có thể bỏ qua vấn đề này và giả vờ 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.
7.19 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ngăn chặn deadlock
Loại trừ hỗ tương – không cần thiết để chia sẻ tài nguyên; một số tài nguyên về thực chất không thể chia sẻ.
Giữ và chờ cấp thêm tài nguyên – phải đảm bảo rằng khi một tiến trình yêu cầu cấp thêm tài nguyên, nó không nắm giữ nguồn tài nguyên nào khác. Một giao thức có thể được dùng là đòi hỏi mỗi quá trình
yêu cầu và được cấp phát tất cả tài nguyên trước khi nó bắt đầu thực thi, hoặc một giao thức khác cho phép một quá trình yêu cầu tài nguyên chỉ khi quá trình này không có tài nguyên nào..
Tái sử dụng nguồn tài nguyên thấp cạn kiệt; có thể bị mất đi.
Ngăn chặn deadlock có thể được thực hiện bởi các cách sau.
7.20 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ngăn chặn deadlock (Tiếp.)
Không đòi lại tài nguyên từ quá trình đang giữ chúng – Nếu một quá trình đang giữ một số tài nguyên và yêu
cầu tài nguyên khác mà không được cấp phát tức thì tới nó (nghĩa là, quá trình phải chờ) thì tất cả tài nguyên hiện đang giữ được đòi lại.
Những tài nguyên bị đòi lại được thêm tới danh sách các tài nguyên mà quá trình đang chờ.
Tiến trình sẽ được khởi động lại chỉ khi nó có thể nhận lại tài nguyên cũ của nó cũng như các tài nguyên mới mà nó đang yêu cầu.
Chu trình chờ đợi – áp đặt toàn bộ thứ tự của tất cả loại tài nguyên và đòi hỏi mỗi quá trình trong thứ tự tăng của số lượng.
7.21 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tránh deadlock
Đơn giản và hữu ích nhất yêu cầu mỗi quá trình khai báo số lớn nhất tài nguyên của mỗi loại mà nó cần.
Xây dựng một giải thuật đảm bảo hệ thống sẽ không bao giờ đi vào trạng thái deadlock.
Trạng thái cấp phát tài nguyên được định nghĩa bởi số tài nguyên sẳn dùng và tài nguyên được cấp phát và số yêu cầu tối đa của các quá trình.
Yêu cầu hệ thống thông tin bổ sung về cách tài nguyên được yêu cầu.
7.22 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Trạng thái an toàn Khi một tiến trình yêu cầu một nguồn tài nguyên sẵn có,hệ
thống phải quyết định lập tức nếu nguồn tài nguyên được cấp rời khỏi hệ thống trong một 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 thứ tự <P1, P2, …, Pn> cho tất cả các tiến trình, đối với mỗi thứ tự Pi, các tài nguyên mà Pi yêu cầu vẫn có thể được thoả mãn bởi tài nguyên hiện có cộng với các tài nguyên được giữ bởi tất cả Pj, với j<i.
Trong trường hợp này: Nếu những tài nguyên mà quá trình Pi yêu cầu không
sẳn dùng tức thì thì Pi có thể chờ cho đến khi tất cả Pj hoàn thành.
Khi chúng hoàn thành, Pi có thể đạt được tất cả những tài nguyên nó cần, hoàn thành các tác vụ được gán, trả về những tài nguyên được cấp phát cho nó và kết thúc.
Khi Pi kết thúc, Pi+1 có thể đạt được các tài nguyên nó cần
7.23 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tóm lại
Nếu một hệ thống ở trong trạng thái an toàn Không có các deadlock.
Nếu một hệ thống ở trong trạng thái không an toàn có thể xảy ra deadlock.
Tránh deadlock chắc chắn rằng hệ thống sẽ không bao giờ đi vào trạng thái không an toàn.
7.24 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
An toàn, Không an toàn, trạng thái deadlock
7.25 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Giải thuật tránh deadlock
Với một thể hiện của mỗi loại nguồn tài nguyên. Sử dụng một đồ thị cấp phát tài nguyên.
Với nhiều thể hiện của mỗi loại tài nguyên.Sử dụng giải thuật của Banker.
7.26 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ý tưởng đồ thị cấp phát tài nguyên
Một cạnh thỉnh cầu Pi Rj hiển thị quá trình Pi có thể yêu cầu tài nguyên Rj; được thực hiện bởi một dấu đứt khoảng.
Khi một tiến trình yêu cầu một nguồn tài nguyên cạnh thỉnh cầu chuyển tới cạnh yêu cầu .
Cạnh yêu cầu chuyển tới một cạnh gán khi nguồn tài nguyên cấp được cấp phát cho tiến trình.
Khi một nguồn tài nguyên được giải phóng bởi một tiến trình, cạnh gán chuyển trở lại thành cạnh thỉnh cầu.
Các tài nguyên phải được yêu cầu trước trong hệ thống.
7.27 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Đồ thị cấp phát tài nguyên
7.28 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Trạng thái không an toàn trong đồ thị cấp phát tài nguyên
7.29 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Giải thuật của đồ thị cấp phát tài nguyên
Giả sử rằng Pi yêu cầu tài nguyên Rj.
Yêu cầu có thể được gán chỉ nếu chuyển cạnh yêu cầu tới cạnh gán không dẫn đến việc hình thành chu trình trong đồ thị cấp phát tài nguyên.
7.30 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Giải thuật Banker
Nhiều thể hiện của mỗi loại tài nguyên.
Mỗi tiến trình phải khai báo số tối đa các thể hiện của mỗi loại tài nguyên mà nó cần.
Khi một tiến trình yêu cầu một nguồn tài nguyên nó có thể phải chờ đợi.
Khi một tiến trình nhận được tất cả các nguồn tài nguyên của nó, nó phải trả lại chúng trong một khoảng thời gian có hạn.
7.31 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Cấu trúc dữ liệu cho giải thuật Banker
Available: một vector có chiều dài m hiển thị số lượng tài nguyên sẳn dùng của mỗi loại. Nếu Available[j]= k, có k thể hiện của loại tài nguyên Rj sẳn dùng.
Max: một ma trận n x m định nghĩa số lượng tối đa yêu cầu của mỗi quá trình. Nếu Max[i, j] = k, thì quá trình Pi có thể yêu cầu nhiều nhất k thể hiện của loại tài nguyên Rj.
Allocation: một ma trận n x m định nghĩa số lượng tài nguyên của mỗi loại hiện được cấp tới mỗi quá trình. Nếu Allocation[i, j] = k, thì quá trình Pi hiện được cấp k thể hiện của loại tài nguyên Rj.
Need: một ma trận n x m hiển thị yêu cầu tài nguyên còn lại của mỗi quá trình. Nếu Need[i, j] = k, thì quá trình Pi có thể cần thêm k thể hiện của loại tài nguyên Rj để hoàn thành tác vụ của nó. Chú ý rằng,
Need [i,j] = Max[i,j] – Allocation [i,j].
Gọi n là số quá trình trong hệ thống và m là số loại tài nguyên trong hệ thống.
7.32 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Giải thuật an toàn
1. Gọi Work và Finish là các vector có chiều dài m và n tương ứng. Khởi tạo:
Work = AvailableFinish [i] = false cho i = 0, 1, …, n- 1.
2. Tìm i thoả: (a) Finish [i] = false
(b) Needi WorkNếu không có i nào thỏa, di chuyển tới bước 4.
3. Work = Work + Allocationi
Finish[i] = truechuyển ttới bước 2.
4. If Finish [i] == true cho tất cả i, thì hệ thống ở trong trạng thái an toàn.
7.33 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Giải thuật yêu cầu tài nguyên cho tiến trình Pi
Cho Request là vector yêu cầu cho quá trình Pi. Nếu Requesti [j] = k thì tiến trình Pi muốn k thể hiện của loại tài nguyên instances of resource type Rj..
1. Nếu Requesti Needi 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 Requesti Available, chuyển tới bước 3. Ngược lại Pi phải chờ, vì tài nguyên không sẵn có.
3. Giả sử hệ thống cấp phát các tài nguyên được yêu cầu tới tiến trình Pi bằng cách thay đổi trạng thái sau:
Available = Available – Request;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti; Nếu an toàn tài nguyên được cấp phát cho Pi. Nếu không an toàn Pi phải chờ, và trạng thái cấp phát tài
nguyên cũ được phục hồi.
7.34 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ cho thuật giải Banker
5 tiến trình P0 đến P4;
3 loại tài nguyên:
A (10 thể hiện), B (5 thể hiện), and C (7 thể hiện). Trạng thái hệ thống ở thời điểm T0:
Allocation Max Available
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
7.35 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ (Tiếp.)
Nội dung ma trận Need được định nghĩa là Max-Allocation và là:
Need
A B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
Hệ thống hiện ở trong trạng thái an toàn thứ tự thoả tiêu chuẩn < P1, P3, P4, P2, P0>.
7.36 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ: P1 Yêu cầu (1,0,2)
Kiểm tra Request Available (nghĩa là, (1,0,2) (3,3,2) true.
Allocation Need Available
A B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 1 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 của chúng ta và tìm thứ tự< P1, P3, P4, P0, P2> thỏa yêu cầu an toàn.
Một yêu cầu (3,3,0) bởi P4 có thể được gán không?
Một yêu cầu (0,2,0) bởi P0 có thể được gán không?
7.37 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Phát hiện Deadlock
Cho phép hệ thống rơi vào tình trạng deadlock. Giải thuật để phát hiện deadlock. Ý tưởng phục hồi.
7.38 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Một thể hiện của mỗi loại tài nguyên
Đồ thị chờ wait-for Các nút là các tiến trình. Pi Pj nếu Pi đang chờ cho Pj.
Deadlock tồn tại trong hệ thống nếu và chỉ nếu đồ thị chờ chứa chu trình. Để phát hiện deadlock, hệ thống cần duy trì đồ thị chờ và định kỳ gọi giải thuật để tìm kiếm chu trình trong đồ thị.
Một giải thuật phát hiện chu trình trong đồ thị yêu cầu độ phức tạp n2 thao tác, ở đây n là số cạnh của đồ thị.
7.39 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Đồ thị cấp phát tài nguyên và đồ thị chờ.
Đồ thị cấp phát tài nguyên Đồ thị chờ tương ứng
7.40 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Nhiều thể hiện của một loại tài nguyên
Available: một vector độ dài m hiển thị số lượng sẵn có của mỗi loại.
Allocation: Một ma trận n x m định nghĩa số lượng tài nguyên của mỗi loại hiện được cấp phát tới mỗi tiến trình.
Request: Một ma trận n x m hiển thị yêu cầu hiện tại của mỗi tiến trình. Nếu Request [ij] = k, thì tiến trình Pi đang yêu cầu k nữa của loại tài nguyên Rj.
7.41 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Giải thuật phát hiên Deadlock
1. Gọi Work và Finish là 2 vector có chiều dài m and n tương ứng, khởi tạo:
(a) Work = Available
(b)Cho i = 1,2, …, n, nếu Allocationi 0, thì Finish[i] = false; ngược lại, Finish[i] = true.
2. Tìm chỉ số i thoả:
(a)Finish[i] == false
(b)Requesti Work
Nếu không có i nào thoả, chuyển tới bước 4.
7.42 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Thuật giải tránh Deadlock (Tiếp.)
3. Work = Work + Allocationi
Finish[i] = trueChuyển tới bước 2.
4. Nếu Finish[i] == false, cho một vài i, 1 i n, thì hệ thống đang ở tình trạng deadlock. Ngoài ra, nếu Finish[i] == false, thì tiến trình Pi bị deadlock.
Giải thuật này yêu cầu độ phức tạp O(m x n2) để phát hiện hệ thống có ở trong tình trạng deadlock hay không.
7.43 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ cho giải thuật tránh Deadlock
5 tiến trình P0 đến P4; 3 loại tài nguyên A (7 thể hiện), B (2 thể hiện), and C (6 thể hiện).
Ở thời điểm T0 trạng thái cấp phát tài nguyên như sau:
Allocation Request Available
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
Thứ tự <P0, P2, P3, P1, P4> sẽ dẫn đến Finish[i] = true cho tất cả i.
7.44 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ví dụ (Tiếp.)
P2 yêu cầu thêm thể hiện của loại C.
Request
A B C
P0 0 0 0
P1 2 0 1
P2 0 0 1
P3 1 0 0
P4 0 0 2 Trạng thái của hệ thống?
Có thể đòi lại tài nguyên được giữ bởi tiến trình P0, but insufficient resources to fulfill other processes; requests.
Deadlock tồn tại, bao gồm các tiến trình P1, P2, P3, and P4.
7.45 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Sử dụng giải thuật phát hiện Deadlock
Khi nào thì chúng ta nên nạp giải thuật phát hiện deadlock? Câu trả lời phụ thuộc vào hai yếu tố:
Deadlock có khả năng xảy ra thường xuyên như thế nào? Bao nhiêu quá trình sẽ bị ảnh hưởng bởi
deadlock khi nó sẽ ra? Phân chia cho mỗi chu kỳ.
Nếu giải thuật phát hiện deadlock được nạp trong những thời điểm bất kỳ, thì có nhiều chu trình trong đồ thị tài nguyên. Chúng ta không thể nói quá trình nào của nhiều quá trình bị deadlock “gây ra” deadlock.
7.46 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Phục hồi Deadlock: Kết thúc tiến trình
Huỷ bỏ tất cả các tiến trình bị deadlock. Hủy bỏ một tiến trình tại thời điểm cho đến khi chu trình
deadlock bị xóa. Chúng ta nên chọn tiến trình nào để huỷ bỏ?
Độ ưu tiên của quá trình. Tiến trình đã được tính toán bao lâu và bao lâu nữa quá
trình sẽ tính toán trước khi hoàn thành tác vụ được chỉ định của nó.
Bao nhiêu và loại tài nguyên gì tiến trình đang sử dụng. Bao nhiêu tài nguyên nữa tiến trình cần để hoàn thành. Bao nhiêu tiến trình sẽ cần được kết thúc. Tiến trình là giao tiếp hay dạng bó?
7.47 Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Phục hồi Deadlock: Lấy lại tài nguyên
Chọn nạn nhân – tối thiểu chi phí. Trở lại trạng thái trước Rollback – phục hồi tiến trình
tới trạng thái an toàn, khởi động lại từ trạng thái gần nhất trước đó.
Đói tài nguyên – cùng tiến trình luôn được chọn như là nạn nhân, bao gồm số lượng phục hồi trong yếu tố chi phí.
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007
Kết thúc chương 7
top related