II.4.4.Nhận biết tắc nghẽn (Deadlock Detection)

Một phần của tài liệu Tiến trình và các loại tiến trình doc (Trang 42 - 43)

Các phương thức ngăn chặn tắc nghẽn ở trên đều tập trung vào việc hạn chế quyền truy xuất đến tài nguyên và áp đặt các ràng buộc lên các tiến trình. Điều này có thể ảnh hưởng đến mục tiêu khai thác hiệu quả tài nguyên của hệ điều hành, ngăn chặn độc quyền trên tài nguyên là một ví dụ, hệ điều hành phải cài đặt các cơ chế độc quyền để bảo vệc các tài nguyên chia sẻ. Và như đã phân tích ở trên việc cấp phát tài nguyên một lần cho các tiến trình để ngăn chặn hiện tượng hold and wait cũng tồn tại một vài hạn chế.

Các hệ điều hành có thể giải quyết vấn đề tắc nghẽn theo hướng phát hiện tắc nghẽn để tìm cách thoát khỏi tắc nghẽn. Phát hiện tắc nghẽn không giới hạn truy xuất tài nguyên và không áp đặt các ràng buộc lên tiến trình. Với phương thức phát hiện tắc nghẽn, các yêu cầu cấp phát tài nguyên được đáp ứng ngay nếu có thể. Để phát hiện tắc nghẽn hệ điều hành thường cài đặt một thuật toán để phát hiện hệ thống có tồn tại hiện tượng chờ đợi vòng tròn hay không.

Việc kiểm tra, để xem thử hệ thống có khả năng xảy ra tắc nghẽn hay không có thể được thực hiện liên tục mỗi khi có một yêu cầu tài nguyên, hoặc chỉ thực hiện thỉnh thoảng theo chu kỳ, phụ thuộc vào sự tắc nghẽn xảy ra như thế nào. Việc kiểm tra tắc nghẽn mỗi khi có yêu cầu tài nguyên sẽ nhận biết được khả năng xảy ra tắc nghẽn nhanh hơn, thuật toán được áp dụng đơn giản hơn vì chỉ dự vào sự thay đổi trạng thái của hệ thống. Tuy nhiên, hệ thống phải tốn nhiều thời gian cho mỗi lần kiểm tra tắc nghẽn.

Mỗi khi tắc nghẽn được phát hiện, hệ điều hành thực hiện một vài giải pháp để thoát khỏi tắc nghẽn. Sau đây là một vài giải pháp có thể:

1. Thoát tất cả các tiến trình bị tắc nghẽn. Đây là một giải pháp đơn giản nhất, thường được các hệ điều hành sử dụng nhất.

2. Sao lưu lại mỗi tiến trình bị tắc nghẽn tại một vài điểm kiển tra được định nghĩa trước, sau đó khởi động lại tất cả các tiến trình. Giải pháp này yêu cầu hệ điều hành phải lưu lại các thông tin cần thiết tại điểm dừng của tiến trình, đặc biệt là con trỏ lệnh và các tài nguyên tiến trình đang sử dụng, để có thể khởi động lại tiến trình được. Giải pháp này có nguy cơ xuất hiện tắc nghẽn trở lại là rất cao, vì khi tất cả các tiến trình đều được reset trở lại thì việc tranh chấp tài nguyên là khó tránh khỏi. Ngoài ra hệ điều hành thường phải chi phí rất cao cho việc tạm dừng và tái kích hoạt tiến trình.

3. Chỉ kết thúc một tiến trình trong tập tiến trình bị tắc nghẽn, thu hồi tài nguyên của tiến trình này, để cấp phát cho một tiến trình nào đó trong tập tiến trình tắc nghẽn để giúp tiến trình này ra khỏi tắc nghẽn, rồi gọi lại thuật toán kiểm tra tắc nghẽn để xem hệ thống đã ra khỏi tắc nghẽn hay chưa, nếu rồi thì dừng, nếu chưa thì tiếp tục giải phóng thêm tiến trình khác. Và lần lượt như thế cho đến khi tất cả các tiến trình trong tập tiến trình tắc nghẽn đều ra khỏi tình trạng tắc nghẽn. Trong giả pháp này vấn đề đặt ra đối với hệ điều hành là nên chọn tiến trình nào để giải phóng đầu tiên và dựa vào tiêu chuẩn nào để chọn lựa sao cho chi phí để giải phóng tắc nghẽn là thấp nhất.

4. Tập trung toàn bộ quyền ưu tiên sử dụng tài nguyên cho một tiến trình, để tiến trình này ra khỏi tắc nghẽn, và rồi kiểm tra xem hệ thống đã ra khỏi tắc nghẽn hay chưa, nếu rồi thì dừng lại, nếu chưa thì tiếp tục. Lần lượt như thế cho đến khi hệ thống ra khỏi tắc nghẽn. Trong giải pháp này hệ điều hành phải tính đến chuyện tái kích hoạt lại tiến trình sau khi hẹ thống ra khỏi tắc nghẽn.

Đối với các giải pháp 3 và 4, hệ điều hành dựa vào các tiêu chuẩn sau đây để chọn lựa tiến trình giải phóng hay ưu tiên tài nguyên: Thời gian xử lý ít nhất; Thời gian cần processor còn lại ít nhất; Tài nguyên cần cấp phát là ít nhất; Quyền ưu tiên là thấp nhất.

Một phần của tài liệu Tiến trình và các loại tiến trình doc (Trang 42 - 43)

Tải bản đầy đủ (DOC)

(52 trang)
w