4.chap4 synch
-
Upload
linh-nguyen-thanh -
Category
Documents
-
view
237 -
download
2
Transcript of 4.chap4 synch
-1-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
Chöông 4
ÑOÀNG BOÄ GIÖÕA CAÙC QUAÙ TRÌNH ÑOÀNG
THÔØI
-2-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
CHÖÔNG 4 : ÑOÀNG BOÄ GIÖÕA CAÙC QUAÙ TRÌNH ÑOÀNG THÔØI
Caùc quaù trình ñoàng thôøi Vaán ñeà tranh chaáp vaø tính loaïi tröø
töông hoã Giaûi quyeát tranh chaáp
– Phöông phaùp phaàn meàm– Phöông phaùp phaàn cöùng– Nhôø söï hoã trôï cuûa heä ñieàu haønh
Moät soá baøi toaùn veà ñoàng boä
-3-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
CAÙC QUAÙ TRÌNH ÑOÀNG THÔØI
Xöû lyù ñoàng thôøi Xöû lyù song song
CPU
P1
P3
P2
CPU
CPU
P1
P3
P2
-4-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
CAÁU TRUÙC “parbegin-parend”
Duøng ñeå moâ taû vieäc xöû lyù ñoàng thôøi / song song
parbeginPhaùt bieåu 1;Phaùt bieåu 2;...Phaùt bieåu n
parend;
Moät leänh chæ baét ñaàu xöû lyù song song caùc coâng vieäc ñöôïc neâu sau ñoù.
Phaùt bieåu sau parbegin-parend chæ ñöôïc thöïc hieän khi moïi coâng vieäc trong parbegin..parend ñaõ keát thuùc.
-5-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
VÍ DUÏ Tính bieåu thöùc sau:
S := -x + 2*y+(x + 2) * (y-1)
Caùc coâng vieäc caàn tính tuaàn töï :
1. –x
2. 2 * y3. x + 2
4. y – 1
5. -x + 2*y
6. (x + 2) * (y – 1)
7. –x +2*y + (x + 2) * (y – 1)
Coù theå xöû lyù song song:
parbegintemp1 := -x;temp2 := 2*y;temp3 := x+2;temp4:= y-1
parend;parbegin
temp5 := temp1 + temp2;temp6 := temp3 * temp4
parend;S:= temp5 +temp6;
-6-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
VAÁN ÑEÀ TRANH CHAÁP Ví duï 1:
a:=0;parbegin
P1;P2;
parend
P1:
1. a:=10;2. b:=20;3. a:=a+b;4. print(a);
P2:
1. read(a);2. a:=a+1;3. print(a);
P:
1. a:=a+1;Q:
1. a:=a+2;
Ví duï 2 :a:=100;parbegin
P;Q;
parendprint(a);
-7-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
VÍ DUÏ 2
-8-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI QUYEÁT TRANH CHAÁP Nguyeân taéc : khi quaù trình naøo ñang thao
taùc treân taøi nguyeân thì quaù trình khaùc phaûi ñôïi cho ñeán khi quaù trình ñang thao taùc hoaøn taát coâng vieäc Ñaûm baûo tính loaïi tröø töông hoã (mutual
exclusion) treân vuøng tranh chaáp (critical section)
Critical SectionP3
P2P5
P4P1
Caùc vaán ñeà quan taâm : vuøng tranh chaáp, caùc thao taùc lieân quan vaø tính loaïi tröø töông hoã
-9-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT TOÅNG QUAÙT Moãi quaù trình tham gia vaøo vuøng tranh chaáp thöïc hieän begin
...enter_mutual_exclusion; critical_section;exit_mutual_exclusion;...
end; enter_mutual_exclusion
if coù quaù trình ñang ôû trong vuøng tranh chaáp then ñôïi
else ñöôïc pheùp vaøo
exit_mutual_exclusion cho pheùp moät trong caùc quaù trình ñang ñôïi (neáu coù)
ñöôïc vaøo vuøng tranh chaùp.
-10-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
NGUYEÂN TAÉC GIAÛI QUYEÁT TRANH CHAÁP
1. Caùc leänh phaàn meàm laø leänh ñôn vò
2. Caùc quaù trình ñoàng thôøi coù theå khoâng ñoàng boä nhau
3. Quaù trình ngoaøi vuøng tranh chaáp khoâng coù quyeàn caám quaù trình khaùc xin vaøo vuøng tranh chaáp.
4. Quaù trình khoâng bò trì hoaõn voâ haïn ñònh khi xin vaøo vuøng tranh chaáp.
-11-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
CAÙC PHÖÔNG PHAÙP GIAÛI QUYEÁT TRANH CHAÁP
Caùc phöông phaùp hieän thöïc :– Phaàn meàm : giaûi thuaät Dekker, Peterson,
Bakery– Phaàn cöùng : leänh testandset– Caùc caåu truùc ñaëc bieät : semaphore, monitor…
Caùc phöông phaùp giaûi quyeát tranh chaáp coù theå laø busy-waiting hay sleep-wakeup:– Busy waiting: quaù trình vaãn chieám CPU khi
khoâng vaøo vuøng tranh chaáp ñöôïc ñeå kieåm tra ñieàu kieän.
– Sleep and Wakeup: ngöôïc laïi
-12-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT DEKKER –VERSION1
1;
-13-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT DEKKER – VERSION2
-14-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT DEKKER – VERSION3
-15-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT DEKKER – VERSION4
-16-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT DEKKER
-17-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT PETERSON
-18-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT BAKERY
Tröôùc khi vaøo vuøng tranh chaáp, moãi quaù trình choïn cho mình moät con soá.
K quaù trình naøo giöõ k soá nhoû nhaát seõ ñöôïc vaøo vuøng tranh chaáp.
Neáu hai quaù trình Pi vaø Pj giöõ hai soá baèng nhau thì quaù trình Pi seõ ñöôïc vaøo vuøng tranh chaáp tröôùc neáu i < j.
Caùc giaù trò maø caùc quaù trình coù ñöôïc laø moät daõy khoâng giaûm: 1,2,3,3,3,3,4,5...
-19-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT BAKERYProcess i:repeat choosing[i]:=true; number[i]:=max(number[0], number[1], ..., number[n - 1]) +1; choosing[i]:=false; for j:= 0 to n - 1 do begin
while choosing[ j] do ;while number[j]≠0 and (number[j], j) < (number[ i],i) do;
end; critical section; number[ i]:=0; remainder section;until false;
-20-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
GIAÛI THUAÄT BAKERY
Ghi chuù:– (a,b) < (c,d): if a < c
or (a=c) and (b < d)– choosing: array [0.. n - 1] of boolean;(ñöôïc khôûi ñoäng taát caû caùc giaù trò
laø false)– number: array [0.. n- 1] of integer;(ñöôïc khôûi ñoäng taát caû caùc giaù trò
laø 0)
-21-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
PHÖÔNG PHAÙP PHAÀN CÖÙNG
Phaûi ñöôïc phaàn cöùng (CPU) hoã trôï leänh
Leänh testandset(a,b): thöïc hieän ba thao taùc sau lieân tuïc, khoâng bò ngaét quaõng:
1. read b;2. a:=b;3. b:=true;
(a, b: kieåu Boolean)
-22-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
PHÖÔNG PHAÙP PHAÀN CÖÙNG
-23-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
SEMAPHORE
Laø caàu truùc döõ lieäu ñaëc bieät chæ cho pheùp truy xuaát thoâng qua caùc taùc vuï ñöôïc thöïc hieän nhö leänh ñôn vò nhö sau– init(semaphore S, integer num) : S:=num;– P(semaphore S)
if S > 0 then S := S - 1 else wait on S) ;– V(semaphore S if (coù quaù trình ñang ñôïi treân S)
then (kích khôûi 1 trong caùc quaù trình ñoù)else S := S + 1;
Coù hai loaïi semaphore:– Semaphore nhò phaân: coù giaù trò 0 hoaëc 1– Semaphore ñeán : coù giaù trò töø 2 trôû leân
Hieän thöïc semaphore : caáp heä ñieàu haønh / caáp phaàn meàm
-24-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
CAÙC PHÖÔNG PHAÙP GIAÛI QUYEÁT TRANH CHAÙP KHAÙC
Mutex Lock fileLock, UnlockMonitorCondition variable
-25-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
SÖÛ DUÏNG SEMAPHORE
var S : semaphore; Process Pi
enter_critical_section = P (S)exit_critical_section = V (S)
Luùc ñaàu phaûi khôûi ñoäng semaphore S baèng soá quaù trình toái ña ñöôïc pheùp vaøo vuøng tranh chaùp ñoàng thôøi
init( S, 1):init (S, num);
-26-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
ÑOÀNG BOÄ NHIEÀU QUAÙ TRÌNH
Vaán ñeà– Vuøng tranh chaáp cho pheùp toái
ña k quaù trình cuøng vaøo ñoàng thôøi
Giaûi quyeát– Duøng semamphore– Giaûi thuaät Bakery
-27-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM
MOÄT SOÁ BAØI TOAÙN VEÀ ÑOÀNG BOÄ
PRODUCER CONSUMERBOUNDED BUFFER
Baøi toaùn Producer-Consumer
Baøi toaùn 5 trieát gia aên toái
Baøi toaùn tieäm caét toùc