Tải bản đầy đủ (.ppt) (41 trang)

Deadlock Operating System Concepts

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (806.25 KB, 41 trang )

Operating System Concepts
NỘ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
Hình ảnh tắc nghẽn trong đời sống thường ngày
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.
Ví dụ 1:
Tài nguyên
R2
Tài nguyên
R1
Tiến trình
P
2
Tiến trình
P
1
Yêu cầu
Yêu cầu
Giữ
Giữ
Chờ đợi vòng tròn
Xảy ra deadlock


Ví 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:
P1 P2
…. ….
Yêu cầu lần thứ 1 100Kb 120Kb
… …
Yêu cầu lần thứ 2 50Kb 60Kb
… …
Xảy ra deadlock
Lưu ý:

Số lượng tài nguyên trong một hệ thống là hữu hạn.
Chúng được phân bổ giữa nhiều tiến trình khác nhau
và cạnh tranh nhau.

Thứ tự sử dụng tài nguyên của 1 tiến trình là: Yêu cầu
– Sử dụng – Giải phóng

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ờ.
II. Đ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ờ {P
0
, P
1
, , P
n
} mà khi
đó P
0
đang chờ 1 tài nguyên được giữ bởi P
1
, P
1
đang chờ tài
nguyên được giữ bởi P
2
, , P
n
đang chờ tài nguyên được giữ
bởi P
0
.
ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN:
Đồ thị có hướng G(V,E) gồm:
V = {P
1
,P
2
,P

3
} U {R
1
,R
2
,R
3
,R
4
}
E = { (P
1
,R
1
), (R
1
,P
2
), (P
2
,R
3
),
(R
3
,P
3
), (R
2
,P

1
), (R
2
,P
2
) }
Tồn tại 2 chu trình:
Chu trình 1: P
1
R
1
P
2
R
3
P
3
R
2
P
1
Chu trình 2: P
2
R
3
P
3
R
2
P

2
ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN:
Tồn tại chu trình nhưng không xảy ra Deadlock
ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN:
III. 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.
III.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.
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:
P1 P2
…. ….

Yêu cầu lần thứ 1 100Kb 120Kb
… …
Yêu cầu lần thứ 2 50Kb 60Kb
… …
Hệ điều hành sẽ cấp thêm bộ nhớ ảo
để cả 2 tiến trình cùng thực hiện.
2. 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
Ví dụ:
Xem xét quá trình:
Ổ đĩa DVD Tập tin Máy in
Phương pháp 1:
1.Yêu cầu ổ đĩa DVD, tập tin, máy
in.
2.Giải phóng
Phương pháp 2:
1.Yêu cầu ổ đĩa DVD, tập tin
2.Giải phóng DVD, tập tin
3.Yêu cầu tập tin, máy in
4.Giải phóng tập tin, máy in
Nhượ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 .
3. Không đòi lại được tài nguyên từ tiến trình đang
giữ nó
R2
R1
P
2
P
1
Nếu P
1
ở trạng
thái chờ:
- R
1
sẽ bị thu hồi,
cấp phát cho P
2
- P
1
sẽ hoạt động
trở lại, sau khi
được cung cấp
đầy đủ R
1
,R
2
III.1.1.NGĂN CHẶN DEADLOCK
4. 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.
III.1.2.TRÁNH DEADLOCK
1.Trạng thái an toàn:
Trạng thái an toàn thỏa mãn 2
điều kiện:
-
Sự phân bổ giữa các tiến
trình và tài nguyên có thứ tự.
- Không xuất hiện Deadlock.
Ví 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ó
3 ổ băng từ còn rảnh).
Nhu cầu tối đa Nhu cầu hiện tại
P
0
10 5
P
1
4 2
P
2
9 2
Thứ 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
sẽ có 10 ổ băng từ sẳn dùng).
-
P
2
có thể nhận tất cả ổ băng từ của nó và trả lại chúng (sau đó hệ
thống sẽ có tất cả 12 ổ băng từ sẳn dùng).
Nhu cầu tối đa Nhu cầu hiện tại
P
0
10 5
P
1
4 2
P
2
9 2
2. Giải thuật cấp phát tài nguyên:
Đồ thị cấp phát tài nguyên để
tránh Deadlock.
Trạng thái không an toàn trong
đồ thị cấp phát tài nguyên.
III.1.2.TRÁNH DEADLOCK
Cá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) P
i
đượ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.
Cá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 ].

1) 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.
2) Tìm i thỏa:
a) Finish[i] = false
b) Need
i
≤ Work.
Nếu không có i nào thỏa, di chuyển tới bước 4
3) Work:=Work + Allocation
i
Finish[i] := true
Di chuyển về bước 2.
4) Nếu Finish[i] = true cho tất cả i, thì hệ thống đang ở trạng thái
an toàn.
3.1 Giải thuật an toàn

×