4.chap4 synch

27
-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

Transcript of 4.chap4 synch

Page 1: 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

Page 2: 4.chap4 synch

-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ä

Page 3: 4.chap4 synch

-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

Page 4: 4.chap4 synch

-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.

Page 5: 4.chap4 synch

-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;

Page 6: 4.chap4 synch

-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);

Page 7: 4.chap4 synch

-7-Baøi giaûng moân heä ñieàu haønh Vuõ Leâ Huøng Khoa CNTT – ÑHBK TP. HCM

VÍ DUÏ 2

Page 8: 4.chap4 synch

-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ã

Page 9: 4.chap4 synch

-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.

Page 10: 4.chap4 synch

-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.

Page 11: 4.chap4 synch

-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

Page 12: 4.chap4 synch

-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;

Page 13: 4.chap4 synch

-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

Page 14: 4.chap4 synch

-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

Page 15: 4.chap4 synch

-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

Page 16: 4.chap4 synch

-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

Page 17: 4.chap4 synch

-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

Page 18: 4.chap4 synch

-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...

Page 19: 4.chap4 synch

-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;

Page 20: 4.chap4 synch

-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)

Page 21: 4.chap4 synch

-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)

Page 22: 4.chap4 synch

-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

Page 23: 4.chap4 synch

-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

Page 24: 4.chap4 synch

-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

Page 25: 4.chap4 synch

-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);

Page 26: 4.chap4 synch

-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

Page 27: 4.chap4 synch

-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