Zadane 1 Udowodnj, że CAUS PRAM Załóżmy przetwarzane przyczynowo spójne. Dla każdego obrazu hstor hv zachodz zatem: O OW O OW x X p j o O o1 o2 o1 o2 o1 j o2 ( o1 = w( x) v o2 = r( x) v) o1 o2 ( o1 o o2) Zatem zachowana jest własność spójnośc PRAM: O OW p j o1 j o2 o1 o2
Zadane 2 Udowodnj, że SEQ CAUS Podpowedź: Dowód newprost Zastosować prawo zaprzeczena mplkacj ( p q) ( p q) do defncj spójnośc przyczynowej Dla o1 o2 żądanych przez różne procesy rozważyć możlwe kombnacje operacj odczytu zapsu Rozwązane: Dowód newprost: Załóżmy, że kolekcja obrazów poszczególnych procesów spełna własnośc spójnośc sekwencyjnej ne spełna własnośc spójnośc przyczynowej. Zatem dla pewnego (1 n) O OW O OW ( o1 o2 o1 / o2) ( ) o1 j o2 o1 = wxv ( ) o2 = rxv ( ) j x X ( o1 o o2 ) o O o1 / o2
Rozwązane cd: Rozważmy trzy przypadk: 1. 2. O OW j o1 j o2 o1 / o2 Sprzeczność z defncją spójnośc sekwencyjnej. O OW x X o1 = w( x) v o2 = r( x) v o1 / o2 ( ) Sprzeczność z własnoścą uszeregowana legalnego. Rozwązane cd: 3. Załóżmy, że o1 o2 są operacjam wywoływanym przez różne procesy. Rozpatrzmy następujące przypadk: A. o1 = w(x)v o2 = w(y)u Zależność pomędzy dwema operacjam zapsu przyczynowo zależnym: w(x)v r j (x)v w j (y)u. Ze sprzecznośc wykazanej w pkt. 1 2 wynka mplkacja: w(x)v j r j (x)v j w j (y)u w(x)v j w j (y)u.
Rozwązane cd: Z drugego warunku defncj spójnośc sekwencyjnej (w1, w2 OW: =1..n w1 j w2 v =1,..n w2 j w1) w(x)v j w j (y)u zachodz dla każdego j = 1..n. Stąd, z ndukcj: w1 w w2 w1 j w2 w1, w2 OW w OW j= 1.. n Sprzeczność z założenem. Rozwązane cd: B. o1 = w(x)v o2 = r (y)u Możlwe przypadk przyczynowej zależnośc pomędzy o1 o2 są następujące: w(x)v r (y)u (w(x)v w(y)u r (x)v r (y)u o O: w(x)v o r (y)u). Każdy z nch w następujący sposób prowadz do sprzecznośc:
Rozwązane cd:. w(x)v w(y)u w(x)v w(y)u (z pkt. 3a). w(y)u r (y)u w(y)u r (y)u (z pkt. 2) w(x)v r (x)v w(x)v r (x)v (z pkt. 2) r (x)v r (y)u r (x)v r (y)u (z pkt.1). Jeżel przypadek o O: w(x)v o r (y)u ne jest an, to można go zredukować do w(x)v w(z)q r (z)q r (y)u. Stosując odpowedno konkluzje z punktów 3a, 2 1, dostajemy sprzeczność. Rozwązane cd: C. o1 = r (x)v o2 = w(y)u r (x)v w(y)u r (x)v w w(y)u - sprzeczność na postawe punktów 1 3a.
Spójność złożona (complex consstency) W spójnośc CX(SEQ, CAUS, COH, PROC, PRAM) obraz hv hstor h mus spełnać warunk: 1. w1 w2. w2 w1 w1, w2 OW = 1.. n = 1.. n SEQ 2.. w1 w2 w2 w1 x X w1, w2 OW O x = 1.. n = 1.. n COH ( ) 3. o1 o2 o1. o2 O OW CAUS 4. o1. j o2 o1 o2 1, 2 ( COH ) PRAM = 1.. o o O O OW j n Spójność złożona (complex consstency) OW mod zbór wszystkch operacj zapsu żądanych w modelu spójnośc mod. OW SEQ OW CAUS OW PRAM, OW SEQ OW PROC, OW PROC OW PRAM OW PROC OW COH
Zadane 3 Dany jest algorytm Petersona wzajemnego wykluczana dla 2 procesów. Algorytm ten zapsano przy użycu spójnośc złożonej. Z jakm rodzajem spójnośc (MOD =?) należy wykonywać operacje zapsu, aby algorytm dzałał poprawne? Zadane 3 shared flag[0..1]: Boolean /* ntally false */ turn: nteger /* ntally 0 or 1 */ whle true do flag[] := true turn := 1 wat for turn = or not flag[1 ] crtcal secton flag[] := false /* ext secton */ remnder secton end whle Fgure 1. Peterson s algorthm as executed by a process p
Zadane 3 shared flag[0..1]: Boolean /* ntally false */ turn: nteger /* ntally 0 or 1 */ local other : Boolean ; whose : nteger whle true do w MOD (flag[])true w MOD (turn)1 repeat r(turn)whose r(flag[1 ])other untl(whose = or not other ) crtcal secton w MOD (flag[])false /* ext secton */ remnder secton end whle Fgure 2. PetersonME2P_CX algorthm as executed by a process p Zadane 3 P 0 flag[0] := T PROC turn := 1 PROC wat for turn = 0or not flag[1] crtcal secton P 1 flag[1] := T PROC turn := 0 PROC wat for turn = 1or not flag[0] crtcal secton flag[0] := F PROC flag[1] := F PROC Czy może być spójność słabsza nż PROC?
Zadane 4 Udowodnj, że dla zaproponowanych model algorytm z zad.3 jest poprawny. Dowód newprost: Załóżmy, że algorytm pozwala, by oba procesy weszły do sekcj krytycznej. Każdy z procesów wykonuje jedną z sekwencj operacj: A) w PRAM, (flag[])true, w PROC, (turn)1-, r (turn), r (flag[])*, B) w PRAM, (flag[])true, w PROC, (turn)1-, r (turn)*, r (flag[])false. p0:... 0 w PROC,0 (turn)1 0 w PROC,1 (turn)0 0 r 0 (turn)0 0..., p1:... 1 w PROC,1 (turn)0 1 w PROC,0 (turn)1 1 r 1 (turn)1 1... p 0 w PRAM,0 (flag[0])true w PROC,0 (turn)1 r 0 (turn)0 r 0 (flag[1])* p 1 w PRAM,1 (flag[1])true w PROC,1 (turn)0 r 1 (turn)1 r 1 (flag[0])* Executon of the sequence A by processes p0 and p1 Naruszona własność koherencj.
p 0 :... 0 w PROC,0 (turn)1 0... 0 r 0 (flag[1])false 0 w PRAM,1 (flag[1])true 0 w PROC,1 (turn)0 w PROC,0 (turn)1 0 w PROC,1 (turn)0, p 1 :... 1 w PROC,1 (turn)0 1... 1 r 1 (flag[0])false 1 w PRAM,0 (flag[0])true 1 w PROC,0 (turn)1 w PROC,1 (turn)0 1 w PROC,0 (turn)1 p 0 w PRAM,0 (flag[0])true w PROC,0 (turn)1 r 0 (turn)* r 0 (flag[1])false p 1 w PRAM,1 (flag[1])true w PROC,1 (turn)0 r 1 (turn)* r 1 (flag[0])false Executon of the sequence B by processes p0 and p1 Naruszona własność koherencj. p 0 :... 0 w PROC,0 (turn)1 0... 0 r 0 (flag[1])false 0 w PRAM,1 (flag[1])true 0 w PROC,1 (turn)0 w PROC,0 (turn)1 0 w PROC,1 (turn)0, p 1 :... 1 w PROC,1 (turn)0 1 w PROC,0 (turn)1 1 r 1 (turn)1 1..., p 0 w PRAM,0 (flag[0])true w PROC,0 (turn)1 r 0 (turn)* r 0 (flag[1])false p 1 w PRAM,1 (flag[1])true w PROC,1 (turn)0 r 1 (turn)1 r 1 (flag[0])* Executon of sequence B by process p0 and sequence A by p1 Naruszona własność koherencj.
p 0 :... 0 w PROC,0 (turn)1 0 w PROC,1 (turn)0 0 r 0 (turn)0 0..., p 1 :... 1 w PROC,1 (turn)0 1... 1 r 1 (flag[0])false 1 w PRAM,0 (flag[0])true 1 w PRAM,0 (turn)1 w PROC,1 (turn)0 1 w PROC,0 (turn)1, p 0 w PRAM,0 (flag[0])true w PROC,0 (turn)1 r 0 (turn)0 r 0 (flag[1])* p 1 w PRAM,1 (flag[1])true w PROC,1 (turn)0 r 1 (turn)* r 1 (flag[0])false Executon of sequence A by process p0 and sequence B by p1 Naruszona własność koherencj.