HomeBlogDeadlock là gì? Cách phát hiện và phòng ngừa

Deadlock là gì? Cách phát hiện và phòng ngừa

Rate this post

Tài nguyên trong quá trình vận hành vô tình xảy ra hiện tượng lỗi? Hiện tượng này được gọi là Deadlock, là tình trạng xung đột tài nguyên hệ điều hành trên các thiết bị máy tính. Vì thế Bế tắc Đặc điểm và cách khắc phục ra sao? Bài viết dưới đây BKHOST sẽ giúp bạn tìm hiểu thông tin chi tiết về Deadlock.

Bế tắc là gì?

bế tắc là gì

Bế tắc là tình trạng thường xuyên xảy ra trên mọi thiết bị máy tính hoặc hệ thống phân tán có quy trình sử dụng nhiều tài nguyên.. Cụ thể, hai tiến trình đang ở trạng thái chờ tài nguyên đã được tổ chức. Bài toán Bế tắc được hiểu đơn giản là câu chuyện con gà và quả trứng.

Ví dụ:

en-du-bế tắc

Ví dụ với ba tiến trình P1, P2, P3 và ba tài nguyên R1, R2, R3:

Nếu P1 yêu cầu R2 của P2, nó phải đợi P2 giải phóng tài nguyên và tạo R3. Điều tương tự cũng xảy ra với P1 và P3. Do đó thường xảy ra tình trạng Bế tắc trong hệ điều hành.

Điều kiện cần cho Deadlock

Bốn điều kiện cơ bản nhất của bế tắc:

  • Loại trừ lẫn nhau trong Deadlock ngăn chặn việc chia sẻ tài nguyên giữa các tiến trình cùng một lúc.
  • Điều kiện giữ và chờ tài nguyên mới trong Deadlock.
  • Không có điều kiện yêu cầu tài nguyên, tức là không thể lấy tài nguyên từ một tiến trình trừ khi tài nguyên đó được giải phóng.
  • Điều kiện chờ vòng tròn là một chu trình mà tiến trình này giữ và đợi tài nguyên bởi các tiến trình khác.
    Ví dụ: Tiến trình 1 sẽ nhận R1 và đợi R2, tiến trình 2 sẽ nhận R2 và đợi R3…

Ngăn chặn bế tắc

Để có thể ngăn chặn Deadlock, hệ điều hành sẽ ngăn chặn các tình trạng sau đây có thể gây ra:

Không loại trừ lẫn nhau

Không loại trừ lẫn nhau tức là nhiều tiến trình có thể truy cập đồng thời vào một tài nguyên. Tuy nhiên, hậu quả là các tài nguyên sẽ vượt khỏi tầm kiểm soát và làm hỏng tất cả các quy trình tạo quyền truy cập. Vì vậy, phương pháp này không thực sự khả thi đối với các hệ điều hành.

Xem thêm:  Giáo huấn cổ nhân: Mang một chữ ‘Nhẫn’ có thể đi khắp thiên hạ

Đừng giữ và chờ đợi

Có một số giải pháp để có được các tài nguyên cần thiết trước khi bắt đầu quá trình truy cập. Tuy nhiên, vì mỗi tiến trình sẽ cần một tài nguyên riêng để bắt đầu nên phương pháp này cũng không hiệu quả. Hơn nữa, vì mỗi tiến trình sẽ không thể xác định có bao nhiêu tài nguyên cần sử dụng và bao lâu để giải phóng chúng khỏi tiến trình.

Hoặc nếu một tiến trình muốn có thêm tài nguyên, nó cần giải phóng các tài nguyên hiện có. Phương pháp này có thể hạn chế việc giữ và chờ, nhưng đôi khi gây ra tình trạng thiếu tài nguyên.

Xóa mà không cần yêu cầu

Do CPU không thể trưng dụng một số tài nguyên từ tiến trình nên dễ gây ra hiện tượng Deadlock. Cách giải quyết nhanh nhất là gỡ bỏ không trưng dụng để lấy tài nguyên trong quá trình chờ.

Đừng chờ đợi vòng tròn

Để khắc phục tình trạng hai hay nhiều tiến trình bị mắc kẹt trong việc chờ đợi tài nguyên, các giá trị số nguyên sẽ được gán cho tài nguyên của tiến trình theo thứ tự tăng dần hoặc giảm dần nhất định.

Trong trường hợp tài nguyên gia tăng, quyền truy cập vào tài nguyên bổ sung mới chỉ được phép nếu giá trị số nguyên cao hơn giá trị trước đó. Nếu giá trị số nguyên thấp hơn sẽ tiến hành giải phóng tài nguyên cũ để nhận tài nguyên mới. Đối với trường hợp tài nguyên giảm dần, quy trình sẽ bị đảo ngược.

Tránh bế tắc

Hệ điều hành tránh bế tắc bằng cách duy trì lịch sử tài nguyên tối đa cần thiết cho một quy trình trước khi nó được thực thi. Đồng thời, trạng thái của hệ thống cũng sẽ được kiểm tra để cấp phát tài nguyên cho các tiến trình.

Trạng thái an toàn của hệ điều hành có khả năng cấp phát các tài nguyên cần thiết cho tiến trình mà không gây ra trạng thái bế tắc. Trạng thái không an toàn là khi hệ điều hành không có khả năng đó.

Thuật toán đồ thị phân bổ tài nguyên (RAG)

RAG có thể dự đoán Bế tắc trong một hệ điều hành bằng cách sử dụng chế độ xem ảnh của các tài nguyên được phân bổ hoặc có sẵn. Vì nếu bạn tìm ra được lượng tài nguyên được phân bổ và cần thiết cho mỗi process thì sẽ dễ dàng ngăn chặn tình trạng Deadlock xảy ra.

Xem thêm:  Gia Cát Lượng dùng “thuyền cỏ mượn tên” tại sao Tào Tháo không bắn hỏa tiễn thiêu cháy? Lỗ Túc: “Đây là hành động cao minh của Tào Tháo”

Giống như các đồ thị khác, RAG cũng được thiết kế bao gồm hai đỉnh hình chữ nhật là tiến trình và tài nguyên, và hai cạnh hình tròn là gán và yêu cầu.

thua-toan-do-thi-phan-bo-tai-nguen-rag

Tuy nhiên, RAG chỉ thực sự hiệu quả khi các tài nguyên có cùng phiên bản. Nếu có nhiều tài nguyên hơn RAG sẽ dễ dàng chuyển sang quy trình tuần hoàn và dễ gây ra Deadlock. Vì vậy, thuật toán Banker có thể được sử dụng để dự đoán các Deadlock có thể xảy ra

Ví dụ: Đây là hai tiến trình P1, P2 và hai tài nguyên R1. R2.

bởi vì chúng ta phải đối phó với tài nguyên thiên nhiên

Theo đồ thị, P1 có R1 và sẽ chấp nhận R2 được biểu thị bằng đường đứt nét. Và P2 đang yêu cầu R2 nhưng chưa được HĐH cấp phát vì R2 được trưng dụng cho P1. Quá trình này sẽ làm giảm hiện tượng Deadlock, tuy nhiên R2 sẽ không được sử dụng dẫn đến việc sử dụng ít tài nguyên hơn.

thuật toán ngân hàng

Thuật toán Banker còn được sử dụng trong trường hợp tài nguyên có nhiều phiên bản khác nhau, cho phép quản lý tài nguyên không rơi vào trạng thái bế tắc, cạn kiệt hoặc không an toàn. Thuật toán này được các ngân hàng sử dụng để phân bổ và xử lý các tài khoản cho vay trong hệ thống của họ.

Thuật toán Banker sẽ tạo ra một chuỗi an toàn bằng cách sử dụng một số dữ liệu có sẵn, chẳng hạn như tài nguyên được yêu cầu tối đa và tổng số tài nguyên có sẵn trong hệ điều hành.

Phát hiện và tránh bế tắc

Hệ điều hành sẽ thực hiện kiểm tra Deadlock sắp xảy ra bằng cách sử dụng cơ chế phát hiện Deadlock trong một khoảng thời gian nhất định và thực hiện các hành động khắc phục.

Có hai phương pháp phát hiện bế tắc của hệ điều hành:

Sử dụng một số ứng biến như sau.

phát hiện và chống phát hiện bế tắc

Đồ thị trên giống với RAG, hệ điều hành đang kiểm tra sự hình thành của chu kỳ hệ thống. Tuy nhiên, vẫn còn một số điểm khác trong đồ thị RAG và điều chờ đợi là số đỉnh chứa trong đó. Trong khi RAG có hai đỉnh là tài nguyên và tiến trình, thì đợi chỉ có một đỉnh là tiến trình.

Xem thêm:  Cô giáo gieo chữ, ngã xe bùn bê bết vẫn cười: ‘Mình không đi thì ai dạy bọn trẻ’

Sử dụng biểu đồ Chờ do RAG tạo:

Sử dụng bài kiểm tra Chờ để được RAG sử dụng

Biểu đồ chờ không tạo ra một vòng tròn, do đó không có bế tắc trên hệ thống.

Việc sử dụng thuật toán bảo mật tương tự như của Banker và phù hợp với các tài nguyên đa phiên bản bao gồm ba ma trận chính: phân bổ, tính khả dụng và nhu cầu hiện tại.

Hệ điều hành lúc này nếu phát hiện bất kỳ Deadlock nào sẽ ngay lập tức thực hiện các thao tác khôi phục theo 2 cách:

khôi phục bế tắc cũng vậy

cách tiếp cận lạc quan

Cách tiếp cận lạc quan đơn giản có nghĩa là hệ điều hành sẽ ưu tiên lựa chọn một số quy trình và hạn chế tài nguyên để phân bổ cho các quy trình khác. Tuy nhiên, phương pháp này dễ gây ra tình trạng không trưng dụng hoặc thiếu nguồn lực.

Cách tiếp cận quay trở lại trạng thái an toàn trước khi bế tắc xảy ra. Yêu cầu của phương pháp này là hệ điều hành cần phải có một số lịch sử trạng thái an toàn trước đó. Hạn chế duy nhất là không có tham số quyết định để chọn thứ tự lịch sử quy trình.

cách tiếp cận bi quan

Cách làm này được thực hiện bằng cách kill tất cả các process xảy ra Deadlock để loại bỏ hoặc khởi động lại process, và cũng khá tốn kém. Hoặc bạn có thể chọn hủy bỏ một tiến trình bế tắc cho đến khi nó thực sự được gỡ bỏ khỏi hệ thống.

Hệ điều hành theo cách tiếp cận này sẽ thực hiện việc loại bỏ tiến trình thực hiện ít công việc nhất bằng cách chạy các thuật toán để phát hiện các bế tắc và loại bỏ chúng.

Thiếu hiểu biết về bế tắc

Hệ điều hành sẽ sử dụng phương pháp bất khả tri về bế tắc để xử lý tiến trình nhanh hơn. Nếu có bất kỳ lỗi nào xảy ra, hệ thống sẽ tự động được khởi động lại để làm mới quy trình. Đây là cách thường được sử dụng trong Linux và các hệ điều hành dựa trên Windows.

Tóm tắt Bế tắc

Bài viết trên là thông tin chi tiết về Bế tắc và một vài ví dụ minh họa cho các hiện tượng xảy ra. Đồng thời, chúng tôi cũng giải thích cho bạn nguyên lý hoạt động để ngăn chặn hoặc khắc phục Deadlock.

Nếu có bất kỳ thắc mắc nào về Deadlock hoặc muốn tìm hiểu thêm về công nghệ thông tin và xử lý dữ liệu, hãy để lại bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể ghé thăm Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến ​​thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Hoàng Minh Hảihttp://meeypage.com/tin-tuc
Hoàng Minh Hải là người sáng tạo nội dung, mọi nguồn nội dung được dẫn lại từ các tạp chí, Hoàng Minh Hải là chuyên gia công nghệ có kiến thức về VPS, website, SEO và các lĩnh vực khác như tên miền hosting
RELATED ARTICLES

Bài Viết Liên Quan