Hay : Mỗi tiến trình trong tập hợp đều chờ được cấp phát tài nguyên hiện đang bị một quá trình khác cũng ở trạng thái blocked chiếm giữ.. GIẢI QUYẾT DEADLOCK Ngăn ngừa deadlock dead
Trang 1Chapter 5: DEADLOCK
Trang 2 Điều kiện để có deadlock
Các phương pháp giải quyết
Ngăn ngừa deadlock
Tránh deadlock
Phát hiện deadlock
Phục hồi deadlock
Bài tập
Trang 315KB buffer
spooler
Tắc nghẽn trong giao thông Tắc nghẽn trong quản lý in ấn
Ví dụ
Trang 4Năm nhà triết học cùng ngồi
ăn tối với món spaghetti nổi
tiếng Mỗi nhà triết học dùng
2 cái nĩa để có thể ăn
spaghetti Nhưng trên bàn
chỉ có tổng cộng 5 cái nĩa
để xen kẽ với 5 cái đĩa Nếu
5 nhà triết học đều cầm 5
cái nĩa bên trái cùng lúc, thì
sẽ không có ai có cái nĩa
bên phải để có thể bắt đầu
thưởng thức spaghetti.
BÀI TOÁN VỀ 5 TRIẾT GIA ĂN TỐI
Trang 5 Mỗi tiến trình trong tập hợp đều chờ đợi một sự kiện mà chỉ có một tiến trình khác trong tập hợp mới có thể phát sinh.
Hay : Mỗi tiến trình trong tập hợp đều chờ được cấp phát tài nguyên hiện đang bị một quá trình khác cũng ở trạng thái blocked chiếm giữ.
Một hệ thống bị deadlock : có tiến trình bị deadlock.
ĐỊNH NGHĨA
Trang 6Critical Section;
Dạng deadlock:
Trang 7 Trì hoãn vô hạn định (Indefinite postponement)
Đợi sự kiện có thể xảy ra nhưng không xác định thời điểm
Biểu hiện như deadlock
Nguyên nhân ?
Deadlock có khác vòng lặp vô hạn ?
Trang 83 Không thu hồi tài nguyên từ tiến trình đang
giữ chúng (no-preemption)
4 Tồn tại một chu trình trong đồ thị cấp phát
tài nguyên (circular-wait)
Trang 9ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN
Process:
Loại tài nguyên với 4 thực thể:
Pi yêu cầu một thực thể của Rj :
Pi đang giữ một thực thể của Rj :
Trang 12RAG và deadlock
Ví dụ một RAG chứa chu trình nhưng không xảy ra deadlock: P4 có thể trả lại instance của
Trang 13RAG và deadlock (tt)
deadlock
deadlock
Trang 14ĐỒ THỊ CẤP PHÁT TÀI NGUYÊN
Có thể sử dụng một đồ thị để mô hình hoá việc cấp phát
tài nguyên.
Tiến trình Tài nguyên
P1 yêu cầu n tài nguyên loại R1
Trang 15CÁC PHƯƠNG PHÁP XỬ LÝ DEADLOK
Có ba hướng tiếp cận để xử lý tắc nghẽn
Sử dụng phương thức (protocol) để bảo đảm
rằng hệ thống không bao giờ xảy ra tắc
nghẽn.
Cho phép xảy ra tắc nghẽn và tìm cách sửa
chữa tắc nghẽn.
Hoàn toàn bỏ qua việc xử lý tắc nghẽn, xem
như hệ thống không bao giờ xảy ra tắc nghẽn
Trang 16GIẢI QUYẾT DEADLOCK
Ngăn ngừa deadlock (deadlock prevention)
Qui định cấp, dùng tài nguyên nghiêm ngặt
Không cho các điều kiện deadlock xảy ra
Tránh deadlock (deadlock avoidance)
Vẫn cho các điều kiện deadlock tồn tại
Cấp tài nguyên hợp lý, an toàn
Phát hiện deadlock (deadlock detection)
Phục hồi deadlock (deadlock recovery)
Trang 17NGĂN NGỪA DEADLOCK
Cấm điều kiện tài nguyên không thể chia sẻ (multual-exclusion )
Cấm điều kiện Sự chiếm giữ và yêu cầu thêm tài nguyên (hold & wait)
Tiến trình yêu cầu tất cả tài nguyên một lần
Chỉ được xử lý khi đã đủ tất cả tài nguyên cần thiết
Trang 18NGĂN NGỪA DEADLOCK
Cấm điều kiện không thu hồi tài nguyên
(no-preemption)
Nếu yêu cầu tài nguyên không được, tiến trình phải giải phóng tất cả tài nguyên đang giữ và yêu cầu lại (?)
Loại bỏ một chu kỳ (circular-wait)
Sắp xếp tài nguyên theo trật tự và chung cấp cho tiến trình theo đúng trật tự đó
Trang 20Một số khái niệm cơ sở
Trạng thái an toàn.
Một chuỗi cấp phát an toàn.
Chiến lược cấp phát.
Giải thuật xác định trạng thái an toàn.
Giải thuật yêu cầu tài nguyên.
TRÁNH DEADLOCK
Trang 21Trạng thái safe và unsafe
Một trạng thái của hệ thống được gọi là an 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 an toàn (safe) nếu tồn tại một chuỗi an toàn (safe
sequence).
Trang 22Chuỗi 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
(available)
giữ.
Một trạng thái của hệ thống được gọi là không Một trạ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.
Trang 23Chuỗi an toàn (tt)
Ví dụ: Hệ thống có 12 tape drives và 3 quá trình
P0, P1, P2
Tại thời điểm t0
Còn 3 tape drive sẵn sàng
Chuỗi <P1, P0, P2> là chuỗi an toàn ⇒ hệ thống là an toàn
Trang 24Chuỗi an toàn (tt)
Giả sử tại thời điểm t1, P2 yêu cầu và được cấp phát 1 tape drive
còn 2 tape drive sẵn sàng
• Hệ thống trở nên không an toàn
Trang 25 Khi một process yêu cầu một tài nguyên đang sẵn sàng, hệ thống sẽ kiểm tra: nếu việc cấp phát này không dẫn đến tình trạng unsafe thì sẽ cấp phát ngay.
Trang 26dẫn đến deadlock.
không đi đến trạng thái unsafe
safe unsafe
deadlock
Trang 27TRÁNH DEADLOCK
Giải thuật banker
Áp dụng cho hệ thống cấp phát tài nguyên trong đó mỗi loại tài nguyên có thể có nhiều instance.
Bắt chước nghiệp vụ ngân hàng (banking)
Trang 28TRÁNH DEADLOCK
Giải thuật nhà băng (Banker’s Algorithm)
Hệ điều hành = nhà Băng
Tiến trình = khách hàng
Tài nguyên = vốn vay
Ràng buộc
Yêu cầu vay cực đại ≤ vốn nhà băng
Khách không trả vốn nếu vay chưa đủ yêu cầu cực đại
Khi vay đủ, khách phải trả đủ vốn sau thời gian hữu hạn
Trang 29TRÁNH DEADLOCK
Trạng thái nhà băng
An toàn (Safe): thỏa yêu cầu mọi khách, ngân hàng thu vốn đủ
Không an toàn ( Unsafe) : ngược lại có thể deadlock
Hệ thống phải cấp phát tài nguyên sao cho không rơi vào trạng thái Unsafe
Trang 30VÍ DỤ
Trạng thái sau là an toàn Tại sao ?
Trang 31Vốân 12 , còn lại 1
Trạng thái sau là không an toàn Tại sao ?
Trang 32Giải thuật kiểm tra trạng thái an toàn –
Ví dụ Có 5 process P
Allocation Max Available Need
Trang 33GT kiểm tra trạng thái an toàn – Vd (tt)
Trang 34 Yêu cầu (1, 0, 2) của P 1 có thỏa được không?
Kiểm tra điều kiện Request 1 ≤ Available:
(1, 0, 2) ≤ (3, 3, 2) là đúng
Giả định thỏa yêu cầu, kiểm tra trạng thái mới có phải là safe hay không.
Trạng thái mới là safe (chuỗi an toàn là <P 1 , P 3 , P 4 , P 0 , P 2 >), vậy có thể cấp phát tài nguyên cho P 1
Allocation Need Available
Trang 35GT cấp phát tài nguyên – Ví dụ (tt)
P4 yêu cầu (3, 3, 0) hoặc P0 yêu cầu (0, 2, 0) thì có thỏa mãn được hay không?
Trang 36PHÁT HIỆN DEADLOCK
Ghi nhận, theo dõi yêu cầu, sự cấp phát tài
nguyên cho các quá trình.
Dùng đồ thị cấp phát tài nguyên.
Tiến trình Tài nguyên
P1 yêu cầu n tài nguyên loại R1
Trang 37PHÁT HIỆN DEADLOCK
Giản lược đồ thị cấp phát
1 Tài nguyên rảnh cấp cho quá trình yêu cầu
2 Quá trình đủ tài nguyên xoá mọi cạnh vào, xoá quá qtrình
3 Lặp lại 1 với các quá trình khác đến khi tối giản
Khi giải thuật dừng
Đồ thị cấp phát không còn cạnh: không có deadlock
Đồ thị cấp phát có chu trình (cycle): deadlock
Nhận xét
Phí tổn lớn
Trang 38VÍ DỤ 1 : GIẢN ƯỚC
P2R1
P1 R2
P3 R3
P4
P2R1
P1 R2
P3 R3
P4
P2R1
P1 R2
P3 R3
P4
P2R1
P1 R2
P3 R3
P4
Trang 40PHỤC HỒÀI DEADLOCK
Đình chỉ hoạt động của các quá trình liên quan.
Thu hồi tài nguyên.
Khó có thể giải quyết trọn vẹn
Trang 41XỬ Lý)
Đã mượn(CẤP PHÁT TÀI NGUYÊN)
Hiện còn lại(TÀI NGUYÊN CÒN TỰ DO)
Trang 47 Chuỗi cấp phát an toàn :
<P2,P1,P3,P4>
Trang 48Tìm trạng thái của hệ thống sau
Need Đã mượn Hiện còn
Trang 49Need Đã mượn
(CẤP PHÁT TÀI NGUYÊN)
Hiện còn lại(TÀI NGUYÊN CÒN TỰ DO)
Trang 5050 Tìm trạng thái của hệ thống sau