You are on page 1of 85

CHƯƠNG 2: DEADLOCK

Tắt nghẽn

Operating System Concepts – 10h Edition Silberschatz, Galvin and Gagne ©2018

NỘI DUNG
I. Khái niệm deadlock
II. Điều kiện xảy ra deadlock
III.Các phương pháp phòng tránh deadlock
1. Ngăn chặn deadlock
2. Phòng tránh deadlock
3. Phát hiện deadlock
4. Phục hồi deadlock

Operating System Concepts – 10th Edition 1.2 Silberschatz, Galvin and Gagne ©2018

I. KHÁI NIỆM DEADLOCK ➢Hệ thống gồm nhiều tiến


trình hoạt động đồng thời cùng sử dụng tài nguyên.
▪ Tài nguyên cần nhiều loại (VD: CPU, bộ
nhớ,..).
▪ Mỗi loại tài nguyên có nhiều đơn
vị (VD: 2 CPU, 5 máy in..) ➢Mỗi
tiến trình thường gồm dãy liên
tục các thao tác
▪ Đòi hỏi tài nguyên: Nếu tài nguyên
không có sẵn (đang được sử dụng bởi
tiến trình khác) tiến trình yêu cầu phải đợi
▪ Sử dụng tài nguyên theo yêu cầu (in ấn, đọc dữ liệu...) ▪ Giải phóng
tài nguyên được cấp

Operating System Concepts – 10th Edition 1.3 Silberschatz, Galvin and Gagne ©2018

I. KHÁI NIỆM DEADLOCK


➢Khi các tiến trình dùng chung ít nhất 2 tài nguyên, hệ thống có
thể gặp "nguy hiểm"
➢Xét ví dụ:
▪ Hệ thống có hai tiến trình P1 & P2
▪ Hai tiến trình P1 & P2 dùng chung hai tài nguyên R1 & R2
▪ R1 được điều độ bởi đèn báo S1 (S1 🡨 1)
▪ R2 được điều độ bởi đèn báo S2 (S2 🡨 1)

Operating System Concepts – 10th Edition 1.4 Silberschatz, Galvin and Gagne ©2018

I. KHÁI NIỆM DEADLOCK


Operating System Concepts – 10th Edition 1.5 Silberschatz, Galvin and Gagne ©2018

I. KHÁI NIỆM DEADLOCK


Operating

System Concepts – 10th Edition 1.6 Silberschatz, Galvin and Gagne ©2018

I. KHÁI NIỆM DEADLOCK


▪ Trong môi trường multiprogramming 1 số process có thể tranh
nhau 1 số tài nguyên hạn chế.
▪ 1 process yêu cầu các tài nguyên.
Nếu tài nguyên không thể đáp ứng
tại thời điểm đó thì process sẽ
chuyển sang trạng thái chờ. ▪ Các
process chờ có thể sẽ không bao
giờ thay đổi lại trạng thái
được vì các tài nguyên mà nó yêu
cầu bị giữ bởi các process khác.
→ Ví dụ: tắc nghẽn trên cầu.
Operating System Concepts – 10th Edition 1.7 Silberschatz, Galvin and Gagne ©2018

I. KHÁI NIỆM DEADLOCK


➢Hai (hay nhiều) ôtô đối đầu nhau trên 1 cây cầu hẹp chỉ đủ độ
rộng cho 1 chiếc.
➢Mỗi đoạn của cây cầu có thể xem như 1 tài nguyên
➢Nếu deadlock xuất hiện: nó có thể được giải quyết nếu 1 hay 1
số ôtô lùi lại nhường đường rồi lên sau
Operating System

Concepts – 10th Edition 1.8 Silberschatz, Galvin and Gagne ©2018

BÀI TOÁN XẢY RA DEADLOOCK


Operating System Concepts – 10th Edition 1.9 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.10 Silberschatz, Galvin and Gagne ©2018
I. KHÁI NIỆM DEADLOCK
➢DeadLock là trạng thái trong hệ thống có ít nhất hai tiến trình
đang dừng chờ lẫn nhau và chúng không thể chạy tiếp được.
➢Sự chờ đợi này có thể kéo dài vô hạn nếu không có sự tác động từ
bên ngoài.
Operating System Concepts – 10th Edition 1.11 Silberschatz, Galvin and Gagne ©2018

II. ĐIỀU KIỆN XẢY RA DEADLOCK ➢Cần có


4 điều kiện sau, không được thiếu điều kiện nào: ➢Có tài
nguyên găng:
▪ Tài nguyên được sử dụng theo mô hình không phân chia được
(mutual exclusion).
• Chỉ có một tiến trình dùng tài nguyên tại một thời điểm
• Tiến trình khác cũng yêu cầu tài nguyên => yêu cầu phải được hõan
lại tới khi tài nguyên được giải phóng.
▪ Chờ đợi trước khi vào đoạn găng (hold and wait).
• Tiến trình không được vào đoạn găng phải xếp
hàng chờ đợi. • Trong khi chờ đợi vẫn chiếm giữ các
tài nguyên được cung cấp
Operating System Concepts – 10th Edition 1.12 Silberschatz, Galvin and Gagne ©2018

II. ĐIỀU KIỆN XẢY RA DEADLOCK ▪ Không có hệ


thống phân phối lại tài nguyên găng (no preemption) • Tài nguyên
không thể được trưng dụng
• Tài nguyên được giải phóng chỉ bởi tiến trình đang chiếm giữ khi
đã hoàn thành nhiệm vụ.
▪ Chờ đợi vòng tròn (circular wait): tồn tại 1 chu kỳ đóng các yêu cầu
tài nguyên.
• Tạo ra chu kỳ không kết thúc được.

Operating System Concepts – 10th Edition 1.13 Silberschatz, Galvin and Gagne ©2018

ĐỒ THỊ CUNG CẤP TÀI NGUYÊN ➢Dùng


để mô hình hóa tình trạng bế tắc trong hệ thống ➢Là
đồ thị định hướng gồm tập đỉnh V và tập cung E ➢Tập
đỉnh V được chia thành 2 kiểu đỉnh:
▪ P = {P1; P2; …; Pn} Tập chứa tất cả các tiến trình trong hệ thống
▪ R = {R1; R2;…; Rm} Tập chứa tất cả các kiểu tài nguyên trong hệ
thống.
➢Tập các cung E gồm 2 loại:
▪ Cung yêu cầu: đi từ tiến trình Pi tới tài nguyên Rj : Pi → Rj ▪ Cung sử

dụng: đi từ tài nguyên Rj tới tiến trình Pi : Rj → Pi


Operating System Concepts – 10th Edition 1.14 Silberschatz, Galvin and Gagne ©2018

ĐỒ THỊ CUNG CẤP TÀI NGUYÊN ➢Khi


một tiến trình Pi yêu cầu tài nguyên Rj
1. Cung yêu cầu Pi → Rj được chèn vào đồ thị
2. Nếu yêu cầu được thỏa mãn, cung yêu cầu chuyển thành cung sử
dụng Rj → Pi
3. Khi tiến trình Pi giải phóng tài nguyên Rj , cung sử dụng Rj → Pi
bị xóa khỏi đồ thị

Operating System Concepts – 10th Edition 1.15 Silberschatz, Galvin and Gagne ©2018
ĐỒ THỊ CUNG CẤP TÀI NGUYÊN

Operating System Concepts – 10th Edition 1.16 Silberschatz, Galvin and Gagne ©2018
ĐỒ THỊ CUNG CẤP TÀI NGUYÊN

Operating System Concepts – 10th Edition 1.17 Silberschatz, Galvin and Gagne ©2018
ĐỒ THỊ CUNG CẤP TÀI NGUYÊN

Operating System Concepts – 10th Edition 1.18 Silberschatz, Galvin and Gagne ©2018
ĐỒ THỊ CUNG CẤP TÀI NGUYÊN
Operating System Concepts – 10th Edition 1.19 Silberschatz, Galvin and Gagne ©2018

ĐỒ THỊ CUNG CẤP TÀI NGUYÊN ➢Đồ thị không


chứa chu trình, không deadlock
➢Nếu đồ thị chứa đựng chu trình
▪ Nếu tài nguyên chỉ có 1 đơn vị => deadlock
▪ Nếu tài nguyên có nhiều hơn 1 đơn vị: có khả năng deadlock
Operating System Concepts – 10th Edition 1.20 Silberschatz, Galvin and Gagne ©2018

III. CÁC PHƯƠNG PHÁP XỬ LÝ BẾ TẮC


➢Ngăn ngừa
▪ Áp dụng các biện pháp để đảm bảo hệ thống không bao giờ rơi vào
tình trạng deadlock.
▪ Tốn kém
▪ Áp dụng cho hệ thống hay xảy ra deadlock và tổn thất do deadlock
gây ra lớn.

Operating System Concepts – 10th Edition 1.21 Silberschatz, Galvin and Gagne ©2018

III. CÁC PHƯƠNG PHÁP XỬ LÝ BẾ TẮC


➢Phòng tránh
▪ Kiểm tra từng yêu cầu tài nguyên của tiến trình và không chấp nhận
yêu cầu nếu việc cung cấp tài nguyên có khả năng dẫn đến tình trạng
deadlock.
▪ Thường yêu cầu các thông tin phụ trợ
▪ Áp dụng cho hệ thống ít xảy ra deadlock nhưng tổn hại lớn

Operating System Concepts – 10th Edition 1.22 Silberschatz, Galvin and Gagne ©2018

III. CÁC PHƯƠNG PHÁP XỬ LÝ BẾ TẮC


➢Nhận biết và khắc phục:
▪ Cho phép hệ thống hoạt động bình thường => có thể rơi vào tình
trạng deadlock,
▪ Định kỳ kiểm tra xem deadlock có đang xảy ra không.
▪ Nếu đang deadlock, áp dụng các biện pháp loại bỏ deadlock. ▪
Áp dụng cho hệ thống ít xảy ra deadlock và thiệt hại không lớn.

Operating System Concepts – 10th Edition 1.23 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK


➢Nguyên tắc: tác động vào 1 trong 4 điều kiện cần của deadlock
để nó không xảy ra.
▪ Tài nguyên găng
▪ Chờ đợi trước khi vào đoạn găng
▪ Trưng dụng tài nguyên găng
▪ Chờ đợi vòng tròn.

Operating System Concepts – 10th Edition 1.24 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK


➢Giảm tài nguyên găng
➢Giảm bớt mức độ găng của hệ thống
▪ Tài nguyên phân chia được (file chỉ đọc): sử dụng đồng thời ▪
Tài nguyên không phân chia được: sử dụng không đồng thời
➢Kỹ thuật SPOOL(Simultaneous peripheral operation
on-line)
▪ Không phân phối tài nguyên khi không thực sự cần thiết
▪ Chỉ một số ít tiến trình có khả năng yêu cầu tài nguyên

Operating System Concepts – 10th Edition 1.25 Silberschatz, Galvin and Gagne ©2018
III.1 NGĂN NGỪA DEADLOCK
Operating System Concepts – 10th Edition 1.26 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK ➢Điều


kiện chờ đợi trước khi vào găng
➢Nguyên tắc: đảm bảo một tiến trình xin tài nguyên chỉ khi
không sở hữu bất kỳ tài nguyên nào khác.
➢Cung cấp trước
▪ Tiến trình xin toàn bộ tài nguyên ngay từ đầu và chỉ thực hiện khi
đã có đầy đủ tài nguyên
▪ Hiệu quả sử dụng tài nguyên thấp
• Tiến trình chỉ sử dụng tài nguyên ở giai đọan cuối?

• Tổng số tài nguyên đòi hỏi vượt quá khả năng của hệ thống?
Operating System Concepts – 10th Edition 1.27 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK


➢Giải phóng tài nguyên
▪ Tiến trình giải phóng tất cả tài nguyên trước khi xin (xin lại) tài
nguyên mới
▪ Nhận xét
• Tốc độ thực hiện tiến trình chậm
• Phải đảm bảo dữ liệu được giữ trong tài nguyên tạm giải phóng
không bị mất
Operating System Concepts – 10th Edition 1.28 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK


Operating System Concepts – 10th Edition 1.29 Silberschatz, Galvin and Gagne ©2018
III.1 NGĂN NGỪA DEADLOCK

Operating System Concepts – 10th Edition 1.30 Silberschatz, Galvin and Gagne ©2018
III.1 NGĂN NGỪA DEADLOCK

Operating System Concepts – 10th Edition 1.31 Silberschatz, Galvin and Gagne ©2018
III.1 NGĂN NGỪA DEADLOCK

Operating System Concepts – 10th Edition 1.32 Silberschatz, Galvin and Gagne ©2018
III.1 NGĂN NGỪA DEADLOCK
➢Ngăn chặn không thể thu hồi
➢Nếu process A có giữ tài nguyên và đang yêu cầu tài nguyên
khác nhưng tài nguyên này chưa cấp phát ngay được thì:
▪ Cách 1: Hệ thống lấy lại mọi tài nguyên mà A đang giữ
• A chỉ bắt đầu lại được khi có được các tài nguyên đã bị lấy lại cùng
với tài nguyên đang yêu cầu.
Operating System Concepts – 10th Edition 1.33 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK


▪ Cách 2: Hệ thống sẽ xem tài nguyên mà A yêu cầu
• Nếu tài nguyên được giữ bởi một process khác đang đợi thêm
tài nguyên, tài nguyên này được hệ thống lấy lại và cấp phát cho
A.
• Nếu tài nguyên được giữ bởi process không đợi tài nguyên, A phải
đợi và tài nguyên của A bị lấy lại. Tuy nhiên hệ thống chỉ lấy lại các
tài nguyên mà process khác yêu cầu
Operating System Concepts – 10th Edition 1.34 Silberschatz, Galvin and Gagne ©2018

III.1 NGĂN NGỪA DEADLOCK


➢Ngăn chặn chờ đợi vòng tròn.
➢Sắp xếp thứ tự cho tất cả loại tài nguyên và đòi hỏi mỗi tiến trình
phải yêu cầu tài nguyên theo thứ tự đó.
➢Ví dụ, một tiến trình muốn dùng ổ đĩa và máy in tại cùng một lúc
thì trước tiên phải yêu cầu ổ đĩa, nếu được cấp ổ đĩa thì mới yêu
cầu máy in.

Operating System Concepts – 10th Edition 1.35 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK (Deadlock


Avoidance) ◼Ngăn deadlock sử dụng tài nguyên không hiệu quả
◼Tránh deadlock vẫn đảm bảo hiệu suất sử dụng tài nguyên tối đa
đến mức có thể
◼Yêu cầu mỗi tiến trình khai báo số lượng tài nguyên tối đa cần để
thực hiện công việc
◼Giải thuật tránh deadlock sẽ kiểm tra trạng thái cấp phát tài nguyên
để đảm bảo hệ thống không rơi vào deadlock
◼Trạng thái cấp phát tài nguyên được định nghĩa dựa trên số tài nguyên
còn lại, số tài nguyên đã được cấp phát và yêu cầu tối đa của các tiến

trình
Operating System Concepts – 10th Edition 1.36 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


◼ Một trạng thái của hệ thống được gọi là an toàn (safe) nếu
tồn tại một chuỗi thứ tự an toàn
◼ Một chuỗi quá trình <P1, P2,…,Pn> là một chuỗi an toàn
nếu
🞐Với mọi i = 1,…,n yêu cầu tối đa về tài nguyên của Pi có
thể được thỏa bởi
◼Tài nguyên mà hệ thống đang có sẵn sàng
◼Cùng với tài nguyên mà tất cả các Pj (j<i) đang giữ ◼
Mộttrạng thái của hệ thống được gọi là không an toàn
(unsafe) nếu không tồn tại một chuỗi an toàn
Operating System Concepts – 10th Edition 1.37 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


◼ Ví dụ: hệ thống có 12 tap drive và 3 tiến trình P0, P1,
P2 🞐Tại thời điểm to
P0 Cần tối đa Đang giữ Cần thêm

10 5 5
P1 4 2 2
P2 9 2 7

◼Còn 3 tap drive sẵn sàng


◼Chuỗi <P1, P0, P2> là chuỗi an toàn -> hệ thống
là an toàn

Operating System Concepts – 10th Edition 1.38 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK

◼ Giả sử tại thời điểm t1, P2 yêu cầu và được cấp phát 1 tap drive
🞐Còn 2 tap drive sẵn sàng
P0 Cần tối đa Đang giữ

10 5
P1 4 2
P2 9 3

◼Hệ thống còn an toàn không?

Operating System Concepts – 10th Edition 1.39 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK ➢Nếu hệ thống ở


trạng thái an toàn => không có deadlock. ➢Nếu hệ thống ở trạng
thái không an toàn => có thể có deadlock.
➢Sự tránh khỏi deadlock => đảm bảo rằng hệ thống sẽ không
bao giờ bước vào trạng thái không an toàn:
▪ Mỗi loại tài nguyên có 1 instance:
giải thuật đồ thị phân phối tài nguyên.
▪ Mỗi loại tài nguyên có nhiều
instance:
giải thuật chủ nhà băng (banker).

Operating System Concepts – 10th Edition 1.40 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK Giải


thuật đồ thị phân phối tài nguyên:
➢Sử dụng khi mỗi kiểu tài nguyên chỉ có 1 đơn vị
(instance) ▪ Có chu trình, sẽ có deadlock
➢Thêm vào đồ thị loại cung mới: cung đòi hỏi Pi →
Rj ▪ Cùng hướng với cung yêu cầu, thể hiện trong đồ
thị → ▪ Cho biết Pi có thể yêu cầu Rj trong tương lai

Operating System Concepts – 10th Edition 1.41 Silberschatz, Galvin and Gagne ©2018
III.2 PHÒNG TRÁNH DEADLOCK
Tiến trình khi tham gia hệ thống, phải thêm tất cả các cung
đòi hỏi tương ứng vào đồ thị
▪ Khi Pi yêu cầu Rj , cung đòi hỏi Pi --> Rj chuyển thành
cung yêu cầu Pi → Rj
▪ Khi Pi giải phóng Rj , cung sử dụng Rj → Pi chuyển thành
cung đòi hỏi Pi --> Rj
Operating System Concepts – 10th Edition 1.42 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK ➢Thuật toán: yêu


cầu tài nguyên Rj của tiến trình Pi được thỏa mãn chỉ khi việc
chuyển cung yêu cầu Pi → Rj thành cung sử dụng Rj→ Pi không
tạo chu trình trên đồ thị.
▪ Không chu trình: Hệ thống an toàn
▪ Có chu trình: Việc cung cấp tài nguyên đẩy hệ thống vào tình trạng
không an toàn
Operating System Concepts – 10th Edition 1.43 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


Operating System Concepts – 10th Edition 1.44 Silberschatz, Galvin and Gagne ©2018
III.2 PHÒNG TRÁNH DEADLOCK
Operating System Concepts – 10th Edition 1.45 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


Operating System Concepts – 10th Edition 1.46 Silberschatz, Galvin and Gagne ©2018
III.2 PHÒNG TRÁNH DEADLOCK
Operating System Concepts – 10th Edition 1.47 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


Operating

System Concepts – 10th Edition 1.48 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


Operating

System Concepts – 10th Edition 1.49 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


Operating System Concepts – 10th Edition 1.50 Silberschatz, Galvin and Gagne ©2018
GIẢI THUẬT BANKER
➢Mỗi loại tài nguyên có nhiều thực thể. Bắt chước nghiệp vụ ngân hàng
➢Khi tiến trình mới đưa vào hệ thống, nó phải khai báo số tối đa các đơn vị của
mỗi loại tài nguyên mà nó cần. Số này có thể không vượt quá tổng số tài nguyên
trong hệ thống.
➢Khi một tiến trình yêu cầu cấp phát tài nguyên, hệ thống phải xác định sau khi
cấp phát các tài nguyên này hệ thống có vẫn ở trong trạng thái an toàn hay không.
▪ Nếu trạng thái hệ thống sẽ vẫn là an toàn, tài nguyên sẽ được cấp
▪ Ngược lại, tiến trình phải chờ cho tới khi một vài tiến trình giải phóng đủ tài
nguyên.
▪ Khi tiến trình đã có được đầy đủ tài nguyên thì phải hoàn trả trong một khoảng
thời gian hữu hạn nào đó
➢Giải thuật nhà băng dùng để xác định trạng thái hiện tại có an toàn
hay không?
Operating System Concepts – 10th Edition 1.51 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK ➢Bước1: Từ bảng


trạng thái lập bảng nhu cầu trong đó thay cột Max bằng cột Cần với
công thức tính toán Cần= Max – Chiếm. Cột Cần thể hiện số lượng
mỗi loại tài nguyên cần cung cấp thêm cho mỗi tiến trình.
Operating System Concepts – 10th Edition 1.52 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK


➢Bước2:
While ∃i: (Cần(Pi)<>0) and
(Cần(Pi)<=Còn) Begin
Còn= Còn+Chiếm(Pi);
Cần(Pi)=0; Chiếm(Pi)=0;
End
➢If ∀i: Cần(Pi)=0
Then “Trạng thái an toàn”
Else “Trạng thái không an toàn”
Operating System Concepts – 10th Edition 1.53 Silberschatz, Galvin and Gagne ©2018

III.2 PHÒNG TRÁNH DEADLOCK if


Not(Request(P)<= Còn) Then
“Không cấp được”
Else
Begin
1.Lập bảng trạng thái sau khi cấp tài nguyên cho P:
Còn= Còn–Request(P);
Chiếm(P)= Chiếm(P)+ Request(P);
Max(P)=Max(P);
Các số liệu ứng với các tiến trình khác giữ nguyên;
2. Kiểm tra trạng thái trên có an toàn không
3. If (An toàn) then “Cấp ngay” else “Khôngcấpngay”
End
Operating System Concepts – 10th Edition 1.54 Silberschatz, Galvin and Gagne ©2018

GIẢI THUẬT BANKER


n: số tiến trình; m: số loại tài nguyên
◼ Available: vector độ dài m
🞐 Available[j] = k loại tài nguyên Rj có k instance sẵn
sàng ◼ Max: ma trận n x m
🞐 Max[i, j] = k tiến trình Pi yêu cầu tối đa k instance của loại tài
nguyên Rj
◼ Allocation: vector độ dài n x m
🞐 Allocation[i, j] = k Pi đã được cấp phát k instance của
Rj ◼ Need: vector độ dài n x m
🞐 Need[i, j] = k Pi cần thêm k instance của Rj
🞐 => Need[i, j] = Max[i, j] - Allocation[i,j]

Ký hiệu Y ≤ X ⇔ Y[i] ≤ X[i], ví dụ (0, 3, 2, 1) ≤ (1, 7, 3,2)


Operating System Concepts – 10th Edition 1.55 Silberschatz, Galvin and Gagne ©2018

GIẢI THUẬT BANKER


1. Gọi Work và Finish là hai vector độ dài là m và n. Khởi tạo
Work = Available
Finish[i] = false, i = 0, 1, …, n-1
2. Tìm i thỏa
(a) Finish[i] = false
(b) Needi ≤ Work (hàng thứ i của Need)
Nếu không tồn tại i như vậy, đến bước 4.
3. Work = Work + Allocationi
Finish[i] = true
quay về bước 2
4. Nếu Finish[i] = true, i = 1,…, n, thì hệ thống đang ở trạng thái safe

Operating System Concepts – 10th Edition 1.56 Silberschatz, Galvin and Gagne ©2018
III.2 PHÒNG TRÁNH DEADLOCK

Operating System

Concepts – 10th Edition 1.57 Silberschatz, Galvin and Gagne ©2018


Ví dụ: P1 yêu cầu (1, 0, 2)

◼ Kiểm tra Request1 ≤ Available:


🞐(1, 0, 2) ≤ (3, 3, 2) => Đúng

◼ Trạng thái mới là safe (chuỗi an toàn là <P1, P3, P4, P0, P2> vậy
có thể cấp phát tài nguyên cho P1

1/17/2018 Copyrights 2017 CE-UIT. All Rights Reserved. 58


Operating System Concepts – 10th Edition 1.58 Silberschatz, Galvin and Gagne ©2018

Ví dụ: P4 yêu cầu (3, 3, 0)

◼ Kiểm tra Request4 ≤ Available:


🞐(3, 3, 0) ≤ (3, 3, 2) => Đúng
Allocation Need Available
ABCABCABC
P0 0 1 0 7 4 3 0 0 2
P1 2 0 0 1 2 2
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 3 3 2 1 0 1
◼ Trạng thái mới là unsafe vậy không thể cấp phát tài nguyên cho P4

1/17/2018 Copyrights 2017 CE-UIT. All Rights Reserved. 59


Operating System Concepts – 10th Edition 1.59 Silberschatz, Galvin and Gagne ©2018

Ví dụ: P0 yêu cầu (0, 2, 0)


◼ Kiểm tra Request0 ≤ Available:
🞐(0, 2, 0) ≤ (3, 3, 2) => Đúng

Allocation Need Available


ABCABCABC
P0 0 3 0 7 2 3 3 1 2
P1 2 0 0 1 2 2
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1
◼ Trạng thái mới là safe, chuỗi an toàn <P3, P1, P2, P0, P4> vậy có
thể cấp phát tài nguyên cho P0

1/17/2018 Copyrights 2017 CE-UIT. All Rights Reserved. 60


Operating System Concepts – 10th Edition 1.60 Silberschatz, Galvin and Gagne ©2018

III.3 PHÁT HIỆN DEADLOCK


➢Nguyên tắc
▪ Không áp dụng các biện pháp ngăn ngừa hoặc phòng tránh, để cho
deadlock xảy ra.
▪ Định kỳ kiểm tra xem deadlock có đang xảy ra không. Nếu có tìm
cách khắc phục
▪ Để thực hiện, hệ thống phải cung cấp
• Thuật toán xác định hệ thống đang deadlock không
• Thuật toán chứa deadlock,
Operating System Concepts – 10th Edition 1.61 Silberschatz, Galvin and Gagne ©2018

III.3 PHÁT HIỆN DEADLOCK


➢Nhận biết deadlock
▪ Thuật toán dựa trên đồ thị cung cấp tài nguyên
▪ Thuật toán chỉ ra deadlock tổng quát
➢Khắc phục deadlock
▪ Kết thúc tiến trình
▪ Trưng dụng tài nguyên
Operating System Concepts – 10th Edition 1.62 Silberschatz, Galvin and Gagne ©2018

III.3 PHÁT HIỆN DEADLOCK


➢Thuật toán dựa trên đồ thị cung cấp tài nguyên:
- Áp dụng khi mỗi tài nguyên trong hệ thống có một đơn vị.
- Kiểm tra hệ thống có deadlock bằng cách kiểm tra chu trình
trên đồ thị
▪ Nếu trên đồ thị có chu trình, hệ thống đang deadlock.
- Định kỳ gửi tới các thuật toán kiểm tra chu trình trên đồ
thị ▪ Thuật toán đòi hỏi n2 thao tác (n: số đỉnh của đồ thị)

Operating System Concepts – 10th Edition 1.63 Silberschatz, Galvin and Gagne ©2018

III.3 PHÁT HIỆN DEADLOCK


➢Sử dụng đồ thị chờ đợi - phiên bản thu gọn của đồ thị cung cấp
tài nguyên
▪ Chỉ có các đỉnh dạng tiến trình
▪ Cung chờ đợi Pi → Pj : Tiến trình Pi đang đợi tiến trình Pj
giải phóng tài nguyên Pi cần
▪ Cung chờ đợi Pi → Pj tồn tại trên đồ thị đợi khi và chỉ khi trên đồ thị
phân phối tài nguyên tương ứng tồn tại đồng thời cung yêu cầu Pi →
R và cung sử dụng R → Pj

Operating System Concepts – 10th Edition 1.64 Silberschatz, Galvin and Gagne ©2018

III.3 PHÁT HIỆN DEADLOCK


Operating System Concepts – 10th Edition 1.65 Silberschatz, Galvin and Gagne ©2018

III.3 PHÁT HIỆN DEADLOCK


➢Thuật toán chỉ ra deadlock tổng quát:
- Sử dụng cho các hệ thống có các kiểu tài nguyên gồm nhiều đơn
vị. - Thuật toán tương tự thuật toán nhà bang.

Operating System Concepts – 10th Edition 1.66 Silberschatz, Galvin and Gagne ©2018
III.3 PHÁT HIỆN DEADLOCK

Operating

System Concepts – 10th Edition 1.67 Silberschatz, Galvin and Gagne ©2018
III.3 PHÁT HIỆN DEADLOCK

Operating

System Concepts – 10th Edition 1.68 Silberschatz, Galvin and Gagne ©2018
III.4 PHỤC HỒI DEADLOCK
➢Nguyên tắc:
▪ Trưng dụng liên tục một vài tài nguyên từ một số tiến trình đang
deadlock cho các tiến trình khác đến khi deadlock được hủy bỏ.
➢Các vấn đề cần quan tâm:
▪ Lựa chọn nạn nhân (victim):
• Tài nguyên nào và tiến trình nào được chọn?
• Trật tự trưng dụng để chi phí nhỏ nhất?
• Lượng tài nguyên nắm giữ, thời gian sử dụng..
Operating System Concepts – 10th Edition 1.69 Silberschatz, Galvin and Gagne ©2018

III.4 PHỤC HỒI DEADLOCK


▪ Quay lui (Rollback)
• Quay lui tới một trạng thái an toàn trước đó và bắt đầu lại
• Yêu cầu lưu giữ thông tin trạng thái
của tiến trình đang thực hiện. ▪ Đói tài
nguyên (Starvation)
• Một tiến trình bị trưng dụng quá
nhiều lần => chờ đợi vô hạn • Giải
pháp: ghi lại số lần bị trưng dụng
Operating System Concepts – 10th Edition 1.70 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.71 Silberschatz, Galvin and Gagne ©2018

CHƯƠNG 2: DEADLOCK
Tắt nghẽn

Operating System Concepts – 10h Edition Silberschatz, Galvin and Gagne ©2018

You might also like