Rate this post

Mọi Process đều cần một số tài nguyên để hoàn thành Process thực thi. Tuy nhiên, tài nguyên được cấp theo thứ tự tuần tự.

  • Process yêu cầu một số tài nguyên.
  • Hệ điều hành cấp tài nguyên nếu nó có sẵn, nếu không, hãy để Process chờ.
  • Process sử dụng nó và phát hành khi hoàn thành.

Deadlock là một tình huống trong đó mỗi tiến trình máy tính chờ đợi một tài nguyên đang được gán cho một số tiến trình khác. Trong tình huống này, không có Process nào được thực thi vì tài nguyên mà nó cần, được giữ bởi một số Process khác cũng đang chờ một số tài nguyên khác được giải phóng.

Các bài viết liên quan:

Giả sử rằng có ba Process P1, P2 và P3. Có ba tài nguyên khác nhau R1, R2 và R3. R1 được gán cho P1, R2 được gán cho P2 và R3 được gán cho P3.

Sau một thời gian, P1 yêu cầu R1 đang được P2 sử dụng. P1 tạm dừng Process thực thi của nó vì nó không thể hoàn thành nếu không có R2. P2 cũng yêu cầu R3 đang được P3 sử dụng. P2 cũng dừng Process thực thi của nó vì nó không thể tiếp tục mà không có R3. P3 cũng yêu cầu R1 đang được P1 sử dụng do đó P3 cũng dừng thực thi.

Trong kịch bản này, một chu trình đang được hình thành giữa ba Process. Không có Process nào đang diễn ra và tất cả đều đang chờ đợi. Máy tính không phản hồi vì tất cả các Process đã bị chặn.

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

DeadlockStarvation
Deadlock là tình huống không có Process nào bị chặn và không có Process nào tiếp diễnStarvation là tình huống trong đó Process có mức độ ưu tiên thấp bị chặn và Process có mức độ ưu tiên cao vẫn tiếp tục.
Deadlock lại là sự chờ đợi vô hạnStarvation là một sự chờ đợi lâu dài nhưng không phải là vô hạn.
Mỗi lần Deadlock luôn là một lần StarvationMọi Starvation không cần phải Deadlock
Resource được yêu cầu bị chặn bởi Process khácResource được yêu cầu liên tục được sử dụng bởi các Process ưu tiên cao hơn.
Deadlock xảy ra khi Mutual exclusion, hold và wait, No preemption và circular waitNó xảy ra do mức độ ưu tiên và quản lý tài nguyên không được kiểm soát

Xem thêm Tránh deadlock trong hệ điều hành

Các điều kiện cần thiết cho Deadlocks

  1. Mutual Exclusion

Một tài nguyên chỉ có thể được chia sẻ theo cách Mutual Exclusion. Nó ngụ ý, nếu hai tiến trình không thể sử dụng cùng một tài nguyên cùng một lúc.

  1. Hold and Wait

Một tiến trình đợi một số tài nguyên trong khi giữ một tài nguyên khác cùng một lúc.

  1. No preemption

Process đã từng được lên lịch sẽ được thực hiện cho đến khi hoàn thành. Không có Process nào khác có thể được lên lịch bởi người lập lịch trong thời gian đó.

  1. Circular Wait

Tất cả các Process phải chờ tài nguyên theo cách tuần hoàn để Process cuối cùng đang đợi tài nguyên đang được Process đầu tiên nắm giữ.

Các chiến lược để xử lý Deadlock

Deadlock Ignorance

Deadlock không hiểu biết là cách tiếp cận được sử dụng rộng rãi nhất trong số tất cả các cơ chế. Điều này đang được sử dụng bởi nhiều hệ điều hành chủ yếu cho mục đích sử dụng của người dùng cuối. Trong cách tiếp cận này, Hệ điều hành giả định rằng Deadlock không bao giờ xảy ra. Nó chỉ đơn giản là bỏ qua những Deadlock. Cách tiếp cận này phù hợp nhất cho một hệ thống người dùng cuối duy nhất trong đó Người dùng chỉ sử dụng hệ thống để duyệt web và tất cả các nội dung thông thường khác.

Luôn có sự cân bằng giữa tính đúng đắn và hiệu suất. Các hệ điều hành như Windows và Linux chủ yếu tập trung vào hiệu suất. Tuy nhiên, hiệu suất của hệ thống sẽ giảm nếu nó sử dụng cơ chế xử lý deadlock mọi lúc.

Trong các loại hệ thống này, người dùng chỉ cần khởi động lại máy tính trong trường hợp Deadlock. Windows và Linux chủ yếu sử dụng cách tiếp cận này.

Xem thêm Ngăn chặn Deadlock trong hệ điều hành

Deadlock prevention

Deadlock chỉ xảy ra khi Loại trừ lẫn nhau, giữ và chờ, Không ưu tiên và chờ vòng tròn đồng thời. Nếu có thể vi phạm một trong bốn điều kiện bất kỳ lúc nào thì không bao giờ có thể xảy ra Deadlock trong hệ thống.

Ý tưởng đằng sau cách tiếp cận rất đơn giản là chúng ta phải không đạt một trong bốn điều kiện nhưng có thể có một lập luận lớn về việc triển khai vật lý của nó trong hệ thống.

Chúng ta sẽ thảo luận chi tiết về nó sau.

Deadlock avoidance

Trong trường hợp tránh Deadlock, hệ điều hành sẽ kiểm tra xem hệ thống đang ở trạng thái an toàn hay ở trạng thái không an toàn ở mỗi bước mà hệ điều hành thực hiện. Quá trình tiếp tục cho đến khi hệ thống ở trạng thái an toàn. Khi hệ thống chuyển sang trạng thái không an toàn, hệ điều hành phải lùi lại một bước.

Nói cách đơn giản, Hệ điều hành xem xét từng phân bổ để việc phân bổ không gây ra Deadlock trong hệ thống.

Chúng ta sẽ thảo luận chi tiết về cách tránh Deadlock ở phần sau.

Deadlock detection và recovery

Cách tiếp cận này cho phép các quy trình rơi vào tình trạng Deadlock và sau đó kiểm tra định kỳ xem có xảy ra Deadlock trong hệ thống hay không. Nếu nó xảy ra thì nó sẽ áp dụng một số phương pháp khôi phục hệ thống để thoát khỏi Deadlock.

Chúng ta sẽ thảo luận về việc phát hiện và khôi phục deadlock sau chi tiết hơn vì nó là một vấn đề thảo luận.

Xem thêm Phát hiện và phục hồi Deadlock trong hệ điều hành

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now