Deadlock

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Deadlock (Khóa chết) là trạng thái xảy ra trong môi trường đa nhiệm (muti-threading) khi hai hoặc nhiều tiến trình đi vào vòng lặp chờ tài nguyên mãi mãi.

Ví dụ[sửa | sửa mã nguồn]

Thread 1 Thread 2
Muốn lấy tài nguyên A và B Muốn lấy tài nguyên A và B
Chiếm tài nguyên A , chờ Thread 2 bắt đầu chạy cho tới khi Thread 2 đợi tài nguyên A giải phóng
Chiếm tài nguyên B
Đợi tài nguyên A giải phóng
Đợi tài nguyên B giải phóng
Deadlock

Đối phó với Deadlock[sửa | sửa mã nguồn]

Điều kiện xảy ra Deadlock[sửa | sửa mã nguồn]

Có bốn điều kiện cần thiết để deadlock có thể xảy ra.

  1. Điều kiện loại trừ lẫn nhau: Một tài nguyên không thể sử dụng bởi nhiều hơn một tiến trình tại một thời điểm
  2. Điều kiện giữ và chờ: Các tiến trình giữ tài nguyên và chờ tài nguyên mới
  3. Điều kiện không thể chiếm: Các tài nguyên không thể bị đòi lại, chúng chỉ có thể được giải phóng bởi chính tiến trình chiếm giử chúng
  4. Điều kiện chu trình chờ: Các tiến trình giử tài nguyên và chờ các tài nguyên bị giử bởi tiến trình khác, tạo thành một chu trình. Ví dụ: Tiến trình 1, chiếm A1, chờ A2. Tiến trình 2 chiếm A2, chờ A3,... Tiến trình N chiếm An, chờ A1.

Liên kết ngoài[sửa | sửa mã nguồn]

Bài viết[sửa | sửa mã nguồn]

Bản in[sửa | sửa mã nguồn]

Chung[sửa | sửa mã nguồn]