Deadlock là trạng thái như thế nào

Deadlock trong Java là một điều kiện khi hai hoặc nhiều luồng cố gắng truy cập vào cùng một tài nguyên tại cùng một khoảng thời gian. Sau đó, các luồng này không bao giờ có thể truy cập tài nguyên nữa mà bị chuyển sang trạng thái chờ mãi  mãi. Vì vậy, deadlock phát sinh khi có nhiều hơn hai luồng hoặc hơn hai nguồn. Về cơ bản, deadlock xảy ra khi đa luồng yêu cầu cùng một nguồn nhưng chúng được nhận theo thứ tự khác nhau. Cuối cùng, chúng bị mắc kẹt trong một khoảng thời gian vô hạn và tạo ra deadlock.

Deadlock là trạng thái như thế nào
  NguyenThanhXuanI12A 26/4/2012, 17:20

- Vấn đề deadlock: dead lock là hiện tượng một tiến trình chiếm hữu tài nguyên lâu dài làm cho các tiến trình có nhu cầu sử dụng tài nguyên này luôn ở trạng thái waiting mãi mãi .

- Mô hình hệ thống : trong một hệ thống , các tiến trình từ khi được gọi đến khi kết thúc sẽ qua các giai đoạn sau :
+Yêu cầu tài nguyên (request): nếu yêu cầu không được giải quyết ngay (vd khi tài nguyên đang được tiến trình khác sử dụng) thì tiến trình yêu cầu phải đợi cho đến khi nhận được tài nguyên.
+Sử dụng tài nguyên (use)
+Giải phóng tài nguyên (release)

- Mô tả Deadlock: Dead lock xảy ra với 4 điều kiện sau xảy ra đồng thời :

+ Ngăn chặn(loại trừ) lẫn nhau : vì chỉ có 1 tiến trình đc ở trong găng
+ Giữ và đợi (Hold and wait)
+ Không có ưu tiên(độc quyền)(No preemption): tiến trình thực hiện mãi mà ko dừng để giải phóng tài nguyên cho tiến trình khác
+ Chờ đợi vòng tròn(Circular Wait)

Trong mô hình RAG (Resource Allocation Graph )

Deadlock là trạng thái như thế nào


_Nếu đồ thị không chu trình ko xảy ra deadlock.
_______Nếu đồ thị có chu trình
__________Nếu mỗi loại tài nguyên chỉ một cá thể thì chắc chắn xảy ra deadlock.
__________Nếu mỗi loại tài nguyên có một vài cá thể thì deadlock có thể xảy ra hoặc không.

Các phương pháp xử lý Deadlock

+ Ngăn ngừa hoặc tránh xa, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock.
+ Cho phép hệ thống đi vào trạng thái deadlock rồi khôi phục lại.
+ Bỏ qua dead lock , coi như ko có dead trong hệ thống.

Ngăn chặn deadlock : là đảm bảo ít nhất một trong bốn điều kiện không thể xuất hiện

a.Ngăn cản lẫn nhau – đảm bảo là hệ thống không có các file không thể chia sẻ.
Một tiến trình không bao giờ phải chờ tài nguyên có thể chia sẻ
Ví dụ: read-only files(vì file read only thì nhiều tiến trình truy xuất nó cũng không ảnh hưởng gì-nội dung file không thay đổi)
Một số tài nguyên là không thể chia sẻ
Ví dụ: chế độ toàn màn hình

b.Giữ và đợi cấp thêm tài nguyên – phải đảm bảo rằng mỗi khi một tiến trình yêu cầu một tài nguyên, nó không giữ bất kỳ tài nguyên nào khác.
Đòi hỏi tiến trình yêu cầu và được phân phối tất cả các tài nguyên của nó trước khi nó bắt đầu thực hiện, hoặc chỉ cho phép tiến trình yêu cầu các tài nguyên khi không có tài nguyên nào cả.

c.Không có ưu tiên: không đòi lại tài nguyên từ tiến trình đang giữ chúng_
Nếu một tiến trình đang giữ một số tài nguyên và yêu cầu tài nguyên khác mà không thể được phân phối ngay cho nó thì tất cả các tài nguyên nó đang giữ được giải phóng.
Các tài nguyên ưu tiên được thêm vào danh sách tài nguyên dành cho tiến trình đang chờ đợi.
Tiến trình sẽ được khởi động lại chỉ khi nó có thể lấy lại các tài nguyên cũ của nó cũng như các tài nguyên mới mà nó đang yêu cầu.

d.Chờ đợi vòng tròn – áp dụng một thứ tự tuyệt đối cho tất cả các loại tài nguyên: mỗi loại được gắn một số nguyên
Mỗi tiến trình yêu cầu các tài nguyên theo thứ tự tăng dần: chỉ có thể nhận được tài nguyên có trọng số cao hơn của bất kỳ tài nguyên nào nó đang giữ
Muốn có tài nguyên j, tiến trình phải giải phóng tất cả các tài nguyên có trọng số i > j (nếu có)

Tránh deadlock

Một số thông tin ưu tiên trong hệ thống :
-Mô hình hữu dụng nhất và đơn giản nhất yêu cầu mỗi tiến trình công bố số lượng tài nguyên lớn nhất của mỗi loại mà nó có thể cần đến.
-Giải thuật tránh deadlock luôn kiểm tra trạng thái phân phối tài nguyên để đảm bảo rằng sẽ không bao giờ có tình trạng chờ đợi vòng tròn.
-Trạng thái phân phối tài nguyên được xác định bởi số tài nguyên khả dụng (Available) và đã được phân phối (Allocation) cũng như số tài nguyên tối đa (max)tiến trình yêu cầu.






NguyenThanhXuanI12A
Tổng số bài gửi : 1
Join date : 20/03/2012

LikeDislike

Deadlock là trạng thái như thế nào
 
Deadlock là trạng thái như thế nào