Deadlock là gì?

Phrase None

Deadlock là tình trạng chương trình không thể truy cập tài nguyên (resource) mà nó cần để tiếp tục. Khi một ứng dụng đang hoạt động gặp phải tình trạng deadlock, nó có thể bị "treo" hoặc không phản hồi (unresponsive).

Deadlock cũng có thể xảy ra khi hai hoặc nhiều truy vấn (query) được chạy trên cơ sở dữ liệu (database). Transactional database khóa các bản ghi đang hoạt động (active record), ngăn các truy vấn khác truy cập chúng. Nếu một tiến trình không thể truy cập vào một bản ghi bị khóa, một deadlock có thể xảy ra.

Các tài nguyên, chẳng hạn như dữ liệu đã lưu hoặc đã lưu trong bộ nhớ cache, có thể bị khóa khi được truy cập bởi một tiến trình (process) cụ thể trong một chương trình. Khóa dữ liệu ngăn các tiến trình khác ghi đè dữ liệu sớm. Nếu một tiến trình hoặc truy vấn cần truy cập vào dữ liệu bị khóa, nhưng tiến trình khóa dữ liệu không cho phép n, thì có thể xảy ra deadlock.

  • Tiến trình 1 yêu cầu tài nguyên B từ tiến trình 2.
  • Tài nguyên B bị khóa trong khi tiến trình 2 đang chạy.
  • Tiến trình 2 yêu cầu tài nguyên A từ tiến trình 1 để chạy xong.
  • Tài nguyên A bị khóa trong khi tiến trình 1 đang chạy.

Kết quả là tiến trình 1 và tiến trình 2 đang chờ nhau kết thúc. Vì không tiến trình nào có thể tiếp tục cho đến khi tiến trình kia hoàn thành, nên một deadlock được tạo ra.

Noun None

Deadlock là một điều kiện có thể xảy ra trong một hệ thống bao gồm nhiều tiến trình (process) có thể truy cập tài nguyên được chia sẻ (shared resource). Deadlock được cho là xảy ra khi hai hoặc nhiều tiến trình đang chờ nhau giải phóng một tài nguyên (resource). Nói chung, một deadlock có 4 điều kiện cần thiết:

  • Một tài nguyên không thể được sử dụng bởi nhiều tiến trình cùng một lúc, thường được gọi là loại trừ lẫn nhau (mutual exclusion).
  • Một tiến trình sử dụng một tài nguyên có thể yêu cầu một tài nguyên khác, điều kiện hold and wait.
  • Điều kiện no preemption áp dụng cho các tài nguyên do một tiến trình nắm giữ và chúng không thể được giải phóng nếu không có hành động của tiến trình.
  • Hai hoặc nhiều tiến trình đang chờ nhau giải phóng một tài nguyên.
Learning English Everyday