Trong một môi trường multiprogramming, một số quy trình có thể cạnh tranh cho một
số hữu hạn các tài nguyên. Một tiến trình yêu cầu tài nguyên; nếu tài nguyên là
không có sẵn tại thời điểm đó, quá trình chuyển sang trạng thái chờ đợi. Đôi khi, một
quá trình chờ đợi là không bao giờ có thể thay đổi trạng thái, bởi vì những nguồn lực
đã yêu cầu được tổ chức bởi các quá trình chờ đợi khác. Tình trạng này được gọi là
một bế tắc. Chúng tôi đã thảo luận vấn đề này một thời gian ngắn trong chương 5 trong kết nối với
Cột.
Có lẽ minh họa tốt nhất của một bế tắc có thể được rút ra từ một luật được thông qua
bởi cơ quan lập pháp Kansas vào đầu thế kỷ thứ 20. Nó nói, trong phần: "Khi hai
tàu tới gần nhau ở một ngã tư, cả hai sẽ đến một điểm dừng đầy đủ và
không phải bắt đầu lên một lần nữa cho đến khi người kia đã biến mất. "Trong chương này, chúng tôi mô tả các phương pháp mà một hệ điều hành có thể sử dụng để ngăn chặn hoặc đối phó với sự bế tắc. Mặc dù một số ứng dụng có thể xác định các chương trình mà có thể bế tắc, hệ điều hành thường không cung cấp phương tiện bế tắc phòng ngừa, và đó là trách nhiệm của các lập trình viên để đảm bảo rằng họ thiết kế các chương trình bế tắc-miễn phí. Vấn đề bế tắc chỉ có thể trở nên phổ biến hơn, được đưa ra xu hướng hiện nay, bao gồm số lượng lớn các quy trình, chương trình đa luồng, nhiều hơn các nguồn lực trong một hệ thống, và nhấn mạnh vào đời dài tập tin và cơ sở dữ liệu máy chủ chứ không phải là hệ thống hàng loạt.
đang được dịch, vui lòng đợi..
