Nguyên lý Hệ điều hành - Chương 7: Bế tắc (Deadlocks)

pdf 11 trang vanle 3760
Bạn đang xem tài liệu "Nguyên lý Hệ điều hành - Chương 7: Bế tắc (Deadlocks)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfnguyen_ly_he_dieu_hanh_chuong_7_be_tac_deadlocks.pdf

Nội dung text: Nguyên lý Hệ điều hành - Chương 7: Bế tắc (Deadlocks)

  1. Nội dung chương 7 BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH „ Mô hình hệ thống „ Mô tả bế tắc „ Các phương pháp xử lý bế tắc Chương 7: Bế tắc (Deadlocks) „ Ngăn ngừa bế tắc „ Tránh khỏi bế tắc Phạm Quang Dũng Bộ môn Khoa học máy tính „ Phát hiện bế tắc Khoa Công nghệ thông tin „ Phục hồi từ bế tắc Trường Đại học Nông nghiệp Hà Nội Website: fita.hua.edu.vn/pqdung „ Phương pháp kết hợp xử lý bế tắc Bài giảng Nguyên lý Hệ điều hành 7.2 Phạm Quang Dũng ©2008 Mục tiêu Vấn đề bế tắc (Deadlock) „ Mô tả bế tắc, tình trạng ngăn cản các tiến trình đồng „ Trong môi trường đa chương trình, một số tiến trình có thể thời hoàn thành tác vụ tranh nhau một số tài nguyên hạn chế. „ Một tiến trình 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ìtiến trình sẽ chuyển „ Giới thiệu các phương pháp khác nhau để ngăn ngừa sang trạng thái chờ. hoặc tránh khỏi bế tắc trong một hệ thống máy tính. „ Các tiến trình 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 tiến trình chờ khác. ⇒ ví dụ: tắc nghẽn trên cầu Bài giảng Nguyên lý Hệ điều hành 7.3 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.4 Phạm Quang Dũng ©2008 1
  2. Ví dụ qua cầu 7.1. Mô hình hệ thống „ Các loại tài nguyên R1, R2, . . ., Rm Các chu kỳ CPU, không gian bộ nhớ,các tệp, các thiết bị vào-ra „ Mỗi loại tài nguyên Ri có Wi cá thể (instance). z vd: hệ thống có 2 CPU, có 5 máy in ⇒ có thể đáp ứng yêu cầu của nhiều tiến trình hơn „ Hai (hay nhiều hơn) ô tô đối đầu nhau trên một cây cầu hẹp „ Mỗi tiến trình sử dụng tài nguyên theo các bước sau: chỉ đủ độ rộng cho một chiếc. 1. yêu cầu (request): nếu yêu cầu không được giải quyết ngay (vd khi „ Mỗi đoạn của cây cầu có thể xem như một tài nguyên. tài nguyên đang được tiến trình khác sử dụng) thì tiến trình yêu cầu „ Nếubế tắcxuất hiện, nó có thể được giải quyết nếu một hay phải đợi cho đến khi nhận được tài nguyên. một số ô tô lùi lại nhường đường rồi tiến sau. 2. sử dụng (use) 3. giải phóng (release) Bài giảng Nguyên lý Hệ điều hành 7.5 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.6 Phạm Quang Dũng ©2008 7.2. Mô tả bế tắc Biểu đồ phân phối tài nguyên Deadlock có thể xảy ra nếu 4 điều kiện sau đồng thời tồn tại: Một tập các đỉnh V và một tập các cạnh E. „ Ngăn chặn 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. „ V được chia thành 2 loại: „ Giữ và đợi: một tiến trình đang giữ ít nhất một tài nguyên và đợi để z P = {P1, P2, , Pn}, tập tất cả các tiến trình. nhận được tài nguyên khác đang được giữ bởi tiến trình khác. z R = {R1, R2, , Rm}, tập các loại tài nguyên. „ Không có ưu tiên: một tài nguyên chỉ có thể được tiến trình (tự Mỗi cá thể là một hình vuông bên trong nguyện!) giải phóng khi nó đã hoàn thành công việc. „ cạnh yêu cầu–cạnh có hướng Pi → Rj . (tiến trình Pi đang „ Chờ đợi vòng tròn: tồn tại một tập các tiến trình chờ đợi {P0, P1, , đợi nhận một hay nhiều cá thể của tài nguyên R ). Pn, P0} j Pi z P0 đang đợi tài nguyên bị giữ bởi P1, Rj z P1 đang đợi tài nguyên bị giữ bởi P2, „ cạnh chỉ định – cạnh có hướng Rj → Pi . (tiến trình Pi đang z P đang đợi tài nguyên bị giữ bởi P , n–1 n giữ một hay nhiều cá thể của tài nguyên Rj). z và Pn đang đợi tài nguyên bị giữ bởi P0. Pi Rj Bài giảng Nguyên lý Hệ điều hành 7.7 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.8 Phạm Quang Dũng ©2008 2
  3. Vd đồ thị phân phối tài nguyên không chu trình Vd đồ thị phân phối tài nguyên có chu trình Không bế tắc: P hoặc P có thể kết Bế tắc 4 2 thúc, khiến P1 và P3 kết thúc được. Nếu đồ thị không chu trình thì sẽ không có tiến trình nào bị bế tắc Nếu đồ thị có chu trình thì có thể tồn tại bế tắc Bài giảng Nguyên lý Hệ điều hành 7.9 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.10 Phạm Quang Dũng ©2008 Kết luận về đồ thị 7.3. Các phương pháp xử lý bế tắc „ Nếu đồ thị không chu trình „ Sử dụng một phương thức để ngăn ngừa hoặc tránh xa, đảm ⇒ không xảy ra bế tắc. bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái bế tắc. „ Nếu đồ thị có chu trình ⇒ „ Cho phép hệ thống đi vào trạng thái bế tắcrồi khôi phục lại. z nếu mỗi loại tài nguyên chỉ một cá thể thì chắc chắn xảy ra bế tắc. „ Bỏ qua vấn đề này và vờ như bế tắc 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 z nếu mỗi loại tài nguyên có một vài cá thể thì có thể xảy ra HĐH, bao gồm cả UNIX. bế tắc. Bài giảng Nguyên lý Hệ điều hành 7.11 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.12 Phạm Quang Dũng ©2008 3
  4. 7.4. Ngăn ngừa bế tắc Ngăn ngừa bế tắc (tiếp) 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 „ Không có ưu tiên kiện không thể xuất hiện z 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 „ Ngăn cản lẫn nhau – đảm bảo là hệ thống không có các file không mà không thể được phân phối ngay cho nó thì tất cả các tài nguyên nó thể chia sẻ. đang giữ được giải phóng. z một tiến trình không bao giờ phải chờ tài nguyên có thể chia sẻ z 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  vd: read-only files trình đang chờ đợi. z một số tài nguyên là không thể chia sẻ z 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ũ  vd: chế độ toàn màn hình của nó cũng như các tài nguyên mới mà nó đang yêu cầu. „ Giữ và đợi –phải đảm bảo rằng mỗi khi một tiến trình yêu cầu một „ 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, nó không giữ bất kỳ tài nguyên nào khác. tài nguyên: mỗi loại được gắn một số nguyên z Đòi hỏi tiến trình yêu cầu và được phân phối tất cả các tài nguyên của nó z 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 trước khi nó bắt đầu thực hiện, hoặc chỉ cho phép tiến trình yêu cầu các đượ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ữ tài nguyên khi nó không giữ tài nguyên nào cả. z ⇒ Muốn có tài nguyên i, tiến trình phải giải phóng tất cả các tài nguyên có z Hiệu quả sử dụng tài nguyên thấp, có thể xảy ra starvation. trọng số j > i (nếu có) Bài giảng Nguyên lý Hệ điều hành 7.13 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.14 Phạm Quang Dũng ©2008 7.5. Tránh khỏi bế tắc 7.5.1. Safe State Yêu cầu HĐH phải có một số thông tin ưu tiên „ Một trạng thái là an toàn nếu hệ thống có thể phân phối các tài „ Mô hình hữu dụng nhất và đơn giản nhất yêu cầu mỗi tiến trình nguyên cho mỗi tiến trình mà vẫn tránh được bế tắc. công bố số lượng tài nguyên lớn nhất của mỗi loại mà nó có thể „ Khi một tiến trình yêu cầu một tài nguyên còn rỗi, hệ thống cần đến. phải quyết định liệu phân phối ngay lập tức có làm cho hệ „ Giải thuật tránh bế tắc luôn kiểm tra trạng thái phân phối tài thống mất an toàn hay không? nguyên để đảm bảo rằng sẽ không bao giờ có tình trạng chờ „ Hệ thống ở trong trạng thái an toàn nếu tồn tại một chuỗi an đợi vòng tròn. toàn của tất cả các tiến trình. „ 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ự yêu cầu tối đa từ các tiến trình. Bài giảng Nguyên lý Hệ điều hành 7.15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.16 Phạm Quang Dũng ©2008 4
  5. Safe State (tiếp) Safe State: thực tế dễ nhận „ Chuỗi là an toàn nếu với mỗi Pi, tài nguyên mà „ Nếu hệ thống ở trạng thái an toàn ⇒ không có bế tắc. nó yêu cầu có thể được cung cấp bởi tài nguyên khả dụng hiện „ Nếu hệ thống ở trạng thái không an toàn ⇒ có thể có bế tắc. tại và các tài nguyên đang được giữ bởi Pj, với j<i. „ Sự tránh khỏi bế tắc ⇒ đảm bảo rằng hệ thống sẽ không bao z Nếu tài nguyên Pi cần đang bị Pj giữ thì nó có thể đợi cho đến khi giờ bước vào trạng thái không an toàn. tất cả các Pj kết thúc. z Mỗi loại tài nguyên có một cá thể: giải thuật đồ thị phân phối tài z Khi Pj kết thúc, Pi có thể giành được các tài nguyên cần thiết, thực nguyên. hiện, rồi trả lại các tài nguyên đóvàkết thúc. z Mỗi loại tài nguyên có nhiều cá thể: giải thuật chủ nhà băng. z Khi Pi kết thúc, P(i+1) có thể giành được tài nguyên cần thiết, Bài giảng Nguyên lý Hệ điều hành 7.17 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.18 Phạm Quang Dũng ©2008 Safe, Unsafe, Deadlock State 7.5.2. Giải thuật đồ thị phân phối tài nguyên „ Cạnh muốn yêu cầu (claim edge) Pi → Rj : tiến trình Pj có thể yêu cầu tài nguyên Rj; được biểu diễn bởi một đường đứt nét. „ Cạnh muốn yêu cầu biến thành cạnh yêu cầu (request edge) khi một tiến trình yêu cầu một tài nguyên. „ Khi tài nguyên được một tiến trình giải phóng, cạnh yêu cầu trở lại thành cạnh muốn yêu cầu. „ Hệ thống ở trong trạng thái an toàn miễn là đồ thị không chứa chu trình nào. z Chúng ta coi các cạnh muốn yêu cầu như là các cạnh yêu cầu Bài giảng Nguyên lý Hệ điều hành 7.19 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.20 Phạm Quang Dũng ©2008 5
  6. Giải thuật đồ thị phân phối tài nguyên tránh Trạng thái không an toàn trong khỏi bế tắc đồ thị phân phối tài nguyên Giả sử P2 yêu cầu R2. Dù R2 vẫn đang tự do, chúng ta 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ì bế tắc sẽ xuất hiện. Bài giảng Nguyên lý Hệ điều hành 7.21 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.22 Phạm Quang Dũng ©2008 7.5.3. Giải thuật chủ nhà băng Giải thuật chủ nhà băng: cấu trúc dữ liệu „ Có tên như trên vì giải thuật này có thể được sử dụng trong hệ „ n = số tiến trình. thống nhà băng để đảm bảo rằng nhà băng không bao giờ phân „ m = số loại tài nguyên. phối quá số tiền khả dụng của nó đến mức mà nó có thể thỏa „ Available: vectơ độ dài m – các tài nguyên khả dụng của mỗi loại. mãn mọi yêu cầu từ các khách hàng. z Available[j] = k: có k cá thể của loại tài nguyên Rj là khả dụng. „ Max: ma trận n x m: xác định số tối đa yêu cầu của mỗi tiến trình. „ Khi một tiến trình mới đi vào hệ thống, nó phải khai báo số lượng z Max[i,j] = k: tiến trình P có thể yêu cầu tối đa tối đa k cá thể của loại tài tối đa cá thể của mỗi loại tài nguyên mà nó có thể cần đến. Số i nguyên Rj. này có thể vượt quá tổng tài nguyên trong hệ thống. „ Allocation: ma trận n x m: xác định số tài nguyên mỗi loại hiện đang „ Khi user yêu cầu tài nguyên, hệ thống phải xác định liệu sự phân phân phối cho mỗi tiến trình. phối có giữ hệ thống trong trạng thái an toàn không: z Allocation[i,j] = k: Pi hiện đang được phân phối k cá thể của Rj. „ Need: ma trận n x m: xác định số tài nguyên còn thiếu cho mỗi tiến z Nếu có → phân phối tài nguyên trình z Nếu không → tiến trình phải chờ đến khi các tiến trình khác giải z Need[i,j] = k: Pi có thể cần k cá thể nữa của Rj : phóng đủ tài nguyên. Need[i,j] = Max[i,j] - Allocation [i,j]. Bài giảng Nguyên lý Hệ điều hành 7.23 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.24 Phạm Quang Dũng ©2008 6
  7. Giải thuật chủ nhà băng: Kiểm tra an toàn Giải thuật yêu cầu tài nguyên cho tiến trình Pi Tư tưởng: chúng ta tìm một chuỗi an toàn. Nếu tìm được, trạng thái là an toàn, trái lại trạng thái là không an toàn. Request = vectơ yêu cầu cho tiến trình Pi. Nếu Requesti [j] = k 1. Gán Work và Finish là các vectơ độ dài m và n.Khởi tạo: thì tiến trình Pi muốn k cá thể của loại tài nguyên Rj. Work := Available 1. Nếu Requesti ≤ Needi , chuyển sang bước2. 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ó. Finish[i]:=(Allocationi == 0) với i =1,2, , n. 2. Nếu Requesti ≤ Available, chuyển sang bước3. Trái lại Pi phải đợi 2. Tìm i thỏa mãn cả 2 điều kiện: vì tài nguyên chưa sẵn sàng. Tìm Pi chưa kết thúc và có nhu cầu (a) Finish[i]=false và 3. Giả vờ phân phối các tài nguyên cho Pi bằng cách sửa trạng thái không vượt quá khả dụng, nếu có thì như sau: (b) Needi ≤ Work phân phối tài nguyên cho nó. Available = Available – Request ; Nếu không có i như vậy, nhảy đến bước 4. i Allocationi = Allocationi + Requesti ; 3. Work := Work + Allocationi Lượng khả dụng được cộng thêm số tài Need = Need – Request Finish[i] := true i i i ; nguyên đã phân phối cho Pi vì Pi đã có nhảy đến bước2. đủ tài nguyên để thực hiện rồi kết thúc • Nếu an toàn ⇒ phân phối tài nguyên cho Pi. 4. Nếu Finish[i] = true với ∀ithìhệ thống ở trạng thái an toàn. • Nếu không an toàn ⇒ Pi phải đợi, và trạng thái phân phối tài nguyên cũ được phục hồi. Bài giảng Nguyên lý Hệ điều hành 7.25 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.26 Phạm Quang Dũng ©2008 Ví dụ giải thuật chủ nhà băng Ví dụ (tiếp) „ Áp dụng giải thuật kiểm tra an toàn: „ 5 tiến trình P0 P4; 1. Work = Available, Finish[i] = false với mọi i vì Allocation[i] ≠ 0 3loại tài nguyên A (10 cá thể), B (5 cá thể), và C (7 cá thể). 2. Tìm thấy i=1 thỏa mãn Need1 (1 2 2) ≤ Work (3 3 2) „ Giả sử tại thời điểm T : = Max - Allocation 0 3. Work = Work + Allocation1 = (3 3 2) + (2 0 0) = (5 3 2) Max Allocation Need Available Finish[1] = true (đánh dấu tiến trình P1 kết thúc được) A B C A B C A B C A B C 2. Tìm thấy i=3 thỏa mãn Need3 (0 1 1) ≤ Work (5 3 2) P 7 5 3 0 1 0 7 4 3 3 3 2 0 3. Work = Work + Allocation3 = (5 3 2) + (2 1 1) = (7 4 3) P1 3 2 2 2 0 0 1 2 2 Finish[3] = true P 9 0 2 3 0 2 6 0 0 2 = 10 – (0+2+3+2+0) P3 2 2 2 2 1 1 0 1 1 = WA - Σ AllocationA „ Hệ thống đang ở trạng thái an toàn vì chuỗi P 4 3 3 0 0 2 4 3 1 1 3 4 2 0 4 thỏa mãn các điều kiện an toàn. „ Hệ thống có đang ở trạng thái an toàn? Bài giảng Nguyên lý Hệ điều hành 7.27 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.28 Phạm Quang Dũng ©2008 7
  8. Ví dụ P1 yêu cầu (1,0,2) 7.6. Phát hiện bế tắc „ Kiểm tra Request ≤ Need1 ↔ (1,0,2) ≤ (1,2,2) ⇒ true. „ Kiểm tra Request ≤ Available ↔ (1,0,2) ≤ (3,3,2) ⇒ true. Giả vờ đáp „ Nếu một hệ thống không thể thực hiện được việc ngăn ứng yêu cầu, hệ thống sẽ đến trạng thái sau: ngừa hay tránh xa bế tắc thì bế tắc có thể xuất hiện. Allocation Need Available A B C A B C A B C Trong môi trường này, hệ thống phải cung cấp: P0 0 1 0 7 4 3 2 3 0 P1 3 0 2 0 2 0 z Giải thuật phát hiện bế tắc P2 3 0 1 6 0 0 P3 2 1 1 0 1 1 z Giải thuật phục hồi từ bế tắc P4 0 0 2 4 3 1 „ Việc thực hiện giải thuật kiểm tra an toàn cho thấy chuỗi vẫn thỏa mãn các yêu cầu an toàn → có thể chấp nhận ngay yêu cầu từ P1 „ Có thể chấp nhận yêu cầu (3,3,0) từ P4? „ Có thể chấp nhận yêu cầu (0,2,0) từ P0? Bài giảng Nguyên lý Hệ điều hành 7.29 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.30 Phạm Quang Dũng ©2008 Mỗi loại tài nguyên có 1 cá thể Resource-Allocation Graph and Wait-for Graph „ Khi tất cả tài nguyên chỉ có một cá thể, giải thuật xác định bế tắc sử dụng một biến thể của đồ thị phân phối tài nguyên, bằng cách bỏ đi các nút của loại tài nguyên và bỏ đi các cạnh thích hợp ⇒ đồ thị wait-for z Các nút là các tiến trình. z Pi → Pj nếu Pi đang đợi Pj. „ Định kỳ sử dụng giải thuật tìm kiếm chu trình trong đồ thị. Giải thuật đó đòi hỏi n2 phép toán, với n là số đỉnh trong đồ thị: có chu trình → có thể có bế tắc. Đồ thị phân phối tài nguyên Đồ thị wait-for tương ứng Bài giảng Nguyên lý Hệ điều hành 7.31 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.32 Phạm Quang Dũng ©2008 8
  9. Mỗi loại tài nguyên có nhiều cá thể Giải thuật phát hiện bế tắc 1. Gán Work và Finish là các vectơ độ dài m và n. Khởi tạo: „ Available: vectơ độ dài m xác định số tài nguyên khả (a) Work := Available (b) For i := 1 to n do If Allocationi ≠ 0 then Finish[i] := false dụng của mỗi loại. Else Finish[i] := true „ Allocation: ma trận n x m xác định các tài nguyên của 2. Tìm chỉ số i thỏa mãn cả 2 điều kiện: (a) Finish[i] = false mỗi loại hiện đang được phân phối cho mỗi tiến trình. (b) Requesti ≤ Work „ Request: ma trận n x m xác định yêu cầu hiện tại của nếu không tồn tại i,nhảy sang bước4. 3. Work := Work + Allocation Độ phức tạp tính toán mỗi tiến trình. Nếu Request [i,j] = k, thì tiến trình P đang i i Finish[i] := true của giải thuật là O(m x n2) nhảy sang bước 2. yêu cầu k cá thể nữa của loại tài nguyên Rj. 4. Nếu Finish[i] = true với ∀i thì hệ thống không có bế tắc Nếu Finish[i] = false, với một số i, 1 ≤ i ≤ n, thì Pi bị bế tắc, hệ thống ở trong trạng thái bế tắc. Bài giảng Nguyên lý Hệ điều hành 7.33 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.34 Phạm Quang Dũng ©2008 Ví dụ giải thuật phát hiện bế tắc Ví dụ (tiếp) „ P yêu cầu thêm 1 cá thể loại C (0 0 1). „ 5 tiến trình P0 P4; 2 3 loại tài nguyên: A (7 cá thể), B (2 cá thể), và C (6 cá thể). Request „ Giả sử hệ thống tại thời điểm T0: A B C Allocation Request Available P0 0 0 0 A B C A B C A B C P1 2 0 2 P0 0 1 0 0 0 0 0 0 0 P2 0 0 1 P1 2 0 0 2 0 2 P3 1 0 0 P2 3 0 3 0 0 0 P4 0 0 2 P 2 1 1 1 0 0 3 „ Trạng thái của hệ thống? P4 0 0 2 0 0 2 z Có thể phục hồi các tài nguyên bị giữ bởi tiến trình P0 khi nó kết „ Chuỗi sẽ cho kết quả Finish[i] = true với tất thúc, nhưng không đủ tài nguyên để hoàn thành các tiến trình khác. cả các i → không có bế tắc. z Bế tắcxuất hiện, gồm các tiến trình P1, P2, P3, và P4. Bài giảng Nguyên lý Hệ điều hành 7.35 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.36 Phạm Quang Dũng ©2008 9
  10. Cách sử dụng giải thuật 7.7. Phục hồi từ bế tắc 7.7.1. Dừng tiến trình „ Thời điểm và mức thường xuyên cần đến giải thuật phụ thuộc: „ Hủy bỏ tất cả các tiến trình bị bế tắc (có Finish[i] = false). z Bế tắc có khả năng thường xuyên xảy ra như thế nào? „ Hủy bỏ một tiến trình tại một thời điểm đến khi chu trình bế tắc z Có bao nhiêu tiến trình bị tác động khi bế tắc xuất hiện được loại trừ. „ Nếu giải thuật phát hiện bế tắc ít được sử dụng, có thể có nhiều „ Chúng ta nên chọn hủy bỏ theo trình tự nào? chu trình trong biểu đồ tài nguyên và do đó ta không thể tìm z Theo mức ưu tiên của tiến trình. được những tiến trình nào “gây ra” bế tắc. z Theo thời gian tiến trình đã thực hiện, và thời gian cần thiết còn lại để hoàn thành. „ Nếu phát hiện được bế tắc, chúng ta cần phục hồi lại bằng một trong hai cách: z Theo tài nguyên tiến trình đã sử dụng. z Theo tài nguyên tiến trình cần để hoàn thành. z Dừng các tiến trình z Theo số tiến trình sẽ cần bị dừng. z Buộc chúng phải giải phóng tài nguyên (ưu tiên trước) z Tiến trình là tiến trình tương tác hay tiến trình bó? Bài giảng Nguyên lý Hệ điều hành 7.37 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.38 Phạm Quang Dũng ©2008 7.7.2. Ưu tiên trước tài nguyên 7.8. Phương pháp kết hợp xử lý bế tắc „ Chọn một tiến trình nạn nhân dựa vào giá trị nhỏ nhất „ Kết hợp 3 phương pháp cơ bản (mức ưu tiên, số tài nguyên đang dùng ). z ngăn ngừa - prevention „ Rollback – quay lại trạng thái an toàn trước, khởi động lại z tránh khỏi - avoidance tiến trình ở trạng thái đó. z phát hiện - detection „ Starvation – 1 tiến trình có thể luôn bị chọn làm nạn tạo thành phương pháp tối ưu đối với mỗi tài nguyên trong hệ nhân khiến nó không thể kết thúc. Phải đảm bảo rằng thống. một tiến trình được chọn làm nạn nhân chỉ trong khoảng „ Phân chia các tài nguyên thành các lớp theo thứ tự phân cấp. thời gian ngắn. „ Sử dụng kỹ thuật thích hợp nhất để xử lý bế tắc trong mỗi lớp. z Giải pháp: Thêm các rollback vào yếu tố chi phí. Bài giảng Nguyên lý Hệ điều hành 7.39 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 7.40 Phạm Quang Dũng ©2008 10
  11. Traffic Deadlock End of Chapter 7 Bài giảng Nguyên lý Hệ điều hành 7.41 Phạm Quang Dũng ©2008 11