Giáo trình Hệ điều hành V1.0 - Bài: Deadlock - Nguyễn Phú Trường

Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
DEADLOCK  
I Mc đích  
Sau khi hc xong chương này, người hc nm được nhng kiến thc sau:  
Hiu mô hình hthng vdeadlock  
Hiu các đặc đim ca deadlock  
Hiu các phương pháp qun lý deadlock  
Hiu cách ngăn chn deadlock  
Hiu cách tránh deadlock  
Hiu cách phát hin deadlock  
Hiu cách phc hi tdeadlock  
II Gii thiu  
Trong môi trung đa chương, nhiu quá trình có thcnh tranh mt sgii hn  
tài nguyên. Mt quá trình yêu cu tài nguyên, nếu tài nguyên không sn dùng ti thi  
đim đó, quá trình đi vào trng thái ch. Quá trình chcó thkhông bao gichuyn  
trng thái trli vì tài nguyên chúng yêu cu bgibi nhng quá trình đang chờ  
khác. Trường hp này được gi là deadlock (khoá chết).  
Trong chương này chúng ta smô tcác phương pháp mà hệ điu hành có thể  
dùng để ngăn chn hay gii quyết deadlock. Hu hết các hệ điu hành không cung cp  
phương tin ngăn chn deadlock nhưng nhng đặc đim này sẽ được thêm vào sau đó.  
Vn đề deadlock chcó thtrthành vn đề phbiến, xu hướng hin hành gm số  
lượng ln quá trình, chương trình đa lung, nhiu tài nguyên trong hthng và đặc  
bit các tp tin có đời sng dài và nhng máy phc vcơ sdliu hơn là các hệ  
thng bó.  
III Mô hình hthng  
Mt hthng cha stài nguyên hu hn được phân bgia nhiu quá trình  
cnh tranh. Các tài nguyên này được phân chia thành nhiu loi, mi loi cha mt số  
thhin xác định. Không gian bnh, các chu kCPU và các thiết bnhp/xut (như  
máy in, đĩa t) là nhng thí dvloi tài nguyên. Nếu hthng có hai CPUs, thì loi  
tài nguyên CPU có hai thhin. Tương t, loi tài nguyên máy in có thcó năm thể  
hin.  
Nếu mt quá trình yêu cu mt thhin ca loi tài nguyên thì vic cp phát bt  
cthhin nào ca loi tài nguyên này sthomãn yêu cu. Nếu nó không có thì các  
thhin là không xác định và các lp loi tài nguyên skhông được định nghĩa hp  
lý. Thí d, mt hthng có thcó hai máy in. Hai loi máy in này có thể được định  
nghĩa trong cùng lp loi tài nguyên nếu không có quá trình nào quan tâm máy nào in  
ra dliu. Tuy nhiên, nếu mt máy in tng 9 và máy in khác tng trt thì người  
dùng tng 9 không thxem hai máy in là tương tnhau và lp tài nguyên riêng rẻ  
cn được định nghĩa cho mi máy in.  
Mt quá trình phi yêu cu mt tài nguyên trước khi sdng nó, và phi gii  
phóng sau khi sdng nó. Mt quá trình có thyêu cu nhiu tài nguyên như được  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 113  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
yêu cu để thc hin tác vụ được gán ca nó. Chú ý, stài nguyên được yêu cu  
không vượt quá slượng tng cng tài nguyên sn có trong hthng. Nói cách khác,  
mt quá trình không thyêu cu ba máy in nếu hthng chcó hai.  
Dưới chế độ điu hành thông thường, mt quá trình có thsdng mt tài nguyên  
chtrong thtsau:  
1) Yêu cu: nếu yêu cu không thể được gán tc thì (thí d, tài nguyên đang  
được dùng bi quá trình khác) thì quá trình đang yêu cu phi chcho ti  
khi nó có thnhn được tài nguyên.  
2) Sdng: quá trình có thể điu hành tài nguyên (thí d, nếu tài nguyên là  
máy in, quá trình có thin máy in)  
3) Gii phóng: quá trình gii phóng tài nguyên.  
Yêu cu và gii phóng tài nguyên là các li gi hthng. Thí dnhư yêu cu và  
gii phóng thiết b, mđóng tp tin, cp phát và gii phóng bnh. Yêu cu và  
gii phóng các tài nguyên khác có thể đạt được thông qua thao tác chwait và báo  
hiu signal. Do đó, cho mi trường hp sdng, hệ điu hành kim tra để đảm bo  
rng quá trình sdng yêu cu và được cp phát tài nguyên. Mt bng hthng ghi  
nhn mi quá trình gii phóng hay được cp phát tài nguyên. Nếu mt quá trình yêu  
cu tài nguyên mà tài nguyên đó hin được cp phát cho mt quá trình khác, nó có thể  
được thêm vào hàng đợi để chtài nguyên này.  
Mt tp hp quá trình trong trng thái deadlock khi mi quá trình trong tp  
hp này chskin mà có thể được to ra chbi quá trình khác trong tp hp.  
Nhng skin mà chúng ta quan tâm chyếu ở đây là nhn và gii phóng tài nguyên.  
Các tài nguyên có thlà tài nguyên vt lý (thí d, máy in, đĩa t, không gian bnhớ  
và chu kCPU) hay tài nguyên lun lý (thí d, tp tin, semaphores, monitors). Tuy  
nhiên, các loi khác ca skin có thdn đến deadlock.  
Để minh hotrng thái deadlock, chúng ta xét hthng vi ba ổ đĩa t. Gisử  
mi quá trình gicác mt ổ đĩa tnày. Bây gi, nếu mi quá trình yêu cu mt ổ đĩa  
tkhác thì ba quá trình sẽ ở trong trng thái deadlock. Mi quá trình đang chmt sự  
kin “ổ đĩa từ được gii phóng” mà có thể được gây ra chbi mt trong nhng quá  
trình đang ch. Thí dnày minh hodeadlock liên quan đến cùng loi tài nguyên.  
Deadlock cũng liên quan nhiu loi tài nguyên khác nhau. Thí d, xét mt hệ  
thng vi mt máy in và mt ổ đĩa t. Gis, quá trình Pi đang giữ ổ đĩa tvà quá  
trình Pj đang gimáy in. Nếu Pi yêu cu máy in và Pj yêu cu ổ đĩa tthì deadlock  
xy ra.  
Mt người lp trình đang phát trin nhng ng dng đa lung phi quan tâm  
đặc bit ti vn đề này: Các chương trình đa lung là ng cviên cho vn đề  
deadlock vì nhiu lung có thcnh tranh trên tài nguyên được chia s.  
IV Đặc đim deadlock  
Trong mt deadlock, các quá trình không bao gihoàn thành vic thc thi và  
các tài nguyên hthng bbuc cht, ngăn chn các quá trình khác bt đầu. Trước khi  
chúng ta tho lun các phương pháp khác nhau gii quyết vn đề deadlock, chúng ta  
smô tcác đặc đim mà deadlock mô t.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 114  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
IV.1 Nhng điu kin cn thiết gây ra deadlock  
Trường hp deadlock có thphát sinh nếu bn điu kin sau xy ra cùng mt  
lúc trong hthng:  
1) Loi trhtương: ít nht mt tài nguyên phi được gitrong chế độ  
không chia s; nghĩa là, chmt quá trình ti cùng mt thi đim có thsử  
dng tài nguyên. Nếu mt quá trình khác yêu cu tài nguyên đó, quá trình  
yêu cu phi tm dng cho đến khi tài nguyên được gii phóng.  
2) Givà chcp thêm tài nguyên: quá trình phi đang giít nht mt tài  
nguyên và đang chờ để nhn tài nguyên thêm mà hin đang được gibi  
quá trình khác.  
3) Không đòi li tài nguyên tquá trình đang gichúng: Các tài nguyên  
không thbị đòi li; nghĩa là, tài nguyên có thể được gii phóng chtý  
bi quá trình đang ginó, sau khi quá trình đó hoàn thành tác v.  
4) Tn ti chu trình trong đồ thcp phát tài nguyên: mt tp hp các quá  
trình {P0, P1,…,Pn} đang chmà trong đó P0 đang chmt tài nguyên  
được gibi P1, P1 đang chtài nguyên đang gibi P2,…,Pn-1 đang chờ  
tài nguyên đang được gibi quá trình P0.  
Chúng ta nhn mnh rng tt cbn điu kin phi cùng phát sinh để deadlock  
xy ra. Điu kin chờ đợi ch trình đưa đến điu kin gi-và-chvì thế bn điu kin  
không hoàn toàn đc lp.  
IV.2 Đồ thcp phát tài nguyên  
Deadlock có thmô tchính xác hơn bng cách hin thị đồ thcó hướng gi là  
đồ thcp phát tài nguyên hthng. Đồ thnày cha mt tp các đỉnh V và tp hp  
các cnh E. Mt tp các đỉnh V được chia làm hai loi nút P = {P1, P2,…,Pn} là tp  
hp các quá trình hot động trong hthng, và R = {R1, R2, ..., Rm} là tp hp cha  
tt ccác loi tài nguyên trong hthng.  
Mt cnh có hướng tquá trình Pi ti loi tài nguyên Rj được ký hiu Pi Rj;  
nó biu thrng quá trình Pi đã yêu cu loi tài nguyên Rj và hin đang chloi tài  
nguyên đó. Mt cnh có hướng tloi tài nguyên Rj ti quá trình Pi được hin thbi  
Rj Pi; nó hin thrng thhin ca loi tài nguyên Rj đã được cp phát ti quá trình  
Pi. Mt cnh có hướng Pi Rj được gi là cnh yêu cu; mt cnh có hướng Rj Pi  
được gi là cnh gán.  
Bng hình tượng, chúng ta hin thmi quá trình Pi là mt hình tròn, và mi  
loi tài nguyên Rj là hình chnht. Vì loi tài nguyên Rj có thcó nhiu hơn mt thể  
hin, chúng ta hin thmi thhin là mt chm nm trong hình vuông. Chú ý rng  
mt cnh yêu cu trti chmt hình vuông Rj, trái li mt cnh gán cũng phi gán  
ti mt trong các du chm trong hình vuông.  
Khi quá trình Pi yêu cu mt thhin ca loi tài nguyên Rj, mt cnh yêu cu  
được chèn vào đồ thcp phát tài nguyên. Khi yêu cu này có thể được đáp ng, cnh  
yêu cu lp tc được truyn ti cnh gán. Khi quá trình không còn cn truy xut ti  
tài nguyên, nó gii phóng tài nguyên, và khi đó dn đến cnh gán bxoá.  
Đồ thcp phát tài nguyên được hin thtrong hình VI-1 dưới đây mô ttrường hp  
sau:  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 115  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
Hình 0-1 Đồ thcp phát tài nguyên  
Các tp P, R, và E:  
o P = {P1, P2, P3}  
o R = {R1, R2, R3, R4}  
o E = {P1R1, P2 R3, R1 P2, R2P2, R3P3}  
Các thhin tài nguyên  
o Mt thhin ca tài nguyên loi R1  
o Hai thhin ca tài nguyên loi R2  
o Mt thhin ca tài nguyên loi R3  
o Mt thhin ca tài nguyên loi R4  
Trng thái quá trình  
o Quá trình P1 đang gimt thhin ca loi tài nguyên R2 đang chờ  
mt thhin ca loi tài nguyên R1.  
o Quá trình P2 đang gimt thhin ca loi tài nguyên R1 và R2 và  
đang chmt thhin ca loi tài nguyên R3.  
o Quá trình P3 đang gimt thhin ca R3  
Đồ thcp phát tài nguyên hin thrng, nếu đồ thkhông cha chu trình, thì  
không có quá trình nào trong hthng bdeadlock. Nếu đồ thcó cha chu trình, thì  
deadlock có thtn ti.  
Nếu mi loi tài nguyên có chính xác mt thhin, thì mt chu trình ngý rng  
mt deadlock xy ra. Nếu mt chu trình bao gm chmt tp hp các loi tài nguyên,  
mi loi tài nguyên chcó mt thhin thì deadlock xy ra. Mi quá trình cha trong  
chu trình bdeadlock. Trong trường hp này, mt chu trình trong đồ thđiu kin  
cn và đủ để tn ti deadlock.  
Nếu mi loi tài nguyên có nhiu thhin thì chu trình không ngý deadlock  
xy. Trong trường hp này, mt chu trình trong đồ thđiu kin cn nhưng chưa đủ  
để tn ti deadlock.  
Để hin thkhái nim này, chúng ta xem li đồ thị ở hình VII-1 trên. Gisử  
quá trình P3 yêu cu mt thhin ca loi tài nguyên R2. Vì không có thhin tài  
nguyên hin có, mt cnh yêu cu P3 R2 được thêm vào đồ th(hình VI-2). Ti thi  
đim này, hai chu trình nhtn ti trong hthng:  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 116  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
P1 R1 P2 R3 P3 R2 P1  
P2 R3 P3 R2 P2  
Hình 0-2 Đồ thcp phát tài nguyên vi deadlock  
Quá trình P1, P2, và P3 bdeadlock. Quá trình P3 đang chtài nguyên R3, hin  
được gibi quá trình P2. Hay nói cách khác, quá trình P3 đang chquá trình P1 hay  
P2 gii phóng tài nguyên R2. Ngoài ra, quá trình P1 đang chquá trình P2 gii phóng  
tài nguyên R1.  
Bây gixem xét đồ thcp phát tài nguyên trong hình VI-3 dưới đây. Trong thí  
dnày, chúng ta cũng có mt chu kỳ  
P1 R1 P3 R2 P1  
Hình 0-3 Đồ thcp phát tài nguyên có chu trình nhưng không bdeadlock  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 117  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
Tuy nhiên, không có deadlock. Chú ý rng quá trình P4 có thgii phóng thể  
hin ca loi tài nguyên R2. Tài nguyên đó có thể được cp phát ti P3 sau đó, chu  
trình skhông còn.  
Tóm li, nếu đồ thcp phát tài nguyên không có chu trình thì hthng không  
có trng thái deadlock. Ngoài ra, nếu có chu trình thì có thcó hoc không trng thái  
deadlock. Nhn xét này là quan trng khi chúng ta gii quyết vn đề deadlock.  
V Các phương pháp xlý deadlock  
Phn ln, chúng ta có thgii quyết vn đề deadlock theo mt trong ba cách:  
Chúng ta có thsdng mt giao thc để ngăn chn hay tránh deadlocks, đảm  
bo rng hthng skhông bao giờ đi vào trng thái deadlock  
Chúng ta có thcho phép hthng đi vào trng thái deadlock, phát hin nó và  
phc hi.  
Chúng ta có thbqua hoàn toàn vn đề này và givdeadlock không bao  
gixy ra trong hthng. Gii pháp này được dùng trong nhiu hệ điu hành,  
kcUNIX.  
Chúng ta stìm hiu vn tt mi phương pháp. Sau đó, chúng ta strình bày  
các gii thut mt cách chi tiết trong các phn sau đây.  
Để đảm bo deadlock không bao gixy ra, hthng có thdùng kế hoch  
ngăn chn hay tránh deadlock. Ngăn chn deadlock là mt tp hp các phương pháp  
để đảm bo rng ít nht mt điu kin cn (trong phn VI.4.1) không thxy ra. Các  
phương pháp này ngăn chn deadlocks bng cách ràng buc yêu cu vtài nguyên  
được thc hin như thế nào. Chúng ta tho lun phương pháp này trong phn sau.  
Ngược li, tránh deadlock yêu cu hệ điu hành cung cp nhng thông tin bổ  
sung tp trung vào loi tài nguyên nào mt quá trình syêu cu và sdng trong thi  
gian sng ca nó. Vi nhng kiến thc bsung này, chúng ta có thquyết định đi  
vi mi yêu cu quá trình nên chhay không. Để quyết định yêu cu hin ti có thể  
được thomãn hay phi btrì hoãn, hthng phi xem xét tài nguyên hin có, tài  
nguyên hin cp phát cho mi quá trình, và các yêu cu và gii phóng tương lai ca  
mi quá trình.  
Nếu mt hthng không dùng gii thut ngăn chn hay tránh deadlock thì  
trường hp deadlock có thxy ra. Trong môi trường này, hthng có thcung cp  
mt gii thut để xem xét trng thái ca hthng để xác định deadlock có xy ra hay  
không và gii thut phc hi tdeadlock.  
Nếu hthng không đảm bo rng deadlock skhông bao gixy ra và cũng  
không cung cp mt cơ chế để phát hin và phc hi deadlock thì có thdn đến  
trường hp hthng trong trng thái deadlock. Trong trường hp này, deadlock  
không được phát hin slàm gim năng lc hthng vì tài nguyên đang được gibi  
nhng quá trình mà chúng không ththc thi, đi vào trng thái deadlock. Cui cùng,  
hthng sdng các chc năng và cn được khi đng li bng thcông.  
Mc dù phương pháp này dường như không là tiếp cn khthi đi vi vn đề  
deadlock nhưng nó được dùng trong mt shệ điu hành. Trong nhiu hthng,  
deadlock xy ra không thường xuyên; do đó phương pháp này là rhơn chi phí cho  
phương pháp ngăn chn deadlock, tránh deadlock, hay phát hin và phc hi deadlock  
mà chúng phi được sdng liên tc. Trong mt strường hp, hthng trong  
trng thái cô đặc nhưng không trng thái deadlock. Như thí d, xem xét mt quá  
trình thi thc chy ti độ ưu tiên cao nht (hay bt cquá trình đang chy trên bộ  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 118  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
định thi biu không trưng dng) và không bao gitrvề điu khin đi vi hệ điu  
hành. Do đó, hthng phi có phương pháp phc hi bng thcông cho các điu  
kin không deadlock và có thể đơn gin sdng các kthut đó cho vic phc hi  
deadlock.  
VI Ngăn chn deadlock  
Để deadlock xy ra, mt trong bn điu kin cn phi xy ra. Bng cách đảm  
bo ít nht mt trong bn điu kin này không thxy ra, chúng ta có thngăn chn  
vic xy ra ca deadlock. Chúng ta tìm hiu tmtiếp cn này bng cách xem xét  
mi điu kin cn riêng rnhau.  
VI.1 Loi trhtương  
Điu kin loi trhtương phi gicho tài nguyên không chia s. Thí d, mt  
máy in không thể được chia scùng lúc bi nhiu quá trình. Ngược li, các tài nguyên  
có thchia skhông đòi hi truy xut loi trhtương và do đó không thliên quan  
đến deadlock. Nhng tp tin chỉ đọc là mt thí dtt cho tài nguyên có thchia s.  
Nếu nhiu quá trình cgng mmt tp tin chỉ đọc ti cùng mt thi đim thì chúng  
có thể được gán truy xut cùng lúc tp tin. Mt quá trình không bao giyêu cu chờ  
tài nguyên có thchia s. Tuy nhiên, thường chúng ta không thngăn chn deadlock  
bng cách tchi điu kin loi trhtương: mt stài nguyên vthc cht không  
thchia s.  
VI.2 Givà chcp thêm tài nguyên  
Để đảm bo điu kin gi-và-chcp thêm tài nguyên không bao gixy ra  
trong hthng, chúng ta phi đảm bo rng bt ckhi nào mt quá trình yêu cu tài  
nguyên, nó không gibt ctài nguyên nào khác. Mt giao thc có thể được dùng là  
đòi hi mi quá trình yêu cu và được cp phát tt ctài nguyên trước khi nó bt đầu  
thc thi. Chúng ta có thcài đặt scung cp này bng cách yêu cu các li gi hệ  
thng yêu cu tài nguyên cho mt quá trình trước tt ccác li gi hthng khác.  
Mt giao thc khác cho phép mt quá trình yêu cu tài nguyên chkhi quá trình  
này không có tài nguyên nào. Mt quá trình có thyêu cu mt stài nguyên và dùng  
chúng. Tuy nhiên, trước khi nó có thyêu cu bt ktài nguyên bsung nào, nó phi  
gii phóng tt ctài nguyên mà nó hin đang được cp phát.  
Để hin thskhác nhau gia hai giao thc, chúng ta xét mt quá trình chép dữ  
liu tbăng tti tp tin đĩa, sp xếp tp tin đĩa và sau đó in kết qura máy in. Nếu  
tt ctài nguyên phi được yêu cu cùng mt lúc thì khi đầu quá trình phi yêu cu  
băng t, tp tin đĩa và máy in. Nó sgimáy in trong toàn thi gian thc thi ca nó  
mc dù nó cn máy in chỉ ở giai đon cui.  
Phương pháp thhai cho phép quá trình yêu cu ban đầu chbăng tvà tp tin  
đĩa. Nó chép dliu tbăng tti đĩa, ri gii phóng chai băng tđĩa. Sau đó,  
quá trình phi yêu cu li tp tin đĩa và máy in. Sau đó, chép tp tin đĩa ti máy in, nó  
gii phóng hai tài nguyên này và kết thúc.  
Hai giao thc này có hai nhược đim chyếu. Thnht, vic sdng tài  
nguyên có thchm vì nhiu tài nguyên có thể được cp nhưng không được sdng  
trong thi gian dài. Trong thí dụ được cho, chúng ta có thgii phóng băng tvà tp  
tin đĩa, sau đó yêu cu li tp tin đĩa và máy in chnếu chúng ta đảm bo rng dliu  
ca chúng ta svn còn trên tp tin đĩa. Nếu chúng ta không thể đảm bo rng dliu  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 119  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
vn còn tp tin đĩa thì chúng ta phi yêu cu tt ctài nguyên ti thi đim bt đầu  
cho chai giao thc. Thhai, đói tài nguyên là có th. Mt quá trình cn nhiu tài  
nguyên phbiến có thphi đợi vô hn định vì mt tài nguyên mà nó cn luôn được  
cp phát cho quá trình khác.  
VI.3 Không đòi li tài nguyên tquá trình đang gichúng  
Điu kin cn thba là không đòi li nhng tài nguyên đã được cp phát ri. Để  
đảm bo điu kin này không xy ra, chúng ta có thdùng giao thc sau. Nếu mt quá  
trình đang gimt stài nguyên và yêu cu tài nguyên khác mà không được cp phát  
tc thì ti nó (nghĩa là, quá trình phi ch) thì tt ctài nguyên hin đang giữ được  
đòi li. Nói cách khác, nhng tài nguyên này được gii phóng hoàn toàn. Nhng tài  
nguyên bị đòi li được thêm ti danh sách các tài nguyên mà quá trình đang ch. Quá  
trình sẽ được khi đng li chkhi nó có thnhn li tài nguyên cũ ca nó cũng như  
các tài nguyên mi mà nó đang yêu cu.  
Có mt schn la khác, nếu mt quá trình yêu cu mt stài nguyên, đầu tiên  
chúng ta kim tra chúng có sn không. Nếu tài nguyên có sn, chúng ta cp phát  
chúng. Nếu tài nguyên không có sn, chúng ta kim tra chúng có được cp phát ti  
mt squá trình khác đang chtài nguyên bsung. Nếu đúng như thế, chúng ta ly  
li tài nguyên mong mun đó tquá trình đang đợi và cp chúng cho quá trình đang  
yêu cu. Nếu tài nguyên không sn có hay được gibi mt quá trình đang đợi, quá  
trình đang yêu cu phi ch. Trong khi nó đang ch, mt stài nguyên ca nó có thể  
được đòi li chnếu quá trình khác yêu cu chúng. Mt quá trình có thể được khi  
đng li chkhi nó được cp các tài nguyên mi mà nó đang yêu cu và phc hi bt  
ctài nguyên nào đã bly li trong khi nó đang ch.  
Giao thc này thường được áp dng ti tài nguyên mà trng thái ca nó có thể  
được lưu li ddàng và phc hi li sau đó, như các thanh ghi CPU và không gian bộ  
nh. Nó thường không thể được áp dng cho các tài nguyên như máy in và băng t.  
VI.4 Tn ti chu trình trong đồ thcp phát tài nguyên  
Điu kin thtư và cũng là điu kin cui cùng cho deadlock là điu kin tn  
ti chu trình trong đồ thcp phát tài nguyên. Mt cách để đảm bo rng điu kin này  
không bao gixy ra là áp đặt toàn bthtca tt cloi tài nguyên và đòi hi mi  
quá trình trong thttăng ca slượng.  
Gi R = {R1, R2, …, Rm} là tp hp loi tài nguyên. Chúng ta gán mi loi tài  
nguyên mt snguyên duy nht, cho phép chúng ta so sánh hai tài nguyên và xác định  
tài nguyên này có đứng trước tài nguyên khác hay không trong thtca chúng ta.  
Thông thường, chúng ta định nghĩa hàm ánh xmt-mt F: R N, ở đây N là tp  
hp các stnhiên. Thí d, nếu tp hp các loi tài nguyên R gm các băng t, ổ  
đĩa và máy in thì hàm F có thể được định nghĩa như sau:  
F(băng t) = 1,  
F(đĩa t) = 5,  
F(máy in) = 12.  
Bây gichúng ta xem giao thc sau để ngăn chn deadlock: mi quá trình có  
thyêu cu tài nguyên chtrong thttăng ca slượng. Nghĩa là, mt quá trình ban  
đầu có thyêu cu bt cslượng thhin ca mt loi tài nguyên Ri. Sau đó, mt  
quá trình có thyêu cu các thhin ca loi tài nguyên Rj nếu và chnếu F(Rj) >  
F(Ri). Nếu mt sthhin ca cùng loi tài nguyên được yêu cu, thì mt yêu cu  
cho tt cthhin phi được cp phát. Thí d, sdng hàm được định nghĩa trước đó,  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 120  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
mt quá trình mun dùng băng tvà máy in ti cùng mt lúc trước tiên phi yêu cu  
băng tvà sau đó yêu cu máy in.  
Nói mt cách khác, chúng ta yêu cu rng, bt ckhi nào mt quá trình yêu cu  
mt thhin ca loi tài nguyên Rj, nó gii phóng bt ctài nguyên Ri sao cho F(Ri) ≥  
F(Rj).  
Nếu có hai giao thc được dùng thì điu kin tn ti chu trình không thxy ra.  
Chúng ta có thgii thích điu này bng cách cho rng tn ti chu trình trong đồ thị  
cp phát tài nguyên tn ti. Gi tp hp các quá trình cha tn ti chu trình trong đồ  
thcp phát tài nguyên là {P0, P1, … , Pn}, ở đây Pi đang chmt tài nguyên Ri, mà Ri  
được gibi quá trình Pi+1. Vì sau đó quá trình Pi+1 đang gitài nguyên Ri trong khi  
yêu cu tài nguyên Ri+1, nên chúng ta có F(Ri) < F(Ri+1) cho tt ci. Nhưng điu kin  
này có nghĩa là F(R0) < F(R1) < …< F(Rn) < F(R0). Bng qui tc bt cu F(R0) <  
F(R0), điu này là không th. Do đó, không thcó chchu trình.  
Chú ý rng hàm F nên được định nghĩa da theo thttnhiên ca vic sử  
dng tài nguyên trong hthng. Thí d, vì băng tthường được yêu cu trước máy  
in nên có thhp lý để định nghĩa F( băng t) < F(máy in).  
VIITránh deadlock  
Các gii thut ngăn chn deadlock, được tho lun VII-6, ngăn chn deadlock  
bng cách hn chế cách các yêu cu có thể được thc hin. Các ngăn chn đảm bo  
rng ít nht mt trong nhng điu kin cn cho deadlock không thxy ra. Do đó,  
deadlock không thxy ra. Tuy nhiên, các tác dng phcó thngăn chn deadlock  
bi phương pháp này là vic sdng thiết bchm và thông lượng hthng bgim.  
Mt phương pháp khác để tránh deadlock là yêu cu thông tin bsung vcách  
tài nguyên được yêu cu. Thí d, trong mt hthng vi mt băng tvà mt máy  
in, chúng ta có thbo rng quá trình P syêu cu băng ttrước và sau đó máy in  
trước khi gii phóng chai tài nguyên. Trái li, quá trình Q syêu cu máy in trước  
và sau đó băng t. Vi kiến thc vththoàn thành ca yêu cu và gii phóng  
cho mi quá trình, chúng ta có thquyết định cho mi yêu cu ca quá trình schờ  
hay không. Mi yêu cu đòi hi hthng xem tài nguyên hin có, tài nguyên hin  
được cp ti mi quá trình, và các yêu cu và gii phóng tương lai ca mi quá trình,  
để yêu cu ca quá trình hin ti có thể được thomãn hay phi chờ để tránh khnăng  
xy ra deadlock.  
Các gii thut khác nhau có skhác nhau vlượng và loi thông tin được yêu  
cu. Mô hình đơn gin và hu ích nht yêu cu mi quá trình khai báo sln nht tài  
nguyên ca mi loi mà nó cn. Thông tin trước vslượng ti đa tài nguyên ca mi  
loi được yêu cu cho mi quá trình, có thxây dng mt gii thut đảm bo hthng  
skhông bao giờ đi vào trng thái deadlock. Đây là gii thut định nghĩa tiếp cn  
tránh deadlock. Gii thut tránh deadlock txem xét trng thái cp phát tài nguyên để  
đảm bo điu kin tn ti chu trình trong đồ thcp phát tài nguyên có thkhông bao  
gixy ra. Trng thái cp phát tài nguyên được định nghĩa bi stài nguyên sn dùng  
và tài nguyên được cp phát và syêu cu ti đa ca các quá trình.  
VII.1 Trng thái an toàn  
Mt trng thái là an toàn nếu hthng có thcp phát các tài nguyên ti mi  
quá trình trong mt vài thtvà vn tránh deadlock. Hay nói cách khác, mt hthng  
trong trng thái an toàn chnếu ở đó tn ti mt thtan toàn. Thtca các quá  
trình <P1, P2, …, Pn> là mt thtan toàn cho trng thái cp phát hin hành nếu đi  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 121  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
vi mi thtPi, các tài nguyên mà Pi yêu cu vn có thể được thomãn bi tài  
nguyên hin có cng vi các tài nguyên được gibi tt cPj, vi j<i. Trong trường  
hp này, nếu nhng tài nguyên mà quá trình Pi yêu cu không sn dùng tc thì thì Pi  
có thchcho đến khi tt cPj hoàn thành. Khi chúng hoàn thành, Pi có thể đạt được  
tt cnhng tài nguyên nó cn, hoàn thành các tác vụ được gán, trvnhng tài  
nguyên được cp phát cho nó và kết thúc. Khi Pi kết thúc, Pi+1 có thể đạt được các tài  
nguyên nó cn,... Nếu không có thtnhư thế tn ti thì trng thái hthng là không  
an toàn.  
Mt trng thái an toàn không là trng thái deadlock. Do đó, trng thái  
deadlock là trng thái không an toàn. Tuy nhiên, không phi tt ctrng thái không an  
toàn là deadlock (hình VI-4). Mt trng thái không an toàn có thdn đến deadlock.  
Vi điu kin trng thái là an toàn, hệ điu hành có thtránh trng thái không an toàn  
(và deadlock). Trong mt trng thái không an toàn, hệ điu hành có thngăn chn các  
quá trình tnhng tài nguyên đang yêu cu mà deadlock xy ra: hành vi ca các quá  
trình này điu khin các trng thái không an toàn.  
Hình 0-4 Không gian trng thái an toàn, không an toàn, deadlock  
Để minh ho, chúng ta xét mt hthng vi 12 băng tvà 3 quá trình: P0,  
P1, P2. Quá trình P0 yêu cu 10 băng t, quá trình P1 có thcn 4 và quá trình P2 có  
thcn ti 9 băng t. Gisrng ti thi đim t0, quá trình P0 gi5 băng t, quá  
trình P1 gi2 và quá trình P2 gi2 băng t. (Do đó, có 3 băng tcòn rnh).  
Nhu cu ti đa  
Nhu cu hin ti  
P0  
P1  
P2  
10  
4
9
5
2
2
Ti thi đim t0, hthng trng thái an toàn. Tht<P1,P0, P2> thoả điu kin  
an toàn vì quá trình P1 có thể được cp phát tc thì tt ccác ổ đĩa tvà sau đó trli  
chúng (sau đó hthng có 5 băng tsn dùng ), sau đó quá trình P0 có thnhn tt  
cả ổ băng tvà trli chúng (sau đó hthng scó 10 băng tsn dùng), và cui  
cùng quá trình P2 có thnhn tt cả ổ băng tca nó và trli chúng (sau đó hthng  
scó tt c12 băng tsn dùng).  
Mt hthng có thể đi ttrng thái an toàn ti mt trng thái không an toàn.  
Gisrng ti thi đim t1, quá trình P2 yêu cu và được cp 1 băng tna. Hệ  
thng không còn trong trng thái an toàn. Ti đim này, chquá trình P1 có thể được  
cp tt cả ổ băng tca nó. Khi nó trli chúng, chquá trình P1 có thể được cp phát  
tt cả ổ băng t. Khi nó trli chúng, hthng chcòn 4 băng tsn có. Vì quá  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 122  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
trình P0 được cp phát 5 băng t, nhưng có ti đa 10, quá trình P0 phi ch. Tương  
t, quá trình P2 có thyêu cu thêm 6 băng tvà phi chdn đến deadlock.  
Li ca chúng ta là gán yêu cu tquá trình P2 cho 1 băng tna. Nếu chúng  
ta làm cho P2 phi chcho đến khi các quá trình khác kết thúc và gii phóng tài  
nguyên ca nó thì chúng ta có thtránh deadlock.  
Vi khái nim trng thái an toàn được cho, chúng ta có thể định nghĩa các gii  
thut tránh deadlock. Ý tưởng đơn gin là đảm bo hthng sluôn còn trong trng  
thái an toàn. Khi đầu, hthng trong trng thái an toàn. Bt ckhi nào mt quá  
trình yêu cu mt tài nguyên hin có, hthng phi quyết định tài nguyên có thể được  
cp phát tc thì hoc quá trình phi ch. Yêu cu được gán chnếu vic cp phát để  
hthng trong trng thái an toàn.  
Trong mô hình này, nếu quá trình yêu cu tài nguyên đang có, nó có thvn  
phi ch. Do đó, vic sdng tài nguyên có thchm hơn mà không có gii thut  
tránh deadlock.  
VII.2 Gii thut đồ thcp phát tài nguyên  
Nếu chúng ta có mt hthng cp phát tài nguyên vi mt thhin ca mi  
loi, mt biến dng ca đồ thcp phát tài nguyên được định nghĩa trong phn VI.4.2  
có thể được dùng để tránh deadlock.  
Ngoài các cnh yêu cu và gán, chúng ta gii thiu mt loi cnh mi được gi  
cnh thnh cu (claim edge). Mt cnh thnh cu Pi Rj hin thquá trình Pi có  
thyêu cu tài nguyên Rj vào mt thi đim trong tương lai. Cnh này tương tcnh  
yêu cu vphương hướng nhưng được hin din bi du đứt khong. Khi quá trình Pi  
yêu cu tài nguyên Rj, cnh thnh cu Pi Rj chuyn ti cnh yêu cu. Tương t, khi  
mt tài nguyên Rj được gii phóng bi Pi, cnh gán Rj Pi được chuyn trli thành  
cnh thnh cu Pi Rj. Chúng ta chú ý rng các tài nguyên phi được yêu cu trước  
trong hthng. Nghĩa là, trước khi Pi bt đầu thc thi, tt ccác cnh thnh cu ca nó  
phi xut hin trong đồ thcp phát tài nguyên. Chúng ta có thgim nhẹ điu kin  
này bng cách cho phép mt cnh Pi Rj để được thêm ti đồ thchnếu tt ccác  
cnh gn lin vi quá trình Pi là các cnh thnh cu.  
Gisrng Pi yêu cu tài nguyên Rj. Yêu cu có thể được gán chnếu chuyn  
cnh yêu cu Pi Rj ti cnh gán RjPi không dn đến vic hình thành chu trình  
trong đồ thcp phát tài nguyên. Chú ý rng chúng ta kim tra tính an toàn bng cách  
dùng gii thut phát hin chu trình. Mt gii thut để phát hin mt chu trình trong đồ  
thnày yêu cu mt thtca n2 thao tác, ở đây n là squá trình trong hthng.  
Hình 0-5 Đồ thcp phát tài nguyên để tránh deadlock  
Nếu không có chu trình tn ti, thì vic cp phát tài nguyên sẽ để li hthng  
trong trng thái an toàn. Nếu chu trình được tìm thy thì vic cp phát sẽ đặt hthng  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 123  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
trong trng thái không an toàn. Do đó, quá trình Pi sphi chyêu cu ca nó được  
tho.  
Để minh hogii thut này, chúng ta xét đồ thcp phát tài nguyên ca hình VI-  
5. Gisrng P2 yêu cu R2. Mc dù R2 hin rnh nhưng chúng ta không thcp phát  
nó ti P2 vì hot đng này sto ra chu trình trong đồ th(Hình VI-6). Mt chu trình  
hin thrng hthng trong trng thái không an toàn. Nếu P1 yêu cu R2 và P2 yêu  
cu R1 thì deadlock sxy ra.  
Hình 0-6 Trng thái không an toàn trong đồ thcp phát tài nguyên  
VII.3 Gii thut ca Banker  
Gii thut đồ thcp phát tài nguyên không tháp dng ti hthng cp phát tài  
nguyên vi nhiu thhin ca mi loi tài nguyên. Gii thut tránh deadlock mà  
chúng ta mô ttiếp theo có tháp dng ti mt hthng nhưng ít hiu quhơn cơ chế  
đồ thcp phát tài nguyên. Gii thut này thường được gi là gii thut ca Banker.  
Tên được chn vì gii thut này có thể được dùng trong hthng ngân hàng để đảm  
bo ngân hàng không bao gicp phát tin mt đang có ca nó khi nó không ththoả  
mãn các yêu cu ca tt ckhách hàng.  
Khi mt quá trình mi đưa vào hthng, nó phi khai báo sti đa các thhin  
ca mi loi tài nguyên mà nó cn. Snày có thkhông vượt quá tng stài nguyên  
trong hthng. Khi mt người dùng yêu cu tp hp các tài nguyên, hthng phi  
xác định vic cp phát ca các tài nguyên này sẽ để li hthng trng thái an toàn  
hay không. Nếu trng thái hthng slà an toàn, tài nguyên sẽ được cp; ngược li  
quá trình phi chcho ti khi mt vài quá trình gii phóng đủ tài nguyên.  
Nhiu cu trúc dliu phi được duy trì để cài đặt gii thut Banker. Nhng cu  
trúc dliu này mã hoá trng thái ca hthng cp phát tài nguyên. Gi n là squá  
trình trong hthng và m là sloi tài nguyên trong hthng. Chúng ta cn các cu  
trúc dliu sau:  
Available: mt vector có chiu dài m hin thslượng tài nguyên sn dùng  
ca mi loi. Nếu Available[j]= k, có k thhin ca loi tài nguyên Rj sn  
dùng.  
Max: mt ma trn n x m định nghĩa slượng ti đa yêu cu ca mi quá  
trình. Nếu Max[ i , j ] = k, thì quá trình Pi có thyêu cu nhiu nht k thể  
hin ca loi tài nguyên Rj.  
Allocation: mt ma trn n x m định nghĩa slượng tài nguyên ca mi loi  
hin được cp ti mi quá trình. Nếu Allocation[ i, j ] = k, thì quá trình Pi  
hin được cp k thhin ca loi tài nguyên Rj.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 124  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
Need: mt ma trn n x m hin thyêu cu tài nguyên còn li ca mi quá  
trình. Nếu Need[ i, j ] = k, thì quá trình Pi có thcn thêm k thhin ca loi  
tài nguyên Rj để hoàn thành tác vca nó. Chú ý rng, Need[ i, j ] = Max[ i,  
j ] – Allocation [ i, j ].  
Cu trúc dliu này biến đi theo thi gian vkích thước và giá trị  
Để đơn gin vic trình bày ca gii thut Banker, chúng ta thiết lp vài ký hiu.  
Gi X và Y là các vector có chiu dài n. Chúng ta nói rng X Y nếu và chnếu X[i]  
Y[i] cho tt ci = 1, 2, …, n. Thí d, nếu X = (1, 7, 3, 2) và Y = (0, 3, 2, 1) thì Y ≤  
X, Y < X nếu Y X và Y X.  
Chúng ta có thxem xét mi dòng trong ma trn Allocation và Need như là  
nhng vectors và tham chiếu ti chúng như Allocationi và Needi tương ng. Vector  
Allocationi xác định tài nguyên hin được cp phát ti quá trình Pi; vector Needi xác  
định các tài nguyên bsung mà quá trình Pi có thvn yêu cu để hoàn thành tác vụ  
ca nó.  
VII.3.1 Gii thut an toàn  
Gii thut để xác định hthng trng thái an toàn hay không có thể được mô tả  
như sau:  
1) Gi Work và Finish là các vector có chiu dài m và n tương ng. Khi to  
Work:=Available và Finish[i]:=false cho i = 1, 2, …,n.  
2) Tìm i tha:  
a) Finish[i] = false  
b) Need i Work.  
Nếu không có i nào tha, di chuyn ti bước 4  
3) Work:=Work + Allocation i  
Finish[i] := true  
Di chuyn vbước 2.  
4) Nếu Finish[i] = true cho tt ci, thì hthng đang trng thái an toàn.  
Gii thut này có thyêu cu độ phc tp mxn2 thao tác để quyết định trng thái  
là an toàn hay không.  
VII.3.2 Gii thut yêu cu tài nguyên  
Cho Requesti là vector yêu cu cho quá trình Pi. Nếu Requesti[j] = k, thì quá  
trình Pi mun k thhin ca loi tài nguyên Rj. Khi mt yêu cu tài nguyên được thc  
hin bi quá trình Pi, thì các hot động sau được thc hin:  
1) Nếu Requesti Needi, di chuyn ti bước 2. Ngược li, phát sinh mt điu  
kin li vì quá trình vượt quá yêu cu ti đa ca nó.  
2) Nếu Requesti Available, di chuyn ti bước 3. Ngược li, Pi phi chvì tài  
nguyên không sn có.  
3) Gishthng cp phát các tài nguyên được yêu cu ti quá trình Pi bng  
cách thay đổi trng thái sau:  
Available := Available – Requesti;  
Allocationi := Allocationi + Requesti;  
Needi := Needi – Requesti;  
Nếu kết qutrng thái cp phát tài nguyên là an toàn, thì giao dch được hoàn thành  
và quá trình Pi được cp phát tài nguyên ca nó. Tuy nhiên, nếu trng thái mi là  
không an toàn, thì Pi phi chRequesti và trng thái cp phát tài nguyên cũ được phc  
hi.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 125  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
VII.3.3 Thí dminh ha  
Xét mt hthng vi 5 quá trình tP0 ti P4, và 3 loi tài nguyên A, B, C.  
Loi tài nguyên A có 10 thhin, loi tài nguyên B có 5 thhin và loi tài nguyên C  
có 7 thhin. Gisrng ti thi đim T0 trng thái hin ti ca hthng như sau:  
Allocation  
Max  
A
7
3
9
Available  
A
0
2
3
2
0
B
1
0
0
1
0
C
0
0
2
1
2
B
5
2
0
2
3
C
3
2
2
2
3
A
3
B
3
C
2
P0  
P1  
P2  
P3  
P4  
2
4
Ni dung ma trn Need được định nghĩa là Max-Allocation và là  
Need  
A
7
1
6
0
4
B
4
2
0
1
3
C
3
2
2
1
1
P0  
P1  
P2  
P3  
P4  
Chúng ta khng định rng hthng hin trong trng thái an toàn. Tht vy,  
tht<P1, P3, P4, P2, P0> tha tiêu chun an toàn. Gisbây giP1 yêu cu thêm  
mt thhin loi A và hai thhin loi C, vì thế Request1 = (1, 0, 2). Để quyết định  
yêu cu này có thể được cp tc thì hay không, trước tiên chúng ta phi kim tra  
Request1 Available (nghĩa là, (1, 0, 2)) (3, 3, 2)) là đúng hay không. Sau đó,  
chúng ta gisyêu cu này đạt được và chúng ta đi đến trng thái mi sau:  
Allocation  
Max  
A
7
0
6
Available  
A
0
3
3
2
0
B
1
0
0
1
0
C
0
2
2
1
2
B
4
2
0
1
3
C
3
0
0
1
1
A
2
B
3
C
0
P0  
P1  
P2  
P3  
P4  
0
4
Chúng ta phi xác định trng thái mi này là an toàn hay không. Để thc hin  
điu này, chúng ta thc thi gii thut an toàn ca chúng ta và tìm tht<P1, P3, P4,  
P0, P2> tha yêu cu an toàn. Do đó, chúng ta có thcp lp tc yêu cu ca quá trình  
P1.  
Tuy nhiên, chúng ta cũng thy rng, khi hthng trong trng thái này, mt  
yêu cu (3, 3, 0) bi P4 không thể được gán vì các tài nguyên là không sn dùng. Mt  
yêu cu cho (0, 2, 0) bi P0 không thể được cp mc dù tài nguyên là sn dùng vì  
trng thái kết qulà không an toàn.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 126  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
VIIIPhát hin Deadlock  
Nếu mt hthng không thc hin gii thut ngăn chn deadlock hay tránh  
deadlock thì trường hp deadlock có thxy ra. Trong môi trường này, hthng phi  
cung cp:  
Gii thut xem xét trng thái ca hthng để quyết định deadlock có xy  
ra hay không.  
Gii thut phc hi tdeadlock  
Trong tho lun dưới đây, chúng ta tho lun chi tiết vhai yêu cu khi chúng  
liên quan đến nhng hthng vi chmt thhin ca mi loi tài nguyên cũng như  
đi vi hthng có nhiu thhin cho mi loi tài nguyên. Tuy nhiên, ti thi đim  
này chúng ta chú ý lược đồ phát hin và phc hi yêu cu chi phí bao gm không chỉ  
chi phí ti thi đim thc thi cho vic duy trì thông tin cn thiết và thc thi gii thut  
phát hin mà còn các lãng phí có thphát sinh trong vic phát hin tdeadlock.  
VIII.1  
Mt thhin ca mi loi tài nguyên  
Nếu tt ctài nguyên chcó mt thhin thì chúng ta có thể định nghĩa gii  
thut phát hin deadlock dùng mt biến dng ca đồ thcp phát tài nguyên, được gi  
đồ thch(wait-for). Chúng ta đạt được đồ thnày từ đồ thcp phát tài nguyên  
bng cách gbcác nút ca loi tài nguyên và xóa các cnh tương ng.  
Hình 0-7 a) Đồ thcp phát tài nguyên. b) Đồ thchtương ng  
Chính xác hơn, mt cnh tPi ti Pj trong đồ thchhin thrng quá trình Pi  
đang chmt quá trình Pj để gii phóng tài nguyên mà Pi cn. Cnh Pi Pj tn ti  
trong đồ thchnếu và chnếu đồ thcp phát tài nguyên tương ng cha hai cnh Pi  
Rq và Rq Pj đi vi mt stài nguyên Rq. Thí d, trong hình VI-7 dưới đây,  
chúng ta trình bày đồ thcp phát tài nguyên và đồ thchtương ng.  
Như đã đề cp trước đó, deadlock tn ti trong hthng nếu và chnếu đồ thị  
chcha chu trình. Để phát hin deadlock, hthng cn duy trì đồ thchđịnh kỳ  
gi gii thut để tìm kiếm chu trình trong đồ th.  
Mt gii thut phát hin chu trình trong đồ thyêu cu độ phc tp n2 thao tác, ở  
đây n là scnh ca đồ th.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 127  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
VIII.2  
Nhiu thhin ca mt loi tài nguyên  
Lược đồ đồ thchkhông tháp dng đi vi hthng cp phát tài nguyên  
vi nhiu thhin cho mi loi tài nguyên. Gii thut phát hin deadlock mà chúng ta  
mô tsau đây có tháp dng cho hthng này. Gii thut thc hin nhiu cu trúc dữ  
liu thay đi theo thi gian mà chúng tương tnhư được dùng trong gii thut  
Banker.  
Available: mt vector có chiu dài m hin thslượng tài nguyên sn có  
ca mi loi.  
Allocation: ma trn nxm định nghĩa slượng tài nguyên ca mi loi hin  
được cp phát ti mi quá trình.  
Request: ma trn nxm hin thyêu cu hin ti ca mi quá trình. Nếu  
Request[i,j] = k, thì quá trình Pi đang yêu cu k thhin na ca loi tài  
nguyên Rj.  
Quan hgia hai vectors được định nghĩa trong phn VI.7.3. Để ký hiu đơn  
gin, chúng ta sxem nhng hàng trong ma trn Allocation và Request như các  
vector, và stham chiếu chúng như Allocationi và Requesti tương ng. Gii thut phát  
hin được mô tả ở đây đơn gin kho sát mi thtcp phát có thể đối vi các quá  
trình còn li để được hoàn thành. So sánh gii thut này vi gii thut Banker.  
1) Gi Work và Finish là các vector có chiu dài m và n tương ng. Khi to  
Work:=Available. Cho i = 1, 2, …,n, nếu Allocationi 0, thì Finish[i]:=  
false; ngược li Finish[i]:= true.  
2) Tìm chsi tha:  
a) Finish[i] = false  
b) Request i Work.  
Nếu không có i nào tha, di chuyn ti bước 4  
3) Work:=Work + Allocation i  
Finish[i] := true  
Di chuyn vbước 2.  
4) Nếu Finish[i] = false cho mt vài i, 1 i n thì hthng đang trng thái  
deadlock. Ngoài ra, nếu Finish[i] = false thì quá trình Pi bdeadlock.  
Gii thut này yêu cu độ phc tp mxn2 để phát hin hthng có trong trng  
thái deadlock hay không.  
Câu hi đặt ra là ti sao chúng ta trli tài nguyên ca quá trình Pi (trong bước  
3) ngay sau khi chúng ta xác định rng Requesti Work (trong bước 2b). Chúng ta  
biết rng Pi hin ti không liên quan deadlock (vì Requesti Work). Do đó, chúng ta  
lc quan và khng định rng Pi skhông yêu cu thêm tài nguyên na để hoàn thành  
công vic ca nó; do đó nó strvtt ctài nguyên hin được cp phát ti hthng.  
Nếu giả định ca chúng ta không đúng, deadlock có thxy ra sao đó. Deadlock sẽ  
được phát hin ti thi đim kế tiếp mà gii thut phát hin deadlock được np.  
Để minh hogii thut này, chúng ta xét hthng vi 5 quá trình P0 đến P4 và 3  
loi tài nguyên A, B, C. Loi tài nguyên A có 7 thhin, loi tài nguyên B có 2 thể  
hin và loi tài nguyên C có 6 thhin. Gisrng ti thi đim T0, chúng ta có trng  
thái cp phát tài nguyên sau:  
Allocation  
Request  
Available  
A
0
2
3
2
B
1
0
0
1
C
0
0
3
1
A
0
2
0
1
B
C
0
2
0
0
A
0
B
0
C
0
P0  
P1  
P2  
P3  
0
0
0
0
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 128  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
P4  
0
0
2
0
0
2
Chúng ta khng định rng hthng không trong trng thái deadlock. Tht vy,  
nếu chúng ta thc thi gii thut, chúng ta stìm ra tht<P0, P2, P3, P1, P4> sdn  
đến trong Finish[i] = true cho tt ci.  
Bây gigisrng quá trình P2 thc hin yêu cu thêm thhin loi C. Ma trn  
yêu cu được hiu chnh như sau:  
Need  
A
0
2
0
1
0
B
0
0
0
0
0
C
0
2
1
0
2
P0  
P1  
P2  
P3  
P4  
Chúng ta khng định rng hthng bây gibdeadlock. Mc dù chúng ta có  
thể đòi li tài nguyên được gibi quá trình P0, slượng tài nguyên sn dùng không  
đủ để hoàn thành các yêu cu ca các quá trình còn li. Do đó, deadlock tn ti và bao  
gm các quá trình P1, P2, P3, P4.  
VIII.3  
Sdng gii thut phát hin deadlock  
Khi nào thì chúng ta nên np gii thut phát hin deadlock? Câu trli phthuc  
vào hai yếu t:  
1) Deadlock có khnăng xy ra thường xuyên như thế nào?  
2) Bao nhiêu quá trình sbị ảnh hưởng bi deadlock khi nó sra?  
Nếu deadlock xy ra thường xuyên thì gii thut phát hin nên được np lên  
thường xuyên. Nhng tài nguyên được cp phát để các quá trình bdeadlock srnh  
cho đến khi deadlock có thbphá v. Ngoài ra, slượng quá trình liên quan trong  
chu trình deadlock có thtăng lên.  
Deadlock xy ra chkhi mt squá trình thc hin yêu cu mà không được cp tài  
nguyên tc thì. Yêu cu này có thlà yêu cu cui hoàn thành mt chui các quá trình  
đang yêu cu. Ngoài ra, chúng ta có thnp gii thut phát hin mi khi mt yêu cu  
cho vic cp phát không thể được cp tc thì. Trong trường hp này, chúng ta không  
chỉ định nghĩa tp hp các quá trình bdeadlock, mà còn xác định quá trình đã gây ra  
deadlock. (Trong thc tế, mi quá trình trong sut quá trình bdeadlock là mt liên  
kết trong chu trình ca đồ thtài nguyên, vì thế tt cchúng gây ra deadlock). Nếu có  
nhiu loi tài nguyên khác nhau, mt yêu cu có thgây chu trình trong đồ thtài  
nguyên, mi chu trình hoàn thành bi yêu cu mi nht và “được gây ra” bi mt quá  
trình có thxác định.  
Dĩ nhiên, np gii thut phát hin deadlock cho mi yêu cu có thgây ra mt  
chi phí có thxem xét trong thi gian tính toán. Mt thay đổi ít đắt hơn là np gii  
thut ti thi đim ít thường xuyên hơn- thí d, mt ln mt gihay bt ckhi nào  
vic sdng CPU rơi xung thp hơn 40%. Nếu gii thut phát hin deadlock được  
np trong nhng thi đim bt k, thì có nhiu chu trình trong đồ thtài nguyên.  
Chúng ta không thnói quá trình nào ca nhiu quá trình bdeadlock gây ra deadlock.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 129  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
IX Phc hi deadlock  
Khi gii thut phát hin xác định rng deadlock tn ti, nhiu thay đi tn ti.  
Mt khnăng là thông báo người điu hành rng deadlock xy ra và để người điu  
hành gii quyết deadlock bng thcông. Mt khnăng khác là để hthng tự động  
phc hi. Có hai tuchn cho vic phá vdeadlock. Mt gii pháp đơn gin là hubỏ  
mt hay nhiu quá trình để phá vvic tn ti chu trình trong đồ thcp phát tài  
nguyên. Tuchn thhai là ly li mt stài nguyên tmt hay nhiu quá trình bị  
deadlock.  
IX.1 Kết thúc quá trình  
Để xóa deadlock bng cách hy bquá trình, chúng ta dùng mt trong hai phương  
pháp. Trong chai phương pháp, hthng ly li tài nguyên được cp phát đi vi  
quá trình bkết thúc.  
Hubtt cquá trình bdeadlock: phương pháp này rõ ràng sphá vchu  
trình deadlock, nhưng chi phí cao; các quá trình này có thể đã tính toán trong  
thi gian dài, và các kết quca các tính toán tng phn này phi bbỏ đi và  
có thphi tính li sau đó.  
Hy bmt quá trình ti thi đim cho đến khi chu trình deadlock bị  
xóa:phương pháp này chu chi phí có thxem xét vì sau khi mi quá trình bị  
hy b, mt gii thut phát hin deadlock phi được np lên để xác định có  
quá trình nào vn đang bdeadlock.  
Hy bquá trình có thkhông d. Nếu mt quá trình đang gia giai đon cp  
nht mt tp tin, kết thúc nó sẽ để tp tin đó trong trng thái không phù hp. Tương  
t, nếu quá trình đang gia giai đon in dliu ra máy in, hthng phi khi đng  
li trng thái đúng trước khi in công vic tiếp theo.  
Nếu phương pháp kết thúc mt phn được dùng thì vi mt tp hp các quá  
trình deadlock được cho, chúng ta phi xác định quá trình nào (hay các quá trình nào)  
nên được kết thúc trong scgng để phá vdeadlock. Vic xác định này là mt  
quyết định chính sách tương tnhư các vn đề lp thi biu CPU. Câu hi vtính  
kinh tế là chúng ta nên hy bquá trình nào thì skết thúc ca quá trình đó schu  
chi phí ti thiu. Tuy nhiên, thut ngchi phí ti thiu là không chính xác. Nhiu yếu  
tcó thxác định quá trình nào được chn bao gm:  
1) Độ ưu tiên ca quá trình là gì.  
2) Quá trình đã được tính toán bao lâu và bao lâu na quá trình stính toán trước  
khi hoàn thành tác vụ được chỉ định ca nó.  
3) Bao nhiêu và loi tài nguyên gì quá trình đang sdng.  
4) Bao nhiêu tài nguyên na quá trình cn để hoàn thành  
5) Bao nhiêu quá trình scn được kết thúc.  
6) Quá trình là giao tiếp hay dng bó  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 130  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
IX.2 Ly li tài nguyên  
Để xóa deadlock sdng vic trli tài nguyên, sau khi chúng ta đòi mt stài  
nguyên tcác quá trình và cho các tài nguyên này ti các quá trình khác cho đến khi  
chu trình deadlock bphá v.  
Nếu vic đòi li được yêu cu để gii quyết deadlock thì ba vn đề cn được xác  
định:  
Chn nn nhân: nhng tài nguyên nào và nhng quá trình nào bị đòi li?  
Trong khi kết thúc quá trình, chúng ta phi xác định thtự đòi li để ti  
thiu chi phí. Các yếu tchi phí có thgm các tham snhư slượng tài  
nguyên mt quá trình deadlock đang gi, và lượng thi gian mt quá trình  
deadlock dùng trong sthc thi ca nó.  
Trli trng thái trước deadlock: Nếu chúng ta đòi li tài nguyên tmt  
quá trình, điu gì nên được thc hin vi quá trình đó? Rõ ràng, nó không  
thtiếp tc vic thc thi bình thường; nó đang bmt mt stài nguyên  
được yêu cu. Chúng ta phi phc hi quá trình ti trng thái an toàn và  
khi đng li ttrng thái gn nht trước đó.  
Thông thường, rt khó để xác định trng thái gì là an toàn vì thế gii pháp đơn  
gin nht là phc hi toàn b: hy quá trình và sau đó khi động li nó. Tuy nhiên,  
hu hiu hơn để phc hi quá trình chỉ đủ xa cn thiết để phá vdeadlock. Ngoài ra,  
phương pháp này yêu cu hthng ginhiu thông tin hơn vtrng thái ca tt ccác  
quá trình đang chy.  
Đói tài nguyên: chúng ta đảm bo như thế nào vic đói tài nguyên không xy  
ra? Nghĩa là, chúng ta có thể đảm bo rng tài nguyên skhông luôn bị đòi li tcùng  
mt quá trình.  
Trong mt hthng vic chn nn nhân ở đâu da trên cơ scác yếu tchi phí,  
nó có thxy ra cùng quá trình luôn được chn như là nn nhân. Do đó, quá trình này  
không bao gihoàn thành tác vụ được chỉ định ca nó, mt trường hp đói tài nguyên  
cn được gii quyết trong bt khthng thc tế. Rõ ràng, chúng ta phi đảm bo  
mt quá trình có thể được chn như mt nn nhân chmt sln xác định (nh). Gii  
pháp chung nht là bao gm slượng phc hi trong yếu tchi phí.  
X Tóm tt  
Trng thái deadlock xy ra khi hai hay nhiu quá trình đang chkhông xác định  
mt skin mà có thể được gây ra chbi mt trong nhng quá trình đang ch. Về  
nguyên tc, có ba phương pháp gii quyết deadlock:  
Sdng mt sgiao thc để ngăn chn hay tránh deadlock, đảm bo rng  
hthng skhông bao giờ đi vào trng thái deadlock.  
Cho phép hthng đi vào trng thái deadlock, phát hin và sau đó phc hi.  
Bqua vn đề deadlock và givdeadlock chưa bao gixy ra trong hệ  
thng. Gii pháp này là mt gii pháp được dùng bi hu hết các hệ điu  
hành bao gm UNIX.  
Trường hp deadlock có thxy ra nếu và chnếu bn điu kin cn xy ra  
cùng mt lúc trong hthng: loi trhtương, givà chcp thêm tài nguyên,  
không đòi li tài nguyên, và tn ti chu trình trong đồ thcp phát tài nguyên. Để ngăn  
chn deadlock, chúng ta đảm bo rng ít nht mt điu kin cn không bao gixy ra.  
Mt phương pháp để tránh deadlock mà ít nghiêm ngt hơn gii thut ngăn chn  
deadlock là có thông tin trước vmi quá trình sẽ đang dùng tài nguyên như thế nào.  
Thí d, gii thut Banker cn biết slượng ti đa ca mi lp tài nguyên có thể được  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 131  
Đại Hc Cn Thơ - Khoa Công NghThông Tin - Giáo Trình Hệ Điu Hành – V1.0  
yêu cu bi mi quá trình. Sdng thông tin này chúng ta có thể định nghĩa gii thut  
tránh deadlock.  
Nếu hthng không thc hin mt giao thc để đảm bo rng deadlock sẽ  
không bao gixy ra thì lược đồ phát hin và phc hi phi được thc hin. Gii  
thut phát hin deadlock phi được np lên để xác định deadlock có thxy ra hay  
không. Nếu deadlock được phát hin hthng phi phc hi bng cách kết thúc mt  
squá trình bdeadlock hay đòi li tài nguyên tmt squá trình bdeadlock.  
Trong mt hthng mà nó chn các nn nhân để phv hi vtrng thái trước đó  
chyếu da trên cơ syếu tchi phí, vic đói tài nguyên có thxy ra. Kết qulà quá  
trình được chn không bao gihoàn thành tác vụ được chỉ định ca nó.  
Biên son: Th.s Nguyn Phú Trường - 09/2005  
Trang 132  
pdf 20 trang baolam 07/05/2022 6300
Bạn đang xem tài liệu "Giáo trình Hệ điều hành V1.0 - Bài: Deadlock - Nguyễn Phú Trường", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_v1_0_chuong_5_deadlock_nguyen_phu_tr.pdf