languages and finite automata - rt-rk.uns.ac.rs · 2 algoritam sa ceduljicama (bakery algorithm)...

70
1 Međusobno isključivanje read/write promenljive

Upload: others

Post on 30-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

1

Međusobno isključivanje

read/write promenljive

Page 2: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

2

Algoritam sa ceduljicama(Bakery Algorithm)

Ovaj algoritam je sličan sa

read-modify-write algoritmom

Postoji red čekanja:

Proces na početku (glavi) reda je

u kritičnoj sekciji

Nov proces se ubacuje na kraj (rep)

Page 3: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

3

Ulaz:

Skica algoritma

Izlaz:

t = tail;

tail = tail + 1;

Wait until t == head;

Kritična sekcija

head = head + 1;

(tail i head su deljene promenljive,

t je lokalna promenljiva)

Page 4: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

4

Ulaz: t = tail;

tail = tail + 1;

Problem: ovaj deo koda se ne

ponaša korektno

//read tail

//write tail

Page 5: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

5

0

tail

Dobar scenario

Page 6: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

6

1

1p0

tail

Read 0

Write 1

(t=0)

Dobar scenario

Page 7: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

7

2

1p0

2p1

tail

Read 1

Write 2

(t=1)

Dobar scenario

Page 8: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

8

3

1p0

2p1 3p

2

tail

Read 2

Write 3

(t=2)Dobar scenario

Page 9: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

9

0

1p0

tail

Read 0

Loš scenario

Page 10: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

10

1

1p0

2p0

tail

Read 0

Write 1Write 1

(zakašnjen)

Loš scenario

Page 11: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

11

2

1p0

2p0 3p

1

tail

Read 1

Write 2

Write 1

(zakašnjen)

Loš scenario

Page 12: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

12

3

1p0

2p0 3p

1

tail

Read 2

Write 3

Write 1

(zakašnjen)4p

2

Loš scenario

Page 13: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

13

1

1p0

2p0 3p

1

tail

Write 1 Read 2

Write 34p

2

Loša vrednost!!!

Loš scenario

Page 14: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

14

1p0

Rešenje: distribuirano brojanje

V[1]=0

Treba nam niz deljenih promenljivih

v[1], v[2], …, v[n]

Proces ima vrednost v[i]ip

2p0

V[2]=0

3p0

V[3]=0

4p0

V[4]=0

Page 15: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

15

1p0

V[1]=0

2p0

V[2]=0

3p0

V[3]=0

4p0

V[4]=0

U ulaznom kodu, proces

čita vrednosti svih drugih procesa.

Nova vrednost je maximum + 1

Page 16: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

16

1p0

V[1]=0

2p1

V[2]=1

3p0

V[3]=0

4p0

V[4]=0

ulaz

Max = 0;

Max + 1 = 1;

Page 17: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

17

1p0

V[1]=0

2p1

V[2]=1

3p0

V[3]=0

4p2

V[4]=2

ulaz ulaz

Max = 1;

Max + 1 = 2;

Page 18: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

18

1p0

V[1]=0

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

ulaz ulaz

Max = 2;

Max + 1 = 3;

ulaz

Page 19: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

19

1p4

V[1]=4

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

ulaz ulazulazulaz

Max = 3;

Max + 1 = 4;

Svaki proces dobija jedinstvenu vrednost

(jedinstvena pozicija u distribuiranom redu)

Page 20: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

20

1p4

V[1]=4

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

ulaz ulazulazulaz

Zatim procesi porede svoje vrednosti

sa svim drugim vrednostima.

Najmanja vrednost ulazi u kritičnu sekciju(različita od 0)

Page 21: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

21

1p4

V[1]=4

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

ulaz ulazulazkritična

sekcija

2p čita sve vrednosti

2p shvata da ima najmanju vrednost

Page 22: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

22

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p2

V[4]=2

ulaz ulazulazizlaz

2p postavlja svoju prom na 0

Page 23: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

23

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p2

V[4]=2

ulaz ulaz kritična

sekcija

Page 24: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

24

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p0

V[4]=0

ulaz ulaz izlaz

Page 25: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

25

I tako dalje……

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p0

V[4]=0

ulaz Kritična

sekcija

Page 26: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

26

1p0

V[1]=0

2p0

V[2]=0

3p0

V[3]=0

4p0

V[4]=0

Problem: Kada dva procesa uđu

u istom trenutku,

oni mogu da izaberu istu vred.

ulaz ulaz

Page 27: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

27

1p0

V[1]=0

2p1

V[2]=1

3p0

V[3]=0

4p1

V[4]=1

ulaz ulaz

Max vrednosti koje oni pročitaju su iste

Page 28: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

28

1p0

V[1]=0

2p1, 2

V[2]=1

3p0

V[3]=0

4p1, 4

V[4]=1

ulazkritična

sekcija

Rešenje: koristiti ID za razbijanje simetrije

(najmanji ID pobeđuje)

Page 29: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

29

1p0

V[1]=0

2p0

V[2]=0

3p0

V[3]=0

4pV[4]=1

ulazizlaz

1, 4

Page 30: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

30

Ceo algoritam sa ceduljicama

V[i] = 0; choosing[i] = false;

choosing[i] = true;

V[i] = max(V[1], V[2], …, V[n])+1;

Proces i:

choosing[i] = false;

for (k = 1; k <= n; k++)

Wait until choosing[k] == false;Wait until V[k] == 0 or

(V[k],k) > (V[i],i)Kritična sekcija

V[i] = 0;

Ulaz:

Izlaz:

Page 31: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

31

Prednosti algoritma sa ceduljicama:

•Koristi Read/Write promenljive

•Zadovoljava uslov da

nema trajnog zaključavanja

Nedostaci:

•Koristi n deljenih prom. za n procesa(u stvari, ne postoji rešenje sa manje prom.)

•Vrednosti mogu da rastu neograničeno

(voleli bi da nađemo neki algoritam

sa ograničenim vrednostima)

Page 32: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

32

Međusobno isključivanje za 2 procesa

Want[0] = 1;

Wait until want[1]== 0;

Kritična sekcija

Want[0] = 0;

1: Want[1] = 0;

Wait until want[0] ==0;

Want[1] = 1;

if (want[0] == 1) goto 1;

Kritična sekcija

Want[1] = 0;

proces visokog priori. proces niskog priori.

Ulaz:

Izlaz:

Dobro: Koristi samo ograničene vred. prom.Problem: Proces niskog prio. može se traj.zak.

Page 33: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

33

1: Want[0] = 0;

Wait until (want[1]== 0

or Priority == 0);

Want[0] = 1;

if priority == 1 then

if Want[1] == 1 then

goto Line 1

Else wait until Want[1]==0;

Critical section

Priority = 1;

Want[0] = 0;

Proces 0 Proces 1

Ulaz:

Izlaz:

Dobro: Koristi ograničene vred. prom.

Nema trajnog zaključ. (lockout)

Algoritam istog prioriteta

1: Want[1] = 0;

Wait until (want[0]== 0

or Priority == 1);

Want[1] = 1;

if priority == 0 then

if Want[0] == 1 then

goto Line 1

Else wait until Want[0]==0;

Critical section

Priority = 0;

Want[1] = 0;

Page 34: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

34

Algoritam sa turnirom (Tournament)

Možemo realizovati algoritam turnira za

međusobno isključivanje, koristeći algorit.

jednakog prioriteta po parovima

1p 2p 3p 4p 5p 6p 7p 8p

Page 35: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

35

1p 2p 3p 4p 5p 6p 7p 8p

Međusobno isključivanje za parove procesa

1p 4p 5p 8p

pobednik

Page 36: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

36

1p 2p 3p 4p 5p 6p 7p 8p

1p 4p 5p 8p

4p 8p

Page 37: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

37

1p 2p 3p 4p 5p 6p 7p 8p

1p 4p 5p 8p

4p 8p

4ppobednik

Kritična sekcija

Page 38: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

38

Prednosti algoritma sa turnirom

•Ograničene vred. promenljivih

•O(n) promenljivih

•Nema trajnog zaključavanja

(pošto za međuso. isključivanje

para nema trajnog zaključavanja)

Page 39: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

39

MCS algoritam međusobnog isključivanja

Lock=0

next nilLock=0

next

Lock=0

next

Lock=1

next

T

glava rep

Proces

u kritičnoj

sekciji

Proces

koji čeka da uđe u

kritičnu sekciju

Page 40: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

40

Lock=0

next nilLock=0

next

Lock=0

next

Lock=1

next

T

glava rep

Globalna deljena mem.

Lokalne memorije (npr. keš)

Procesi

Kruže na svojim

memorijama

Page 41: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

41

Lock=0

next nilLock=0

next

Lock=0

next

Lock=1

next

T

glava rep

Kritična

sekcija

Page 42: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

42

Lock=0

next nilLock=0

next

Lock=1

next

Lock=1

next

T

glava rep

Kritična

sekcija

Page 43: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

43

Lock=0

next nilLock=1

next

Lock=1

next

T

glava rep

Kritična

sekcija

Page 44: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

44

Lock=1

next nilLock=1

next

T

glavarep

Kritična

sekcija

Page 45: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

45

nil

T

Page 46: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

46

Ulazni kod za procesor i:

Qi = pokaz. na nov queuenode; // Qi, *Qi je u lokalnoj mem.

Qi->Lock = 0;

Qi->Next = nil;

Ti = Swap(T, Qi); //Ti je u lokalnoj mem.

If Ti nil then

Ti -> next = Qi;

else

Qi->Lock =1; //on je na glavi reda

Wait until Qi->lock = 1;

Page 47: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

47

Swap(T,Qi)

{ x = T; //čitaj T

T = Qi; // zameni T i Qi

return x; // vrati staru vred. od T

}

Atomska operacija

Page 48: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

48

nil

T

Lock=0

next nil

Qi je napravljen

Qi

Prazan red

Page 49: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

49

nil

T

Lock=0

next nil

Posle operacije zamene (swap)

Qi

Ti

Page 50: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

50

T

Lock=1

next nil

Posle iskaza if

Qi

u kritičnoj sekciji

Page 51: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

51

T

Lock=1

next nil

Stiže proces j

Qi

Lock=0

next nil

Qj

kritična

sekcija

Page 52: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

52

T

Lock=1

next nil

Posle operacije zamene

Qi

Lock=0

next nil

Qj

Tj

kritična

sekcija

Page 53: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

53

T

Lock=1

next

Posle operacije u iskazu if

Qi

Lock=0

next nil

Qj

kritična

sekcija

Page 54: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

54

nil

T

Lock=0

next nil

Procesi i i j

stižu simultano Qi

Lock=0

next nil

Qj

Prazan red

Page 55: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

55

nil

TiLock=0

next nil

Izvršenje operacije zamene dodeljuje redosled

Qi

Lock=0

next nil

Qj

Tj T

drugiprvi

Page 56: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

56

Lock=1

next

Qi

Lock=0

next nil

Qj

T

kritična

sekcija

Page 57: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

57

Izlazni kod za procesor i:

Ti = Compare&Swap(T, Qi, nil); //Ti je u lokalnoj mem.

If Ti Qi then

wait until (Qi->next nil)

Ti -> next->lock = 1;

Delete Qi and *Qi

Page 58: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

58

Compare&Swap(T,Qi,nil)

{ x = T; //čitaj vrednost T

If T == Qi then

T = nil; //zameni T sa nil aku su T i Qi jednaki

return x; // vrati staru vrednost T

}

Atomska operacija

Page 59: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

59

Lock=0

next nilLock=0

next

Lock=0

next

Lock=1

next

Tkritična

sekcija

Qi

pre compare&swap

Page 60: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

60

Lock=0

next nilLock=0

next

Lock=1

next

Lock=1

next

T

Qi

posle compare&swap

kritična

sekcija

Ti

Page 61: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

61

Lock=0

next nilLock=1

next

Lock=1

next

T

kritična

sekcija

Page 62: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

62

Lock=1

next nilLock=1

next

T

kritična

sekcija

Page 63: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

63

Lock=1

next nil

T

kritična

sekcija

Ekstremni slučaj

Page 64: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

64

Lock=0

next nilLock=1

next nil

T

kritična

sekcija

Ekstremni slučaj

Nov čvor

će bit umetnut

će izvršiti

swapće izvršiti

compare&swap

Page 65: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

65

Lock=0

next nilLock=1

next nil

T

Slučaj 1: swap se izvrši prvi

Čeka dok

next ne pokaže

na nešto

Page 66: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

66

Lock=0

next nilLock=1

next

T

Slučaj 1: swap se izvrši prvi

Page 67: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

67

Lock=1

next nilLock=1

next

T

kritična

sekcija

Slučaj 1: swap se izvrši prvi

Page 68: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

68

Lock=0

next nilLock=1

next nil

T

Slučaj 2: compare&swap se izvrši prvi

nil

Page 69: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

69

Lock=0

next nilLock=1

next nil

T

nil

Slučaj 2: compare&swap se izvrši prvi

Page 70: Languages and Finite Automata - rt-rk.uns.ac.rs · 2 Algoritam sa ceduljicama (Bakery Algorithm) Ovaj algoritam je sličan sa read-modify-write algoritmom Postoji red čekanja: Proces

70

Lock=1

next nil

T

kritična

sekcija

Slučaj 2: compare&swap se izvrši prvi