Thảo luận Bài 8
+92
lengocthuthao89 (i11c)
Đinh Đông Dương
LeMinhDuc (I11C)
letannghia(I12A)
nguyen_tuan_phat_I12A
DangLeHieu(I102C)
nguyenxuankieu(i12a)
huynhvanhung(I12A)
luthioanh-I12A
LeHoangYen_11H1010157
LuongHueChanh_I12A
letanthanh18(I12A)
lethianhnhat_I12A
TrinhVinhThanh (I12A)
lethanhsang_I12A
dangvannhan_11h1010085
HoNgocTuan142(I12A)
HoNguyenQuocTuy(I12A)
HuynhNguyenTrungHau_I12C
TranVanBao(I12A)
NguyenThanhCang(I12A)
NguyenXuanTri28
nguyenvanhonglac_0066
TranThiAnhDao89I12C
LeQuocKhanh-11H1010059
NguyenVanThang25 (I12A)
TranQuangHien40
VoThiHongNhung(I12A)
TranBinhCongLuanI12A
nguyenhuutho
phuongnguyen
vothingocthuy87(I11C)
Nguyen Doan Linh051(I11c)
LeLamThang (113A)
levanhop.it
tranthithanhuyen85 (I11C)
BuiHuongTra(I12A)
TrinhThiPhuongThaoI12C
TranTrungHienI12C
ĐoànMinhQuangI12A
plminhhoangI12A
NgoXuanQuoc_(102C)
dangmonghai(I12A)
NguyenQuocThang(I12C)
leminhtam13(I12A)
NguyenVinhQuang_I12A
lymydung_I12A
NguyenthechinhI12A
HUYNHMINHHAI(I12A)
phamduyI12A
DaoThaiHuyI12A
TranHuyCuong17 (I12A)
nguyenthingocmai_I12A
thailongI12C
nguyenthimao_I12A
hoxuanvu_I12A
NguyenHongHaiI12C
NguyenHoangThangI12A
LeThanhTung (I11C)
VoTrongQuyet-I12A
LeXuanHau (I12C)
quicly_I111c
tranvanthien27(I12C)
HUYNHDUCANHI12A
NgoPhuQuoc_I12C
maidangvu_I12A
BuiPhamAnBinh(I12A)
trinhvanminh_11h1010077
Nguyen Sy Hung I12A
LeThiMaiPhuongI12A
TranThiNgocQuynh(I12C)
nguyenthaihiep (I11C)
phanngocthinh(i12a)
hoanggiangI12C
DaoQuangTri38(I12A)
NguyenVanBenI12C
LePhucHiep(102C)
TranMinhTuan143(I12A)
LacChiHao(I12A)
DiepMaiNgocYen(I12A)
dangquoctri
NguyenTuanHai_I12A
TranThiMyKhanh(I12A)
huynhtamhaoI12A
NguyenPhuocNguyen (I12A)
nguyenthanhnghi_I12C
minhtam_I12C
LuongGiaDuc(I12A)
phamphihung55
PhamQuangHien_I12A
huynhthao.hc11th2a
Admin
96 posters
Trang 6 trong tổng số 11 trang
Trang 6 trong tổng số 11 trang • 1, 2, 3 ... 5, 6, 7 ... 9, 10, 11
ĐỊNH NGHĨA DEADLOCK. VẤN ĐỀ QUAN TRỌNG CỦA NÓ.
Định nghĩa: Là tình huống bị kẹt của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
Ví dụ: Tại ngã 4, 4 xe tại 4 hướng khác nhau cùng đến giao lộ, không xe nào chịu nhường đường cho xe nào nên tất cả đều phải chờ đến khi có đường trống để đi => kết quả là kẹt xe. Như thế tất cả 4 xe đều trong trạng thái chờ hay nói cách khác các tiến trình đang chờ tài nguyên của nhau và cứ xoay vòng và như thế tất cả tiến trình đều kẹt(deadlock).
Deadlock là một vấn đề quan trọng không những lĩnh vực công nghệ(chương trinh vận hành) mà còn ảnh hưởng đến các lĩnh vực khác trong đời sống(như là giao thông).
+ Công nghệ: nếu 1 chương trình đang vận hành một hệ thống gì đó quan trọng phức tạp và nguy hiểm thì tuy deadlock rất hiếm gặp nhưng khi xảy ra thì sẽ mang lại thiệt hại cực kì nghiêm trọng, có thể làm sụp đổ cả 1 hệ thống (vd: nhà máy điện hạt nhân nếu mà bị kẹt tiến trình => hệ thống làm lạnh các thanh nhiên liệu nguyên tử không hoạt động thì nhiệt độ tăng cao gây ra nổ hạt nhân. Chất phóng xạ lan ra ngoài sẽ tàn phá sự sống.)
+ Còn trong giao thông: sẽ gây kẹt xe làm trễ công việc => gây thiệt hại rất lớn về tiền bạc cũng như thời gian.
Ví dụ: Tại ngã 4, 4 xe tại 4 hướng khác nhau cùng đến giao lộ, không xe nào chịu nhường đường cho xe nào nên tất cả đều phải chờ đến khi có đường trống để đi => kết quả là kẹt xe. Như thế tất cả 4 xe đều trong trạng thái chờ hay nói cách khác các tiến trình đang chờ tài nguyên của nhau và cứ xoay vòng và như thế tất cả tiến trình đều kẹt(deadlock).
Deadlock là một vấn đề quan trọng không những lĩnh vực công nghệ(chương trinh vận hành) mà còn ảnh hưởng đến các lĩnh vực khác trong đời sống(như là giao thông).
+ Công nghệ: nếu 1 chương trình đang vận hành một hệ thống gì đó quan trọng phức tạp và nguy hiểm thì tuy deadlock rất hiếm gặp nhưng khi xảy ra thì sẽ mang lại thiệt hại cực kì nghiêm trọng, có thể làm sụp đổ cả 1 hệ thống (vd: nhà máy điện hạt nhân nếu mà bị kẹt tiến trình => hệ thống làm lạnh các thanh nhiên liệu nguyên tử không hoạt động thì nhiệt độ tăng cao gây ra nổ hạt nhân. Chất phóng xạ lan ra ngoài sẽ tàn phá sự sống.)
+ Còn trong giao thông: sẽ gây kẹt xe làm trễ công việc => gây thiệt hại rất lớn về tiền bạc cũng như thời gian.
LeThanhTung (I11C)- Tổng số bài gửi : 50
Join date : 28/08/2011
Deadlock Example with Reusable Resources
Deadlock Example with Reusable Resources
Process P1:
request(R1); ... request(R2); ... release(R2); ... release(R1);
R1 critical section
R2 critical section
Process P2:
request(R2); ... request(R1); ... release(R1); ... release(R2);
R1 critical section
R2 critical section
Mã giả ở trên cho thấy hai quá trình, mỗi trong số đó đã lồng nhau phần quan trọng cho các cặp cùng một nguồn tài nguyên. Họ yêu cầu tài nguyên theo một thứ tự khác nhau, vì vậy có khả năng deal lock. Giả sử P1 yêu cầu R1, và được cấp. Sau đó, P2 yêu cầu R2, và được cấp. Sau đó, P1 yêu cầu R2, và không thể được các cấp, vì R2 được tổ chức bởi P2, vì vậy khối P1. Sau đó, P2 yêu cầu R1, và đó có thể không được cấp vì R1 được tổ chức bởi P1, do đó, P2 blocks. Hai quá trình lưu ý deadlocked.
Process P1:
request(R1); ... request(R2); ... release(R2); ... release(R1);
R1 critical section
R2 critical section
Process P2:
request(R2); ... request(R1); ... release(R1); ... release(R2);
R1 critical section
R2 critical section
Mã giả ở trên cho thấy hai quá trình, mỗi trong số đó đã lồng nhau phần quan trọng cho các cặp cùng một nguồn tài nguyên. Họ yêu cầu tài nguyên theo một thứ tự khác nhau, vì vậy có khả năng deal lock. Giả sử P1 yêu cầu R1, và được cấp. Sau đó, P2 yêu cầu R2, và được cấp. Sau đó, P1 yêu cầu R2, và không thể được các cấp, vì R2 được tổ chức bởi P2, vì vậy khối P1. Sau đó, P2 yêu cầu R1, và đó có thể không được cấp vì R1 được tổ chức bởi P1, do đó, P2 blocks. Hai quá trình lưu ý deadlocked.
DiepMaiNgocYen(I12A)- Tổng số bài gửi : 27
Join date : 23/02/2012
Age : 35
Đến từ : Long Xuyên - An Giang
Thuật giải tránh deadlock RAG
Thuật giải tránh deadlock RAG (áp dụng cho trường hợp loại tài nguyên chỉ có 1 phiên bản) nếu có nhiều phiên bản thuật giải này không dùng được:
- Trên RAG, lúc đầu tất cả nhu cầu về tài nguyên của tiến trình phải được khai báo trước bằng các Cung Nhu cầu (Claim edge) Pi • • •> Rj chỉ báo rằng Pi có thể sẽ yêu cầu Rj - Cung Nhu cầu Pi • • •> Rj được chuyển thành Cung Yêu cầu (Request edge) Pi • • •> Rj khi Pi thực sự bắt đầu cần đến Rj . - Nếu yêu cầu Pi • • •> Rj được HĐH đáp ứng, cung Pi • • •> Rj chuyển thành Cung Ấn định (Assignment edge) Pi <• • • Rj nối phiên bản duy nhất của Rj với Pi . - Khi HĐH xét yêu cầu Pi • • •>Rj. Hệ chỉ cấp phát Rj cho Pi nếu Cung Ấn định Pi <• • • Rj không tạo ra vòng tròn đồng hướng trong RAG (xét cả các Cung Nhu cầu). - Thuật giải có độ phức tạp o(n²) với n là số tiến trình trong hệ. Ví dụ trách deadlock dùng RAG: Đầu tiên khai báo tất cả các nhu cầu của P1 và P2:P1 và P2 có thể sử dụng R1,R2.
nguyenhuutho- Tổng số bài gửi : 31
Join date : 09/03/2012
Re: Thảo luận Bài 8
Deadlock : mỗi tiến trình trong tập tiến trình đều chờ cấp phát một tài nguyên hiện đang bị một tiến trình khác cũng ở trong trạng thái block chiếm giữ. Vì vậy không có 1 tiến trình nào có thể tiếp tục hoặc giải phóng tài nguyên cho tiến trình khác sử dụng.Admin đã viết:Thảo luận những vấn đề liên quan đến Bài 8.
vd: trong 1 bàn ăn có 5 người nhưng có 1 đôi đũa gắp thức ăn, 2 trong số 5 người mỗi người giữ 1 chiếc đũa và không ai nhường ai. Như vậy không ai có thế gắp được thức ăn.
Điều kiện xuất hiện deadlock
Có 4 điều kiện cần để xảy ra tình trạng tắc nghẽn( deadlock):
1. Tiến trình có sử dụng tài nguyên không thể chia sẻ
2. Tiến trình chiếm giữ và yêu cầu thêm tài nguyên
3. Không thu hồi tài nguyên từ các tiến trình đang giữ chúng
4. Tồn tại một chu trình trong đồ thị cấp phát tài nguyên
Khi có đủ 4 điều kiện này, thì tắc nghẽn xảy ra. Nếu thiếu một trong 4 điều kiện trên thì không có tắc nghẽn.
1. Tiến trình có sử dụng tài nguyên không thể chia sẻ
2. Tiến trình chiếm giữ và yêu cầu thêm tài nguyên
3. Không thu hồi tài nguyên từ các tiến trình đang giữ chúng
4. Tồn tại một chu trình trong đồ thị cấp phát tài nguyên
Khi có đủ 4 điều kiện này, thì tắc nghẽn xảy ra. Nếu thiếu một trong 4 điều kiện trên thì không có tắc nghẽn.
Các phương pháp ngăn chặn Deadlock
Có 4 phương pháp để ngăn chặn tắc nghẽn: Ngăn chặn hình thành tắc nghẽn, tránh tắc nghẽn, phát hiện tắc nghẽn và hiệu chỉnh tắc nghẽn
1. Ngăn chặn tắc nghẽn:
- Tài nguyên không thể chia sẻ: nhìn chung gần như không thể tránh tình trạng này vì bản chất tài nguyên là có hạn
- Sự chiếm giữ và yêu cầu thêm tài nguyên: phải bảo đảm rằng mỗi khi tiến trình yêu cầu thêm một tài nguyên thì nó không chiếm giữ các tài nguyên khác
- Không thu hồi tài nguyên :cho phép hệ thống được thu hồi tài nguyên từ các tiến trình bị khóa và cấp phát trở lại cho các tiến trình khi nó thoát khỏi tình trạng bị khóa.
- Tồn tại một chu kỳ : tránh tạo chu kỳ trong đồ thị bằng cách cấp phát tài nguyên theo một sự phân cấp
2. Tránh tắc nghẽn: là loại bỏ tất cả các cơ hội có thể dẫn đến tắc nghẽn trong tương lai.
3. Phát hiện tắc nghẽn:
4. Hiệu chỉnh tắc nghẽn:
- Đình chỉ hoạt động của các tiến trình liên quan có thể sử dụng 1 trong 2 phương pháp
+ Đình chỉ tất cả tiến trình trong tình trạng tắc nghẽn
+ Đình chỉ từng tiến trình liên quan cho tới khi không còn chu trình nào gây tắc nghẽn
- Thu hồi tài nguyên: Có thể hiệu chỉnh tắc nghẽn bằng cách thu hồi một số tài nguyên từ các tiến trình và cấp phát tài nguyên này cho các tiến trình khác cho tới khi loại bỏ được chu trình tắc nghẽn.
1. Ngăn chặn tắc nghẽn:
- Tài nguyên không thể chia sẻ: nhìn chung gần như không thể tránh tình trạng này vì bản chất tài nguyên là có hạn
- Sự chiếm giữ và yêu cầu thêm tài nguyên: phải bảo đảm rằng mỗi khi tiến trình yêu cầu thêm một tài nguyên thì nó không chiếm giữ các tài nguyên khác
- Không thu hồi tài nguyên :cho phép hệ thống được thu hồi tài nguyên từ các tiến trình bị khóa và cấp phát trở lại cho các tiến trình khi nó thoát khỏi tình trạng bị khóa.
- Tồn tại một chu kỳ : tránh tạo chu kỳ trong đồ thị bằng cách cấp phát tài nguyên theo một sự phân cấp
2. Tránh tắc nghẽn: là loại bỏ tất cả các cơ hội có thể dẫn đến tắc nghẽn trong tương lai.
3. Phát hiện tắc nghẽn:
4. Hiệu chỉnh tắc nghẽn:
- Đình chỉ hoạt động của các tiến trình liên quan có thể sử dụng 1 trong 2 phương pháp
+ Đình chỉ tất cả tiến trình trong tình trạng tắc nghẽn
+ Đình chỉ từng tiến trình liên quan cho tới khi không còn chu trình nào gây tắc nghẽn
- Thu hồi tài nguyên: Có thể hiệu chỉnh tắc nghẽn bằng cách thu hồi một số tài nguyên từ các tiến trình và cấp phát tài nguyên này cho các tiến trình khác cho tới khi loại bỏ được chu trình tắc nghẽn.
Re: Thảo luận Bài 8
- Định nghĩa Deadlock (Kẹt khoá): Tình huống bị kẹt của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
- Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ xảy ra.
+Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-sharable), nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được sử dụng nó.
+Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm bởi tiến trình khác.
+Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dụng xong.
+Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên là { P1 , P2, ... , Pn }, khi đó P1 chờ TN giữ bởi P2 , tiến trình P2 chờ TN giữ bởi P3 , ... , Pn chờ P1 .
VD:nhiều xe qua cầu hẹp cùng một lúc hoặc ngã tư giờ cao điểm.
- Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ xảy ra.
+Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-sharable), nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được sử dụng nó.
+Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm bởi tiến trình khác.
+Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dụng xong.
+Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên là { P1 , P2, ... , Pn }, khi đó P1 chờ TN giữ bởi P2 , tiến trình P2 chờ TN giữ bởi P3 , ... , Pn chờ P1 .
VD:nhiều xe qua cầu hẹp cùng một lúc hoặc ngã tư giờ cao điểm.
VoThiHongNhung(I12A)- Tổng số bài gửi : 20
Join date : 20/02/2012
Giải pháp ngăn Deadlock
Phần lớn, chúng ta có thể giải quyết vấn đề deadlock theo một trong ba cách:
• Chúng ta có thể sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock
• Chúng ta có thể cho phép hệ thống đi vào trạng thái deadlock, phát hiện nó và phục hồi.
• Chúng ta có thể bỏ qua hoàn toàn 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.
• Chúng ta sẽ tìm hiểu vắn tắt mỗi phương pháp. Sau đó, chúng ta sẽ trình bày các giải thuật một cách chi tiết trong các phần sau đây.
Để đảm bảo deadlock không bao giờ xảy ra, hệ thống có thể dùng kế hoạch ngăn chặn hay tránh deadlock. Ngăn chặn deadlock là một tập hợp các phương pháp để đảm bảo rằng ít nhất một điều kiện cần không thể xảy ra. Các phương pháp này ngăn chặn deadlocks bằng cách ràng buộc yêu cầu về tài nguyên được thực hiện như thế nào. Chúng ta thảo luận phương pháp này trong phần sau.
Ngược lại, tránh deadlock yêu cầu hệ điều hành cung cấp những thông tin bổ sung tập trung vào loại tài nguyên nào một quá trình sẽ yêu cầu và sử dụng trong thời gian sống của nó. Với những kiến thức bổ sung này, chúng ta có thể quyết định đối với mỗi yêu cầu quá trình nên chờ hay không. Để quyết định yêu cầu hiện tại có thể được thoả mãn hay phải bị trì hoãn, hệ thống phải xem xét tài nguyên hiện có, tài nguyên hiện cấp phát cho mỗi quá trình, và các yêu cầu và giải phóng tương lai của mỗi quá trình.
Nếu một hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock thì trường hợp deadlock có thể xảy ra. Trong môi trường này, hệ thống có thể cung cấp một giải thuật để xem xét trạng thái của hệ thống để xác định deadlock có xảy ra hay không và giải thuật phục hồi từ deadlock.
Nếu hệ thống không đảm bảo rằng deadlock sẽ không bao giờ xảy ra và cũng không cung cấp một cơ chế để phát hiện và phục hồi deadlock thì có thể dẫn đến trường hợp hệ thống ở trong trạng thái deadlock. Trong trường hợp này, deadlock không được phát hiện sẽ làm giảm năng lực hệ thống vì tài nguyên đang được giữ bởi những quá trình mà chúng không thể thực thi, đi vào trạng thái deadlock. Cuối cùng, hệ thống sẽ dừng các chức năng và cần được khởi động lại bằng thủ công.
Mặc dù phương pháp này dường như không là tiếp cận khả thi đối với vấn đề deadlock nhưng nó được dùng trong một số hệ điều hành. Trong nhiều hệ thống, deadlock xảy ra không thường xuyên; do đó phương pháp này là rẻ hơn chi phí cho phương pháp ngăn chặn deadlock, tránh deadlock, hay phát hiện và phục hồi deadlock mà chúng phải được sử dụng liên tục. Trong một số trường hợp, hệ thống ở trong trạng thái cô đặc nhưng không ở trạng thái deadlock. Như thí dụ, xem xét một quá trình thời thực chạy tại độ ưu tiên cao nhất (hay bất cứ quá trình đang chạy trên bộ định thời biểu không trưng dụng) và không bao giờ trả về điều khiển đối với hệ điều hành. Do đó, hệ thống phải có phương pháp phục hồi bằng thủ công cho các điều kiện không deadlock và có thể đơn giản sử dụng các kỹ thuật đó cho việc phục hồi deadlock.
• Chúng ta có thể sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock
• Chúng ta có thể cho phép hệ thống đi vào trạng thái deadlock, phát hiện nó và phục hồi.
• Chúng ta có thể bỏ qua hoàn toàn 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.
• Chúng ta sẽ tìm hiểu vắn tắt mỗi phương pháp. Sau đó, chúng ta sẽ trình bày các giải thuật một cách chi tiết trong các phần sau đây.
Để đảm bảo deadlock không bao giờ xảy ra, hệ thống có thể dùng kế hoạch ngăn chặn hay tránh deadlock. Ngăn chặn deadlock là một tập hợp các phương pháp để đảm bảo rằng ít nhất một điều kiện cần không thể xảy ra. Các phương pháp này ngăn chặn deadlocks bằng cách ràng buộc yêu cầu về tài nguyên được thực hiện như thế nào. Chúng ta thảo luận phương pháp này trong phần sau.
Ngược lại, tránh deadlock yêu cầu hệ điều hành cung cấp những thông tin bổ sung tập trung vào loại tài nguyên nào một quá trình sẽ yêu cầu và sử dụng trong thời gian sống của nó. Với những kiến thức bổ sung này, chúng ta có thể quyết định đối với mỗi yêu cầu quá trình nên chờ hay không. Để quyết định yêu cầu hiện tại có thể được thoả mãn hay phải bị trì hoãn, hệ thống phải xem xét tài nguyên hiện có, tài nguyên hiện cấp phát cho mỗi quá trình, và các yêu cầu và giải phóng tương lai của mỗi quá trình.
Nếu một hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock thì trường hợp deadlock có thể xảy ra. Trong môi trường này, hệ thống có thể cung cấp một giải thuật để xem xét trạng thái của hệ thống để xác định deadlock có xảy ra hay không và giải thuật phục hồi từ deadlock.
Nếu hệ thống không đảm bảo rằng deadlock sẽ không bao giờ xảy ra và cũng không cung cấp một cơ chế để phát hiện và phục hồi deadlock thì có thể dẫn đến trường hợp hệ thống ở trong trạng thái deadlock. Trong trường hợp này, deadlock không được phát hiện sẽ làm giảm năng lực hệ thống vì tài nguyên đang được giữ bởi những quá trình mà chúng không thể thực thi, đi vào trạng thái deadlock. Cuối cùng, hệ thống sẽ dừng các chức năng và cần được khởi động lại bằng thủ công.
Mặc dù phương pháp này dường như không là tiếp cận khả thi đối với vấn đề deadlock nhưng nó được dùng trong một số hệ điều hành. Trong nhiều hệ thống, deadlock xảy ra không thường xuyên; do đó phương pháp này là rẻ hơn chi phí cho phương pháp ngăn chặn deadlock, tránh deadlock, hay phát hiện và phục hồi deadlock mà chúng phải được sử dụng liên tục. Trong một số trường hợp, hệ thống ở trong trạng thái cô đặc nhưng không ở trạng thái deadlock. Như thí dụ, xem xét một quá trình thời thực chạy tại độ ưu tiên cao nhất (hay bất cứ quá trình đang chạy trên bộ định thời biểu không trưng dụng) và không bao giờ trả về điều khiển đối với hệ điều hành. Do đó, hệ thống phải có phương pháp phục hồi bằng thủ công cho các điều kiện không deadlock và có thể đơn giản sử dụng các kỹ thuật đó cho việc phục hồi deadlock.
TranQuangHien40- Tổng số bài gửi : 21
Join date : 22/02/2012
4 cách ngăn chặn Deadlock.
Để ngăn chặn Deadlock ta phải làm sao cho ít nhất 1 trong 4 điều kiện dẫn đến Deadlock không
xảy ra. Cụ thể:
- Với Mutual Exclusion: Đảm bảo TN nào cũng dùng chung được cùng một lúc bởi nhiều tiến
trình.
- Với Hold and Wait:
1- Khi TT yêu cầu TN, nó không được giữ 1 TN nào khác.
2- TT phải yêu cầu và được cấp tất cả các TN mà nó cần ngay đầu công việc.
- Với No Preemption:
1- Khi TT giữ TN mà xin thêm nhưng không được, các TN mà nó giữ phải bị tiếm
quyền sử dụng và trả lại HĐH.
2- Khi TT xin thêm TN, nếu TN này đang được giữ bởi TT khác đang ở trạng thái chờ,
TN của TT khác này bị tiếm quyền sử dụng để cấp cho TT đang xin.
- Với Circular Wait: Cấp TN theo một thứ tự nào đấy.
xảy ra. Cụ thể:
- Với Mutual Exclusion: Đảm bảo TN nào cũng dùng chung được cùng một lúc bởi nhiều tiến
trình.
- Với Hold and Wait:
1- Khi TT yêu cầu TN, nó không được giữ 1 TN nào khác.
2- TT phải yêu cầu và được cấp tất cả các TN mà nó cần ngay đầu công việc.
- Với No Preemption:
1- Khi TT giữ TN mà xin thêm nhưng không được, các TN mà nó giữ phải bị tiếm
quyền sử dụng và trả lại HĐH.
2- Khi TT xin thêm TN, nếu TN này đang được giữ bởi TT khác đang ở trạng thái chờ,
TN của TT khác này bị tiếm quyền sử dụng để cấp cho TT đang xin.
- Với Circular Wait: Cấp TN theo một thứ tự nào đấy.
TranQuangHien40- Tổng số bài gửi : 21
Join date : 22/02/2012
Các điều kiện cần thiết để sinh ra deadlock
Trường hợp deadlock có thể phát sinh nếu bốn điều kiện sau xảy ra cùng một lúc trong hệ thống:
1)Loại trừ hỗ tương: ít nhất một tài nguyên phảiđược giữ trong chế độ không chia sẻ; nghĩa là, chỉ một quá trình tại cùng một thờiđiểm có thể sử dụng tài nguyên. Nếu một quá trình khác yêu cầu tài nguyênđó, quá trình yêu cầu phải tạm dừng chođến khi tài nguyên được giải phóng.
2)Giữ và chờ cấp thêm tài nguyên: quá trình phảiđang giữ ít nhất một tài nguyên vàđang chờ để nhận tài nguyên thêm mà hiệnđangđược giữ bởi quá trình khác.
3)Không đòi lại tài nguyên từ quá trình đang giữ chúng: Các tài nguyên không thể bị đòi lại; nghĩa là, tài nguyên có thể được giải phóng chỉ tự ý bởi quá trìnhđang giữ nó, sau khi quá trìnhđó hoàn thành tác vụ.
4)Tồn tại chu trình trong đồ thị cấp phát tài nguyên: một tập hợp các quá trình {P0, P1,…,Pn} đang chờ mà trong đó P0 đang chờ một tài nguyên được giữ bởi P1,P1 đang chờ tài nguyên đang giữ bởi P2,…,Pn-1 đang chờ tài nguyên đang được giữ bởi quá trình P0.
Tất cả bốn điều kiện phải cùng phát sinh để deadlock xảy ra.Điều kiện chờ đợi chương trình đưa đến điều kiện giữ-và-chờ vì thế bốn điều kiện không hoàn toàn độc lập.
- Nếu thiếu 1 trong 4 đk trên thì deadlock sẽ bị ngăn chặn
1)Loại trừ hỗ tương: ít nhất một tài nguyên phảiđược giữ trong chế độ không chia sẻ; nghĩa là, chỉ một quá trình tại cùng một thờiđiểm có thể sử dụng tài nguyên. Nếu một quá trình khác yêu cầu tài nguyênđó, quá trình yêu cầu phải tạm dừng chođến khi tài nguyên được giải phóng.
2)Giữ và chờ cấp thêm tài nguyên: quá trình phảiđang giữ ít nhất một tài nguyên vàđang chờ để nhận tài nguyên thêm mà hiệnđangđược giữ bởi quá trình khác.
3)Không đòi lại tài nguyên từ quá trình đang giữ chúng: Các tài nguyên không thể bị đòi lại; nghĩa là, tài nguyên có thể được giải phóng chỉ tự ý bởi quá trìnhđang giữ nó, sau khi quá trìnhđó hoàn thành tác vụ.
4)Tồn tại chu trình trong đồ thị cấp phát tài nguyên: một tập hợp các quá trình {P0, P1,…,Pn} đang chờ mà trong đó P0 đang chờ một tài nguyên được giữ bởi P1,P1 đang chờ tài nguyên đang giữ bởi P2,…,Pn-1 đang chờ tài nguyên đang được giữ bởi quá trình P0.
Tất cả bốn điều kiện phải cùng phát sinh để deadlock xảy ra.Điều kiện chờ đợi chương trình đưa đến điều kiện giữ-và-chờ vì thế bốn điều kiện không hoàn toàn độc lập.
- Nếu thiếu 1 trong 4 đk trên thì deadlock sẽ bị ngăn chặn
TranQuangHien40- Tổng số bài gửi : 21
Join date : 22/02/2012
Thuật giải nhà băng
Nhiều cấu trúc dữ liệu phải được duy trì để cài đặt giải thuật Banker. Những cấu
trúc dữ liệu này mã hoá trạng thái của hệ thống cấp phát tài nguyên. 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. Chúng ta cần các cấu
trúc dữ liệu sau:
• 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 ].
trúc dữ liệu này mã hoá trạng thái của hệ thống cấp phát tài nguyên. 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. Chúng ta cần các cấu
trúc dữ liệu sau:
• 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 ].
TranHuyCuong17 (I12A)- Tổng số bài gửi : 37
Join date : 16/02/2012
Age : 37
Đến từ : DLY™
4 điều kiện cần dẫn đến deadlock
1. Loại trừ lẫn nhau (Multual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-shareable), nghĩa là mỗi thời điểm chỉ có một tiến trình được sử dụng nó.
2. Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ tài nguyên và xin thêm tài nguyên đang bị độc chiếm bởi tiến trình khác.
3. Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiên trình này tự nguyên trả lại hệ thống sau khi dung xong.
4. Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên {P1,P2…Pn}, khi đó P1 chờ TN giữ bởi P2, tiến trình P2 chờ TN giữ bởi P3, …, Pn chờ P1.
Ví dụ dễ hiểu mà ai cũng biết đó là câu chuyện 2 con dê trắng & đen qua cầu, không con nào chịu nhường con nào thì cả 2 sẽ chẳng bao giờ thực hiện đc mục đích là qua được bờ bên kia cả => xảy ra deadlock. [cái kết này có hậu hơn trong chuyện gốc ]
=> Để ngăn chặn DeadLock thì chỉ cần phủ định một trong bốn điều kiện trên không cho chúng xảy ra đồng thời.
2. Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ tài nguyên và xin thêm tài nguyên đang bị độc chiếm bởi tiến trình khác.
3. Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiên trình này tự nguyên trả lại hệ thống sau khi dung xong.
4. Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên {P1,P2…Pn}, khi đó P1 chờ TN giữ bởi P2, tiến trình P2 chờ TN giữ bởi P3, …, Pn chờ P1.
Ví dụ dễ hiểu mà ai cũng biết đó là câu chuyện 2 con dê trắng & đen qua cầu, không con nào chịu nhường con nào thì cả 2 sẽ chẳng bao giờ thực hiện đc mục đích là qua được bờ bên kia cả => xảy ra deadlock. [cái kết này có hậu hơn trong chuyện gốc ]
=> Để ngăn chặn DeadLock thì chỉ cần phủ định một trong bốn điều kiện trên không cho chúng xảy ra đồng thời.
NguyenVanThang25 (I12A)- Tổng số bài gửi : 29
Join date : 15/02/2012
Age : 37
Re: Thảo luận Bài 8
Theo ý của thầy là nếu không có máy chiếu để trình chiếu bải giáng thì vẩn có một giải pháp khác là sử dụng bảng để trình bày bài giảng (tuy mất thời gian nhưng vẩn có thể thực hiện được). Tức là luôn có một phương án dự phong đúng không thưa thầy. Xin thầy giải thích thêm cho em về bài ví dụ thứ nhấtNguyen Doan Linh051(I11c) đã viết:CÂU 1: ĐỊNH NGHĨA DEADLOCK VÀ NÊU CÁC VÍ DỤ MINH HỌA HIỆN TƯỢNG
Định nghĩa: Tình huống bị kẹt của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện có thể chỉ được gây ra bởi một tiến trình khác
Ví dụ: 5 thầy giáo đều cần máy chiếu để dạy trong khi ở phòng thiết bị hiện tại chỉ có một máy chiếu=> dẫn đến tranh chấp.
2 chiếc xe đi ngược chiều cùng qua 1 cây cầu hẹp mà cầu chỉ có một làn xe nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa xảy ra kẹt xe vì không có xe nào chịu nhường xe nào
Admin
5 thày "tranh chấp" 1 máy chiếu không có nghĩa là "Kẹt khoá" (Deadlock) !
LeQuocKhanh-11H1010059- Tổng số bài gửi : 59
Join date : 16/02/2012
Age : 36
Đến từ : HCM
Phân tích khái niệm tài nguyên hệ thống.
- Các tài nguyên hệ thống được chia thành nhiều Loại, mỗi loại có 1 hoặc nhiều Phiên bản (Instances). Các tài nguyên hệ thống này cấp phát cho các tiến trình theo yêu cầu.
- Tài nguyên cùng loại: Giả sử máy có 3 ổ băng từ và có 3 tiến trình đang chạy. Mỗi tiến trình đang giữ 1 ổ băng.
- Tài nguyên khác loại: Giả sử có 1 máy in, 1 ổ băng từ. Tiến trình P1 đang giữ ổ băng, P2 giữ máy in.
- Tài nguyên cùng loại: Giả sử máy có 3 ổ băng từ và có 3 tiến trình đang chạy. Mỗi tiến trình đang giữ 1 ổ băng.
- Tài nguyên khác loại: Giả sử có 1 máy in, 1 ổ băng từ. Tiến trình P1 đang giữ ổ băng, P2 giữ máy in.
phuongnguyen- Tổng số bài gửi : 27
Join date : 17/02/2012
Thế nào là trạng thái an toàn của hệ thống
- Một trạng thái được gọi là an toàn “safe” nếu tồn tại ít nhất một cách mà trong một khoảng thời gian hữu hạn nào đó, hệ thống có thể cấp phát tài nguyên thỏa mãn cho tất cả process thực thi hoàn tất .
- Khi đó hệ thống tồn tại một Chuỗi an toàn {P1, P2, … , Pn } bao gồm tất cả các tiến trình sao cho với mỗi Pi, các tài nguyên mà nó yêu cầu có thể được đáp ứng bởi số lượng hiện có cộng thêm của tất cả các Pj mà j < i.
- Nếu các TN yêu cầu không có đủ, Pi phải chờ cho đến khi tất cả các Pj trả lại các TN mà chúng chiếm giữ.
- Khi Pi nhận được đủ TN cần thiết, nó sử dụng và trả lại HĐH để Pi+1 có thể vận hành, cứ như thế cho đến Pn
- Khi một process yêu cầu một tài nguyên đang sẵn có, 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.
- Khi đó hệ thống tồn tại một Chuỗi an toàn {P1, P2, … , Pn } bao gồm tất cả các tiến trình sao cho với mỗi Pi, các tài nguyên mà nó yêu cầu có thể được đáp ứng bởi số lượng hiện có cộng thêm của tất cả các Pj mà j < i.
- Nếu các TN yêu cầu không có đủ, Pi phải chờ cho đến khi tất cả các Pj trả lại các TN mà chúng chiếm giữ.
- Khi Pi nhận được đủ TN cần thiết, nó sử dụng và trả lại HĐH để Pi+1 có thể vận hành, cứ như thế cho đến Pn
- Khi một process yêu cầu một tài nguyên đang sẵn có, 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.
phuongnguyen- Tổng số bài gửi : 27
Join date : 17/02/2012
Phương thức xử trí Deadlock.
- Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ xảy ra.
- Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục (Recover).
- Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử trí thường trực).
- Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục (Recover).
- Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử trí thường trực).
TranThiAnhDao89I12C- Tổng số bài gửi : 25
Join date : 17/02/2012
Định nghĩa Deadlock
Deadlock: là tình huống kẹt tiến trình (process) với một tập các process bị blocked, mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang có.
Ví dụ 1
Giả sử hệ thống có 2 file trên đĩa.
P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.
Ví dụ 2
Semaphore A và B, khởi tạo bằng 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
Ví dụ 1
Giả sử hệ thống có 2 file trên đĩa.
P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.
Ví dụ 2
Semaphore A và B, khởi tạo bằng 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
TranThiAnhDao89I12C- Tổng số bài gửi : 25
Join date : 17/02/2012
Re: Thảo luận Bài 8
Thủ thuật phát hiện deadlock và phục hồi deadlock.
1. Thủ thuật phát hiện deadlock:
- Khi nào chúng ta cần 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 như thế nào?
+ Có bao nhiêu tiến trình sẽ bị ảnh hưởng bởi deadlock khi nó xảy ra ?
- Nếu deadlock xảy ra thường xuyên thì giải thuật phát hiện deadlock sẽ được thực hiện thường xuyên. Tài nguyên được cấp phát cho deadlock sẽ được rảnh rỗi cho đến khi deadlock bị phá vỡ. Ngoài ra, số lượng tiến trình tham gia vào trong chu trình deadlock có thể tăng lên.
- Deadlock xảy ra khi một tiến trình thực hiện yêu cầu mà không được cấp phát tài nguyên tức thì. Yêu cầu này có thể là yêu cầu cuối cùng hoàn thành một chuỗi các tiến trình chờ. Trong trường hợp này chúng ta có thể gọi giải thuật phát hiện deadlock mỗi khi yêu cầu cấp phát không được cấp phát tức thì. Chúng ta không chỉ biết được tập hợp các tiến trình bị deadlock mà còn xác định tiến trình đã gây ra deadlock (Trong thực tế, mỗi tiến trình trong suốt quá trình bị deadlock là một liên kết trong chu trình của đồ thị tài nguyên vì thế tất cả chúng gây ra deadlock). Nếu có nhiều loại tài nguyên khác nhau, một yêu cầu tạo ra một chu trình trong đồ thị tài nguyên, mỗi chu trình hoàn thành bởi các yêu cầu gần đây nhất và “gây ra” bởi một tiến trình có thể xác định.
- Tất nhiên, nếu thuật toán phát hiện deadlock được gọi cho mọi yêu cầu tài nguyên điều này có thể gây ra chi phí lớn trong thời gian tính toán. Một phương pháp để giảm chi phí là ta gọi giải thuật trong thời điểm ít thường xuyên hơn - ví dụ mỗi giờ hoặc bất cứ khi nào CPU sử dụng dưới 40%. Nếu giải thuật phát hiện deadlock được gọi vào thời điểm bất kỳ, có thể có nhiều chu trình trong đồ thị tài nguyên. Chúng ta không thể xác định được tiến trình nào “gây ra” deadlock.
2. Phục hồi deadlock:
- Khi giải thuật phát hiện deadlock xác định tồn tại một deadlock, có 2 cách để giải quyết:
+ Một là thông báo cho người điều hành biết deadlock xảy ra và để cho người điều hành khắc phục bằng tay.
+ Hai là để cho hệ thống phục hồi tự động. Có hai tùy chọn để phá vỡ deadlock. Một giải pháp đơn giản là hủy một hay nhiều tiến trình để phá vỡ tồn tại chu trình trong đồ thị cấp phát tài nguyên. Lựa chọn thứ hai là lấy lại một hay nhiều tài nguyên từ tiến trình deadlock
1. Thủ thuật phát hiện deadlock:
- Khi nào chúng ta cần 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 như thế nào?
+ Có bao nhiêu tiến trình sẽ bị ảnh hưởng bởi deadlock khi nó xảy ra ?
- Nếu deadlock xảy ra thường xuyên thì giải thuật phát hiện deadlock sẽ được thực hiện thường xuyên. Tài nguyên được cấp phát cho deadlock sẽ được rảnh rỗi cho đến khi deadlock bị phá vỡ. Ngoài ra, số lượng tiến trình tham gia vào trong chu trình deadlock có thể tăng lên.
- Deadlock xảy ra khi một tiến trình thực hiện yêu cầu mà không được cấp phát tài nguyên tức thì. Yêu cầu này có thể là yêu cầu cuối cùng hoàn thành một chuỗi các tiến trình chờ. Trong trường hợp này chúng ta có thể gọi giải thuật phát hiện deadlock mỗi khi yêu cầu cấp phát không được cấp phát tức thì. Chúng ta không chỉ biết được tập hợp các tiến trình bị deadlock mà còn xác định tiến trình đã gây ra deadlock (Trong thực tế, mỗi tiến trình trong suốt quá trình bị deadlock là một liên kết trong chu trình của đồ thị tài nguyên vì thế tất cả chúng gây ra deadlock). Nếu có nhiều loại tài nguyên khác nhau, một yêu cầu tạo ra một chu trình trong đồ thị tài nguyên, mỗi chu trình hoàn thành bởi các yêu cầu gần đây nhất và “gây ra” bởi một tiến trình có thể xác định.
- Tất nhiên, nếu thuật toán phát hiện deadlock được gọi cho mọi yêu cầu tài nguyên điều này có thể gây ra chi phí lớn trong thời gian tính toán. Một phương pháp để giảm chi phí là ta gọi giải thuật trong thời điểm ít thường xuyên hơn - ví dụ mỗi giờ hoặc bất cứ khi nào CPU sử dụng dưới 40%. Nếu giải thuật phát hiện deadlock được gọi vào thời điểm bất kỳ, có thể có nhiều chu trình trong đồ thị tài nguyên. Chúng ta không thể xác định được tiến trình nào “gây ra” deadlock.
2. Phục hồi deadlock:
- Khi giải thuật phát hiện deadlock xác định tồn tại một deadlock, có 2 cách để giải quyết:
+ Một là thông báo cho người điều hành biết deadlock xảy ra và để cho người điều hành khắc phục bằng tay.
+ Hai là để cho hệ thống phục hồi tự động. Có hai tùy chọn để phá vỡ deadlock. Một giải pháp đơn giản là hủy một hay nhiều tiến trình để phá vỡ tồn tại chu trình trong đồ thị cấp phát tài nguyên. Lựa chọn thứ hai là lấy lại một hay nhiều tài nguyên từ tiến trình deadlock
nguyenvanhonglac_0066- Tổng số bài gửi : 15
Join date : 16/02/2012
Các Bài Tập Về Thuật Giải Nhà Băng
Bài 1: Một hệ thống có 3 máy quét hình và 3 tiến trình P1, P2, P3 với trạng thái cấp phát tài nguyên tại thời điểm Ti thể hiện bằng các vector Allocation= (0,2,1), và Max(2,2,2). Dùng thuật giải nhà băng để:
a. Chứng minh trạng thái này an toàn.
b. Xác định có đáp ứng được hay không yêu cầu thêm 1 máy nữa của P2.
Giải:
a) Allocation= (0,2,1) và Max= (2,2,2)
Available= 3-(0+2+1)=0
Tiến trình Đang giữ Max Hệ có
P1 0 2 0
P2 2 2
P3 1 2
=> Need= (2,2,2) - (0,2,1)= (2,0,1)
Tiến trình Need
P1 2
P2 0
P3 1
Work >= Need(i) P(i) Allocation(i)
0 0 P2 2
2 1 P3 1
3 2 P1 0
Tồn tại chuỗi an toàn= {P2,P3,P1}. Vậy trạng thái hệ thống ở thời điểm Ti là an toàn.
b) Request(2)= 1
Need(2)= 0
=> Request(2)> Need(2) (1> 0)
Vậy không thể đáp ứng được yêu cầu thêm 1 máy nữa của P2.
Bài 2: Bài tập: hệ thống có 12 ổ băng và 3 tiến trình
dùng thuật giải nhà băng chứng minh trạng thái này an toàn
tiến trình Được cấp(ổ đĩa) tối đa cần(ổ đĩa)
P1 5 10
P2 2 4
P3 2 9
-Available=12-9=3
-Need=Max-Allocation
P1=10-5=5
P2=4-2=2
P3=9-2=7
work ≥ Need Pi Allocation(i)
3 2 P2 2
5 5 P1 5
10 7 P3 2
-Tồn tại chuỗi an toàn T0={P2,P1,P3}
Vậy trạng thái tại thời điểm T0 là an toàn.
Bai 3:
Một hệ thống có 3 máy quét hình và 2 tiến trình P1,P2 với trạng thái cấp phát tài nguyên tại thời điểm Ti thể hiện bằng các vector Allocation(1,1) và Max(2,2). Dùng thuật giải nhà băng để:
a) Chứng minh trạng thái an toàn
b) Xác định có nên đáp ứng hay không yêu cầu cấp thêm 1 máy nữa P2 ./.
Giải:
a) Allocation=(1,1), Max=(2,2);
Available=3-(1+1)=1;
Ta có: Need(i)=Max(i)-Allocation(i)
=> p1=(2-1)=1; p2=(2-1)=1;
Work >= Need(i) P(i ) Allocation
1 1 p1 1
2 1 p2 1
. Tồn tại chuỗi an toàn=.
Vậy trạng thái hệ thống ở thời điểm Ti là an toàn.
b)
Request(2)<=Need(2) vì 1<=1
Request(2)<=Available vì 1<=1
Trạng thái mới:
Allocation(1,1+1)(vì thêm 1 máy nữa nên cộng thêm 1)
Available=3-(1+1+1)=0
Need(i):
p1 1
p2 0
Work >= Need(i) P(i) Allocation
0 0 p2 2
2 1 p1 1
Tồn tại trạng thái an toàn=
Vậy trạng thái hệ thống ở thời điểm Ti là an toàn.
a. Chứng minh trạng thái này an toàn.
b. Xác định có đáp ứng được hay không yêu cầu thêm 1 máy nữa của P2.
Giải:
a) Allocation= (0,2,1) và Max= (2,2,2)
Available= 3-(0+2+1)=0
Tiến trình Đang giữ Max Hệ có
P1 0 2 0
P2 2 2
P3 1 2
=> Need= (2,2,2) - (0,2,1)= (2,0,1)
Tiến trình Need
P1 2
P2 0
P3 1
Work >= Need(i) P(i) Allocation(i)
0 0 P2 2
2 1 P3 1
3 2 P1 0
Tồn tại chuỗi an toàn= {P2,P3,P1}. Vậy trạng thái hệ thống ở thời điểm Ti là an toàn.
b) Request(2)= 1
Need(2)= 0
=> Request(2)> Need(2) (1> 0)
Vậy không thể đáp ứng được yêu cầu thêm 1 máy nữa của P2.
Bài 2: Bài tập: hệ thống có 12 ổ băng và 3 tiến trình
dùng thuật giải nhà băng chứng minh trạng thái này an toàn
tiến trình Được cấp(ổ đĩa) tối đa cần(ổ đĩa)
P1 5 10
P2 2 4
P3 2 9
-Available=12-9=3
-Need=Max-Allocation
P1=10-5=5
P2=4-2=2
P3=9-2=7
work ≥ Need Pi Allocation(i)
3 2 P2 2
5 5 P1 5
10 7 P3 2
-Tồn tại chuỗi an toàn T0={P2,P1,P3}
Vậy trạng thái tại thời điểm T0 là an toàn.
Bai 3:
Một hệ thống có 3 máy quét hình và 2 tiến trình P1,P2 với trạng thái cấp phát tài nguyên tại thời điểm Ti thể hiện bằng các vector Allocation(1,1) và Max(2,2). Dùng thuật giải nhà băng để:
a) Chứng minh trạng thái an toàn
b) Xác định có nên đáp ứng hay không yêu cầu cấp thêm 1 máy nữa P2 ./.
Giải:
a) Allocation=(1,1), Max=(2,2);
Available=3-(1+1)=1;
Ta có: Need(i)=Max(i)-Allocation(i)
=> p1=(2-1)=1; p2=(2-1)=1;
Work >= Need(i) P(i ) Allocation
1 1 p1 1
2 1 p2 1
. Tồn tại chuỗi an toàn=
Vậy trạng thái hệ thống ở thời điểm Ti là an toàn.
b)
Request(2)<=Need(2) vì 1<=1
Request(2)<=Available vì 1<=1
Trạng thái mới:
Allocation(1,1+1)(vì thêm 1 máy nữa nên cộng thêm 1)
Available=3-(1+1+1)=0
Need(i):
p1 1
p2 0
Work >= Need(i) P(i) Allocation
0 0 p2 2
2 1 p1 1
Tồn tại trạng thái an toàn=
Vậy trạng thái hệ thống ở thời điểm Ti là an toàn.
PhamQuangHien_I12A- Tổng số bài gửi : 62
Join date : 22/02/2012
Age : 35
Đến từ : Quãng Ngãi
Re: Thảo luận Bài 8
Ngoài 4 biện pháp chúng mình nêu phía trên, sử dụng biến trạng thái (Status) có thể là một biện pháp được xem chống deadlock khá hiệu quả...
- Một trạng thái được gọi là “safe” nếu tồn tại ít nhấtmột cách mà trong một khoảng thời gian hữu hạn nào đó, hệ thống có thể cấp phát tài nguyên thỏa mãn cho tất cả process thực thi hoàn tất .
- Khi một process yêu cầu một tài nguyên đang sẵn có, 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.
- Nếu hệ thống đang ở trạng thái “safe” ⇒ không deadlock.
- Nếu hệ thống đang ở trạng thái “unsafe” ⇒ có khả năng dẫn đến deadlock.
- Deadlock avoidance ⇒ bảo đảm hệ thống không bao giờ đi đến trạng thái “unsafe”.
------------------------------------------------------------------------------------------------------------------------------
- Một trạng thái được gọi là “safe” nếu tồn tại ít nhấtmột cách mà trong một khoảng thời gian hữu hạn nào đó, hệ thống có thể cấp phát tài nguyên thỏa mãn cho tất cả process thực thi hoàn tất .
- Khi một process yêu cầu một tài nguyên đang sẵn có, 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.
- Nếu hệ thống đang ở trạng thái “safe” ⇒ không deadlock.
- Nếu hệ thống đang ở trạng thái “unsafe” ⇒ có khả năng dẫn đến deadlock.
- Deadlock avoidance ⇒ bảo đảm hệ thống không bao giờ đi đến trạng thái “unsafe”.
------------------------------------------------------------------------------------------------------------------------------
"For you see, each day I love you more
Today more than yesterday and less than tomorrow."
Today more than yesterday and less than tomorrow."
NgoXuanQuoc_(102C)- Tổng số bài gửi : 42
Join date : 17/02/2011
Age : 36
Giải pháp ngăn Deadlock
Phần lớn, chúng ta có thể giải quyết vấn đề deadlock theo một trong ba cách:
• Chúng ta có thể sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock
• Chúng ta có thể cho phép hệ thống đi vào trạng thái deadlock, phát hiện nó và phục hồi.
• Chúng ta có thể bỏ qua hoàn toàn 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.
• Chúng ta sẽ tìm hiểu vắn tắt mỗi phương pháp. Sau đó, chúng ta sẽ trình bày các giải thuật một cách chi tiết trong các phần sau đây.
Để đảm bảo deadlock không bao giờ xảy ra, hệ thống có thể dùng kế hoạch ngăn chặn hay tránh deadlock. Ngăn chặn deadlock là một tập hợp các phương pháp để đảm bảo rằng ít nhất một điều kiện cần không thể xảy ra. Các phương pháp này ngăn chặn deadlocks bằng cách ràng buộc yêu cầu về tài nguyên được thực hiện như thế nào. Chúng ta thảo luận phương pháp này trong phần sau.
Ngược lại, tránh deadlock yêu cầu hệ điều hành cung cấp những thông tin bổ sung tập trung vào loại tài nguyên nào một quá trình sẽ yêu cầu và sử dụng trong thời gian sống của nó. Với những kiến thức bổ sung này, chúng ta có thể quyết định đối với mỗi yêu cầu quá trình nên chờ hay không. Để quyết định yêu cầu hiện tại có thể được thoả mãn hay phải bị trì hoãn, hệ thống phải xem xét tài nguyên hiện có, tài nguyên hiện cấp phát cho mỗi quá trình, và các yêu cầu và giải phóng tương lai của mỗi quá trình.
Nếu một hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock thì trường hợp deadlock có thể xảy ra. Trong môi trường này, hệ thống có thể cung cấp một giải thuật để xem xét trạng thái của hệ thống để xác định deadlock có xảy ra hay không và giải thuật phục hồi từ deadlock.
Nếu hệ thống không đảm bảo rằng deadlock sẽ không bao giờ xảy ra và cũng không cung cấp một cơ chế để phát hiện và phục hồi deadlock thì có thể dẫn đến trường hợp hệ thống ở trong trạng thái deadlock. Trong trường hợp này, deadlock không được phát hiện sẽ làm giảm năng lực hệ thống vì tài nguyên đang được giữ bởi những quá trình mà chúng không thể thực thi, đi vào trạng thái deadlock. Cuối cùng, hệ thống sẽ dừng các chức năng và cần được khởi động lại bằng thủ công.
Mặc dù phương pháp này dường như không là tiếp cận khả thi đối với vấn đề deadlock nhưng nó được dùng trong một số hệ điều hành. Trong nhiều hệ thống, deadlock xảy ra không thường xuyên; do đó phương pháp này là rẻ hơn chi phí cho phương pháp ngăn chặn deadlock, tránh deadlock, hay phát hiện và phục hồi deadlock mà chúng phải được sử dụng liên tục. Trong một số trường hợp, hệ thống ở trong trạng thái cô đặc nhưng không ở trạng thái deadlock. Như thí dụ, xem xét một quá trình thời thực chạy tại độ ưu tiên cao nhất (hay bất cứ quá trình đang chạy trên bộ định thời biểu không trưng dụng) và không bao giờ trả về điều khiển đối với hệ điều hành. Do đó, hệ thống phải có phương pháp phục hồi bằng thủ công cho các điều kiện không deadlock và có thể đơn giản sử dụng các kỹ thuật đó cho việc phục hồi deadlock.
• Chúng ta có thể sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock
• Chúng ta có thể cho phép hệ thống đi vào trạng thái deadlock, phát hiện nó và phục hồi.
• Chúng ta có thể bỏ qua hoàn toàn 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.
• Chúng ta sẽ tìm hiểu vắn tắt mỗi phương pháp. Sau đó, chúng ta sẽ trình bày các giải thuật một cách chi tiết trong các phần sau đây.
Để đảm bảo deadlock không bao giờ xảy ra, hệ thống có thể dùng kế hoạch ngăn chặn hay tránh deadlock. Ngăn chặn deadlock là một tập hợp các phương pháp để đảm bảo rằng ít nhất một điều kiện cần không thể xảy ra. Các phương pháp này ngăn chặn deadlocks bằng cách ràng buộc yêu cầu về tài nguyên được thực hiện như thế nào. Chúng ta thảo luận phương pháp này trong phần sau.
Ngược lại, tránh deadlock yêu cầu hệ điều hành cung cấp những thông tin bổ sung tập trung vào loại tài nguyên nào một quá trình sẽ yêu cầu và sử dụng trong thời gian sống của nó. Với những kiến thức bổ sung này, chúng ta có thể quyết định đối với mỗi yêu cầu quá trình nên chờ hay không. Để quyết định yêu cầu hiện tại có thể được thoả mãn hay phải bị trì hoãn, hệ thống phải xem xét tài nguyên hiện có, tài nguyên hiện cấp phát cho mỗi quá trình, và các yêu cầu và giải phóng tương lai của mỗi quá trình.
Nếu một hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock thì trường hợp deadlock có thể xảy ra. Trong môi trường này, hệ thống có thể cung cấp một giải thuật để xem xét trạng thái của hệ thống để xác định deadlock có xảy ra hay không và giải thuật phục hồi từ deadlock.
Nếu hệ thống không đảm bảo rằng deadlock sẽ không bao giờ xảy ra và cũng không cung cấp một cơ chế để phát hiện và phục hồi deadlock thì có thể dẫn đến trường hợp hệ thống ở trong trạng thái deadlock. Trong trường hợp này, deadlock không được phát hiện sẽ làm giảm năng lực hệ thống vì tài nguyên đang được giữ bởi những quá trình mà chúng không thể thực thi, đi vào trạng thái deadlock. Cuối cùng, hệ thống sẽ dừng các chức năng và cần được khởi động lại bằng thủ công.
Mặc dù phương pháp này dường như không là tiếp cận khả thi đối với vấn đề deadlock nhưng nó được dùng trong một số hệ điều hành. Trong nhiều hệ thống, deadlock xảy ra không thường xuyên; do đó phương pháp này là rẻ hơn chi phí cho phương pháp ngăn chặn deadlock, tránh deadlock, hay phát hiện và phục hồi deadlock mà chúng phải được sử dụng liên tục. Trong một số trường hợp, hệ thống ở trong trạng thái cô đặc nhưng không ở trạng thái deadlock. Như thí dụ, xem xét một quá trình thời thực chạy tại độ ưu tiên cao nhất (hay bất cứ quá trình đang chạy trên bộ định thời biểu không trưng dụng) và không bao giờ trả về điều khiển đối với hệ điều hành. Do đó, hệ thống phải có phương pháp phục hồi bằng thủ công cho các điều kiện không deadlock và có thể đơn giản sử dụng các kỹ thuật đó cho việc phục hồi deadlock.
NguyenXuanTri28- Tổng số bài gửi : 39
Join date : 05/09/2011
Định Nghĩa, Ví dụ Deadlock
Định Nghĩa:
Deadlock: là tình huống kẹt tiến trình (process) với một tập các process bị blocked, mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang có.
Ví dụ 1
Giả sử hệ thống có 2 file trên đĩa.
P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.
Ví dụ 2
Semaphore A và B, khởi tạo bằng 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
Deadlock: là tình huống kẹt tiến trình (process) với một tập các process bị blocked, mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang có.
Ví dụ 1
Giả sử hệ thống có 2 file trên đĩa.
P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.
Ví dụ 2
Semaphore A và B, khởi tạo bằng 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
NguyenXuanTri28- Tổng số bài gửi : 39
Join date : 05/09/2011
Bốn điều kiện dẫn đến deadlock
- Mutual exclusion: với mỗi tài nguyên chỉ có một process sử dụng tại một thời điểm.
- Hold and wait: một process vẫn sở hữu tài nguyên đã được cấp phát trong khi yêu cầu một tài nguyên khác.
- No preemption: một tài nguyên không thể bị đoạt lại từ chính process đang sở hữu tài nguyên đó.
- Circular wait: tồn tại một chu trình khép kín các yêu cầu tài nguyên.
- Hold and wait: một process vẫn sở hữu tài nguyên đã được cấp phát trong khi yêu cầu một tài nguyên khác.
- No preemption: một tài nguyên không thể bị đoạt lại từ chính process đang sở hữu tài nguyên đó.
- Circular wait: tồn tại một chu trình khép kín các yêu cầu tài nguyên.
NguyenXuanTri28- Tổng số bài gửi : 39
Join date : 05/09/2011
Toan Post khong thao luan
Chán thế,sao ai cũng toàn post bài vô tội vạ thế.Không ai chịu thảo luận hết.Tài liêu lên google đầy.Post nhiều mà ai đọc không?
NguyenThanhCang(I12A)- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 35
Đến từ : Vũng Tàu
Re: Thảo luận Bài 8
Học deadlock rồi nhé,biết nguyên nhân vì sao deadlock và cách khắc phục deadlock.OK.Ứng dụng đi.nguyenthaihiep (I11C) đã viết:Để giải quyết deadlock chúng ta có thể thực hiện theo một trong các cách:
1. Sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo 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 hoàn toàn 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.
4. Tìm hiểu vắn tắt mỗi phương pháp. Sau đó, chúng ta sẽ trình bày các giải thuật một cách chi tiết.
- Nếu một hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock thì trường hợp deadlock có thể xảy ra. Trong môi trường này, hệ thống có thể cung cấp một giải thuật để xem xét trạng thái của hệ thống để xác định deadlock có thể xảy ra hay không và giải thuật phục hồi từ deadlock.
- Nếu hệ thống không đảm bảo rằng deadlock sẽ không bao giờ xảy ra và cũng không cung cấp một cơ chế phát hiện và phục hồi deadlock thì có thể dẫn đến trường hợp hệ thống ở trong trạng thái deadlock. Trong trường hợp này, deadlock không được phát hiện sẽ làm giảm năng lực hệ thống vì tài nguyên đang được giữ bởi những quá trình mà chúng không thể thực thi, đi vào trạng thái deadlock. Cuối cùng, hệ thống sẽ dừng các chức năg và cần được khởi động lại bằng thủ công.
Hàng ngày đi học đi làm ai trong chúng ta đều thấy cái cảnh kẹt xe lố lăng cũng bởi vì đâu:deadlock.Anh em cho biết cao kiến khắc phục tình trạng này.Bộ giao thông chắc cũng có người học Hệ điều hành, nhưng biết đâu anh em OU có sáng kiến đột phá mang tầm quốc tế thì sao.Mọi người cho ý kiến nhé.
NguyenThanhCang(I12A)- Tổng số bài gửi : 24
Join date : 23/02/2012
Age : 35
Đến từ : Vũng Tàu
Trang 6 trong tổng số 11 trang • 1, 2, 3 ... 5, 6, 7 ... 9, 10, 11
Similar topics
» THAO LUAN MON HOC
» Thảo luận Bài 4
» BAI 6: THAO LUAN BAI 6
» Các bạn tích cực và có đóng góp với lớp
» Thảo luận Đề thi Cuối kỳ
» Thảo luận Bài 4
» BAI 6: THAO LUAN BAI 6
» Các bạn tích cực và có đóng góp với lớp
» Thảo luận Đề thi Cuối kỳ
Trang 6 trong tổng số 11 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết