Trong hệ thống máy tính, tình huống bế tắc (Deadlock) xuất hiện khi hai tiến trình phải chờ đợi nhau giải phóng tài nguyên hoặc nhiều tiến trình chờ sử dụng các tài nguyên theo một “vòng tròn” (circular chain). Trong bài giảng tuần 5 này, các bạn sẽ cùng tìm hiểu các đinh nghĩa cơ bản về bế tắc, các phương pháp xử lý bế tắc trong hệ điều hành, cách ngăn chặn bế tắc (Deadlock prevention), cách tránh bế tắc (Deadlock avoidance),... Mời các bạn cùng tham khảo.
Nguyên lý hệ điều hành Bế tắc (Deadlock) Nguyễn Hải Châu Khoa Công nghệ thông tin Trường Đại học Công nghệ Định nghĩa z z Hai dê qua cầu: Bế tắc Bế tắc tình xuất hai hay nhiều “hành động” phải chờ nhiều hành động khác để kết thúc, không thực Máy tính: Bế tắc tình xuất hai tiến trình phải chờ đợi giải phóng tài ngun nhiều tiến trình chờ sử dụng tài nguyên theo “vòng tròn” (circular chain) Bế tắc giao thông ngã tư Bế tắc máy tính z Tiến trình A: { z … Khóa file F1; Mở file F2; … Đóng F1 (mở khóa F1); } Tiến trình B { … Khóa file F2; Mở file F1; … Đóng F1 (mở khóa F1); } Qui trình sử dụng tài nguyên z Điều kiện cần để có bế tắc Một tiến trình thường sử dụng tài nguyên theo bước sau: z z z z Xin phép sử dụng (request) Sử dụng tài nguyên (use) Giải phóng tài nguyên sau sử dụng (release) Bế tắc xuất điều kiện sau xuất đồng thời (điều kiện cần): z z z z C1: Loại trừ lẫn (mutual exclusion) C2: Giữ chờ (hold and wait) C3: Khơng có đặc quyền (preemption) C4: Chờ vòng (circular wait) C1: Loại trừ lẫn z C2: Giữ chờ Một tài nguyên bị chiếm tiến trình, khơng tiến trình khác sử dụng tài nguyên z Một tiến trình giữ tài ngun chờ số tài nguyên khác rỗi để sử dụng Các tài nguyên bị tiến trình khác chiếm giữ C3: Khơng có đặc quyền z 10 C3: Chờ vịng Tài ngun bị chiếm giữ rỗi tiến trình “tự nguyện” giải phóng tài nguyên sau sử dụng xong 11 z Một tập tiến trình {P0, P1, , Pn} có xuất điều kiện “chờ vòng” P0 chờ tài nguyên P1 chiếm giữ, P1 chờ tài nguyên khác P2 chiếm giữ, , Pn-1 chờ tài nguyên Pn chiếm giữ Pn chờ tài nguyên P0 chiếm giữ 12 Đồ thị cấp phát tài nguyên z z z Đồ thị cấp phát tài nguyên Thuật ngữ: Resource allocation graph Để mơ tả cách xác bế tắc, sử dụng đồ thị có hướng gọi “đồ thị cấp phát tài nguyên” G=(V, E) với V tập đỉnh, E tập cung E chia thành hai tập P={P0, P1, , Pn} tập tiến trình hệ thống R= {R0, R1, , Rm} tập loại tài nguyên hệ thống thỏa mãn P∪R=E P∩R= ∅ z z Cung có hướng từ tiến trình Pi đến tài nguyên Rj, ký hiệu Pi→Rj có ý nghĩa: Tiến trình Pi yêu cầu thể Ri Ta gọi Pi→Rj cung yêu cầu (request edge) Cung có hướng từ tài ngun Rj đến tiến trình Pi ký hiệu Rj→Pi có ý nghĩa: Một thể tài nguyên Rj cấp phát cho tiến trình Pi Ta gọi Rj→Pi cung cấp phát (asignment edge) 13 Đồ thị cấp phát tài nguyên z z z Đồ thị cấp phát tài nguyên Ký hiệu hình vẽ: z z Pi hình trịn Rj hình chữ nhật với chấm bên số lượng thể tài nguyên P1 R2 P2 z P3 R3 R4 15 Giả sử P3 yêu cầu thể R3 Khi có chu trình xuất hiện: z z z Nếu khơng có chu trình đồ thị cấp phát tài ngun: Khơng có bế tắc Nếu có chu trình: Có thể xảy bế tắc Nếu chu trình đồ thị cấp phát tài nguyên, loại tài nguyên có thể hiện: Bế tắc xảy (Điều kiện cần đủ) Nếu chu trình đồ thị cấp phát tài nguyên số tài nguyên có nhiều thể hiện: Có thể xảy bế tắc (Điều kiện cần khơng đủ) 16 Ví dụ chu trình khơng dẫn đến bế tắc Ví dụ chu trình dẫn đến bế tắc z z Minh họa đồ thị cấp phát tài nguyên: R1 z 14 z z P1→R1→P2→R2→P3→R3→P1, P2→R2→P3→R3→P2 Chu trình: P1→R1→P3→R2→P1 Bế tắc khơng xảy P4 giải phóng thể tài nguyên R2 P3 cấp phát thể R2 P2 Khi tiến trình P1, P2, P3 bị bế tắc R1 R2 R1 P1 P1 R3 P2 P3 R4 P3 R2 17 P4 18 Các phương pháp xử lý bế tắc Các phương pháp xử lý bế tắc z Một cách tổng quát, có phương pháp: z z z Sử dụng giao thức để hệ thống không rơi vào trạng thái bế tắc: Deadlock prevention (ngăn chặn bế tắc) Deadlock avoidance (tránh bế tắc) Có thể cho phép hệ thống bị bế tắc, phát bế tắc khắc phục Bỏ qua bế tắc, xem bế tắc không xuất hệ thống (Giải pháp dùng nhiều hệ thống, ví dụ Unix, Windows!!) 19 20 Giới thiệu Ngăn chặn bế tắc (Deadlock prevention) z z Ngăn chặn bế tắc (deadlock prevention) phương pháp xử lý bế tắc, khơng cho xảy cách làm cho điều kiện cần bế tắc C1, C2, C3 C4 không thỏa mãn (không xảy ra) Ngăn chặn bế tắc theo phương pháp có tính chất tĩnh (statically) 21 Ngăn chặn “loại trừ lẫn nhau” z 22 Ngăn chặn “giữ chờ” C1 (Loại trừ lẫn nhau): điều kiện bắt buộc cho tài nguyên không sử dụng chung → Khó làm cho C1 khơng xảy hệ thống ln có tài nguyên sử dụng chung z C2 (Giữ chờ): Có thể làm cho C2 khơng xảy cách đảm bảo: z z 23 Một tiến trình ln u cầu cấ phát tài ngun không chiếm giữ tài nguyên nào, Một tiến trình thực cấp phát toàn tài nguyên cần thiết 24 Ngăn chặn “khơng có đặc quyền”: mã lệnh Ngăn chặn “khơng có đặc quyền” z Để ngăn chặn khơng cho điều kiện xảy ra, sử dụng giao thức sau: z z Nếu tiến trình P (đang chiếm tài nguyên R1, , Rn-1) yêu cầu cấp phát tài ngun Rn khơng cấp phát (có nghĩa P phải chờ) tất tài nguyên R1, , Rn-1 phải “thu hồi” Nói cách khác, R1, , Rn-1 phải “giải phóng” cách áp đặt, tức tài nguyên phải đưa vào danh sách tài nguyên mà P chờ cấp phát Tiến trình P yêu cầu cấp phát tài nguyên R1, , Rn-1 if (R1, , Rn-1 rỗi) then cấp phát tài nguyên cho P else if ({Ri Rj} cấp phát cho Q Q trạng thái chờ số tài nguyên S khác) then thu hồi {Ri Rj} cấp phát cho P else đưa P vào trạng thái chờ tài nguyên R1, , Rn-1 25 Ngăn chặn “chờ vòng” z z 26 Ngăn chặn “chờ vòng” Một giải pháp ngăn chặn chờ vòng đánh số thứ tự tài nguyên bắt buộc tiến trình yêu cầu cấp phát tài nguyên theo số thứ tự tăng dần Giả sử có tài nguyên {R1, , Rn} Ta gán cho tài nguyên số nguyên dương qua ánh xạ 1-1 z Giao thức ngăn chặn chờ vòng: z z f : R → N, với N tập số tự nhiên Ví dụ: f(ổ cứng) = 1, f(băng từ) = 5, f(máy in) = 11 z 27 Chứng minh giải pháp ngăn chặn chờ vòng z z z z 28 Ưu nhược điểm ngăn chặn giải pháp bế tắc Sử dụng chứng minh phản chứng Giả sử giải pháp ngăn chặn gây chờ vòng {P0, P1, , Pn} Pi chờ tài nguyên Ri bị chiếm giữ P(i+1) mod n Vì Pi+1 chiếm giữ Ri yêu cầu Ri+1, f(Ri) f(Ri) Một cách khác, P muốn yêu cầu cấp phát tài nguyên Rj, giải phóng tất tài nguyên Ri thỏa mãn f(Ri)≥f(Rj) Nếu P cần cấp phát nhiều loại tài nguyên, P phải yêu cầu thể tài nguyên z z Ưu điểm: ngăn chặn bế tắc (deadlock prevention) phương pháp tránh bế tắc cách làm cho điều kiện cần không thỏa mãn Nhược điểm: z f(R0)