Chương II KIẾN TRÚC HỆ ĐIỀU HÀNH DEADLOCK I Mục đích Sau khi học xong chương này, người học nắm được những kiến thức sau • Hiểu mô hình hệ thống về deadlock • Hiểu các đặc điểm của deadlock • Hiểu các[.]
DEADLOCK I Mục đích Sau học xong chương này, người học nắm kiến thức sau: • • • • • • • Hiểu mơ hình hệ thống deadlock Hiểu đặc điểm deadlock Hiểu phương pháp quản lý deadlock Hiểu cách ngăn chặn deadlock Hiểu cách tránh deadlock Hiểu cách phát deadlock Hiểu cách phục hồi từ deadlock II Giới thiệu Trong môi truờng đa chương, nhiều q trình cạnh tranh số giới hạn tài nguyên Một trình yêu cầu tài nguyên, tài nguyên không sẳn dùng thời điểm đó, q trình vào trạng thái chờ Q trình chờ khơng chuyển trạng thái trở lại tài nguyên chúng yêu cầu bị giữ trình chờ khác Trường hợp gọi deadlock (khoá chết) Trong chương mô tả phương pháp mà hệ điều hành dùng để ngăn chặn hay giải deadlock Hầu hết hệ điều hành không cung cấp phương tiện ngăn chặn deadlock đặc điểm thêm vào sau Vấn đề deadlock trở thành vấn đề phổ biến, xu hướng hành gồm số lượng lớn trình, chương trình đa luồng, nhiều tài nguyên hệ thống đặc biệt tập tin có đời sống dài máy phục vụ sở liệu hệ thống bó III Mơ hình hệ thống Một hệ thống chứa số tài nguyên hữu hạn phân bổ nhiều trình cạnh tranh Các tài nguyên phân chia thành nhiều loại, loại chứa số thể xác định Không gian nhớ, chu kỳ CPU thiết bị nhập/xuất (như máy in, đĩa từ) thí dụ loại tài ngun Nếu hệ thống có hai CPUs, loại tài nguyên CPU có hai thể Tương tự, loại tài nguyên máy in có năm thể Nếu trình yêu cầu thể loại tài nguyên việc cấp phát thể loại tài nguyên thoả mãn u cầu Nếu khơng có thể không xác định lớp loại tài nguyên khơng định nghĩa hợp lý Thí dụ, hệ thống có hai máy in Hai loại máy in định nghĩa lớp loại tài ngun khơng có q trình quan tâm máy in liệu Tuy nhiên, máy in tầng máy in khác tầng người dùng tầng xem hai máy in tương tự lớp tài nguyên riêng rẻ cần định nghĩa cho máy in Một trình phải yêu cầu tài nguyên trước sử dụng nó, phải giải phóng sau sử dụng Một q trình yêu cầu nhiều tài nguyên yêu cầu để thực tác vụ gán Chú ý, số tài ngun u cầu khơng vượt số lượng tổng cộng tài nguyên sẳn có hệ thống Nói cách khác, q trình khơng thể yêu cầu ba máy in hệ thống có hai Dưới chế độ điều hành thơng thường, q trình sử dụng tài ngun thứ tự sau: 1) Yêu cầu: yêu cầu khơng thể gán tức (thí dụ, tài ngun dùng trình khác) trình yêu cầu phải chờ nhận tài nguyên 2) Sử dụng: trình điều hành tài ngun (thí dụ, tài ngun máy in, q trình in máy in) 3) Giải phóng: q trình giải phóng tài ngun Yêu cầu giải phóng tài nguyên lời gọi hệ thống Thí dụ yêu cầu giải phóng thiết bị, mở đóng tập tin, cấp phát giải phóng nhớ Yêu cầu giải phóng tài ngun khác đạt thơng qua thao tác chờ wait báo hiệu signal Do đó, cho trường hợp sử dụng, hệ điều hành kiểm tra để đảm bảo trình sử dụng yêu cầu cấp phát tài nguyên Một bảng hệ thống ghi nhận q trình giải phóng hay cấp phát tài nguyên Nếu trình yêu cầu tài nguyên mà tài nguyên cấp phát cho q trình khác, thêm vào hàng đợi để chờ tài nguyên Một tập hợp trình trạng thái deadlock trình tập hợp chờ kiện mà tạo trình khác tập hợp Những kiện mà quan tâm chủ yếu nhận giải phóng tài nguyên Các tài nguyên tài nguyên vật lý (thí dụ, máy in, đĩa từ, khơng gian nhớ chu kỳ CPU) hay tài nguyên luận lý (thí dụ, tập tin, semaphores, monitors) Tuy nhiên, loại khác kiện dẫn đến deadlock Để minh hoạ trạng thái deadlock, xét hệ thống với ba ổ đĩa từ Giả sử trình giữ ổ đĩa từ Bây giờ, trình yêu cầu ổ đĩa từ khác ba trình trạng thái deadlock Mỗi trình chờ kiện “ổ đĩa từ giải phóng” mà gây q trình chờ Thí dụ minh hoạ deadlock liên quan đến loại tài nguyên Deadlock liên quan nhiều loại tài nguyên khác Thí dụ, xét hệ thống với máy in ổ đĩa từ Giả sử, trình Pi giữ ổ đĩa từ trình Pj giữ máy in Nếu Pi yêu cầu máy in Pj yêu cầu ổ đĩa từ deadlock xảy Một người lập trình phát triển ứng dụng đa luồng phải quan tâm đặc biệt tới vấn đề này: Các chương trình đa luồng ứng cử viên cho vấn đề deadlock nhiều luồng cạnh tranh tài nguyên chia sẻ IV Đặc điểm deadlock Trong deadlock, q trình khơng hoàn thành việc thực thi tài nguyên hệ thống bị buộc chặt, ngăn chặn trình khác bắt đầu Trước thảo luận phương pháp khác giải vấn đề deadlock, mô tả đặc điểm mà deadlock mô tả IV.1 Những điều kiện cần thiết gây deadlock Trường hợp deadlock phát sinh bốn điều kiện sau xảy lúc hệ thống: 1) Loại trừ hỗ tương: tài nguyên phải giữ chế độ không chia sẻ; nghĩa là, trình thời điểm sử dụng tài nguyên Nếu trình khác u cầu tài ngun đó, q trình u cầu phải tạm dừng tài nguyên giải phóng 2) Giữ chờ cấp thêm tài nguyên: q trình phải giữ tài ngun chờ để nhận tài nguyên thêm mà giữ q trình khác 3) Khơng địi lại tài nguyên từ trình giữ chúng: Các tài ngun khơng thể bị địi lại; nghĩa là, tài nguyên giải phóng tự ý q trình giữ nó, sau q trình hồn thành tác vụ 4) Tồn chu trình đồ thị cấp phát tài nguyên: tập hợp q trình {P0, P1,…,Pn} chờ mà P0 chờ tài nguyên giữ P1, P1 chờ tài nguyên giữ P2,…,Pn-1 chờ tài nguyên giữ trình P0 Chúng ta nhấn mạnh tất bốn điều kiện phải phát sinh để deadlock xảy Điều kiện chờ đợi ch trình đưa đến điều kiện giữ-và-chờ bốn điều kiện khơng hồn tồn độc lập IV.2 Đồ thị cấp phát tài ngun Deadlock mơ tả xác cách hiển thị đồ thị có hướng gọi đồ thị cấp phát tài nguyên hệ thống Đồ thị chứa tập đỉnh V tập hợp cạnh E Một tập đỉnh V chia làm hai loại nút P = {P1, P2,…,Pn} tập hợp trình hoạt động hệ thống, R = {R1, R2, , Rm} tập hợp chứa tất loại tài nguyên hệ thống Một cạnh có hướng từ q trình Pi tới loại tài nguyên Rj ký hiệu Pi →Rj; biểu thị q trình Pi u cầu loại tài nguyên Rj chờ loại tài nguyên Một cạnh có hướng từ loại tài nguyên Rj tới trình Pi hiển thị Rj → Pi; hiển thị thể loại tài nguyên Rj cấp phát tới trình Pi Một cạnh có hướng Pi → Rj gọi cạnh yêu cầu; cạnh có hướng Rj → Pi gọi cạnh gán Bằng hình tượng, hiển thị trình Pi hình trịn, loại tài ngun Rj hình chữ nhật Vì loại tài ngun Rj có nhiều thể hiện, hiển thị thể chấm nằm hình vng Chú ý cạnh yêu cầu trỏ tới hình vuông Rj, trái lại cạnh gán phải gán tới dấu chấm hình vng Khi trình Pi yêu cầu thể loại tài nguyên Rj, cạnh yêu cầu chèn vào đồ thị cấp phát tài nguyên Khi yêu cầu đáp ứng, cạnh yêu cầu truyền tới cạnh gán Khi q trình khơng cịn cần truy xuất tới tài nguyên, giải phóng tài ngun, dẫn đến cạnh gán bị xố Đồ thị cấp phát tài nguyên hiển thị hình VI-1 mơ tả trường hợp sau: Hình 0-1 Đồ thị cấp phát tài nguyên • Các tập P, R, E: o P = {P1, P2, P3} o R = {R1, R2, R3, R4} o E = {P1→R1, P2 →R3, R1 →P2, R2→P2, R3→P3} • Các thể tài nguyên o Một thể tài nguyên loại R1 o Hai thể tài nguyên loại R2 o Một thể tài nguyên loại R3 o Một thể tài nguyên loại R4 • Trạng thái trình o Quá trình P1 giữ thể loại tài nguyên R2 chờ thể loại tài nguyên R1 o Quá trình P2 giữ thể loại tài nguyên R1 R2 chờ thể loại tài nguyên R3 o Quá trình P3 giữ thể R3 Đồ thị cấp phát tài nguyên hiển thị rằng, đồ thị không chứa chu trình, khơng có q trình hệ thống bị deadlock Nếu đồ thị có chứa chu trình, deadlock tồn Nếu loại tài ngun có xác thể hiện, chu trình ngụ ý deadlock xảy Nếu chu trình bao gồm tập hợp loại tài nguyên, loại tài nguyên có thể deadlock xảy Mỗi trình chứa chu trình bị deadlock Trong trường hợp này, chu trình đồ thị điều kiện cần đủ để tồn deadlock Nếu loại tài nguyên có nhiều thể chu trình khơng ngụ ý deadlock xảy Trong trường hợp này, chu trình đồ thị điều kiện cần chưa đủ để tồn deadlock Để hiển thị khái niệm này, xem lại đồ thị hình VII-1 Giả sử trình P3 yêu cầu thể loại tài ngun R2 Vì khơng tài nguyên có, cạnh yêu cầu P3 → R2 thêm vào đồ thị (hình VI-2) Tại thời điểm này, hai chu trình nhỏ tồn hệ thống: P1 → R1 → P2 → R3 → P3 → R2 → P1 P2 → R3 → P3 → R2 → P2 Hình 0-2 Đồ thị cấp phát tài nguyên với deadlock Quá trình P1, P2, P3 bị deadlock Quá trình P3 chờ tài nguyên R3, giữ q trình P2 Hay nói cách khác, trình P3 chờ trình P1 hay P2 giải phóng tài ngun R2 Ngồi ra, q trình P1 chờ q trình P2 giải phóng tài ngun R1 Bây xem xét đồ thị cấp phát tài nguyên hình VI-3 Trong thí dụ này, có chu kỳ P1 → R1 → P3 → R2 → P1 Hình 0-3 Đồ thị cấp phát tài ngun có chu trình khơng bị deadlock Tuy nhiên, khơng có deadlock Chú ý q trình P4 giải phóng thể loại tài nguyên R2 Tài nguyên cấp phát tới P3 sau đó, chu trình khơng cịn Tóm lại, đồ thị cấp phát tài ngun khơng có chu trình hệ thống khơng có trạng thái deadlock Ngồi ra, có chu trình có không trạng thái deadlock Nhận xét quan trọng giải vấn đề deadlock V Các phương pháp xử lý deadlock Phần lớn, giải vấn đề deadlock theo ba cách: • Chúng ta sử dụng giao thức để ngăn chặn hay tránh deadlocks, đảm bảo hệ thống không vào trạng thái deadlock • Chúng ta cho phép hệ thống vào trạng thái deadlock, phát phục hồi • Chúng ta bỏ qua hồn tồn vấn đề giả vờ deadlock khơng xảy hệ thống Giải pháp dùng nhiều hệ điều hành, kể UNIX • Chúng ta tìm hiểu vắn tắt phương pháp Sau đó, trình bày giải thuật cách chi tiết phần sau Để đảm bảo deadlock không xảy ra, hệ thống dùng kế hoạch ngăn chặn hay tránh deadlock Ngăn chặn deadlock tập hợp phương pháp để đảm bảo điều kiện cần (trong phần VI.4.1) xảy Các phương pháp ngăn chặn deadlocks cách ràng buộc yêu cầu tài nguyên thực Chúng ta thảo luận phương pháp phần sau Ngược lại, tránh deadlock yêu cầu hệ điều hành cung cấp thông tin bổ sung tập trung vào loại tài nguyên trình yêu cầu sử dụng thời gian sống Với kiến thức bổ sung này, định yêu cầu trình nên chờ hay khơng Để định u cầu thoả mãn hay phải bị trì hỗn, hệ thống phải xem xét tài nguyên có, tài nguyên cấp phát cho trình, yêu cầu giải phóng tương lai q trình Nếu hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock trường hợp deadlock xảy Trong mơi trường này, hệ thống cung cấp giải thuật để xem xét trạng thái hệ thống để xác định deadlock có xảy hay khơng giải thuật phục hồi từ deadlock Nếu hệ thống không đảm bảo deadlock không xảy không cung cấp chế để phát phục hồi deadlock dẫn đến trường hợp hệ thống trạng thái deadlock Trong trường hợp này, deadlock không phát làm giảm lực hệ thống tài nguyên giữ q trình mà chúng khơng thể thực thi, vào trạng thái deadlock Cuối cùng, hệ thống dừng chức cần khởi động lại thủ công Mặc dù phương pháp dường không tiếp cận khả thi vấn đề deadlock dùng số hệ điều hành Trong nhiều hệ thống, deadlock xảy khơng thường xun; phương pháp rẻ chi phí cho phương pháp ngăn chặn deadlock, tránh deadlock, hay phát phục hồi deadlock mà chúng phải sử dụng liên tục Trong số trường hợp, hệ thống trạng thái cô đặc khơng trạng thái deadlock Như thí dụ, xem xét trình thời thực chạy độ ưu tiên cao (hay trình chạy định thời biểu không trưng dụng) không trả điều khiển hệ điều hành Do đó, hệ thống phải có phương pháp phục hồi thủ công cho điều kiện không deadlock đơn giản sử dụng kỹ thuật cho việc phục hồi deadlock VI Ngăn chặn deadlock Để deadlock xảy ra, bốn điều kiện cần phải xảy Bằng cách đảm bảo bốn điều kiện xảy ra, ngăn chặn việc xảy deadlock Chúng ta tìm hiểu tỷ mỹ tiếp cận cách xem xét điều kiện cần riêng rẻ VI.1 Loại trừ hỗ tương Điều kiện loại trừ hỗ tương phải giữ cho tài ngun khơng chia sẻ Thí dụ, máy in chia sẻ lúc nhiều q trình Ngược lại, tài ngun chia sẻ khơng địi hỏi truy xuất loại trừ hỗ tương khơng thể liên quan đến deadlock Những tập tin đọc thí dụ tốt cho tài nguyên chia sẻ Nếu nhiều trình cố gắng mở tập tin đọc thời điểm chúng gán truy xuất lúc tập tin Một trình khơng u cầu chờ tài ngun chia sẻ Tuy nhiên, thường ngăn chặn deadlock cách từ chối điều kiện loại trừ hỗ tương: số tài nguyên thực chất chia sẻ VI.2 Giữ chờ cấp thêm tài nguyên Để đảm bảo điều kiện giữ-và-chờ cấp thêm tài nguyên không xảy hệ thống, phải đảm bảo q trình u cầu tài ngun, khơng giữ tài nguyên khác Một giao thức dùng địi hỏi q trình u cầu cấp phát tất tài nguyên trước bắt đầu thực thi Chúng ta cài đặt cung cấp cách yêu cầu lời gọi hệ thống yêu cầu tài nguyên cho trình trước tất lời gọi hệ thống khác Một giao thức khác cho phép trình u cầu tài ngun q trình khơng có tài ngun Một q trình u cầu số tài nguyên dùng chúng Tuy nhiên, trước yêu cầu tài nguyên bổ sung nào, phải giải phóng tất tài nguyên mà cấp phát Để hiển thị khác hai giao thức, xét trình chép liệu từ băng từ tới tập tin đĩa, xếp tập tin đĩa sau in kết máy in Nếu tất tài nguyên phải yêu cầu lúc khởi đầu trình phải yêu cầu băng từ, tập tin đĩa máy in Nó giữ máy in tồn thời gian thực thi nó cần máy in giai đoạn cuối Phương pháp thứ hai cho phép trình yêu cầu ban đầu băng từ tập tin đĩa Nó chép liệu từ băng từ tới đĩa, giải phóng hai băng từ đĩa Sau đó, trình phải yêu cầu lại tập tin đĩa máy in Sau đó, chép tập tin đĩa tới máy in, giải phóng hai tài nguyên kết thúc Hai giao thức có hai nhược điểm chủ yếu Thứ nhất, việc sử dụng tài nguyên chậm nhiều tài ngun cấp khơng sử dụng thời gian dài Trong thí dụ cho, giải phóng băng từ tập tin đĩa, sau yêu cầu lại tập tin đĩa máy in đảm bảo liệu cịn tập tin đĩa Nếu khơng thể đảm bảo liệu tập tin đĩa phải yêu cầu tất tài nguyên thời điểm bắt đầu cho hai giao thức Thứ hai, đói tài nguyên Một trình cần nhiều tài ngun phổ biến phải đợi vơ hạn định tài ngun mà cần ln cấp phát cho q trình khác VI.3 Khơng địi lại tài ngun từ q trình giữ chúng Điều kiện cần thứ ba khơng địi lại tài nguyên cấp phát Để đảm bảo điều kiện khơng xảy ra, dùng giao thức sau Nếu trình giữ số tài nguyên yêu cầu tài nguyên khác mà khơng cấp phát tức tới (nghĩa là, trình phải chờ) tất tài ngun giữ địi lại Nói cách khác, tài ngun giải phóng hồn tồn Những tài nguyên bị đòi lại thêm tới danh sách tài nguyên mà trình chờ Quá trình khởi động lại nhận lại tài nguyên cũ tài nguyên mà yêu cầu Có chọn lựa khác, trình yêu cầu số tài nguyên, kiểm tra chúng có sẳn khơng Nếu tài ngun có sẳn, cấp phát chúng Nếu tài ngun khơng có sẳn, kiểm tra chúng có cấp phát tới số trình khác chờ tài nguyên bổ sung Nếu thế, lấy lại tài ngun mong muốn từ q trình đợi cấp chúng cho trình yêu cầu Nếu tài ngun khơng sẳn có hay giữ q trình đợi, trình yêu cầu phải chờ Trong chờ, số tài nguyên địi lại q trình khác u cầu chúng Một q trình khởi động lại cấp tài nguyên mà yêu cầu phục hồi tài nguyên bị lấy lại chờ Giao thức thường áp dụng tới tài nguyên mà trạng thái lưu lại dễ dàng phục hồi lại sau đó, ghi CPU khơng gian nhớ Nó thường khơng thể áp dụng cho tài nguyên máy in băng từ VI.4 Tồn chu trình đồ thị cấp phát tài nguyên Điều kiện thứ tư điều kiện cuối cho deadlock điều kiện tồn chu trình đồ thị cấp phát tài nguyên Một cách để đảm bảo điều kiện không xảy áp đặt toàn thứ tự tất loại tài nguyên đòi hỏi trình thứ tự tăng số lượng Gọi R = {R1, R2, …, Rm} tập hợp loại tài nguyên Chúng ta gán loại tài nguyên số nguyên nhất, cho phép so sánh hai tài nguyên xác định tài nguyên có đứng trước tài nguyên khác hay không thứ tự Thông thường, định nghĩa hàm ánh xạ một-một F: R → N, N tập hợp số tự nhiên Thí dụ, tập hợp loại tài nguyên R gồm ổ băng từ, ổ đĩa máy in hàm F định nghĩa sau: F(ổ băng từ) = 1, F(đĩa từ) = 5, F(máy in) = 12 Bây xem giao thức sau để ngăn chặn deadlock: q trình u cầu tài ngun thứ tự tăng số lượng Nghĩa là, q trình ban đầu u cầu số lượng thể loại tài nguyên Ri Sau đó, q trình u cầu thể loại tài nguyên Rj F(Rj) > F(Ri) Nếu số thể loại tài nguyên yêu cầu, yêu cầu cho tất thể phải cấp phát Thí dụ, sử dụng hàm định nghĩa trước đó, q trình muốn dùng ổ băng từ máy in lúc trước tiên phải yêu cầu ổ băng từ sau yêu cầu máy in Nói cách khác, yêu cầu rằng, trình yêu cầu thể loại tài nguyên Rj, giải phóng tài nguyên Ri cho F(Ri) ≥ F(Rj) Nếu có hai giao thức dùng điều kiện tồn chu trình khơng thể xảy Chúng ta giải thích điều cách cho tồn chu trình đồ thị cấp phát tài nguyên tồn Gọi tập hợp trình chứa tồn chu trình đồ thị cấp phát tài nguyên {P0, P1, … , Pn}, Pi chờ tài nguyên Ri, mà Ri giữ q trình Pi+1 Vì sau q trình Pi+1 giữ tài nguyên Ri yêu cầu tài nguyên Ri+1, nên có F(Ri) < F(Ri+1) cho tất i Nhưng điều kiện có nghĩa F(R0) < F(R1) < …< F(Rn) < F(R0) Bằng qui tắc bắt cầu F(R0) < F(R0), điều Do đó, khơng thể có chờ chu trình Chú ý hàm F nên định nghĩa dựa theo thứ tự tự nhiên việc sử dụng tài nguyên hệ thống Thí dụ, ổ băng từ thường yêu cầu trước máy in nên hợp lý để định nghĩa F( ổ băng từ) < F(máy in) VII Tránh deadlock Các giải thuật ngăn chặn deadlock, thảo luận VII-6, ngăn chặn deadlock cách hạn chế cách yêu cầu thực Các ngăn chặn đảm bảo điều kiện cần cho deadlock xảy Do đó, deadlock khơng thể xảy Tuy nhiên, tác dụng phụ ngăn chặn deadlock phương pháp việc sử dụng thiết bị chậm thông lượng hệ thống bị giảm Một phương pháp khác để tránh deadlock yêu cầu thông tin bổ sung cách tài nguyên yêu cầu Thí dụ, hệ thống với ổ băng từ máy in, bảo trình P yêu cầu ổ băng từ trước sau máy in trước giải phóng hai tài nguyên Trái lại, trình Q yêu cầu máy in trước sau ổ băng từ Với kiến thức thứ tự hoàn thành yêu cầu giải phóng cho q trình, định cho yêu cầu trình chờ hay khơng Mỗi u cầu địi hỏi hệ thống xem tài nguyên có, tài nguyên cấp tới trình, yêu cầu giải phóng tương lai q trình, để u cầu q trình thoả mãn hay phải chờ để tránh khả xảy deadlock Các giải thuật khác có khác lượng loại thông tin yêu cầu Mô hình đơn giản hữu ích u cầu trình khai báo số lớn tài nguyên loại mà cần Thơng tin trước số lượng tối đa tài nguyên loại yêu cầu cho q trình, xây dựng giải thuật đảm bảo hệ thống không vào trạng thái deadlock Đây giải thuật định nghĩa tiếp cận tránh deadlock Giải thuật tránh deadlock tự xem xét trạng thái cấp phát tài nguyên để đảm bảo điều kiện tồn chu trình đồ thị cấp phát tài ngun khơng xảy Trạng thái cấp phát tài nguyên định nghĩa số tài nguyên sẳn dùng tài nguyên cấp phát số yêu cầu tối đa q trình VII.1 Trạng thái an tồn Một trạng thái an tồn hệ thống cấp phát tài nguyên tới trình vài thứ tự tránh deadlock Hay nói cách khác, hệ thống trạng thái an toàn tồn thứ tự an tồn Thứ tự trình thứ tự an toàn cho trạng thái cấp phát hành thứ tự Pi, tài nguyên mà Pi yêu cầu thoả mãn tài nguyên có cộng với tài nguyên giữ tất Pj, với j