Bài giảng Hệ điều hành - Chương 2: Quản lý tiến trình - Đỗ Quốc Huy

Lựa chọn nạn nhân (victim) Tài nguyên nào và tiến trình nào ? 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. . . 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 TT đang thực hiện Đói tài nguyên (Starvation) 1 TT 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 Bế tắc là tình trạng 2 hay nhiều TT cùng chờ đợi độc lập 1 sự kiện chỉ có thể xảy ra bởi sự hoạt động của các TT đang đợi Bế tắc xảy ra khi hội đủ 4 điều kiện Tồn tại tài nguyên găng Phải chờ đợi trước khi vào đoạn găng Không tồn tại hệ thống phân phối lại tài nguyên Tồn tại hiện tượng chờ đợi vòng tròn Để xử lý bế tắc có 3 lớp thuật toán Phòng ngừa bế tắc Tác động vào các điều kiện xảy ra bế tắc Dự báo và phòng tránh Ngăn ngừa hệ thống rơi vào tình trạng có thể dẫn đến bế tắc Nhận biết và khắc phục Cho phép bế tắc xảy ra, chỉ ra bế tắc và khắc phục sau

pptx340 trang | Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 452 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ điều hành - Chương 2: Quản lý tiến trình - Đỗ Quốc Huy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Hệ thống gồm nhiều TT hoạt động đồng thời cùng sử dụng tài nguyên (TN) T N có nhiều loại (VD: CPU, bộ nhớ,..). Mỗi loại TN có nhiều đơn vị (VD: 2 CPU, 5 máy in..) Mỗi TT thường gồm dãy liên tục các thao tác Đòi hỏi tài nguyên : Nếu TN không có sẵn (đang được s/dụng bởi TT khác) ⇒ TT yêu cầu phải đợi Sử dụng TN theo yêu cầu (in ấn, đọc dữ liệu...) Giải phóng TN được cấp Khi các TT dùng chung ít nhất 2 TN , hệ thống có thể gặp " nguy hiểm " Khái niệm bế tắc Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Xét ví dụ: Hệ thống có 2 TT P 1 & P 2 2 TT P 1 & P 2 dùng chung 2 TN R 1 & R 2 R 1 được điều độ bởi đèn báo S 1 (S 1 ← 1) R 2 được điều độ bởi đèn báo S 2 (S 2 ← 1) Đoạn mã cho P 1 và P 2 Khái niệm bế tắc P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 1 S1 = 1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 1 S1 = 0 P(S1) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 1 S1 = -1 P(S1) P(S1) P 2 block() Vào hàng đợi R1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 0 S1 = -1 P(S1) P(S1) P 2 block() Vào hàng đợi R1 P(S2) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 0 S1 = 0 P(S1) P(S1) P(S2) Sử dụng R 1 &R 2 V(S1) wakeup(P 2 ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = -1 S1 = 0 P(S1) P(S1) P(S2) Sử dụng R 1 &R 2 V(S1) wakeup(P 2 ) P(S2) P 2 block() Vào hàng đợi R2 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 0 S1 = 0 P(S1) P(S1) P(S2) Sử dụng R 1 &R 2 V(S1) P(S2) V(S2) wakeup(P 2 ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 0 S1 = 0 P(S1) P(S1) P(S2) Sử dụng R 1 &R 2 V(S1) P(S2) V(S2) wakeup(P 2 ) Sử dụng R 1 &R 2 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 2 ) P(S 1 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 1 S1 = 1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 2 ) P(S 1 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 1 S1 = 0 P(S1) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 2 ) P(S 1 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = 0 S1 = 0 P(S1) P(S2) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 2 ) P(S 1 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = -1 S1 = 0 P(S1) P(S2) P(S2) P 1 block() Vào hàng đợi R2 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 2 ) P(S 1 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = -1 S1 = -1 P(S1) P(S2) P(S2) P 1 block() Vào hàng đợi R2 P(S1) P 2 block() Vào hàng đợi R1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Ví dụ P(S 1 ) P(S 2 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) P(S 2 ) P(S 1 ) { Sử dụng R 1 &R 2 } V(S 1 ) V(S 2 ) Process P1 Process P2 Process P1 Process P2 t S2 = -1 S1 = -1 P(S1) P(S2) P(S2) P 1 block() Vào hàng đợi R2 P(S1) P 2 block() Vào hàng đợi R1 Deadlock Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Định nghĩa Bế tắc là tình trạng Hai hay nhiều tiến trình cùng chờ đợi một sự kiện nào đó xảy ra Nếu không có sự tác động gì từ bên ngoài, thì sự chờ đợi đó là vô hạn Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.1. Khái niệm bế tắc(Deadlock) Khái niệm bế tắc Điều kiện xảy ra bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết và khắc phục Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Cần có 4 điều kiện sau, không được thiếu điều kiện nào Tồn tại tài nguyên găng T N được sử dụng theo mô hình không phân chia được Chỉ có 1 TT dùng TN tại 1 thời điểm T T khác cũng yêu cầu TN ⇒ yêu cầu phải được hoãn lại tới khi TN được giải phóng Chờ đợi trước khi vào đoạn găng T T 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 TN được cung cấp Không có hệ thống phân phối lại tài nguyên găng T N không thể được trưng dụng T N được giải phỏng chỉ bởi TT đang chiếm giữ khi đã hoàn thành nhiệm vụ Chờ đợi vòng tròn Tồn tại tập các TT {P 0 , P 2 , . . . , P n } đang đợi nhau theo kiểu: P 0 → R 1 → P 1 ; P 1 → R 2 → P 2 ; . . . P n−1 → R n →P n ; P n → R 0 → P 0 Chờ đợi vòng tròn tạo ra chu trình không kết thúc Điều kiện cần Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc 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 Ví dụ: Bài toán bữa ăn tối của triết gia Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc 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 = {P 1 , P 2 , . . . P n } Tập chứa tất cả các TT trong hệ thống R = {R 1 , R 2 , . . . R m } Tập chứa tất cả các kiểu TN trong hệ thống Tập các cung E gồm 2 loại Cung yêu cầu : đi từ TT P i tới TN R j : P i → R j Cung sử dụng : Đi từ TN R j tới TT P i : R j → P i Đồ thị cung cấp tài nguyên (Resource Allocation Graph) I Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Khi 1 TT P i yêu cầu TN R j Cung yêu cầu P i → R j được chèn vào đồ thị Nếu yêu cầu được thỏa mãn , cung yêu cầu chuyển thành cung sử dung R j → P i Khi TT P i giải phóng TN R j , cung sử dụng R j → P i bị xóa khỏi đồ thị Đồ thị cung cấp tài nguyên (Resource Allocation Graph) II Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Đỉnh kiểu TT Đỉnh kiểu TN Mỗi đơn vị của kiểu TN được biểu thị bằng 1 dấu chấm trong hình chữ nhật Cung yêu cầu đi từ đỉnh TT → đỉnh TN Cung sử dụng xuất phát từ dấu chấm bên trong đỉnh TN → đỉnh TT Đồ thị cung cấp tài nguyên : Biểu diễn đồ trong đồ thị P P P R R R Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Trạng thái hệ thống 3 TT P 1 , P 2 , P 3 4 tài nguyên R 1 , R 2 , R 3 , R 4 P 3 yêu cầu tài nguyên R 4 Xuất hiện cung yêu cầu P 3 → R 4 Đồ thị cung cấp tài nguyên : Ví dụ P 1 P 2 P 3 R 2 R 3 R 1 R 4 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Trạng thái hệ thống 3 TT P 1 , P 2 , P 3 4 tài nguyên R 1 , R 2 , R 3 , R 4 P 3 yêu cầu tài nguyên R 4 Xuất hiện cung yêu cầu P 3 → R 4 Cung yêu cầu P 3 → R 4 chuyển thành cung sử dụng R 4 → P 3 Đồ thị cung cấp tài nguyên : Ví dụ P 1 P 2 P 3 R 2 R 3 R 1 R 4 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Trạng thái hệ thống 3 TT P 1 , P 2 , P 3 4 tài nguyên R 1 , R 2 , R 3 , R 4 P 3 yêu cầu tài nguyên R 4 Xuất hiện cung yêu cầu P 3 → R 4 Cung yêu cầu P 3 → R 4 chuyển thành cung sử dụng R 4 → P 3 P 3 Giải phóng tài nguyên R 4 Cung sử dụng R 4 → P 3 bị xóa khỏi đồ thị Đồ thị cung cấp tài nguyên : Ví dụ P 1 P 2 P 3 R 2 R 3 R 1 R 4 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Trạng thái hệ thống 3 TT P 1 , P 2 , P 3 4 tài nguyên R 1 , R 2 , R 3 , R 4 P 3 yêu cầu tài nguyên R 4 Xuất hiện cung yêu cầu P 3 → R 4 Cung yêu cầu P 3 → R 4 chuyển thành cung sử dụng R 4 → P 3 P 3 Giải phóng tài nguyên R 4 Cung sử dụng R 4 → P 3 bị xóa khỏi đồ thị P 3 yêu cầu tài nguyên R 1 Xuất hiện cung yêu cầu P 3 → R 1 Trên đồ thị xuất hiện chu trình Hệ thống bế tắc Đồ thị cung cấp tài nguyên : Ví dụ P 1 P 2 P 3 R 2 R 3 R 1 R 4 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.2. Điều kiện xảy ra bế tắc Đồ thị không chứa chu trình, không bế tắc Nếu đồ thị chứa đựng chu trình Nếu TN chỉ có 1 đơn vị ⇒ Bế tắc Nếu TN có nhiều hơn 1 đơn vị: có khả năng bế tắc Đồ thị cung cấp tài nguyên : Lập luận cơ bản Chu trình trên đồ thị và tình trạng bế tắc có liên quan ? P 1 P 3 P 2 R 2 R 1 Đồ thị có chu trình nhưng hệ thống không bế tắc Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.3 Các phương pháp xử lý bế tắc Khái niệm bế tắc Điều kiện xảy ra bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết và khắc phục Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.3. Các phương pháp xử lý bế tắc Phòng 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 bế tắc Tốn kém Áp dụng cho hệ thống hay xảy ra bế tắc và tổn thất do bế tắc gây ra lớn Phòng tránh Kiểm tra từng yêu cầu TN của TT và không chấp nhận yêu cầu nếu việc cung cấp TN có khả năng dẫn đến tình trạng bế tắc Thường yêu cầu các thông tin phụ trợ Áp dụng cho hệ thống ít xảy ra bế tắc nhưng tổn hại lớn 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 bế tắc Định kỳ kiểm tra xem bế tắc có đang xảy ra không Nếu đang bế tắc, áp dụng các biện pháp loại bỏ bế tắc Áp dụng cho hệ thống ít xảy ra bế tắc và thiệt hại không lớn Phương pháp Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 4 Phòng ngừa bế tắc Khái niệm bế tắc Điều kiện xảy ra bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết và khắc phục Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Tác động vào 1 trong 4 điều kiện cần của bế tắc để nó không xảy ra Tài nguyên găng Chờ đợi trước khi vào đoạn găng T rưng dụng tài nguyên găng Chờ đợi vòng tròn Nguyên tắc Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng của hệ thống TN phân chia được (file chỉ đọc): Sử dụng đồng thời T 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 TN khi không thực sự cần thiết Chỉ một số ít TT có khả năng yêu cầu TN Chỉ printer daemon mới làm việc với máy in ⇒ Bế tắc cho TN máy in bị hủy bỏ Không phải TN nào cũng dùng kỹ thuật SPOOL được Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước khi vào đoạn găng Nguyên tắc : Đảm bảo 1 TT xin TN chỉ khi không sở hữu bất kỳ TN nào khác Cung cấp trước TT xin toàn bộ TN ngay từ đầu và chỉ thực hiện khi đã có đầy đủ TN Hiệu quả sử dụng TN thấp TT chỉ sử dụng TN ở giai đoạn cuối? Tổng số TN đòi hỏi vượt quá khả năng của hệ thống? Giải phóng TN TT giải phóng tất cả TN trước khi xin (xin lại) TN mới Nhận xét Tốc độ thực hiện TT chậm Phải đảm bảo dữ liệu được giữ trong TN tạm giải phóng không bị mất Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước khi vào đoạn găng : Ví dụ TT gồm 2 giai đoạn Sao chép dữ liệu từ băng từ sang một file trên đĩa từ Sắp xếp dữ liệu trong file và đưa ra máy in Phương pháp cung cấp trước Xin cả băng từ, file trên đĩa và máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước khi vào đoạn găng : Ví dụ TT gồm 2 giai đoạn Sao chép dữ liệu từ băng từ sang một file trên đĩa từ Sắp xếp dữ liệu trong file và đưa ra máy in Phương pháp cung cấp trước Xin cả băng từ, file trên đĩa và máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Phương pháp giải phóng tài nguyên Xin băng từ và file trên đĩa cho giai đoạn 1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước khi vào đoạn găng : Ví dụ TT gồm 2 giai đoạn Sao chép dữ liệu từ băng từ sang một file trên đĩa từ Sắp xếp dữ liệu trong file và đưa ra máy in Phương pháp cung cấp trước Xin cả băng từ, file trên đĩa và máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Phương pháp giải phóng TN Xin băng từ và file trên đĩa cho giai đoạn 1 Giải phóng băng từ và file trên đĩa Xin file trên đĩa và máy in cho giai đoạn 2 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện trưng dụng tài nguyên găng Nguyên tắc : cho phép trưng dụng TN khi cần thiết TT P i xin tài nguyên R j R j sẵn có: Cung cấp R j cho P i R j không sẵn: ( R j bị chiếm bởi TT P k ) P k đang đợi TN khác Trưng dụng R j từ P k và cung cấp cho P i theo yêu cầu Thêm R j vào danh sách các TN đang thiếu của P k P k được thực hiện trở lại khi Có được TN đang thiếu Đòi lại được R j P k đang thực hiện P i phải đợi ( không giải phóng tài nguyên ) Cho phép trưng dụng TN nhưng chỉ khi cần thiết Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện trưng dụng tài nguyên găng Nguyên tắc : cho phép trưng dụng tài nguyên khi cần thiết Chỉ áp dụng cho các TN có thể lưu trữ và khôi phục trạng thái dễ dàng ( CPU, không gian nhớ ) Khó có thể áp dụng cho các TN như máy in 1 TT bị trưng dụng nhiều lần ? Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi vòng tròn Đặt ra một thứ tự toàn cục của tất cả các kiểu TN R = {R 1 , R 2 , . . . R n } Tập tất cả các kiểu TN Xây dựng hàm trật tự f : R → N Hàm f được xây dựng dựa trên trật tự sử dụng các TN f(Băng từ) = 1 f( Đĩa từ) = 5 f(Máy in) = 12 TT chỉ được yêu cầu TN theo trật tự tăng TT chiếm giữ TN kiểu R k chỉ được xin TN kiểu R j thỏa mãn f(R j ) > f(R k ) TT yêu cầu tới TN R k sẽ phải giải phóng tất cả TN R i thỏa mãn điều kiện f(R i ) ≥ f(R k ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi vòng tròn TT chỉ được yêu cầu TN theo trật tự tăng TT chiếm giữ TN kiểu R k chỉ được xin TN kiểu R j thỏa mãn f(R j ) > f(R k ) TT yêu cầu tới TN R k sẽ phải giải phóng tất cả TN R i thỏa mãn điều kiện f(R i ) ≥ f(R k ) Chứng minh Giả thiết bế tắc xảy ra giữa các TT {P 1 , P 2 , . . . P m } R 1 → P 1 → R 2 → P 2 ⇒ f(R 1 ) < f(R 2 ) R 2 → P 2 → R 3 → P 3 ⇒ f(R 2 ) < f(R 3 ) . . . R m → P m → R 1 → P 1 ⇒ f(R m ) < f(R 1 ) f(R 1 ) < f(R 2 ) < . . . < f(R m ) < f(R 1 ) ⇒ Vô lý Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Khái niệm bế tắc Điều kiện xảy ra bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết và khắc phục Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Ví dụ P1 P2 S2 = 1 S1 = 1 P(S1) P(S2) P(S2) P(S1) t S1 = 0 yêu cầu R 1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Ví dụ P1 P2 S2 = 1 P(S1) P(S2) P(S2) P(S1) t S1 = 0 sử dụng R 1 yêu cầu R 2 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Ví dụ P1 P2 S2 = 0 P(S1) P(S2) P(S2) P(S1) t S1 = 0 sử dụng R 1 sử dụng R 2 yêu cầu R 1 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Ví dụ P1 P2 S2 = 0 P(S1) P(S2) P(S2) P(S1) t S1 = -1 Yêu cầu R 2 sử dụng R 2 yêu cầu R 1 sử dụng R 1 S2 = -1 DeadLock Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Ví dụ P1 P2 S2 = 1 P(S1) P(S2) P(S2) P(S1) t S1 = 0 sử dụng R 1 yêu cầu R 2 Block(P2) Yêu cầu R 2 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5. 5 Phòng tránh bế tắc Ví dụ P1 P2 S2 = 0 P(S1) P(S2) P(S2) P(S1) t S1 = 0 sử dụng R 1 yêu cầu R 2 Block(P2) sử dụng R 2 Nhận xét: Nếu b iết được chuỗi yêu cầu/giải phóng TN của các TT , hệ thống có thể đưa ra được chiến lược phân phối TN (chấp thuận hay phải đợi) cho mọi yêu cầu để bế tắc không xảy ra. Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Nguyên tắc Phải biết trước các thông tin về TT và TN TT phải khai báo lượng TN lớn nhất mỗi loại sẽ yêu cầu khi thực hiện Quyết định dựa trên kết quả kiểm tra t / thái cung cấp TN (Resource-Allocation State) –T / thái hệ thống T / thái cung cấp t / nguyên xác định bởi các thông số : Số đơn vị TN có sẵn trong hệ thống đã được cấp cho mỗi TT lớn nhất mỗi TT có thể yêu cầu Nếu hệ thống an toàn , sẽ đáp ứng cho yêu cầu Thực hiện kiểm tra mỗi khi nhận được yêu cầu TN Mục đích: Đảm bảo t / thái hệ thống luôn an toàn Thời điểm ban đầu (chưa c/cấp tài nguyên), hệ thống an toàn Hệ thống chỉ cung cấp TN khi vẫn đảm bảo an toàn ⇒Hệ thống chuyển từ t/ thái an toàn này → t / thái an toàn khác Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Trạng thái an toàn Trạng thái của hệ thống là an toàn khi Có thể cung cấp TN cho từng TT (đến yêu cầu lớn nhất) theo 1 trật tự nào đấy mà không xảy ra bế tắc Tồn tại chuỗi an toàn của tất cả các TT Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Chuỗi an toàn Chuỗi tiến trình P={P1, P2, . . . , Pn} là an toàn nếu Với mỗi TT Pi, mọi yêu cầu TN trong tương lai đều có thể đáp ứng nhờ vào Lượng TN hiện có trong hệ thống TN đang chiếm giữ bởi tất cả các TT Pj(j < i) Trong chuỗi an toàn, khi Pi yêu cầu TN Nếu không thể đáp ứng ngay lập tức, Pi đợi cho tới khi Pj kết thúc (j < i) Khi Pj kết thúc và giải phóng TN , Pi sẽ nhận được TN cần thiết, thực hiện, giải phóng các TN đã được cung cấp và kết thúc Khi Pi kết thúc và giải phóng TN ⇒ Pi+1 sẽ nhận được TN cần thiêt và kết thúc được . . . Tất cả các TT trong chuỗi an toàn đều kết thúc được Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm 3 TT P 1 , P 2 , P 3 và 1 TN R có 12 đơn vị (P 1 , P 2 , P 3 ) có thể yêu cầu tối đa tới (10, 4, 9) đơn vị TN R Tại thời điểm t 0 , (P 1 , P 2 , P 3 ) đã được cấp (5, 2, 2) đơn vị TN R Tại thời điểm hiện tại (t 0 ) hệ thống có an toàn? Hệ thống đã cấp (5 + 2 + 2) đơn vị, vậy còn lại 3 đơn vị (P 1 , P 2 , P 3 ) còn có thể yêu cầu (5, 2, 7) đơn vị Với 3 đơn vị hiện có, mọi yêu cầu của P 2 đều đáp ứng được ⇒ P 2 chắc chắn kết thúc được và sẽ giải phóng 2 đơn vị R Với 3 + 2 đơn vị, P 1 chắc chắn kết thúc,sẽ giải phóng 5 đơn vị Với 3 + 2 + 5 đơn vị P 3 chắc chắn kết thúc được Ở thời điểm t 0 P 1 , P 2 , P 3 đều chắc chắn kết thúc ⇒ hệ thống an toàn với dãy an toàn (P 2 , P 1 , P 3 ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa 2 Xem xét hệ thống gồm 3 TT P 1 , P 2 , P 3 và 1 tài nguyên R có 12 đơn vị Các TT (P 1 , P 2 , P 3 ) có thể yêu cầu tối đa tới (10, 4, 9) đơn vị TN R Tại thời điểm t 0 , các TT (P 1 , P 2 , P 3 ) đã được cấp (5, 2, 2) đơn vị TN R Tại thời điểm t 1, TT P 3 yêu cầu và được cấp 1 đơn vị TN R. Hệ thống có an toàn? Với 2 đơn vị hiện có, mọi yêu cầu của P 2 đều đáp ứng được ⇒ P 2 chắc chắn kết thúc, giải phóng 2 đơn vị R Khi P 2 kết thúc số TN sẵn có trong hệ thống là 4 Với 4 đơn vị TN , P 1 và P 3 đều có thể phải đợi khi xin thêm 5 đơn vị TN Vậy hệ thống không an toàn với dãy (P 1 , P 3 ) Nhận xét : Tại thời điểm t 1 nếu TT P 3 phải đợi khi yêu cầu thêm 1 đơn vị TN , bế tắc sẽ được loại trừ Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Nhận xét Hệ thống an toàn ⇒ Các TT đều có thể kết thúc được ⇒ không xảy ra bế tắc Hệ thống không an toàn ⇒ Có khả năng xảy ra bế tắc Phương pháp Không để hệ thống rơi vào tình trạng không an toàn Kiểm tra mọi yêu cầu TN Nếu hệ thống vẫn an toàn khi cung cấp ⇒ Cung cấp Nếu hệ thống không an toàn khi cung cấp ⇒ Phải đợi Thuật toán Thuật toán dựa vào đồ thị cung cấp tài nguyên Thuật toán người quản lý nhà băng Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Thuật toán dựa vào đồ thị cung cấp tài nguyên Sử dụng khi mỗi kiểu TN chỉ có 1 đơn vị Có chu trình, sẽ có bế tắc 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 TT 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 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Thuật toán dựa vào đồ thị cung cấp tài nguyên Thuật toán: Yêu cầu tài nguyên Rj của TT 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 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: 2 TT P 1 , P 2 và 2 tài nguyên R 1 , R 2 , mỗi loại 1 đơn vị P 1 có thể xin R 1 , R 2 trong tương lai P 2 có thể xin R 1 , R 2 trong tương lai P 1 P 2 R 2 R 1 P 1 yêu cầu tài nguyên R 1 Cung đòi hỏi trở thành cung yêu cầu Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: 2 TT P 1 , P 2 và 2 tài nguyên R 1 , R 2 , mỗi loại 1 đơn vị P 1 có thể xin R 1 , R 2 trong tương lai P 2 có thể xin R 1 , R 2 trong tương lai P 1 P 2 R 2 R 1 P 1 yêu cầu tài nguyên R 1 Cung đòi hỏi trở thành cung yêu cầu P 2 yêu cầu tài nguyên R 2 ⇒ cung đòi hỏi trở thành cung yêu cầu P 2 → R 2 Yêu cầu của P 1 được đáp ứng Cung yêu cầu thành cung sử dụng Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: 2 TT P 1 , P 2 và 2 tài nguyên R 1 , R 2 , mỗi loại 1 đơn vị P 1 có thể xin R 1 , R 2 trong tương lai P 2 có thể xin R 1 , R 2 trong tương lai P 1 P 2 R 2 R 1 P 1 yêu cầu tài nguyên R 1 Cung đòi hỏi trở thành cung yêu cầu P 2 yêu cầu tài nguyên R 2 ⇒ cung đòi hỏi trở thành cung yêu cầu P 2 → R 2 Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P 1 yêu cầu R 2 ⇒ P 1 phải đợi ⇒ Khi P 2 yêu cầu R 1 ⇒ P 2 phải đợi Yêu cầu của P 1 được đáp ứng Cung yêu cầu thành cung sử dụng Hệ thống bế tắc Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: 2 TT P 1 , P 2 và 2 tài nguyên R 1 , R 2 , mỗi loại 1 đơn vị P 1 có thể xin R 1 , R 2 trong tương lai P 2 có thể xin R 1 , R 2 trong tương lai P 1 P 2 R 2 R 1 P 1 yêu cầu tài nguyên R 1 Cung đòi hỏi trở thành cung yêu cầu P 2 yêu cầu tài nguyên R 2 ⇒ cung đòi hỏi trở thành cung yêu cầu P 2 → R 2 Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P 1 yêu cầu R 2 ⇒ P 1 phải đợi ⇒ Khi P 2 yêu cầu R 1 ⇒ P 2 phải đợi Yêu cầu của P 1 được đáp ứng Cung yêu cầu thành cung sử dụng Hệ thống bế tắc Yêu cầu của P 2 không được đáp ứng Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Thuật toán người quản lý nhà băng: Giới thiệu Thích hợp cho các hệ thống gồm các kiểu TN có nhiều đơn vị 1 TT mới xuất hiện trong hệ thống cần khai báo số đơn vị lớn nhất của mỗi kiểu TN sẽ sử dụng Không được vượt quá tổng số TN của hệ thống Khi 1 TT yêu cầu TN , hệ thống kiểm tra liệu đáp ứng cho yêu cầu hệ thống có còn an toàn không Nếu hệ thống vẫn an toàn ⇒ Cung cấp TN cho yêu cầu Nếu hệ thống không an toàn ⇒ TT phải đợi Thuật toán cần Các cấu trúc dữ liệu biểu diễn t / thái phân phối TN Thuật toán kiểm tra tình trạng an toàn của hệ thông Thuật toán yêu cầu TN Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Các cấu trúc dữ liệu I Hệ thống n số TT trong hệ thống m số kiểu TN trong hệ thống Các cấu trúc dữ liệu Available Vector chiều dài m cho biết số đơn vị TN sẵn có trong hệ thống. ( Available[3] = 8 ⇒? ) Max Ma trận n ∗m cho biết số lượng lớn nhất mỗi kiểu TN của từng TT . ( Max[2,3] = 5 ⇒? ) Allocation Ma trận n ∗ m cho biết số lượng mỗi kiểu TN đã cấp cho TT . ( Allocation[2,3] = 2 ⇒? ) Need Ma trận n ∗ m chỉ ra số lượng mỗi kiểu TN còn cần đến của từng TT . Need[2,3] = 3 ⇒? ) Need[i][j] = Max[i][j] - Allocation[i][j] Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Các cấu trúc dữ liệu I Quy ước X, Y là các vector độ dài n X ≤ Y ⇔ X[i] ≤ Y[i] ∀i = 1, 2, . . . , n Các dòng của ma trận Max, Need , Allocation được xử lý như các vector Thuật toán tính toán trên các vector Các cấu trúc cục bộ Work vector độ dài m cho biết mỗi TN còn bao nhiêu Finish vector độ dài n , kiểu logic cho biết TT có chắc chắn kết thúc không Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Thuật toán kiểm tra An toàn BOOL Safe( Current Resource-Allocation State ){ Work←Available for (i : 1 → n) Finish[i]←false flag← true While(flag){ flag←false for (i : 1 → n) if(Finish[i]=false AND Need[i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true } //endif } //endwhile for (i : 1 → n) if (Finish[i]=false)return false return true; } //End function Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xét hệ thống gồm 5 TT P 0 , P 1 , P 2 , P 3 , P 4 và 3 TN R 0 , R 1 , R 2 T N R 0 có 10 đơn vị, R 1 có 5 đơn vị, R 2 có 7 đơn vị Yêu cầu TN lớn nhất và lượng TN đã cấp của mỗi TT R0 R1 R2 P 0 7 5 3 P 1 3 2 2 P 2 9 0 2 P3 2 2 2 P4 4 3 3 Max R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation Hệ thống có an toàn? TT P1 yêu cầu thêm 1 đơn vị R0 và 2 đơn vị R2? TT P4 yêu cầu thêm 3 đơn vị R0 và 3 đơn vị R1? TT P0 yêu cầu thêm 2 đơn vị R1. Cung cấp? Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an toàn Số tài nguyên còn sẵn trong hệ thống Avaiable (R 0 , R 1 , R 2 ) =(3, 3, 2) Yêu cầu còn lại của mỗi TT ( Need = Max - Allocation ) R 0 R 1 R 2 P 0 7 5 3 P 1 3 2 2 P 2 9 0 2 P 3 2 2 2 P 4 4 3 3 Max R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 1 2 2 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an toàn Số tài nguyên còn sẵn trong hệ thống Avaiable (R 0 , R 1 , R 2 ) =(3, 3, 2) R 0 R 1 R 2 P 0 7 5 3 P 1 3 2 2 P 2 9 0 2 P 3 2 2 2 P 4 4 3 3 Max R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 1 2 2 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F F F F F Work F F F T (5,3,2) (3,3,2) F T F (7,4,3) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an toàn Số tài nguyên còn sẵn trong hệ thống Avaiable (R 0 , R 1 , R 2 ) =(3, 3, 2) R 0 R 1 R 2 P 0 7 5 3 P 1 3 2 2 P 2 9 0 2 P 3 2 2 2 P 4 4 3 3 Max R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 1 2 2 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F T F T T Work F F T (7,5,5) (7,4,5) T (10,5,7) Hệ thống an toàn (P1, P3, P4, P0, P2) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Thuật toán yêu cầu tài nguyên Request[i] Vector yêu cầu tài nguyên của TT Pi Request[3,2] = 2: TT P 3 yêu cầu 2 đơn vị tài nguyên R 2 Khi Pi yêu cầu TN , hệ thống thực hiện if(Request[i]>Need[i]) Error (Yêu cầu vượt quá khai báo TN ) if(Request[i]>Available) Block (Không đủ TN , TT phải đợi) Thiết lập trạng thái phân phối TN mới cho hệ thống Available = Available - Request[i] Allocation[i] = Allocation[i] + Request[i] Need[i] = Need[i] - Request[i] Phân phối TN dựa trên kết quả kiểm tra tính an toàn của trạng thái phân phối TN mới if (Safe(New Resource Allocation State)) Phân phối cho Pi theo yêu cầu else TT Pi phải đợi Khôi phục lại trạng thái cũ (Available, Allocation,Need) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation at t1 R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need at t1 R 0 R 1 R 2 P 0 7 5 3 P 1 3 2 2 P 2 9 0 2 P 3 2 2 2 P 4 4 3 3 Max R0 R1 R2 P 0 7 4 3 P 1 1 2 2 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F F F F F Work (2,3,0) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F F F F F Work (2,3,0) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F T F F F Work (5,3,2) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F T F F F Work (5,3,2) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F T F T F Work (7,4,3) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F T F T T Work (7,4,5) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T T F T T Work (7,5,5) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P 1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( 2 , 3, 0) R0 R1 R2 P 0 0 1 0 P 1 3 0 2 P 2 3 0 2 P3 2 1 1 P4 0 0 2 Allocation R0 R1 R2 P 0 7 4 3 P 1 0 2 0 P 2 6 0 0 P3 0 1 1 P4 4 3 1 Need Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T T T T T Work (10,5,7) Yêu cầu được chấp nhận Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : (tiếp tục) TT P 4 yêu cầu thêm 3 đơn vị R 0 và 3 đơn vị R 2 Request[4] = (3, 0, 3) Available = (2, 3, 0) ⇒ Không đủ tài nguyên, P 4 phải đợi TT P 0 yêu cầu thêm 2 đơn vị R 1 Request[0]≤Available ((0, 2, 0) ≤ (2, 3, 0)) ⇒ Có thể cung cấp Nếu cung cấp : Available = (2 , 1, 0) Thực hiện thuật toán an toàn ⇒ Tất cả các TT đều có thể không kết thúc ⇒ Nếu chấp nhận , hệ thống rơi vào trạng thái không an toàn ⇒ Đủ tài nguyên nhưng không cung cấp . P 0 phải đợi Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Khái niệm bế tắc Điều kiện xảy ra bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết và khắc phục Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Giới thiệu Nguyên tắc Không áp dụng các biện pháp phòng ngừa hoặc phòng tránh, để cho bế tắc xảy ra Định kỳ kiểm tra xem bế tắc 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 bế tắc không Biện pháp kỹ thuật chữa bế tắc Nhận biết bế tắc Thuật toán dựa trên đồ thị cung cấp TN Thuật toán chỉ ra bế tắc tổng quát Khắc phục bế tắc Kết thúc TT Trưng dụng tài nguyên Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Thuận toán dựa trên đồ thị cung cấp tài nguyên I Áp dụng khi mỗi TN trong hệ thống có 1 đơn vị K / tra hệ thống có bế tắc 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 bế tắc Đị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 n 2 thao tác (n: số đỉnh của đồ thị) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Thuận toán dựa trên đồ thị cung cấp tài nguyên II 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 TT Cung chờ đợi Pi → Pj: TT Pi đang đợi TT 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 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Đồ thị chờ đợi: Ví dụ P 1 P 3 R 2 R 3 R 1 R 4 R 5 P 5 P 2 P 4 P 1 P 3 P 5 P 2 P 4 Đồ thị chờ đợi Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Thuật toán chỉ ra bế tắc tổng quát : Giới thiệu Áp dụng: 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 người quản lý nhà băng Các cấu trúc dữ liệu Available Vector độ dài m: Tài nguyên sẵn có Allocation Ma trận n ∗ m: Tài nguyên đã cấp Request Ma trận n ∗ m: Tài nguyên yêu cầu Các cấu trúc cục bộ Work Vector độ dài m cho biết TN hiện đang có Finish Vector độ dài n cho biết TT có thể kết thúc không Các qui ước Quan hệ ≤ giữa các Vector Xử lý các dòng ma trận n ∗ m như các vector Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Thuật toán chỉ ra bế tắc tổng quát BOOL Deadlock(Current Resource-Allocation State) { Work←Available for (i : 1 → n) if(Allocation[i] 0) Finish[i]←false else Finish[i] ← true; flag← true w hile(flag){ flag←false for (i : 1 → n) if (Finish[i]=false AND Request [i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true } //endif } //endwhile for (i : 1 → n) if (Finish[i]=false)return true; return fals e; } //End function //Allocation= 0 không nằm trong chu trình đợi //Finish[i] = false, tiến trình Pi đang bị bế tắc Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa 5 tiến trình P 0 , P 1 , P 2 , P 3 , P 4 ; 3 tài nguyên R 0 , R 1 , R 2 Tài nguyên R 0 có 7 đơn vị, R 1 có 2 đơn vị, R 2 có 6 đơn vị Trạng thái cung cấp tài nguyên tại thời điểm t 0 R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F F F F F Work (0,0,0) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T F F F F Work (0,1,0) F F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T F T F F Work ( 3,1,3 ) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T F T T F Work ( 5,2,4 ) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T F T T F Work ( 5,2,4 ) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T T T T F Work ( 7,2,4 ) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 0 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T T T T T Work ( 7,2,6 ) Hệ thống không bế tắc (P 0 , P 2 , P 3 , P 1 , P 4 ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa tại thời điểm t 1 : P 2 yêu cầu thêm 1 đơn vị tài nguyên R 2 Trạng thái cung cấp tài nguyên R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 1 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tài nguyên hiện có (R 0 , R 1 , R 2 ) =(0, 0, 0) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 1 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tiến trình P 0 P 1 P 2 P 3 P 4 Finish F F F F F Work (0,0,0) F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 1 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T F F F F Work (0,1,0) F F F F Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa R0 R1 R2 P 0 0 0 0 P 1 2 0 2 P 2 0 0 1 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 0 P 1 2 0 0 P 2 3 0 3 P3 2 1 1 P4 0 0 2 Allocation Tiến trình P 0 P 1 P 2 P 3 P 4 Finish T F F F F Work (0,1,0) F F F F P 0 có thể kết thúc nhưng hệ thống đang bế tắc. Các tiến trình đang chờ đợi lẫn nhau (P 1 , P 2 , P 3 , P 4 ) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Nguyên tắc : Hủy bỏ các TT đang trong tình trạng bế tắc và lấy lại tài nguyên đã cấp cho TT bị hủy bỏ Hủy bỏ tất cả các TT Hủy bỏ lần lượt TT cho tới khi bế tắc không xảy ra Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Hủy bỏ tất cả các TT Nhanh chóng loại bỏ bế tắc Quá tốn kém Các TT bị hủy bỏ có thể gần kết thúc Hủy bỏ lần lượt TT cho tới khi bế tắc không xảy ra Sau khi hủy bỏ, phải kiểm tra xem bế tắc còn tồn tại không Thuật toán kiểm tra bế tắc có độ phức tạp m ∗ n 2 Cần chỉ ra thứ tự TT bị hủy bỏ để phá vỡ bế tắc Độ ưu tiên. T hời gian tồn tại , thực hiện Tài nguyên đang chiếm giữ, còn cần để kết thúc . . . Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Vấn đề hủy bỏ TT TT đang cập nhật file ⇒ File không hoàn chỉnh TT sử dụng máy in ⇒ Reset trạng thái máy in Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Khắc phục bế tắc: Phương pháp trưng dụng tài nguyên Nguyên tắc: Trưng dụng liên tục một vài tài nguyên từ một số TT đang bế tắc cho các TT khác đến khi bế tắc được hủy bỏ Các vấn đề cần quan tâm Lựa chọn nạn nhân (victim) Quay lui (Rollback) Đói tài nguyên (Starvation) Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Khắc phục bế tắc: Phương pháp trưng dụng tài nguyên Lựa chọn nạn nhân (victim) Tài nguyên nào và tiến trình nào ? 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. . . 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 TT đang thực hiện Đói tài nguyên (Starvation) 1 TT 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 Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Cách xử lý bế tắc khác ? Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc Tổng kết Bế tắc là tình trạng 2 hay nhiều TT cùng chờ đợi độc lập 1 sự kiện chỉ có thể xảy ra bởi sự hoạt động của các TT đang đợi Bế tắc xảy ra khi hội đủ 4 điều kiện Tồn tại tài nguyên găng Phải chờ đợi trước khi vào đoạn găng Không tồn tại hệ thống phân phối lại tài nguyên Tồn tại hiện tượng chờ đợi vòng tròn Để xử lý bế tắc có 3 lớp thuật toán Phòng ngừa bế tắc Tác động vào các điều kiện xảy ra bế tắc Dự báo và phòng tránh Ngăn ngừa hệ thống rơi vào tình trạng có thể dẫn đến bế tắc Nhận biết và khắc phục Cho phép bế tắc xảy ra, chỉ ra bế tắc và khắc phục sau Chương 2 Quản lí tiến trình 5.Bế tắc và xử lí bế tắc 5.6 Nhận biết và khắc phục Ví dụ minh họa 5 tiến trình P 0 , P 1 , P 2 , P 3 , P 4 ; 3 tài nguyên R 0 , R 1 , R 2 Tài nguyên R 0 có 6 đơn vị, R 1 có 4 đơn vị, R 2 có 7 đơn vị Trạng thái cung cấp tài nguyên tại thời điểm t 0 R0 R1 R2 P 0 0 0 0 P 1 2 1 2 P 2 0 0 2 P3 1 0 0 P4 6 0 2 Request R0 R1 R2 P 0 0 1 1 P 1 1 0 0 P 2 3 0 2 P3 2 1 1 P4 0 2 2 Allocation

Các file đính kèm theo tài liệu này:

  • pptxbai_giang_he_dieu_hanh_chuong_2_quan_ly_tien_trinh_do_quoc_h.pptx