Trung BìnhOperating System iconOperating System

Deadlock là gì? 4 điều kiện cần thiết và các cách phòng tránh?

Deadlock xảy ra khi nhiều process chờ nhau giải phóng resource mà không process nào có thể tiếp tục.

Coffman

  1. xác định 4 điều kiện cần thiết đồng thời:
  2. Mutual Exclusion: resource chỉ 1 process dùng tại một thời điểm
  3. Hold and Wait: process giữ ít nhất 1 resource và chờ thêm resource khác
  4. No Preemption: resource không thể bị lấy bắt buộc
  5. Circular Wait: tồn tại chuỗi vòng P1→P2→...→Pn→P1 chờ nhau

Phòng tránh bằng cách phá vỡ một điều kiện: Lock Ordering (phá Circular Wait): luôn acquire lock theo thứ tự cố định — ví dụ database luôn lock bảng A trước bảng B. Trylock với timeout (phá Hold and Wait): nếu không lấy được lock sau timeout thì release tất cả và retry. Banker's Algorithm: OS kiểm tra trước khi cấp resource. Thực tế: Java synchronized blocks, Go channel patterns, và database transaction isolation level đều phải xử lý deadlock — PostgreSQL phát hiện deadlock và rollback một transaction.

Xem toàn bộ Operating System cùng filter theo level & chủ đề con.

Mở danh sách Operating System