Hiện tượng deadlock (tắc nghẽn)

Một phần của tài liệu Cac He Thong TGThuc ppsx (Trang 83 - 85)

Khi các tác vụ chia sẻ cùng tập có 2 hay nhiều tài nguyên quan trọng, thì có thể xảy ra tình huống deadlock, và gây ra thất bại của ứng dụng thời gian thực. Khái niệm deadlock có thể được minh hoạ bởi ví dụ đơn giản sau:

Chúng ta xét 2 tác vụ τ1 và τ2, chúng sử dụng 2 tài nguyên quan trọng R1 và R2. τ1 và τ2 truy xuất R1 và R2 theo thứ tự đảo. Hơn nữa, độ ưu tiên của tác vụ

τ1 lớn hơn độ ưu tiên của τ2. Giờ chúng ta giả sử tác vụ τ2 thực thi đầu tiên và khoá tài nguyên R1.

Hình 3.9 (a) ví dụ về hiện tượng deadlock. (b) giải pháp ngăn chặn deadlock nhờ sử dụng thứ tự toàn phần trong truy xuất tài nguyên.

Trong miền găng của tác vụ τ2 sử dụng tài nguyên R1, tác vụ τ1 thức và tước quyền của tác vụ τ2 trước khi nó có thể khoá tài nguyên thứ hai R2. Tác vụ τ1 cần tài nguyên R2 trước, nó đang không bị sử dụng (tự do) và τ1 khoá nó lại. Sau đó tác vụ τ1 cần tài nguyên R1, đang bị nắm giữ bởi tác vụ τ2. Vậy nên tác vụ τ2 quay trở lại thực thi và đòi tài nguyên R2, R2 lại đang bị nắm giữ bởi τ1. Kết quả cuối cùng là tác vụ τ1 sở hữu tài nguyên R2 và cần tài nguyên R1, trong khi đó tác vụ τ2 sở hữu tài nguyên R1 và cần tài nguyên R2. Cả hai tác vụ không tác vụ nào giải phòng tài nguyên cho tới khi yêu cầu tài nguyên của nó được thoả mãn. Tình huống này gọi là deadlock. Tính huống này có thể được mở rộng cho nhiều hơn 2 tài nguyên với một thứ tự truy xuất tài nguyên vòng tròn và dẫn tới bị khoá dây chuyền.

Deadlock là một vấn đề nghiêm trọng cho các ứng dụng thời gian thực quan trọng. Giải pháp có thể được tìm ra để trành tình trạng deadlock như được giải quyết với hệ điều hành. Một phương pháp là đề ra thứ tự toàn phần của các truy xuất tài nguyên quan trọng. Không phải luôn có thể áp dụng kỹ thuật này, vì cần phải biết tất cả các tài nguyên một tác vụ sẽ cần trong hoạt động của nó. Đó là lý do vì sao phương pháp này được gọi là phòng chống tĩnh (hình 3.9b). Một kỹ thuật khác có thể được sử dụng online được gọi là thuật toán của chủ ngân hàng (banker’s algorithm) và thuật toán này yêu cầu mỗi tác vụ khai báo trước số lượng tối đa tài nguyên mà nó có thể nắm giữ đồng thời.

Các phương pháp khác để xử lý deadlock dựa trên việc phát hiện và phục hồi các tiến trình (ví dụ sử dụng bộ thời gian watchdog). Việc sử dụng bộ thời gian watchdog cho phép phát tiện những tác vụ không ở trạng thái hoạt động: tác vụ này có thể là một deadlock hay các tác vụ có thể đợi tín hiệu từ bên ngoài. Nếu kỹ thuật xử lý deadlock sẽ khởi tạo lại các tác vụ liên quan tới deadlock được phát hiện hay, theo một các dễ dàng hơn, khởi động lại toàn bộ tập tác vụ. Phương pháp này được sử dụng rất thường xuyên khi tình huống deadlock được biết là xảy ra thường

Một phần của tài liệu Cac He Thong TGThuc ppsx (Trang 83 - 85)