Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa bế tắc và chết đói trong hệ điều hành

Bế tắc và đói là cả hai điều kiện trong đó các quy trình yêu cầu tài nguyên đã bị trì hoãn trong một thời gian dài. Mặc dù bế tắc và chết đói cả hai đều khác nhau về nhiều mặt. Bế tắc là một điều kiện trong đó không có quá trình tiến hành thực hiện và mỗi quá trình chờ đợi các tài nguyên đã được các quy trình khác có được. Mặt khác, trong Starvation, quy trình có mức độ ưu tiên cao liên tục sử dụng các tài nguyên ngăn chặn quá trình ưu tiên thấp để có được tài nguyên. Hãy để chúng tôi thảo luận về một số khác biệt hơn giữa bế tắc và chết đói với sự giúp đỡ của biểu đồ so sánh được hiển thị dưới đây.

Biểu đồ so sánh

Cơ sở cho ComparsionBế tắcĐói
Căn bảnBế tắc là nơi không có quá trình tiến hành, và bị chặn.Đói là nơi các quy trình ưu tiên thấp bị chặn và quá trình ưu tiên cao tiến hành.
Tình trạng phát sinhSự xuất hiện của Loại trừ lẫn nhau, Giữ và chờ đợi, Không có quyền ưu tiên và Thông tư chờ cùng một lúc.Thực thi các ưu tiên, quản lý tài nguyên không kiểm soát.
Tên khácThông tư chờ.Phao cứu sinh.
Tài nguyênTrong bế tắc, tài nguyên được yêu cầu bị chặn bởi các quy trình khác.Trong tình trạng đói, các tài nguyên được yêu cầu liên tục được sử dụng bởi các quy trình ưu tiên cao.
Phòng ngừaTránh loại trừ lẫn nhau, giữ và chờ đợi, và chờ đợi thông tư và cho phép sự miễn trừ.Lão hóa.

Định nghĩa bế tắc

Bế tắc là tình huống trong đó một số quy trình trong CPU cạnh tranh về số lượng tài nguyên hữu hạn có sẵn trong CPU. Ở đây, mỗi quy trình giữ một tài nguyên và chờ đợi để có được một tài nguyên được nắm giữ bởi một số quy trình khác. Tất cả các quy trình chờ tài nguyên theo kiểu vòng tròn. Trong hình ảnh bên dưới, bạn có thể thấy rằng Quy trình P1 đã thu được tài nguyên R2 được yêu cầu bởi quy trình P2 và Quy trình P1 đang yêu cầu tài nguyên R1 được giữ lại bởi R2. Vì vậy, quá trình P1 và P2 tạo thành một bế tắc.

Bế tắc là một vấn đề phổ biến trong các hệ điều hành đa xử lý, hệ thống phân tán và cả trong các hệ thống máy tính song song. Có bốn điều kiện phải xảy ra đồng thời để nâng cao tình trạng bế tắc, đó là loại trừ lẫn nhau, Giữ và chờ đợi, Không có quyền ưu tiên và Chờ đợi Thông tư.

  • Loại trừ lẫn nhau: Chỉ một quy trình tại một thời điểm có thể sử dụng tài nguyên nếu quy trình khác yêu cầu cùng một tài nguyên, nó phải đợi cho đến khi quy trình sử dụng tài nguyên giải phóng tài nguyên đó.
  • Giữ và chờ đợi: Một quy trình phải được giữ một tài nguyên và chờ đợi để có được một tài nguyên khác được nắm giữ bởi một quy trình khác.
  • Không có quyền ưu tiên: Quá trình nắm giữ các tài nguyên không thể được ưu tiên. Quá trình giữ tài nguyên phải giải phóng tài nguyên một cách tự nguyện khi nó đã hoàn thành nhiệm vụ.
  • Chờ thông tư: Quá trình phải chờ tài nguyên theo kiểu vòng tròn. Giả sử chúng ta có ba quy trình {P0, P1, P2}. P0 phải chờ tài nguyên do P1 nắm giữ; P1 phải chờ để có được tài nguyên được giữ bởi quy trình P2 và P2 phải chờ để có được quy trình do P0 nắm giữ.

Mặc dù có một số ứng dụng có thể phát hiện các chương trình có thể bị bế tắc. Nhưng hệ điều hành không bao giờ chịu trách nhiệm ngăn chặn các bế tắc. Trách nhiệm của các lập trình viên là thiết kế các chương trình miễn phí bế tắc. Nó có thể được thực hiện bằng cách tránh các điều kiện trên cần thiết cho sự cố bế tắc

Định nghĩa của đói

Sự chết đói có thể được định nghĩa là khi một yêu cầu quá trình cho một tài nguyên và tài nguyên đó đã được sử dụng liên tục bởi các quy trình khác thì quá trình yêu cầu phải đối mặt với nạn đói. Trong tình trạng đói, một quá trình sẵn sàng để thực thi chờ CPU phân bổ tài nguyên. Nhưng quá trình này phải chờ vô thời hạn vì các quy trình khác liên tục chặn các tài nguyên được yêu cầu.

Vấn đề chết đói thường xảy ra trong thuật toán lập lịch ưu tiên . Trong thuật toán lập lịch ưu tiên, quy trình có mức ưu tiên cao hơn luôn được phân bổ tài nguyên, ngăn quá trình ưu tiên thấp hơn nhận được tài nguyên được yêu cầu.

Lão hóa có thể giải quyết vấn đề đói. Lão hóa tăng dần mức độ ưu tiên của quá trình đã chờ đợi tài nguyên từ lâu. Lão hóa ngăn chặn một quá trình với mức độ ưu tiên thấp để chờ đợi vô thời hạn cho một tài nguyên.

Sự khác biệt chính giữa bế tắc và chết đói trong hệ điều hành

  1. Trong một bế tắc, không có quy trình nào tiến hành thực thi, mỗi quy trình bị chặn chờ các tài nguyên được quy trình khác thu được. Mặt khác, chết đói là điều kiện trong đó các quy trình có mức độ ưu tiên cao hơn được phép liên tục nhận được tài nguyên bằng cách ngăn chặn các quy trình ưu tiên thấp để có được tài nguyên dẫn đến việc chặn vô thời hạn các quy trình ưu tiên thấp.
  2. Bế tắc phát sinh khi bốn điều kiện Loại trừ lẫn nhau, Giữ và chờ, Không có quyền ưu tiên và chờ đợi Thông tư xảy ra đồng thời. Tuy nhiên, chết đói xảy ra khi các ưu tiên của quy trình đã được thực thi trong khi phân bổ tài nguyên hoặc có sự quản lý tài nguyên không được kiểm soát trong hệ thống.
  3. Bế tắc thường được gọi bằng tên chờ đợi trong khi đó, sự chết đói được gọi là khóa Sống .
  4. Trong Bế tắc, các tài nguyên bị chặn bởi quy trình trong khi đó, trong tình trạng đói, các quy trình liên tục được sử dụng bởi các quy trình có mức độ ưu tiên cao.
  5. Bế tắc có thể được ngăn chặn bằng cách tránh các điều kiện như loại trừ lẫn nhau, Giữ và chờ, và chờ vòng tròn và bằng cách cho phép các quy trình đang giữ tài nguyên trong một thời gian dài. Mặt khác, Starvation có thể được ngăn ngừa bằng cách lão hóa .

Phần kết luận:

Cả Deadlock và Starvation đều trì hoãn quá trình thực thi bằng cách chặn nó. Một mặt, nơi bế tắc có thể khiến các quá trình chết đói, và mặt khác, việc chết đói có thể khiến các quá trình thoát khỏi bế tắc.

Top