Chöông 4 ÑOÀNG BOÄ GIÖÕA  CAÙC QUAÙ TRÌNH ÑOÀNG THÔØI
CHÖÔNG 4 : ÑOÀNG BOÄ GIÖÕA  CAÙC QUAÙ TRÌNH ÑOÀNG THÔØI <ul><li>Caùc quaù trình ñoàng thôøi </li></ul><ul><li>Vaán ñeà tra...
CAÙC QUAÙ TRÌNH ÑOÀNG THÔØI <ul><li>Xöû lyù ñoàng thôøi </li></ul><ul><li>Xöû lyù song song </li></ul>CPU P1 P3 P2 CPU CPU...
CAÁU TRUÙC “parbegin-parend” <ul><li>Duøng ñeå moâ taû vieäc xöû lyù ñoàng thôøi / song song </li></ul><ul><li>parbegin </...
VÍ DUÏ <ul><li>Tính bieåu thöùc sau:  </li></ul><ul><li>S := -x + 2*y+(x + 2) * (y-1) </li></ul><ul><li>Caùc coâng vieäc c...
VAÁN ÑEÀ TRANH CHAÁP <ul><li>Ví  duï 1: </li></ul><ul><ul><ul><li>a:=0; </li></ul></ul></ul><ul><ul><ul><li>parbegin </li>...
VÍ DUÏ 2
GIAÛI QUYEÁT TRANH CHAÁP <ul><li>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ù...
GIAÛI THUAÄT TOÅNG QUAÙT <ul><li>Moãi quaù trình tham gia vaøo vuøng tranh chaáp thöïc hieän  </li></ul><ul><li>begin </li...
NGUYEÂN TAÉC GIAÛI QUYEÁT TRANH CHAÁP <ul><li>1. Caùc leänh phaàn meàm laø leänh ñôn vò </li></ul><ul><li>2. Caùc quaù trì...
CAÙC PHÖÔNG PHAÙP GIAÛI QUYEÁT TRANH CHAÁP <ul><li>Caùc phöông phaùp hieän thöïc : </li></ul><ul><ul><li>Phaàn meàm : giaû...
GIAÛI THUAÄT DEKKER –VERSION1 1 ;
GIAÛI THUAÄT DEKKER – VERSION2
GIAÛI THUAÄT DEKKER – VERSION3
GIAÛI THUAÄT DEKKER – VERSION4
GIAÛI THUAÄT DEKKER
GIAÛI THUAÄT PETERSON
GIAÛI THUAÄT BAKERY <ul><li>Tröôùc khi vaøo vuøng tranh chaáp, moãi quaù trình choïn cho mình moät con soá. </li></ul><ul>...
GIAÛI THUAÄT BAKERY <ul><li>Process i: </li></ul><ul><li>repeat </li></ul><ul><li>choosing[i]:=true; </li></ul><ul><li>num...
GIAÛI THUAÄT BAKERY <ul><li>Ghi chuù: </li></ul><ul><ul><li>(a,b) < (c,d): if  a < c  </li></ul></ul><ul><ul><li>or  (a=c)...
PHÖÔNG PHAÙP PHAÀN CÖÙNG <ul><li>Phaûi ñöôïc phaàn cöùng (CPU) hoã trôï leänh </li></ul><ul><li>Leänh  testandset(a,b) : t...
PHÖÔNG PHAÙP PHAÀN CÖÙNG
SEMAPHORE <ul><li>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 ...
CAÙC PHÖÔNG PHAÙP GIAÛI QUYEÁT TRANH CHAÙP KHAÙC <ul><li>Mutex  </li></ul><ul><li>Lock file </li></ul><ul><li>Lock, Unlock...
SÖÛ DUÏNG SEMAPHORE <ul><li>var S : semaphore; </li></ul><ul><li>Process P i </li></ul><ul><ul><li>enter_critical_section ...
ÑOÀNG BOÄ NHIEÀU QUAÙ TRÌNH <ul><li>Vaán ñeà </li></ul><ul><ul><li>Vuøng tranh chaáp cho pheùp toái ña k quaù trình cuøng ...
MOÄT SOÁ BAØI TOAÙN VEÀ ÑOÀNG BOÄ <ul><li>Baøi toaùn Producer-Consumer </li></ul><ul><li>Baøi toaùn 5 trieát gia aên toái ...
Upcoming SlideShare
Loading in...5
×

4.chap4 synch

148

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
148
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

4.chap4 synch

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

    Clipping is a handy way to collect important slides you want to go back to later.

×