CHƯƠNG 5 BẾ TẮC 5.1 Mô hình hệ thống
5.4.1. Trạng thái an toàn
69
Hệ thống ở trạng thái an toàn nếu hệ thống có thể cấp phát đầy đủ tài nguyên cho các tiến trình mà không bị bế tắc. Hay nói cách khác, một hệ thống ở trong trạng thái an toàn chỉ khi tồn tại một dãy an toàn. Dãy tiến trình <P1, P2, …, Pn> là một dãy an toàn trong trạng thái cấp phát tài nguyên hiện thời nếu với mọi i = 1,…,n, yêu cầu tối đa về tài nguyên của Pi
có thể được thỏa bởi tài nguyên mà hệ thống đang có sẵn cùng với các tài nguyên mà tất cả các tiến trình Pj(với j < i) đang giữ. Một trạng thái của hệ thống được gọi là không an toàn nếu không tồn tại một chuỗi an toàn.
Ví dụ, hệ thống có 12 băng từ và 3 tiến trình P0, P1, P2 Tại thời điểm t0 , giả sử hệ thống còn 3 băng từ sẵn sàng, và các tiến trình cần tối đa và đang giữ các băng từ như sau:
Tiến trình Cần tối đa Đang giữ
P0 10 5
P1 4 2
P2 9 2
Có thể thấy, chuỗi P1, P0, P2 là chuỗi an toàn nên hệ thống ở trạng thái an toàn.
Giả sử tại thời điểm t1, P2 yêu cầu và được cấp phát 1 băng từ còn 2 băng từ sẵn sàng. Hệ thống sẽ không ở trạng thái an toàn nữa.
Trạng thái an toàn không phải trạng thái bế tắc. Ngược lại trạng thái bế tắc là một trang thái không an toàn. Tuy nhiên, không phải trạng thái không an toàn nào cũng là trạng thái bế tắc (hình 5.4). Trạng thái không an toàn có thể dẫn tới trạng thái bế tắc.Ý tưởng cho giải pháp tránh bế tắc: Do đó, có thể tránh bế tắc bằng cách khi một tiến trình yêu cầu một tài nguyên đang sẵn sàng, hệ thống sẽ kiểm tra: nếu việc cấp phát này không dẫn đến tình trạng không an toàn thì sẽ cấp phát ngay.
Hình 5.4. Các trạng thái của hệ thống.