Thảo luận Bài 8
+83
leanhhuy (I11C)
phamdieptuan (I11C)
DaoVanHoang (I11C)
NguyenMinhNhut.(I11c)
PhamHuyHoang (I11C)
ledinhngankhanh (i11c)
nguyenthanhhieu(i11c)
PhamThiHoa-I91C
TRANTHINHPHAT (I11C)
DangMinhQuang(I11C)
NguyenDoTu (I11C)
TranThanhHoang(I91C)
nguyenduc_gia.18(I11c)
NguyenNgocMyTien(I11C)
LE DUY NHAT AN (I91C)
BuiHoangTuan.131.I11C
Nguyen Dinh Manh060(I11c)
ThanhThao04(I11C)
NguyenThiThanhThuy(I11C)
PhamDuyPhuong87(I11C)
HuynhVanNhut (I11C)
LeMinhDuc (I11C)
onlyminhlong
LeTanDat (I11C)
Nguyenminhduc (I11C)
tranphanhieu36_i11c
TranTrungTinh(I11C)
DuongKimLong(I111C)
NguyenDongGiang
lengocthuthao89 (i11c)
dongocthien (I11C)
nguyenthingocloan (I11C)
HuynhPhuong (I11C)
PhamVanNgo(I11C)
TrinhThiPhuongThaoI11C
nguyen huynh nhu (102C)
KimHue36 (I11C)
DuongTrungTinh(I11C)
HoangThiVe (I11C)
HoangThanhChuong (I11C)
lytrannhutlinh i11c
HoangNgocQuynh(I11C)
TrinhThiOanh (I11C)
tranvantoan83(I11c)
BuiLeHung(83C)
Duongthithanhhuynh (I11C)
BuiHuuThanhLuan(I11C)
ngocquynh2091(i11C)
nguyenquoctruong (I11C)
phamngoctan095 (I11C)
HoiHoangHongVu I11C
minhgiangbc
tranvanhai_21(I11c)
chauchanduong (I11C)
08H1010052
tranleanhngoc88(i11c)
nguyenthithuylinh (I11C)
LeMInhTien(I11C)
chipphonui
buithithudung24 (i11c)
VoMinhHoang (I11C)
doanhongdao030(I11C)
hongthuanphong (I11C)
dangminhthinh2107
NguyenDinhHop (I11C)
nguyenminhlai.(I11C)
NguyThiGai (I11C)
TranQuyThanh (I11C)
Tranvancanh(I11C)
DaoQuangSieu (I11C)
LaVanKhuong (I11C)
caotanthanh(i11c)
DangNgocMinh(I11C)
BuiVanHoc(I11C)
NgoDucTuan (I11C)
nguyenvulinh_i11c
XuanThai_I11C
ToThiThuyTrang (I11C)
NgoLeYen48(I11C)
tannamthanh(I11C)
dinhtrongnghia(I11C)
vothihonggam
Admin
87 posters
Trang 2 trong tổng số 10 trang
Trang 2 trong tổng số 10 trang • 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Thuật giải tránh Deadlock cho trường hợp mỗi loại tài nguyên chỉ có 1 phiên bản.
- Trên RAG, lúc đầu tất cả nhu cầu về tài nguyên của tiến trình phải được khai báo trước bằng các Cung Nhu cầu (Claim edge) Pi · · ·> Rj chỉ báo rằng Pi có thể sẽ yêu cầu Rj
- Cung Nhu cầu Pi · · ·> Rj được chuyển thành Cung Yêu cầu (Request edge) Pi ® Rj khi Pi thực sự bắt đầu cần đến Rj .
- Nếu yêu cầu Pi ® Rj được HĐH đáp ứng, cung Pi ® Rj chuyển thành Cung Ấn định (Assignment edge) Pi ¬ Rj nối phiên bản duy nhất của Rj với Pi .
- Khi HĐH xét yêu cầu Pi ® Rj. Hệ chỉ cấp phát Rj cho Pi nếu Cung Ấn định Pi ¬ Rj không tạo ra vòng tròn đồng hướng trong RAG (xét cả các Cung Nhu cầu).
- Thuật giải có độ phức tạp O(n²) với n là số tiến trình trong hệ.
TranQuyThanh (I11C)- Tổng số bài gửi : 53
Join date : 30/08/2011
Mình có bị tình huống này (DeadLock) mong thầy và các bạn chỉ mình với.
Có nghĩa là: mình có một máy tính, máy tính mình có nhiều cổng (5 cổng com). Mỗi cổng com thì nối với những thiết bị khác nhau. Cùng một lúc thì cả 5 cổng này đều gởi tín hiệu về cho máy tính nên chương trình mình sử lý nó bị mất dữ liệu.
Và hiện tại mình đang bế tắt chổ đó, mong thầy và các bạn chỉ giúp mình với.
Và hiện tại mình đang bế tắt chổ đó, mong thầy và các bạn chỉ giúp mình với.
nguyenminhlai.(I11C)- Tổng số bài gửi : 24
Join date : 26/08/2011
Age : 35
Đến từ : Quảng Nam
Điều kiện xảy ra Deadlock
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.
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.
NguyenDinhHop (I11C)- Tổng số bài gửi : 14
Join date : 26/08/2011
NguyenDinhHop (I11C)- Tổng số bài gửi : 14
Join date : 26/08/2011
Share code Deadlocks
Mình tìm trên mạng và có đoạn code về Deadlock này nếu bạn nào có thời gian thì tìm hiểu về nó nhé
thanks
- Code:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num_p,num_re;
int all[10] [10],re[10],av[10],cl[10][ 10],used[ 10];
int more[10];
int i=0;
int ap,ar;
int cp,cr;
int j=0;
int pi,ci;
printf("\nNhap so tien trinh : ");
scanf("%d",&num_p) ;
printf("\nNhap so tai nguyen : ");
scanf("%d",&num_re);
printf("\nNhap gia tri toi da cua moi tai nguyen : \n\n");
for(i=0;i<num_re;i++)
{
printf("R[%d] = ",i+1);
scanf("%d",&re[i]) ;
}
//Allocation
printf("\n");
for(ap=0;ap<num_p;ap++)
{
printf("Nhap so tai nguyen da cap phat cho tien trinh %d : ",ap+1);
for(ar=0;ar<num_re;ar++)
scanf("%d",&all[ar][ap]);
}
//claim matrix
printf("\n");
for(cp=0;cp<num_p;cp++)
{
printf("Nhap so tai nguyen yeu cau cua tien trinh %d : ",cp+1);
for(cr=0;cr<num_re;cr++)
scanf("%d",&cl[cr][cp] );
}
//Used & Available
for(i=0;i<num_re;i++)
{
used[i]=0;
for(j=0;j<num_p;j++)
used[i]=used[i]+all[i] [j];
av[i]=re[i]-used[ i];
}
//check deadlock
for(pi=0;pi<num_p;pi++)
{
int check=0;
for(ci=0;ci<num_re;ci++)
{
more[ci]=cl[ci][pi]- all[ci][pi];
if(more[ci] <= av[ci])
check++;
}
if(check==num_re)
goto l1;
}
printf("\n\t\t!! XAY RA DEADLOCK !!\n\n");
getch();
return 0;
l1:
printf("\n\t\t!! SAFE !!\n\n");
getch();
return 0;
}
thanks
dangminhthinh2107- Tổng số bài gửi : 15
Join date : 09/09/2011
Định Nghĩa, Ví dụ Deadlock
Định Nghĩa:
Deadlock: là tình huống kẹt tiến trình (process) với một tập các process bị blocked, mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang có.
Ví dụ 1
Giả sử hệ thống có 2 file trên đĩa.
P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.
Ví dụ 2
Semaphore A và B, khởi tạo bằng 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
Deadlock: là tình huống kẹt tiến trình (process) với một tập các process bị blocked, mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang có.
Ví dụ 1
Giả sử hệ thống có 2 file trên đĩa.
P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.
Ví dụ 2
Semaphore A và B, khởi tạo bằng 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
hongthuanphong (I11C)- Tổng số bài gửi : 18
Join date : 26/08/2011
Các giải pháp xử lý deadlock
1) Không giải quyết - Giải thuật đà điểu:
a) Coi như không có vấn đề deadlock.
b) Dựa trên cơ sở:
Deadlock rất ít xảy ra.
Chi phí giải quyết rất cao.
c) Được dùng trên các hệ điều hành: Unix, Windows.
2) Phát hiện và phục hồi từ deadlock:
a) Phát hiện deadlock:
Dùng các giải thuật phát hiện vòng chờ các process.
Do người quản trị hệ thống.
b) Phục hồi từ deadlock:
-Kết thúc các process bị deadlock.
Kết thúc tất cả các process bị deadlock.
Lần lượt kết thúc các process bị deadlock cho đến khi hết deadlock.
Thông số chọn process để kết thúc:
Độ ưu tiên.
Thời gian đã thực thi.
Thời gian còn lại.
Số tài nguyên đã cấp phát.
Số tài nguyên đang chờ.
-Lấy lại tài nguyên từ process.
Lần lượt lấy lại các tài nguyên đã cấp phát cho các process cho đến khi hết deadlock.
Phụ thuộc bản chất của tài nguyên.
Sử dụng công cụ của hệ điều hành.
-Phục hồi các điểm kiểm tra.
Định kỳ tạo các điểm kiểm tra (checkpoint).
Lưu trạng thái hệ thống tại điểm kiểm tra.
Thực hiện lại (rollback) các process bị deadlock tại các điểm kiểm tra.
Lần lượt thực hiện lại các process bị deadlock tại các điểm kiểm tra cho đến khi hết deadlock.
3) Ngăn chặn deadlock:
-Loại bỏ các điều kiện dẫn đến deadlock.
-Các điều kiện xem như không thể loại bỏ:
Loại trừ tương hỗ.
Không lấy lại tài nguyên từ process.
-Loại bỏ điều kiện loại trừ tương hỗ:
Giảm số tài nguyên tranh chấp.
Tăng số lượng tài nguyên.
Cấp phát tài nguyên dạng spool.
Vd: chỉ 1 printer daemon dùng máy in.
Các process gởi yêu cầu cho printer daemon.
-Loại bỏ điều kiện giữ và chờ tài nguyên:
Nguyên tắc: process không được giữ tài nguyên khi yêu cầu tài nguyên mới.
Process khai báo tài nguyên và được cấp phát 1 lần.
Nếu process yêu cầu tài nguyên và không được cấp phát thì phải trả các tài nguyên đang giữ.
-Loại bỏ điều kiện không lấy lại tài nguyên:
Lấy lại tài nguyên từ process.
Không thể với tài nguyên như máy in.
-Loại bỏ vòng chờ các process:
Có thể quy định số thứ tự tài nguyên.
Process chỉ được yêu cầu tài nguyên theo thứ tự tăng.
Giả sử có deadlock:
P1 giữ Ri, chờ Rj -> i < j.
P2 giữ Rj, chờ Rj -> j < i.
4) Tránh deadlock:
Chấp nhận các điều kiện tạo deadlock.
Theo dõi và tránh dẫn đến deadlock.
Hai hướng giải quyết:
-Không tạo process mới nếu có thể dẫn đến deadlock.:
Process cần khai báo số lượng tài nguyên cần sử dụng.
Không tạo process mới nếu số lượng tài nguyên hệ thống không đủ, có thể dẫn đến deadlock.
-Không cấp phát thêm tài nguyên cho process:
Liên quan đến việc sử dụng tài nguyên trong tương lai của các process.
Định nghĩa trạng thái hệ thống với:
a) Coi như không có vấn đề deadlock.
b) Dựa trên cơ sở:
Deadlock rất ít xảy ra.
Chi phí giải quyết rất cao.
c) Được dùng trên các hệ điều hành: Unix, Windows.
2) Phát hiện và phục hồi từ deadlock:
a) Phát hiện deadlock:
Dùng các giải thuật phát hiện vòng chờ các process.
Do người quản trị hệ thống.
b) Phục hồi từ deadlock:
-Kết thúc các process bị deadlock.
Kết thúc tất cả các process bị deadlock.
Lần lượt kết thúc các process bị deadlock cho đến khi hết deadlock.
Thông số chọn process để kết thúc:
Độ ưu tiên.
Thời gian đã thực thi.
Thời gian còn lại.
Số tài nguyên đã cấp phát.
Số tài nguyên đang chờ.
-Lấy lại tài nguyên từ process.
Lần lượt lấy lại các tài nguyên đã cấp phát cho các process cho đến khi hết deadlock.
Phụ thuộc bản chất của tài nguyên.
Sử dụng công cụ của hệ điều hành.
-Phục hồi các điểm kiểm tra.
Định kỳ tạo các điểm kiểm tra (checkpoint).
Lưu trạng thái hệ thống tại điểm kiểm tra.
Thực hiện lại (rollback) các process bị deadlock tại các điểm kiểm tra.
Lần lượt thực hiện lại các process bị deadlock tại các điểm kiểm tra cho đến khi hết deadlock.
3) Ngăn chặn deadlock:
-Loại bỏ các điều kiện dẫn đến deadlock.
-Các điều kiện xem như không thể loại bỏ:
Loại trừ tương hỗ.
Không lấy lại tài nguyên từ process.
-Loại bỏ điều kiện loại trừ tương hỗ:
Giảm số tài nguyên tranh chấp.
Tăng số lượng tài nguyên.
Cấp phát tài nguyên dạng spool.
Vd: chỉ 1 printer daemon dùng máy in.
Các process gởi yêu cầu cho printer daemon.
-Loại bỏ điều kiện giữ và chờ tài nguyên:
Nguyên tắc: process không được giữ tài nguyên khi yêu cầu tài nguyên mới.
Process khai báo tài nguyên và được cấp phát 1 lần.
Nếu process yêu cầu tài nguyên và không được cấp phát thì phải trả các tài nguyên đang giữ.
-Loại bỏ điều kiện không lấy lại tài nguyên:
Lấy lại tài nguyên từ process.
Không thể với tài nguyên như máy in.
-Loại bỏ vòng chờ các process:
Có thể quy định số thứ tự tài nguyên.
Process chỉ được yêu cầu tài nguyên theo thứ tự tăng.
Giả sử có deadlock:
P1 giữ Ri, chờ Rj -> i < j.
P2 giữ Rj, chờ Rj -> j < i.
4) Tránh deadlock:
Chấp nhận các điều kiện tạo deadlock.
Theo dõi và tránh dẫn đến deadlock.
Hai hướng giải quyết:
-Không tạo process mới nếu có thể dẫn đến deadlock.:
Process cần khai báo số lượng tài nguyên cần sử dụng.
Không tạo process mới nếu số lượng tài nguyên hệ thống không đủ, có thể dẫn đến deadlock.
-Không cấp phát thêm tài nguyên cho process:
Liên quan đến việc sử dụng tài nguyên trong tương lai của các process.
Định nghĩa trạng thái hệ thống với:
- Vector E: tổng số các loại tài nguyên.
Vector A: số tài nguyên mỗi loại chưa dùng.
Ma trận C: số tài nguyên đã cấp phát cho các process.
Ma trận R: số lượng tài nguyên các process sẽ tiếp tục yêu cầu.
doanhongdao030(I11C)- Tổng số bài gửi : 17
Join date : 01/09/2011
Định nghĩa, vd deadlock
Định nghĩa:
-Deadlock là trạng thái hệ thống, ở đó tiến trình rơi vào tình trạng chờ đợi vô điều kiện -> vô hạn định -> hệ thống bị tắt nghẽn
Định nghĩa hình thức:
-Một tập hợp các process được gọi là bị deadlock khi mỗi process trong tập hợp chờ đợi sự kiện từ process khác trong tập hợp
-Sự kiện chờ đợi thường được gọi là tài nguyên (đang bị chiếm giữ) được traotrả cho hệ thống.
-Khi xảy ra deadlock không có process nào có thể thực thi, giao trả tài nguyên.
Vd: tình trạng kẹt xe
-Deadlock là trạng thái hệ thống, ở đó tiến trình rơi vào tình trạng chờ đợi vô điều kiện -> vô hạn định -> hệ thống bị tắt nghẽn
Định nghĩa hình thức:
-Một tập hợp các process được gọi là bị deadlock khi mỗi process trong tập hợp chờ đợi sự kiện từ process khác trong tập hợp
-Sự kiện chờ đợi thường được gọi là tài nguyên (đang bị chiếm giữ) được traotrả cho hệ thống.
-Khi xảy ra deadlock không có process nào có thể thực thi, giao trả tài nguyên.
Vd: tình trạng kẹt xe
doanhongdao030(I11C)- Tổng số bài gửi : 17
Join date : 01/09/2011
Re: Thảo luận Bài 8
ToThiThuyTrang (I11C) đã viết:vothihonggam đã viết:Tình huống kẹt của của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
ví dụ: 2 xe đi cùng chiều qua một cây cầu hẹp, mà cầu chỉ có một làn xe, nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa, xãy ra kẹt xe (deadlock) vì không xe nào chịu nhường.
Ví dụ 2: Hiện tượng kẹt mạng tại tổng đài 1080:
+ ví dụ tổng đài 1080 gồm có 100 điện thoại viên.
+ 100 khách hàng gọi tới cùng một lúc. Khách hàng 101,102…. Gọi tới, sẽ phải chờ.
+ 1 khách hàng ứng với một điện thoại viên có thể xem như một tài nguyên.
+ nếu deadlock xuất hiện, nó có thể được giải quyết nếu 1 trong 100 khách hàng đã được điện thoại viên trả lời xong và nhường tài nguyên cho các khách hàng tiếp theo...
Mình đã hiểu hiện tượng Deadlock là gì rồi. Cảm ơn bạn Thuy Trang nha. Mong bạn Trang có nhiều bài đóng góp hơn cho diễn đàn.
VoMinhHoang (I11C)- Tổng số bài gửi : 26
Join date : 08/09/2011
Age : 39
Đến từ : Tp Tan An - Long An
Re: Thảo luận Bài 8
BuiVanHoc(I11C) đã viết:vothihonggam đã viết:Tình huống kẹt của của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
ví dụ: 2 xe đi cùng chiều qua một cây cầu hẹp, mà cầu chỉ có một làn xe, nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa, xãy ra kẹt xe (deadlock) vì không xe nào chịu nhường.
Hiện tượng deadlock mình thường gặp nhất là hiện tượng khi các bạn chạy nhiều ứng dụng lớn chiếm nhiều ram và cpu, nhưng máy lại có cấu hình thấp dẫn đến PC bị treo(deadlock) và phải restart lại máy để giải phóng các tiến trình
bạn Học có nêu ra ví dụ Ram và CPU của máy tính, mình thấy ví dụ này dễ hiểu.
VoMinhHoang (I11C)- Tổng số bài gửi : 26
Join date : 08/09/2011
Age : 39
Đến từ : Tp Tan An - Long An
Deadlock là gì? Cho các ví dụ mình họa.
Deadlock là tình huống kẹt tiến trình( process)với một tập các process bị blocked,mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang có.
Vd1: Giả sử 2 hệ thống có 2 file trên đĩa.P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.Xảy ra deadlock.
Vd2: Semaphore A và B,khởi tạo bằng 1
P0 P1
wait (A); wait (B);
wait (B); wait (A)
Vd1: Giả sử 2 hệ thống có 2 file trên đĩa.P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia.Xảy ra deadlock.
Vd2: Semaphore A và B,khởi tạo bằng 1
P0 P1
wait (A); wait (B);
wait (B); wait (A)
buithithudung24 (i11c)- Tổng số bài gửi : 15
Join date : 25/08/2011
Bài tập về nhà:
Giả sử có bộ nhớ đệm BUFFER bao gồm các khoang Item được tiến trình Producer lần lược đưa các sản phẩm S1, S2… Sn vào. Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
- Công việc của Producer phải đồng bộ với Consumer, không được đưa sản phẩm vào khi Buffer đầy và lấy sản phẩm ra khi chưa có .
• Đồng bộ hóa bằng 2 đèn hiệu ( Semophore)
Ta dùng 2 đèn hiệu semFull và semEmpty
SemFull : kiểm soát số Sản phẩm trong bộ đệm.
SemEmpty: Kiểm soát số khoang trống trong bộ đệm.
Hai tác nguyên: wait và signal tương ứng với các hàm WaitForSingleObject và ReleaseSemaphore của Win32 API.
Producer()
{
// Sản xuất ra 1 sản phẩm
wait(semEmpty); // Chờ đến khi có khoang trống trong bộ đệm Buffer
// Đưa sản phẩm vào Buffer
signal(semFull);
}
Consumer()
{
wait(semFull); // Chờ đến khi có sản phẩm trong bộ đệm Buffer
// Lấy sản phẩm từ Buffer
signal(semEmpty);
// Xử lý sản phẩm vừa lấy được
}
- Công việc của Producer phải đồng bộ với Consumer, không được đưa sản phẩm vào khi Buffer đầy và lấy sản phẩm ra khi chưa có .
• Đồng bộ hóa bằng 2 đèn hiệu ( Semophore)
Ta dùng 2 đèn hiệu semFull và semEmpty
SemFull : kiểm soát số Sản phẩm trong bộ đệm.
SemEmpty: Kiểm soát số khoang trống trong bộ đệm.
Hai tác nguyên: wait và signal tương ứng với các hàm WaitForSingleObject và ReleaseSemaphore của Win32 API.
Producer()
{
// Sản xuất ra 1 sản phẩm
wait(semEmpty); // Chờ đến khi có khoang trống trong bộ đệm Buffer
// Đưa sản phẩm vào Buffer
signal(semFull);
}
Consumer()
{
wait(semFull); // Chờ đến khi có sản phẩm trong bộ đệm Buffer
// Lấy sản phẩm từ Buffer
signal(semEmpty);
// Xử lý sản phẩm vừa lấy được
}
chipphonui- Tổng số bài gửi : 21
Join date : 07/09/2011
Age : 36
Đến từ : Gia lai
Re: Thảo luận Bài 8
DaoQuangSieu (I11C) đã viết:Giải pháp để ngăn chặn DeadLock là bằng cách phủ định một trong bốn điều kiện trên như sau:dinhtrongnghia(I11C) đã viết:- Loại trừ lẫn nhau (Multual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-shareable), nghĩa là mỗi thời điểm chỉ có một tiến trình được sử dụng nó.
- Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ tài nguyên và xin thêm tài nguyên đang bị độc chiếm bởi tiến trình khác.
- Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiên trình này tự nguyên trả lại hệ thống sau khi dung xong.
- Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên {P1,P2…Pn}, khi đó P1 chờ TN giữ bởi P2, tiến trình P2 chờ TN giữ bởi P3, …, Pn chờ P1.
+Loại trừ lẫn nhau: để ngăn tình trạng này xảy ra thì ta có thể tạo nhiều tài nguyên dùng chung để các tiến trình sử dụng 1 cách hiệu quả.
+Giữ và chờ: để ngăn tình trạng này ta sẽ cho các tiến trình giữ và chờ trong một khoảng thời gian nhất định nào đó. Như thế, sẽ giải phóng được tài nguyên và các tiến trình khác tiếp tục sử dụng TN đó.
+Không có tiếm quyền: để ngăn tình trạng này thì ta phải làm cho hệ điều hành lấy lại tài nguyên mà tiến trình đó đang giữ (có tiếm quyền).
+ Chờ xoay vòng: cách giải quyết cũng giống (Loại trừ lẫn nhau) là phải tạo nhiều TN dùng chung.
cho mình bổ sung nha.
Ngăn chặn deadlock
Để deadlock xảy ra, một trong bốn điều kiện cần phải xảy ra. Bằng cách đảm
bảo ít nhất một trong bốn điều kiện này không thể xảy ra, chúng ta có thể ngăn chặn
việc xảy ra của deadlock. Chúng ta tìm hiểu tỷ mỹ tiếp cận này bằng cách xem xét
mỗi điều kiện cần riêng rẻ nhau.
chipphonui- Tổng số bài gửi : 21
Join date : 07/09/2011
Age : 36
Đến từ : Gia lai
Đặc điểm deadlock
Trong một deadlock, các quá trình không bao giờ hoàn thành việc thực thi và
các tài nguyên hệ thống bị buộc chặt, ngăn chặn các quá trình khác bắt đầu.
Mục đích Sau khi học xong chương này, người học nắm được những kiến thức sau:
Hiểu mô hình hệ thống về deadlock
• Hiểu các đặc điểm của deadlock
• Hiểu các phương pháp quản lý deadlock
• Hiểu cách ngăn chặn deadlock
• Hiểu cách tránh deadlock
• Hiểu cách phát hiện deadlock
• Hiểu cách phục hồi từ deadlock
thanks các bạn tham khảo nha!
các tài nguyên hệ thống bị buộc chặt, ngăn chặn các quá trình khác bắt đầu.
Mục đích Sau khi học xong chương này, người học nắm được những kiến thức sau:
Hiểu mô hình hệ thống về deadlock
• Hiểu các đặc điểm của deadlock
• Hiểu các phương pháp quản lý deadlock
• Hiểu cách ngăn chặn deadlock
• Hiểu cách tránh deadlock
• Hiểu cách phát hiện deadlock
• Hiểu cách phục hồi từ deadlock
thanks các bạn tham khảo nha!
chipphonui- Tổng số bài gửi : 21
Join date : 07/09/2011
Age : 36
Đến từ : Gia lai
Định nghĩa DeadLock và nêu các ví dụ minh họa về hiện tượng này.
Deadlock : Là Một số tiến trình có thể tranh nhau bởi một số tài nguyên hạn chế.
Tài nguyên hệ thống được chia thành nhiều loại, mỗi loại có 1 hoặc nhiều phiên bản(Instances).
+ Các tiến trình chờ có thể sẽ không bao giờ thay đổi lại trạng thái được vì các tài nguyên mà nó yêu cầu bị giữ bởi các tiến trình chờ khác.
+ Mỗi tiến trình sử dụng tài nguyên theo các bước sau:
• yêu cầu tài nguyên(request): Nếu yêu cầu không được giải quyết ngay( ví dụ 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)
• Trả lại(Release): Trả tài nguyên cho HĐH quản lý.
ví dụ: Hiện tượng tắc nghẽn trên cầu:
+ Hai (hay nhiều hơn) ô tô đối đầu nhau trên một cây cầu hẹp chỉ đủ độ rộng cho một chiếc.
+ Mỗi đoạn của cây cầu có thể xem như một tài nguyên
+ Nếu deadlock xuất hiện, nó có thể được giải quyết nếu một hay một số ô tô lùi lại nhường đường rồi tiển ra sau. deadlock là kẹt mãi mãi
Tài nguyên hệ thống được chia thành nhiều loại, mỗi loại có 1 hoặc nhiều phiên bản(Instances).
+ Các tiến trình chờ có thể sẽ không bao giờ thay đổi lại trạng thái được vì các tài nguyên mà nó yêu cầu bị giữ bởi các tiến trình chờ khác.
+ Mỗi tiến trình sử dụng tài nguyên theo các bước sau:
• yêu cầu tài nguyên(request): Nếu yêu cầu không được giải quyết ngay( ví dụ 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)
• Trả lại(Release): Trả tài nguyên cho HĐH quản lý.
ví dụ: Hiện tượng tắc nghẽn trên cầu:
+ Hai (hay nhiều hơn) ô tô đối đầu nhau trên một cây cầu hẹp chỉ đủ độ rộng cho một chiếc.
+ Mỗi đoạn của cây cầu có thể xem như một tài nguyên
+ Nếu deadlock xuất hiện, nó có thể được giải quyết nếu một hay một số ô tô lùi lại nhường đường rồi tiển ra sau. deadlock là kẹt mãi mãi
VoMinhHoang (I11C)- Tổng số bài gửi : 26
Join date : 08/09/2011
Age : 39
Đến từ : Tp Tan An - Long An
Thủ thuật phát hiện deadlock và phục hồi deadlock.
1. Thủ thuật phát hiện deadlock:
- Khi nào chúng ta cần giải thuật phát hiện deadlock?
- Câu trả lời phụ thuộc vào hai yếu tố:
+ Deadlock có khả năng xảy ra như thế nào?
+ Có bao nhiêu tiến trình sẽ bị ảnh hưởng bởi deadlock khi nó xảy ra ?
- Nếu deadlock xảy ra thường xuyên thì giải thuật phát hiện deadlock sẽ được thực hiện thường xuyên. Tài nguyên được cấp phát cho deadlock sẽ được rảnh rỗi cho đến khi deadlock bị phá vỡ. Ngoài ra, số lượng tiến trình tham gia vào trong chu trình deadlock có thể tăng lên.
- Deadlock xảy ra khi một tiến trình thực hiện yêu cầu mà không được cấp phát tài nguyên tức thì. Yêu cầu này có thể là yêu cầu cuối cùng hoàn thành một chuỗi các tiến trình chờ. Trong trường hợp này chúng ta có thể gọi giải thuật phát hiện deadlock mỗi khi yêu cầu cấp phát không được cấp phát tức thì. Chúng ta không chỉ biết được tập hợp các tiến trình bị deadlock mà còn xác định tiến trình đã gây ra deadlock (Trong thực tế, mỗi tiến trình trong suốt quá trình bị deadlock là một liên kết trong chu trình của đồ thị tài nguyên vì thế tất cả chúng gây ra deadlock). Nếu có nhiều loại tài nguyên khác nhau, một yêu cầu tạo ra một chu trình trong đồ thị tài nguyên, mỗi chu trình hoàn thành bởi các yêu cầu gần đây nhất và “gây ra” bởi một tiến trình có thể xác định.
- Tất nhiên, nếu thuật toán phát hiện deadlock được gọi cho mọi yêu cầu tài nguyên điều này có thể gây ra chi phí lớn trong thời gian tính toán. Một phương pháp để giảm chi phí là ta gọi giải thuật trong thời điểm ít thường xuyên hơn - ví dụ mỗi giờ hoặc bất cứ khi nào CPU sử dụng dưới 40%. Nếu giải thuật phát hiện deadlock được gọi vào thời điểm bất kỳ, có thể có nhiều chu trình trong đồ thị tài nguyên. Chúng ta không thể xác định được tiến trình nào “gây ra” deadlock.
2. Phục hồi deadlock:
- Khi giải thuật phát hiện deadlock xác định tồn tại một deadlock, có 2 cách để giải quyết:
+ Một là thông báo cho người điều hành biết deadlock xảy ra và để cho người điều hành khắc phục bằng tay.
+ Hai là để cho hệ thống phục hồi tự động. Có hai tùy chọn để phá vỡ deadlock. Một giải pháp đơn giản là hủy một hay nhiều tiến trình để phá vỡ tồn tại chu trình trong đồ thị cấp phát tài nguyên. Lựa chọn thứ hai là lấy lại một hay nhiều tài nguyên từ tiến trình deadlock.
- Khi nào chúng ta cần giải thuật phát hiện deadlock?
- Câu trả lời phụ thuộc vào hai yếu tố:
+ Deadlock có khả năng xảy ra như thế nào?
+ Có bao nhiêu tiến trình sẽ bị ảnh hưởng bởi deadlock khi nó xảy ra ?
- Nếu deadlock xảy ra thường xuyên thì giải thuật phát hiện deadlock sẽ được thực hiện thường xuyên. Tài nguyên được cấp phát cho deadlock sẽ được rảnh rỗi cho đến khi deadlock bị phá vỡ. Ngoài ra, số lượng tiến trình tham gia vào trong chu trình deadlock có thể tăng lên.
- Deadlock xảy ra khi một tiến trình thực hiện yêu cầu mà không được cấp phát tài nguyên tức thì. Yêu cầu này có thể là yêu cầu cuối cùng hoàn thành một chuỗi các tiến trình chờ. Trong trường hợp này chúng ta có thể gọi giải thuật phát hiện deadlock mỗi khi yêu cầu cấp phát không được cấp phát tức thì. Chúng ta không chỉ biết được tập hợp các tiến trình bị deadlock mà còn xác định tiến trình đã gây ra deadlock (Trong thực tế, mỗi tiến trình trong suốt quá trình bị deadlock là một liên kết trong chu trình của đồ thị tài nguyên vì thế tất cả chúng gây ra deadlock). Nếu có nhiều loại tài nguyên khác nhau, một yêu cầu tạo ra một chu trình trong đồ thị tài nguyên, mỗi chu trình hoàn thành bởi các yêu cầu gần đây nhất và “gây ra” bởi một tiến trình có thể xác định.
- Tất nhiên, nếu thuật toán phát hiện deadlock được gọi cho mọi yêu cầu tài nguyên điều này có thể gây ra chi phí lớn trong thời gian tính toán. Một phương pháp để giảm chi phí là ta gọi giải thuật trong thời điểm ít thường xuyên hơn - ví dụ mỗi giờ hoặc bất cứ khi nào CPU sử dụng dưới 40%. Nếu giải thuật phát hiện deadlock được gọi vào thời điểm bất kỳ, có thể có nhiều chu trình trong đồ thị tài nguyên. Chúng ta không thể xác định được tiến trình nào “gây ra” deadlock.
2. Phục hồi deadlock:
- Khi giải thuật phát hiện deadlock xác định tồn tại một deadlock, có 2 cách để giải quyết:
+ Một là thông báo cho người điều hành biết deadlock xảy ra và để cho người điều hành khắc phục bằng tay.
+ Hai là để cho hệ thống phục hồi tự động. Có hai tùy chọn để phá vỡ deadlock. Một giải pháp đơn giản là hủy một hay nhiều tiến trình để phá vỡ tồn tại chu trình trong đồ thị cấp phát tài nguyên. Lựa chọn thứ hai là lấy lại một hay nhiều tài nguyên từ tiến trình deadlock.
Tranvancanh(I11C)- Tổng số bài gửi : 39
Join date : 16/09/2011
Nhờ Thầy và các bạn hãy thể hiện trạng thái này bằng Đồ thị cấp phát tài nguyên
Một hệ thống có 3 loại tài nguyên và 3 tiến trình với trạng thái cấp phát như sau:
Loại tài nguyên | Số phiên bản | Được các tiến trình yêu cầu | Đã cấp cho các tiến trình |
Máy in kim | 2 | P1 | P2, P3 |
Máy in laser | 1 | | P3 |
Ổ băng từ | 2 | P2 | P1, P3 |
TranQuyThanh (I11C)- Tổng số bài gửi : 53
Join date : 30/08/2011
Tránh Deadlock bằng Banker’s Algorithm.
Là thuật giải tránh Deadlock cho trường hợp mỗi loại tài nguyên có n phiên bản.
- Áp dụng cho hệ thống cấp phát tài nguyên trong đó mỗi loại tài nguyên có thể có nhiều instance.
- Mô phỏng nghiệp vụ ngân hàng (banking)
- Một số giả thiết
Mỗi process phải khai báo số lượng tối đa tài nguyên mỗi loại mà process đó cần để hoàn tất công việc.
Khi process yêu cầu một tài nguyên thì có thể phải đợi mặc dù tài nguyên được yêu cầu đang có sẵn
Khi process đã có được đầy đủ tài nguyên thì phải hoàn trả trong một khoản thời gian hữu hạn nào đó.
- Áp dụng cho hệ thống cấp phát tài nguyên trong đó mỗi loại tài nguyên có thể có nhiều instance.
- Mô phỏng nghiệp vụ ngân hàng (banking)
- Một số giả thiết
Mỗi process phải khai báo số lượng tối đa tài nguyên mỗi loại mà process đó cần để hoàn tất công việc.
Khi process yêu cầu một tài nguyên thì có thể phải đợi mặc dù tài nguyên được yêu cầu đang có sẵn
Khi process đã có được đầy đủ tài nguyên thì phải hoàn trả trong một khoản thời gian hữu hạn nào đó.
TranQuyThanh (I11C)- Tổng số bài gửi : 53
Join date : 30/08/2011
Re: Thảo luận Bài 8
vothihonggam đã viết:Tình huống kẹt của của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
ví dụ: 2 xe đi cùng chiều qua một cây cầu hẹp, mà cầu chỉ có một làn xe, nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa, xãy ra kẹt xe (deadlock) vì không xe nào chịu nhường.
Bạn ví dụ sai rồi, nếu đã đi cùng chiều thì làm sao xảy ra tình trạng kẹt xe ngay giữa cầu đựơc,vậy 2 xe đó phải đi ngược chiều nhau hoặc 2 xe cùng tới ngay đầu cầu cùng 1 thời điểm mà không xe nào nhường xe nào qua trước thì mới xày ra tình trạng kẹt xe (deadlock)
LeMInhTien(I11C)- Tổng số bài gửi : 40
Join date : 07/09/2011
Trình bày các phương thức xử trí Deadlock
- Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ xảy ra.
- Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục (Recover).
- Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử trí thường trực).
- Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục (Recover).
- Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử trí thường trực).
nguyenthithuylinh (I11C)- Tổng số bài gửi : 23
Join date : 26/08/2011
Re: Thảo luận Bài 8
NgoDucTuan (I11C) đã viết:ToThiThuyTrang (I11C) đã viết:vothihonggam đã viết:Tình huống kẹt của của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
ví dụ: 2 xe đi cùng chiều qua một cây cầu hẹp, mà cầu chỉ có một làn xe, nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa, xãy ra kẹt xe (deadlock) vì không xe nào chịu nhường.
Ví dụ 2: Hiện tượng kẹt mạng tại tổng đài 1080:
+ ví dụ tổng đài 1080 gồm có 100 điện thoại viên.
+ 100 khách hàng gọi tới cùng một lúc. Khách hàng 101,102…. Gọi tới, sẽ phải chờ.
+ 1 khách hàng ứng với một điện thoại viên có thể xem như một tài nguyên.
+ nếu deadlock xuất hiện, nó có thể được giải quyết nếu 1 trong 100 khách hàng đã được điện thoại viên trả lời xong và nhường tài nguyên cho các khách hàng tiếp theo...
Ví dụ 3: có 07 thầy đều cần máy chiếu để dạy, ngay trong khi ở phòng thiết bị hiện tại chỉ có 1 máy chiếu => dẫn đến tranh chấp.
VD 4: Tình trạng kẹt xe trong giờ cao điểm như giờ tan tầm, khoảng 5h chiều. Trong cùng 1 thời điểm lại có quá nhiều xe đổ về cùng đường sẽ xảy ra tình trạng ắt tắt (deadlock). Để giải quyết vấn đề này có thể sử dụng phương án đổi giờ làm (Như tại Hà Nội đang đề xuất: Công chức sẽ làm giờ ca sáng từ 8h30 đến 12h; ca chiều từ 13h đến 17h30.Bậc mầm non, tiểu học, THCS sẽ học bán trú từ 8h đến 17h30. Học sinh THPT sẽ học ca sáng từ 7h đến 11h; ca chiều từ 12h30 đến16h30. Sinh viên đại học quận Cầu Giấy sẽ học ca sáng từ 7h đến 12h và ca chiều từ 12h30 đến 17h30. Sinh viên quận Đống Đa học ca sáng từ 6h30 đến 11h30 và ca chiều từ 12h45 đến17h45. Sinh viên quận Thanh Xuân học ca sáng từ 6h45 đến 11h45 và ca chiều từ 12h30 đến 17h30. Sinh viên quận Hai Bà Trưng học ca sáng từ 6h30 đến 11h30 và ca chiều 12h45 đến 17h45. Các trung tâm kinh doanh, thương mại sẽ mở cửa từ 9h30 đến 23h30). => Có thể tránh được tình trạng deadlock vào giờ cao điểm
tranleanhngoc88(i11c)- Tổng số bài gửi : 14
Join date : 30/08/2011
Re: Thảo luận Bài 8
tranleanhngoc88(i11c) đã viết:NgoDucTuan (I11C) đã viết:ToThiThuyTrang (I11C) đã viết:vothihonggam đã viết:Tình huống kẹt của của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
ví dụ: 2 xe đi cùng chiều qua một cây cầu hẹp, mà cầu chỉ có một làn xe, nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa, xãy ra kẹt xe (deadlock) vì không xe nào chịu nhường.
Ví dụ 2: Hiện tượng kẹt mạng tại tổng đài 1080:
+ ví dụ tổng đài 1080 gồm có 100 điện thoại viên.
+ 100 khách hàng gọi tới cùng một lúc. Khách hàng 101,102…. Gọi tới, sẽ phải chờ.
+ 1 khách hàng ứng với một điện thoại viên có thể xem như một tài nguyên.
+ nếu deadlock xuất hiện, nó có thể được giải quyết nếu 1 trong 100 khách hàng đã được điện thoại viên trả lời xong và nhường tài nguyên cho các khách hàng tiếp theo...
Ví dụ 3: có 07 thầy đều cần máy chiếu để dạy, ngay trong khi ở phòng thiết bị hiện tại chỉ có 1 máy chiếu => dẫn đến tranh chấp.
VD 4: Tình trạng kẹt xe trong giờ cao điểm như giờ tan tầm, khoảng 5h chiều. Trong cùng 1 thời điểm lại có quá nhiều xe đổ về cùng đường sẽ xảy ra tình trạng ắt tắt (deadlock). Để giải quyết vấn đề này có thể sử dụng phương án đổi giờ làm (Như tại Hà Nội đang đề xuất: Công chức sẽ làm giờ ca sáng từ 8h30 đến 12h; ca chiều từ 13h đến 17h30.Bậc mầm non, tiểu học, THCS sẽ học bán trú từ 8h đến 17h30. Học sinh THPT sẽ học ca sáng từ 7h đến 11h; ca chiều từ 12h30 đến16h30. Sinh viên đại học quận Cầu Giấy sẽ học ca sáng từ 7h đến 12h và ca chiều từ 12h30 đến 17h30. Sinh viên quận Đống Đa học ca sáng từ 6h30 đến 11h30 và ca chiều từ 12h45 đến17h45. Sinh viên quận Thanh Xuân học ca sáng từ 6h45 đến 11h45 và ca chiều từ 12h30 đến 17h30. Sinh viên quận Hai Bà Trưng học ca sáng từ 6h30 đến 11h30 và ca chiều 12h45 đến 17h45. Các trung tâm kinh doanh, thương mại sẽ mở cửa từ 9h30 đến 23h30). => Có thể tránh được tình trạng deadlock vào giờ cao điểm
ok man! cách phân chia thời gian như vậy cũng sẽ phải phóng 1 phần nào đó về lưu lượng xe đổ xô ra đường vào giờ cao điểm. Mình cũng đang có đề suất lên chính phủ xin bổ sung thêm ý kiến của mình là trong thời gian cao điểm cấm tuyệt đối các loại có trọng tải lớn xe taxi- xe bus, xe khách lưu thông vào các tuyến đường chính. Làm như vậy mới tránh đc tình trạng kẹt xe vào giờ cao điểm. Cám ơn các bạn đã chịu lắng nghe ý kiến của mình. Thanks!
VoMinhHoang (I11C)- Tổng số bài gửi : 26
Join date : 08/09/2011
Age : 39
Đến từ : Tp Tan An - Long An
ĐỊNH NGHĨA DEADLOCK. VẤN ĐỀ QUAN TRỌNG CỦA NÓ.
Định nghĩa: Là tình huống bị kẹt của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
Ví dụ: Tại ngã 4, 4 xe tại 4 hướng khác nhau cùng đến giao lộ, không xe nào chịu nhường đường cho xe nào nên tất cả đều phải chờ đến khi có đường trống để đi => kết quả là kẹt xe. Như thế tất cả 4 xe đều trong trạng thái chờ hay nói cách khác các tiến trình đang chờ tài nguyên của nhau và cứ xoay vòng và như thế tất cả tiến trình đều kẹt(deadlock).
Deadlock là một vấn đề quan trọng không những lĩnh vực công nghệ(chương trinh vận hành) mà còn ảnh hưởng đến các lĩnh vực khác trong đời sống(như là giao thông).
+ Công nghệ: nếu 1 chương trình đang vận hành một hệ thống gì đó quan trọng phức tạp và nguy hiểm thì tuy deadlock rất hiếm gặp nhưng khi xảy ra thì sẽ mang lại thiệt hại cực kì nghiêm trọng, có thể làm sụp đổ cả 1 hệ thống (vd: nhà máy điện hạt nhân nếu mà bị kẹt tiến trình => hệ thống làm lạnh các thanh nhiên liệu nguyên tử không hoạt động thì nhiệt độ tăng cao gây ra nổ hạt nhân. Chất phóng xạ lan ra ngoài sẽ tàn phá sự sống.)
+ Còn trong giao thông: sẽ gây kẹt xe làm trễ công việc => gây thiệt hại rất lớn về tiền bạc cũng như thời gian.
Thân chào!
Ví dụ: Tại ngã 4, 4 xe tại 4 hướng khác nhau cùng đến giao lộ, không xe nào chịu nhường đường cho xe nào nên tất cả đều phải chờ đến khi có đường trống để đi => kết quả là kẹt xe. Như thế tất cả 4 xe đều trong trạng thái chờ hay nói cách khác các tiến trình đang chờ tài nguyên của nhau và cứ xoay vòng và như thế tất cả tiến trình đều kẹt(deadlock).
Deadlock là một vấn đề quan trọng không những lĩnh vực công nghệ(chương trinh vận hành) mà còn ảnh hưởng đến các lĩnh vực khác trong đời sống(như là giao thông).
+ Công nghệ: nếu 1 chương trình đang vận hành một hệ thống gì đó quan trọng phức tạp và nguy hiểm thì tuy deadlock rất hiếm gặp nhưng khi xảy ra thì sẽ mang lại thiệt hại cực kì nghiêm trọng, có thể làm sụp đổ cả 1 hệ thống (vd: nhà máy điện hạt nhân nếu mà bị kẹt tiến trình => hệ thống làm lạnh các thanh nhiên liệu nguyên tử không hoạt động thì nhiệt độ tăng cao gây ra nổ hạt nhân. Chất phóng xạ lan ra ngoài sẽ tàn phá sự sống.)
+ Còn trong giao thông: sẽ gây kẹt xe làm trễ công việc => gây thiệt hại rất lớn về tiền bạc cũng như thời gian.
Thân chào!
08H1010052- Tổng số bài gửi : 52
Join date : 02/07/2010
4 Điều kiện dẫn đến deadlock và giải pháp ngăn chặn
4 Điều kiện:
+ Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-sharable), nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được sử dụng nó.
+ Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm bởi tiến trình khác.
+ Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dụng xong.
+ Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên là { P1 , P2, ... , Pn }, khi đó P1 chờ TN giữ bởi P2 , tiến trình P2 chờ TN giữ bởi P3 , ... , Pn chờ P1 .
* Bốn điều kiện này không hoàn toàn độc lập với nhau: ví dụ, Điều kiện 4 kéo theo Điều kiện 2.
Giải pháp xử lý:
1. Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ xảy ra.
2. Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục (Recover).
3. Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử trí thường trực).
Biện pháp ngăn chặn:
Bằng cách sao cho ít nhất 1 trong 4 điều kiện cần kể trên không xảy ra.
° Với Mutual Exclusion: Đảm bảo TN nào cũng dùng chung được cùng một lúc bởi nhiều tiến trình.
° Với Hold and Wait:
1- Khi TT yêu cầu TN, nó không được giữ 1 TN nào khác.
2- TT phải yêu cầu và được cấp tất cả các TN mà nó cần ngay đầu công việc.
° Với No Preemption:
1- Khi TT giữ TN mà xin thêm nhưng không được, các TN mà nó giữ phải bị tiếm quyền sử dụng và trả lại HĐH.
2- Khi TT xin thêm TN, nếu TN này đang được giữ bởi TT khác đang ở trạng thái chờ, TN của TT khác này bị tiếm quyền sử dụng để cấp cho TT đang xin.
° Với Circular Wait: Cấp TN theo một thứ tự nào đấy.
+ Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-sharable), nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được sử dụng nó.
+ Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm bởi tiến trình khác.
+ Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dụng xong.
+ Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên là { P1 , P2, ... , Pn }, khi đó P1 chờ TN giữ bởi P2 , tiến trình P2 chờ TN giữ bởi P3 , ... , Pn chờ P1 .
* Bốn điều kiện này không hoàn toàn độc lập với nhau: ví dụ, Điều kiện 4 kéo theo Điều kiện 2.
Giải pháp xử lý:
1. Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ xảy ra.
2. Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục (Recover).
3. Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử trí thường trực).
Biện pháp ngăn chặn:
Bằng cách sao cho ít nhất 1 trong 4 điều kiện cần kể trên không xảy ra.
° Với Mutual Exclusion: Đảm bảo TN nào cũng dùng chung được cùng một lúc bởi nhiều tiến trình.
° Với Hold and Wait:
1- Khi TT yêu cầu TN, nó không được giữ 1 TN nào khác.
2- TT phải yêu cầu và được cấp tất cả các TN mà nó cần ngay đầu công việc.
° Với No Preemption:
1- Khi TT giữ TN mà xin thêm nhưng không được, các TN mà nó giữ phải bị tiếm quyền sử dụng và trả lại HĐH.
2- Khi TT xin thêm TN, nếu TN này đang được giữ bởi TT khác đang ở trạng thái chờ, TN của TT khác này bị tiếm quyền sử dụng để cấp cho TT đang xin.
° Với Circular Wait: Cấp TN theo một thứ tự nào đấy.
08H1010052- Tổng số bài gửi : 52
Join date : 02/07/2010
Phân tích khái niệm tài nguyên hệ thống
- Các tài nguyên hệ thống được chia thành nhiều Loại, mỗi loại có 1 hoặc nhiều Phiên bản (Instances). Các tài nguyên hệ thống này cấp phát cho các tiến trình theo yêu cầu.
- Tài nguyên cùng loại: Giả sử máy có 3 ổ băng từ và có 3 tiến trình đang chạy. Mỗi tiến trình đang giữ 1 ổ băng.
- Tài nguyên khác loại: Giả sử có 1 máy in, 1 ổ băng từ. Tiến trình P1 đang giữ ổ băng, P2 giữ máy in.
- Tài nguyên cùng loại: Giả sử máy có 3 ổ băng từ và có 3 tiến trình đang chạy. Mỗi tiến trình đang giữ 1 ổ băng.
- Tài nguyên khác loại: Giả sử có 1 máy in, 1 ổ băng từ. Tiến trình P1 đang giữ ổ băng, P2 giữ máy in.
TranQuyThanh (I11C)- Tổng số bài gửi : 53
Join date : 30/08/2011
Trang 2 trong tổng số 10 trang • 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Similar topics
» Giải giúp bài RRS này nhé
» Thảo luận các vấn đề của Môn học
» Thảo luận Bài 3
» Thảo luận bài 4
» Thảo luận Bài 7
» Thảo luận các vấn đề của Môn học
» Thảo luận Bài 3
» Thảo luận bài 4
» Thảo luận Bài 7
Trang 2 trong tổng số 10 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết