You are on page 1of 2

Bn hiu nh th l sai v semaphore ri.

V hai function P v V l global, nn iu kin thot ra khi vng lp wait() l nh nhau (tr mt s trng hp rt c bit ngi ta mi lm khc, nhng nh th s rt d gy deadlock, v kh qun l). d hiu, bn hiu P() ngha l : xin c vo xp hng, cn V() ngha l : thng bo cho ngi khc l my c chy ri y. Do mnh ko hc VN, nhng c mt a em hc CNTT nh. Khi mnh ging bi cho n th thy l nhiu gio vin nh khi cho bi tp cho hc sinh thng dch t sch ting anh ra (hoc bn thn quyn sch y l ting vit nhng gc l ting anh, v gio vin th ko k trc khi cho hc sinh lm bi _ v ngi dch sch li ko c chuyn mn) nn u bi thng rt ti ngha, v nu khng c trc c cc v d m gio vin ging trn lp, hoc note ca thy th kh m hiu c. Mnh thc s ko hiu c u bi ca bn. Nhng mnh ni tm tt li v c bn ca semaphore, hy vng bn da vo v cc v d ca thy cho t lm c bi. semaphore l mt bin th ca mutex, v c dng qun l vic truy cp vo mt ci d liu no (v d nh ko cho php nhiu ngi cng dng my in nh bi ca bn). 1) Dng n gin nht l semaphore ch c mt bin, v mang 2 gi tr true hoc false. Khi th semaphore ging ht nh mutex vi lock v unlock. Khi mt thread chy n on cn access ci resource y, n check ci gi tr ca semaphore, nu l true, th n chuyn ci gi tr y thnh false (lock), ri vo access ci d liu y. Sau khi xong n s chuyn ngc li thnh true (unlock) ngi khc c th vo s dng. 2) Nng cp ln mt cht, tc l vn ch c mt semaphore, nhng semaphore c th c nhiu gi tr. V d nh ci my in ca bn, cho php 3 ngi lm vic cng lc. Th th ci semaphore lc u s c gi tr l 3. Mi khi c mt ngi n xin lm vic, n gim xung 1, v n ngi th 4 (3 ngi kia vn cha lm xong) th semaphore c gi tr l 0 v khng cho ngi th 4 vo lm vic. Khi y ngi th 4 s phi i 1 trong ba ngi kia lm xong, v khi lm xong h s tng ci gi tr semaphore ln 1, thng bo. 3) ng dng th 3 phc tp hn mt cht, chnh l bi tp ca bn. Thng c s dng khi mt task mun access mt ci resource no y, nhng ch khi m mt task khc access n xong. V d: task A chy n on cn phi dng ci resource y, v n xin request c access, bng cch so snh ci semaphore ca n vi mt gi tr no y (thng l 0). Nu n ln hn 0 th n chy, cn ko th i. Sau khi n chy xong th n s thng bo cho ngi khc bit l my c chy ri y, bng cch tng semaphore ca ngi m n mun thng bo. ng dng th 3 ny hu ch, nhng d gy deadlock, y l khi tt c semaphore u ko th access c ci resource. Theo cch hiu nh mnh m t th mi ln call P() tng ng vi mt ln xin c access ci resource y, v mi ln call V() tng ng vi vic thng bo cho ngi khc

bit mnh chy xong ri. V bn hnh dung l mi thread ko phi c chy cng lc, m chy vi cc thi gian khc nhau, v c th mt thread chy ht mt vng ri li lp li. V th nu mnh hiu ci u bi ca bn ng th .. ci no cng gy deadlock c c :(

You might also like