Trang chủTác giảLiên hệ

Xử lý Deadlocks

By Anonymous
Published in General
October 02, 2022
3 min read

Xử lý Deadlocks (Bế tắc)

Deadlock (bế tắc) là tình huống mà trong đó một hoặc một tập hợp các process bị chặn, đang chờ một số resource khác được giữ bởi một số process chờ khác. Đó là một trạng thái không mong muốn của hệ thống. Sau đây là bốn điều kiện phải giữ đồng thời để xảy ra một deadlock.

  1. Mutual Exclusion (Loại trừ lẫn nhau) – Một resource chỉ có thể được sử dụng bởi một process tại một thời điểm. Nếu một process khác yêu cầu resource đó thì process yêu cầu phải bị trì hoãn cho đến khi resource đó đã được giải phóng.
  2. Hold and wait (Giữ và đợi) – Một số process phải đang giữ một số resource ở chế độ không thể chia sẻ và đồng thời phải chờ để có thêm một số resource, mà hiện tại đang được các process khác nắm giữ ở chế độ không thể chia sẻ.
  3. No pre-emption (Không quyền ưu tiên) – Resource được cấp cho một process chỉ có thể được giải phóng trở lại hệ thống như một hành động tự nguyện của process đó, sau khi process đã hoàn thành nhiệm vụ của nó.
  4. Circular wait (Chờ vòng) – Các process bị tắc liên quan đến một chuỗi vòng tròn sao cho mỗi process chứa một hoặc nhiều resource đang được yêu cầu tiến quy trình tiếp theo trong chuỗi.

Phương pháp xử lý deadlock:

Có ba cách tiếp cận để xử lý deadlock:

  1. Deadlock Prevention
  2. Deadlock Avoidance
  3. Deadlock Detection

1. Deadlock Prevention: Chiến lược ngăn chặn deadlock là thiết kế hệ thống sao cho loại trừ khả năng xảy ra bế tắc. Phương pháp gián tiếp ngăn chặn sự xuất hiện của một trong ba điều kiện cần thiết của bế tắc, tức là mutual exclusion, no pre-emption và hold and wait. Phương pháp trực tiếp ngăn ngừa sự xuất hiện của Circular wait. Các kỹ thuật phòng ngừa - Mutual Exclusion - được hỗ trợ bởi HĐH. Hold and wait - có thể được ngăn chặn bằng cách yêu cầu một process yêu cầu tất cả các resource cần thiết của nó cùng một lúc và chặn process cho đến khi tất cả các yêu cầu có thể được cấp cùng một lúc. Nhưng việc phòng ngừa này không mang lại kết quả tốt vì:

  • Thời gian đợi lâu
  • Sử dụng không hiệu quả resource được phân bố
  • A process may not know all the required resources in advance

No pre-emption kỹ thuật cho ‘no pre-emption’ là:

  • Nếu một process đang giữ một số resource, yêu cầu một resource khác mà không thể cấp phát ngay cho nó, tất cả resource hiện đang được giữ sẽ được giải phóng và nếu cần, hãy yêu cầu lại chúng cùng với resource bổ sung.
  • Nếu một quy trình yêu cầu một resource hiện đang được một quy trình khác nắm giữ, thì Hệ điều hành có thể sử dụng trước quy trình thứ hai và yêu cầu nó giải phóng resource của mình. Điều này chỉ được nếu cả hai quy trình không có cùng mức độ ưu tiên.

Circular wait - Cách để đảm bảo rằng điều kiện này không bao giờ được giữ là áp đặt thứ tự tổng thể của tất cả các loại resource và mỗi process yêu cầu resource theo thứ tự liệt kê ngày càng tăng, tức là nếu một process đã được cấp phát resource thuộc loại R, thì sau đó nó có thể chỉ yêu cầu những resource thuộc các loại sau R theo thứ tự.

2. Deadlock Avoidance: Cách tiếp cận này cho phép ba điều kiện cần thiết của deadlock nhưng đưa ra những lựa chọn sáng suốt để đảm bảo rằng deadlock không bao giờ xảy ra. Nó cho phép nhiều đồng thời hơn là phát hiện tránh Một quyết định được đưa ra một cách linh động cho dù yêu cầu phân bổ tài nguyên hiện tại sẽ, nếu được chấp thuận, có khả năng dẫn đến deadlock. Nó đòi hỏi kiến thức về các yêu cầu process trong tương lai. Hai kỹ thuật để tránh deadlock:

  1. Từ chối bắt đầu Process
  2. Từ chối phân bổ Resource

Ưu điểm:

  • Không cần thiết phải ưu tiên và quay lại process
  • Ít hạn chế hơn deadlock prevention

Nhược điểm:

  • Yêu cầu resource trong tương lai phải được biết trước.
  • Processes có thể bị chặn trong thời gian dài.
  • Tồn tại số resources cố định để phân bổ

3. Deadlock Detection: Deadlock detection được sử dụng bằng cách mượn một thuật toán theo dõi vòng chờ đợi và giết chết một hoặc nhiều process để loại bỏ deadlock. Trạng thái hệ thống được kiểm tra định kỳ để xác định xem một tập hợp các process có bị deadlock hay không. Deadlock được giải quyết bằng cách hủy bỏ và khởi động lại một process, từ bỏ tất cả các resources mà process đó nắm giữ.

  • Kỹ thuật này không giới hạn quyền truy cập resource hoặc hạn chế hành động của process.
  • Các resource được yêu cầu được cấp cho các process bất cứ khi nào có thể.
  • Không bao giờ làm chậm trễ quá trình bắt đầu và tạo điều kiện cho việc xử lý online.
  • Điểm bất lợi là mất những quyền ưu tiên vốn có.

Anonymous

Anonymous

Related Posts

General
11 SAI LẦM TRONG AUTHENTICATION VÀ CÁCH SỬA CHÚNG
September 21, 2022
9 min
© 2022, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media