1. Vấn đề DeadLock (1)
- Trong chế độ multiprogramming, một số tiến trình có thể tranh chấp một số tài nguyên hạn chế.
- Một tiến trình u cầu các tài ngun, nếu tài ngun khơng thế đáp ứng tại thời điểm đó thì tiến trình sẽ chuyển sang trạng thái waiting.
- Các tiến trình waiting có thể sẽ khơng bao giờ thay đổi lại trạng thái đƣợc. Vì các tài ngun mà nó yêu cầu lại bị giữ bởi các tiên trình waiting khác.
- Deadlock (khoá chết - bế tắc):
o Là hiện tƣợng một tiến trình chiếm hữu tài ngun lâu dài làm cho các
tiến trình có nhu cầu sử dụng tài ngun này ln ở trạng thái waiting
o Một tiến trình deadlock Là tiến trình đợi một sự kiện khơng bao giờ xảy
ra
1. Vấn đề DeadLock (2)
Ví dụ:
- Tắc nghẽn trên cầu
- Hai (hay nhiều hơn) ô tô đi ngƣợc chiều trên một cây câu hẹp chỉ đủ độ rộng cho một chiếc.
- Mỗi đoạn của cây cầu có thể xem nhƣ một tài nguyên.
- Nếu deadlock xuất hiện, nó có thể đƣợc giải quyết nếu một hay một số ô tô lùi lại nhƣờng đƣờng rồi tiến sau.
1. Vấn đề DeadLock (4)
- Dining Philosophers:
N nhà triết gia và N cái dĩa
Các nhà triết gia ngồi ăn và suy nghĩ
Mỗi ngƣời cần 2 chiếc đũa
Mỗi lần cầm lên 1 chiếc đũa
- Deadlock: khi các triết gia đói bụng cùng lúc và đơng thời cầm đũa bên tay trái trƣớc.
2. Mô tả hệ thống
- Các loại tài nguyên
• Ký hiệu R1, R2, ..., Rm
• R có thể là: Các chu kỳ CPU, không gian bộ nhớ, File, I/0 device
• Ex: Hệ thống có 2 CPU, 5 máy in có thể đáp ứng u cầu của nhiều tiến trình hơn
2. Mơ tả hệ thống
Mỗi tiến trình sử dụng tài nguyên theo các bƣớc sau:
- Yêu cầu tài nguyên (request): Nếu yêu cầu không đƣợc giải quyết ngay (VD khi tài nguyên đang đƣợc tiến trình khác sử dụng); Thì tiến trình yêu cầu phải đợi cho đến khi nhận đƣợc tài nguyên.
- Sử dụng tài nguyên: (use) - Giải phóng tài ngun (release)
3. Mơ tả DeadLock
Deadlock
- Có thể xảy ra nếu 4 điều kiện sau đồng thời tồn tại:
•1. Ngăn chặn (loại trừ) lẫn nhau: Tại một thời điểm, chỉ một tiến trình có thể sử dụng một tài nguyên (Chi một tiến trình trong đoạn găng).
• 2. Giữ và đợi: Một tiến trình đang giữ ít nhất một tài ngun và đợi để nhận đƣợc tài nguyên khác (Đang đƣợc giữ bởi tiến trình khác).
• 3. Khơng có ƣu tiên (độc quyền): Một tài ngun chi có thể đƣợc tiến trình (tự nguyện!) giải phóng khi nó đã hồn thành cơng việc.
• 4. Chờ đợi vịng trịn:
o Tồn tại một tập các tiến trình chờ đợi {P0, P1, ..., Pn, PO}.
o PO đang đợi tài nguyên bị giữ bởi P1,
o P1 đang đợi tài nguyên bị giữ bởi P2, ...
o Pn-1 đang đợi tài nguyên bị giữ bởi Pn,
3.1. Biểu đồ phân phối tài nguyên – RAG (1)
- Một tập các đỉnh V; V đƣợc chia thành 2 loại:
• P = {P1, P2, ..., Pn}: Tập tất cả các tiến trình. • R= {R1, R2, ..., Rm}: Tập các loại tài nguyên.
- Một tập các cạnh E.
•Tập các cạnh E: Mỗi cá thể là một hình vng bên trong
o Cạnh yêu cầu - cạnh có hƣớng Pi –- Ri. (Tiến trình Pi đang đợi nhận một
hay nhiêu cá thể của tài nguyên Rj).
o Cạnh chi định- cạnh có hƣớng Ri - Pi (Tiến trình Pi đang giữ một hay
nhiêu cá thể của tài nguyên Ri).
3.1. Biểu đồ phân phối tài nguyên – RAG(2): Minh hoạ
Đồ thị phân phối tài nguyên Khơng chu trình: Nếu đồ thị khơng chu trình thì sẽ khơng có tiến trình nào bị deadlock
3.1. Biểu đồ phân phối tài nguyên RAG(3): Minh hoạ
• Đồ thị phân phối tài ngun có chu trình nếu đồ thị có chu trình thì có thể tồn tại deadlock
H1: DeadLock
H2. Khơng DeadLock
P4 hoặc P2 có thể kết thúc P1 và P3 kếểt thúc đƣợc.
3.1. Biểu đồ phân phối tài nguyên(4): Kết luận về đô thị
Nếu đồ thị khơng chu trình: Khơng xảy ra deadlock
Nếu đồ thị có chu trình
o Nếu mỗi loại tài nguyên: Chi một cá thể thì chắc chẳn xảy ra
deadlock
o Nếu mỗi loại tài nguyên: Có một vài cá thể thì deadlock có thể xảy
ra oặc khơng.
4. Các phƣơng pháp xử lý deadlock
Sử dụng một phƣơng thức
- Để ngăn ngừa hoặc tránh xa,
- Đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock.
- 2. Bỏ qua vấn đề này, xem nhƣ Deadlock không bao giờ xuất hiện trong hệ thống. Giải pháp này đƣợc sử dụng trong hầu hết các HĐH.
5. Ngăn ngừa deadlock (1)
Ngăn cản Các cách tạo yêu cầu: Đảm bảo ít nhất một trong bốn điều kiện không
thể xuất hiện
- 1. Ngăn cản lẫn nhau
Đảm bảo là hệ thống khơng có các file khơng thể chia sẻ.
Một tiến trình khơng bao giờ phải chờ tài ngun có thể chia sẻ
o Ví dụ: read-only files (vì file read only thì nhều tiến trình truy xuất
nó cũng khơng ảnh hƣởng gì-nội dung file khơng thay đổi)
Một số tài ngƣuyên là khơng thể chia sẻ
o Ví dụ: chế độ tồn màn hình
5. Ngăn ngừa deadlock (2)
Khơng có ưu tiên
- Nếu một tiến 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 thể đƣợc phân phối ngay cho nó thì tất cá các tài ngun nó đang giữ đƣợc giải phóng.
- Các tài nguyên ƣu tiên: đƣợc thêm vào danh sách tài nguyên dành cho tiến trình đang chờ đợi.
- Tiến trình sẽ đƣợc khởi động lại chỉ khi nó có thể lấy lại các 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.
5. Ngăn ngừa deadlock (2)
Chờ đợi vòng tròn: Áp dụng một thứ tự tuyệt đối cho tất cả các loại tài nguyên:
- Mỗi loại đƣợc gần một số nguyên; Mỗi tiến trình. yêu cầu các tài nguyên
theo thứ tự tăng dần: chỉ có thể nhận đƣợc tài nguyên có trọng số cao hơn của bất kỳ tài nguyên nào nó đang giữ
- Muốn có tài ngun j: Tiến trình phải giải phóng tất cả các tài nguyễn có trọng số i>j (nếu có).
6. Thốt khởi deadlock Yêu cầu HÐH
- Phải có một số thơng tin ƣu tiên
- Mơ hình hữu dụng nhất và đơn glản nhất
o u cầu mỗi tiến trình cơng bố số lƣợng tài nguyên lớn nhất của
mỗi loại mà nó có thể cần đến.
- Giải thuật tránh deadlock:
o Luôn kiểm tra trạng thái phân phối tài nguyên để đảm bảo rằng sẽ
khơng bao giờ có tình trạng chờ đợi vịng trịn.
- Trạng thái phân phối tài nguyên: Đƣợc xác định bởi số tài nguyên khả
dụng và đã đƣợc phân phối cũng nhƣ số tài ngun tơi đa tiến trình u cầu.
6.1. Safe State (1)
- Một trạng thái an tồn: Nếu hệ thống có thể phân phối các tài nguyên cho
mỗi tiến theo một vài thứ tự nào đó mà vẫn tránh đƣoc deadlock.
- Khi một tiến trình u cầu một tài ngun cịn rỗi,
o Hệ thống phải quyết định liệu phân phối ngay lập tức • Có làm cho
hệ thống mất an tồn hay khơng?
o Hệ thống ở trong trạng thái an toàn:
Nếu tồn tại một chuỗi an tồn của tất cả các tiến trình.
Chuỗi tiến trình là một dãy các tiến trình thực hiện
theo thứ tự từ đâu đến cuối.
6.1. Safe State (2)
- Là an tồn nếu với mỗi Pi, tài ngun u cầu có thể đƣợc cung cấp bởi tài nguyên khả dụng (chƣa phân phối cho tiến trình nào) hiện tại. Và các tài nguyên đang đƣợc giữ bởi Pi, với j<l.
- Nếu tài nguyên Pi cần đang bị Pj giữ thì nó có thể đợi cho đến khi tất cả
các Pj kết thúc.
- Khi Pj kết thúc,
o Pi Có thể giành đƣợc các tài nguyên cần thiết, Thực hiện, rồi trả lại
các tài nguyên đó và kết thúc.
o Khi Pi kết thúc, P(i+1) có thể giành đƣợc tài nguyên cần thiết, .
6.1. Safe State (3)
- Nếu hệ thống ở trạng thái an tồn -> Khơng có deadlock.
- Nếu hệ thống ở trạng thái khơng an tồn -> Có thể có deadlock.
- Sự tránh khỏi deadlock
o Đảm bảo rằng hệ thống sẽ không bao giờ bƣớc vào trạng thái khơng
an tồn.
o Mỗi loại tài nguyên có một cá thể giải thuật đô thị phân phối tài
nguyên.
o Mỗi loại tài nguyên có nhiều cá thể giải thuật chủ nhà băng.
6.1. Safe State (4)
- So sánh:
o Safe,
o Unsafe,
o Deadlock State
- Claim edge: Cạnh có thể yêu cầu (may request resource) biểu diễn bằng nét liền Pi - Rj
- Request edge: Cạnh yêu cầu tiến trình Pi đã yêu cầu tài nguyên Rj; biểu diễn bởi một đƣờng đứt nét Pi --> Ri
6.2. Giải thuật đô thị phân phối tài nguyên (1)
- Claim edge Request edge: Khi một tiến trình yêu cầu một tài nguyên.
- Request edge → Claim edge: Khi tài ngun đƣợc một tiến trình giải
phóng,
- Hệ thống
o Ở trong trạng thái an tồn khi đồ thị khơng chứa chu trình nào.
o Khi xét safe state, xem các cạnh có thể yêu cầu nhƣ là các cạnh yêu
cầu. (vì giống nhau về phƣơng, hƣớng)
6.2. Giải thuật đồ thị phân phối tài nguyên (2): Tránh DeadLock
- Giả sử P2 yêu cầu R2: Dù R2 vẫn đang tự do, vẫn khơng thể phân phối nó cho P2.Vì sẽ tạo ra một chu trình -> Hệ thống trong trạng thái khơng an toàn.
- Nếu P1 yêu cầu R2 và P2 yêu cầu R1 -> Thì deadlock sẽ xuất hiện.
Trạng thái khơng an tồn trong độ thị phân phối tài nguyên
6.3. Giải thuật chủ nhà bang (1)
- Banker Algorithm: Giải thuật có thể đƣợc sử dụng trong hệ thống nhà băng
Để đảm bảo rằng nhà băng không bao giờ phân phối quá số tiên khả dụng
và luôn thỏa mãn mọi yêu cầu từ các khách hàng.
- Tiến trình mới:
Phải khai báo số lƣợng tối đa cá thể của mỗi loại tài nguyên mà nó có thể
cần đến. Số này có thể vƣợt quá tổng tài nguyên trong hệ thống.
Khi tiến trình yêu cầu tài nguyên: Hệ thống phải xác định liệu sự phân
phối có giữ hệ thống trong trạng thái an tồn. Nếu có - phân phối tài ngun Nếu khơng - tiến trình phải chờ đến khi các tiến trình khác giải phóng đủ tài ngun.
6.3. Nhà băng giải thuật (2): Cấu trúc dữ liệu Giả thiết:
- n = số tiến trình,
- m = số loại tài nguyên.
o Available - Độ dài: Vectơ độ dài m. Nếu Available [j] = k; Có
―k‖ phiên bản của loại tài nguyên Rj khả dụng/có sẵn.
- Max: ―n x m‖ matrix - ma trận: Nếu Max [i, j] = k. Khi đó quá trình Pi có
- Phân bổ: ―n x m‖ matrix. Nếu phân bổ [i, j] = k. Khi đó Pi hiện đƣợc cấp phát k thể hiện
- Need: ―n x m‖ matrix. Nếu Need [i, j] = k, • Khi đó Pi có thể cần thêm k
thể hiện của Rj để hồn thành nhiệm vụ của nó.
- Need [i, j] = Max [i, j] – (Phân bổ) Allocation [i, j]
6.3. Giải thuật chủ nhà bang (3): Kiểm tra an toàn
- Ý tưởng: Chúng ta tìm một chuỗi an tồn.
Nếu tìm đƣợc, trạng thái hệ thống là an toàn,
Trái lại trạng thái là khơng an tốn.
1) Gán Work và Finish: Là các vectơ độ dài m và n. Khởi tạo: Work:=
Available Finish[i] := false với i = 1,2,
2) Tìm i thỏa mãn cả 2 điều kiện: (a) Finish[i] = false và (b) Needi < Work.
Nếu khơng có i nhƣ vậy, nhảy đến bƣớc 4.
3) Work: = Work + Allocation[i]
Finish[i]: = true
Nhảy đến bƣớc 2.
4) Nếu Finish[i] = true: Với tất cả i thì hệ thống ở trạng thái an toàn.
6.3. Giải thuật chủ nhà băng(3): Resource-Request Algorithm Pi (Thuật toán yêu cầu tài nguyên Pi)
Request = vector yêu cầu cho quá trình Pi.
- Nếu Requesti = k: Khi đó tiến trình Pi muốn k thể hiện • của loại tài nguyên Rj.
1) Nếu Requesti ≤ Needi: chuyển sang bƣớc 2. Nếu khơng, nêu tình trạng
lỗi. Vì quy trình đã vƣợt q u cầu tối đa của nó.
2) Nếu Requesti ≤ Available: chuyển sang bƣớc 3. Nếu khơng Pi phải đợi, vì
tài ngun khơng có sẵn.
3) Giả sử phân bổ các tài nguyên đƣợc yêu cầu cho Pi bằng cách sửa đổi
trạng thái nhƣ sau:
o Available = Available – Requesti (Sẵn có = Có sẵn - Yêu cầu);
Allocationi = Allocationi + Requesti;
o Needi = Needi – Requesti;
If unsafe (Nếu khơng an tồn) -> Pi phải đợi, và trạng thái phân bổ tài nguyên cũ đƣợc khôi phục
6.3. Giải thuật chủ nhà bang (4): Phân tích ví dụ
5 tiến trình: PO ... P4;
3 loại tài nguyên
o A (10 cá thể),
o B (5 cá thể),
o Và C (7 cá thể).
Giả sử Tại thời điểm TO:
6.3. Giải thuật chủ nhà bang (5): Phân tích ví dụ
• Need = Max - Allocation.
• Hệ thống đang ở trạng thái an tồn: Vì chuỗi <P1, P3, P4, P2, PO> Thỏa mãn các điều kiện an tồn.
- Kết quả vịng
finishP1=T
work3(5,3,2)
6.3. Giải thuật chủ nhà băng(7): Phân tích ví dụ: run test
Kết quả vòng 2:
finishP3 = T
work = (7,4,3)
Kết quả vòng 3:
finishP4 = T
work = (7,4,5)
6.3. Giải thuật chủ nhà băng (9): Phân tích ví dụ: run test
finishP2 = T
work = (10,4,5)
finis[5] = (T,T,T,T,T) => safe state
6.4. Giải thuật yêu cầu tài nguyên cho tiến trình Pi (1)
- Request = vecto yêu cầu cho tiến trình Pi.
Nếu Requesti [j]= k. Thì tiến trình Pi muốn k cá thể của loại tài nguyên Rj.
1) Nếu Requesti ≤ Needi,
Chuyển sang bƣớc 2.
Trái lại, dựng lên trạng thái lỗi vì tiến trình đã vƣợt quá yêu cầu tối
đa của nó.
2) Nếu Requesti ≤ Available: Chuyển sang bƣớc 3.
Trái lại Pi phải đợi vì tài nguyên chƣa sẵn sàng.
3) Giả định: Phân phối các tài nguyên cho Pi bằng cách sửa trạng thái nhƣ
sau:
• Available = Available - Requesti ; • Allocationi= Allocationi + Requesti ; • Needi = Needi - Requesti ;
o Nếu an toàn ->Phân phối tài nguyên cho Pi.
o Nếu khơng an tồn -> Pi phải đợi: Và trạng thái phân phối tài
nguyên cũ đƣợc phục hồi.
6.4. Giải thuật yêu cầu tài nguyên cho tiến trình Pi (2)
- P1 yêu cầu (1,0,2)
• Kiếm tra Request ≤ Need <-> (1,0,2) ≤ (1,2,2) -> true.
• Kiểm tra Request ≤ Available <-> (1,0,2) ≤ (3,3,2) -> true: Giả sử đáp ứng yêu cầu, →Hệ thống sẽ đến trạng thái sau:
• Việc thực hiện giải thuật an tồn cho thấy: Chuỗi <P1, P3, P4, PO, P2> vẫn thỏa mãn các u cầu an tồn có thể chấp nhận ngay yêu cầu từ P1
6.4.Phân tích ví dụ: Allocation (1 0 2) to P1 có an tồn khơng?
• Nếu P1 yêu cầu tài nguyên tối đa, có thể hồn thành
6.4. Phân tích ví dụ: Run Safety Test
6.4. Phân tích ví dụ: Allocate to P1, Then
6.4. Phân tích ví dụ: Release – P1 Finishes
• NOW P3: có thể có đƣợc tài ngun tối đa • và phát hành
6.4. Phân tích ví dụ: Release - P3 Finishes
6.4. Phân tích ví dụ: Release - P4
Giờ đây P2 có thể nhận đƣợc tối đa tài nguyên và giải phóng
6.4. Phân tích ví dụ: Release - P2 Finishes
Bây giờ P0 có thể thu đƣợc các tài nguyên tối đa và giải phóng.