Livelock: Ví dụ, Sự khác biệt với Deadlock là gì

Mục lục:

Anonim

Livelock là gì?

Một livelock là một tình huống mà một yêu cầu cho một khóa độc quyền bị từ chối nhiều lần, như nhiều ổ khóa chồng chéo chia sẻ tiếp tục can thiệp lẫn nhau. Các quy trình tiếp tục thay đổi trạng thái của chúng, điều này càng khiến chúng không thể hoàn thành nhiệm vụ. Điều này càng ngăn cản họ hoàn thành nhiệm vụ.

Trong hướng dẫn về hệ điều hành này, bạn sẽ học:

  • Livelock là gì?
  • Ví dụ về Livelock
  • Điều gì dẫn đến Livelock?
  • Deadlock là gì?
  • Ví dụ về Deadlock
  • Đói là gì?
  • Sự khác biệt giữa Deadlock, Starvation và Livelock

Ví dụ về Livelock

Ví dụ 1:

Ví dụ dễ nhất về Livelock là hai người gặp mặt trực tiếp trong một hành lang, và cả hai người đều tránh sang một bên để người kia đi qua. Họ cuối cùng di chuyển từ bên này sang bên kia mà không đạt được bất kỳ tiến bộ nào vì họ di chuyển theo cùng một cách vào thời điểm đó. Ở đây, họ không bao giờ vượt qua nhau.

Ví dụ 2:

Bạn có thể thấy trong hình trên, mỗi quy trình trong số hai quy trình nhất định cần hai tài nguyên và chúng sử dụng sổ đăng ký nhập cuộc thăm dò ban đầu để cố gắng lấy các khóa cần thiết cho chúng. Nếu nỗ lực không thành công, phương pháp sẽ hoạt động trở lại.

  1. Xử lý tài nguyên A giữ Y
  2. Quy trình B nắm giữ tài nguyên X
  3. Quy trình A yêu cầu tài nguyên X
  4. Quy trình B yêu cầu tài nguyên Y

Giả sử, quy trình A chạy trước và thu được tài nguyên dữ liệu X và sau đó quy trình B chạy và thu được tài nguyên Y, bất kể quy trình nào chạy trước, không tiến trình nào trong số chúng tiến triển thêm.

Tuy nhiên, cả hai quá trình đều không bị chặn. Chúng sử dụng nhiều lần tài nguyên CPU mà không có bất kỳ tiến bộ nào nhưng cũng dừng bất kỳ khối xử lý nào.

Do đó, tình huống này không phải là bế tắc vì không có một tiến trình nào bị chặn, nhưng chúng ta phải đối mặt với tình huống tương đương với bế tắc, đó là LIVELOCK.

Điều gì dẫn đến Livelock?

Livelock xảy ra khi tổng số quy trình được phép trong một hệ thống cụ thể phải được xác định bằng tổng số mục nhập trong bảng quy trình. Do đó, các vị trí trong bảng quy trình nên được gọi là Tài nguyên hữu hạn.

Deadlock là gì?

Bế tắc là một tình huống xảy ra trong OS khi bất kỳ quá trình nào đi vào trạng thái chờ đợi vì một quá trình chờ khác đang giữ tài nguyên được yêu cầu. Bế tắc là một vấn đề phổ biến trong đa xử lý trong đó một số quy trình chia sẻ một loại tài nguyên cụ thể loại trừ lẫn nhau được gọi là khóa mềm hoặc phần mềm.

Ví dụ về Deadlock

  • Một ví dụ trong thế giới thực là giao thông chỉ đi theo một hướng.
  • Ở đây, một cây cầu được coi là một nguồn tài nguyên.
  • Vì vậy, khi Deadlock xảy ra, nó có thể dễ dàng giải quyết nếu một chiếc xe sao lưu (Miễn phí tài nguyên và khôi phục).
  • Một số xe có thể phải lùi xe nếu tình huống bế tắc xảy ra.
  • Vì vậy, chết đói là có thể xảy ra.
Ví dụ về bế tắc

Đói là gì?

Đói là một tình huống trong đó tất cả các quy trình có mức độ ưu tiên thấp bị chặn và các quá trình có mức độ ưu tiên cao vẫn tiếp tục. Trong bất kỳ hệ thống nào, các yêu cầu về tài nguyên có mức ưu tiên cao / thấp liên tục diễn ra linh hoạt. Do đó, một số chính sách được yêu cầu để quyết định ai được hỗ trợ khi nào.

Sử dụng một số thuật toán, một số quy trình có thể không nhận được dịch vụ mong muốn mặc dù chúng không bị khóa. Tình trạng đói xảy ra khi một số luồng làm cho tài nguyên được chia sẻ không khả dụng trong một thời gian dài.

Ví dụ về chết đói:

Ví dụ: một đối tượng cung cấp một phương thức đồng bộ hóa có khả năng mất nhiều thời gian để trả về. Nếu một luồng sử dụng phương pháp này thường xuyên, các luồng khác cũng cần truy cập đồng bộ thường xuyên vào cùng một đối tượng thường sẽ bị chặn.

Sự khác biệt giữa Deadlock, Starvation và Livelock

  • Bế tắc là một tình huống xảy ra trong OS khi bất kỳ quá trình nào đi vào trạng thái chờ đợi vì tài nguyên được yêu cầu đang được giữ bởi một quá trình chờ khác.
  • Mặt khác, một sự sống động gần như tương tự như một sự bế tắc, ngoại trừ việc các trạng thái của các quá trình liên quan đến một sự sống động luôn thay đổi lẫn nhau, không có tiến triển nào.
  • Vì vậy, Livelock là một trường hợp độc nhất của nạn đói tài nguyên.

Tóm lược:

  • Định nghĩa: Livelock là một tình huống trong đó một yêu cầu cho một khóa độc quyền bị từ chối liên tục, vì nhiều khóa chia sẻ chồng chéo tiếp tục gây nhiễu lẫn nhau.
  • Livelock xảy ra khi tổng số quy trình được phép trong một hệ thống cụ thể phải được xác định bằng tổng số mục nhập trong bảng quy trình
  • Bế tắc là một tình huống xảy ra trong OS khi bất kỳ quá trình nào đi vào trạng thái chờ đợi vì một quá trình chờ khác đang giữ tài nguyên được yêu cầu.
  • Một ví dụ trong thế giới thực là giao thông chỉ đi theo một hướng.
  • Một ví dụ về Livelock sẽ là hai người gặp mặt trực tiếp trong một hành lang, và cả hai người họ tránh sang một bên để người kia đi qua.
  • Đói là một tình huống trong đó tất cả các quy trình có mức độ ưu tiên thấp bị chặn và các quá trình có mức độ ưu tiên cao vẫn tiếp tục.