1 / 21

Nem determinisztikusság és párhuzamosság.

Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend ; Tetszőleges sorrendet eredményezhet a végrehajtás. S ndet  if true  x:=0  true  x:=1  true  x:=2 fi ;.

menora
Download Presentation

Nem determinisztikusság és párhuzamosság.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: Spar parbegin x:=0   x:=1   x:=2 parend; Tetszőleges sorrendet eredményezhet a végrehajtás. Sndet  if true  x:=0  true  x:=1  true  x:=2 fi; A legnagyobb közös osztó megtalálása: GCD: while xy do if xy then x:= x-y else y:= y-x fi od; GCD': do x  y  x:= x-y  yx  y:= y-x od; Olvasmányosabb megoldás.

  2. Nem determinisztikus program. Szintaxis. 1.) Szekvenciális nem determinisztikus program: S::= skip u  t  S1;S2 if 1 S1 ...  1 Snfi  do 1 S1 ...  n Snod; Speciális esetek: if  then S1else S2fi : if  S1 ~  Snfi ; when  do S od : do   S od ; 2.) Szekvenciális nem determinisztikus program exit iterációval: S::= skip  u  t  S1;S2 if S1 ...  Snfi do SB SEexit od; SB : 1 S1 ...  n Sn ;

  3. A nem determinisztikus ciklus szintakszisának induktív definíciója: Jelölje  azt a nem determinisztikus programot, amelyre: ()(M[]()= ); (do 1 S1 ...  1 Snod)0 = ; (do1 S1 ...  1 Snod)k+1= ifdo 1 S1 ...  1 Snod; (do 1 S1 ...  1 Snod)k  (~1 . . .  ~n) skip fi;

  4. 3.) párhuzamos nem determinisztikus program: S::= skip u  t  S1;S2 if 1 S1 ...  1 Snfi  do 1 S1 ...  n Snod  parbegin S1  S2parend; Atomic program: S; A nem determinisztikus kiválasztás if1 S1 ...  1 Snfi utasítás esetén: • Az i  Si őrfeltétetles utasítás kiválasztása végrehajtásra: • Ha valamelyik i értékre igaz, akkor a kiértékelés után Si • végrehajtódik és az if...fi utasítás végrehajtása befejeződik. • Ha több i értéke is igaz, akkor véletlenszerű kiválasztásra • kerül sor. • Ha minden i{1, . . ., n} esetén i értéke hamis, akkor az • utasítás végrehajtása hibajelzést eredményez, abortál.

  5. Nem determinisztikus iteráció: do1 S1 ...  n Snod utasítás esetén: • Az i Si őrfeltételes utasítás kiválasztása végrehajtásra: • Ha valamelyik i értékre igaz, akkor a kiértékelés után Si • végrehajtódik. • Ha több i értékre is igaz, akkor véletlenszerű kiválasztásra • kerül sor. • A fenti eljárás mind addig ismétlődik, amíg van olyan i, • amelynek értéke igaz. • Ha minden i{1, . . ., n} esetén i értéke hamis, akkor a • do ... od utasítás végrehajtása befejeződik.

  6. Szemantika. Szemantika definiálása állapot átmenetek axiómáival: i = "true" if 1 S1 ...  n Snfi,  Si,; (i=1,...,n). (i{1,...,n})(i = "false")  if 1S1 ...  n Snfi,  E,fail; (E,fail hiba konfiguráció és nincs rákövetkezője!) i = "true" do 1 S1 ...  1 Snod,  Si; do 1 S1 ...  1 Snod,; (i=1,...,n). (i{1,...,n})(i = "false")  do 1 S1 ...  1 Snod,  E,;

  7. Definíció. Adott S nem determinisztikus program és . Az S nem determinisztikus program  kezdeti állapotból elindítva hibás, ha létezik olyan kiszámítása, amely (S',fail) hiba konfigurációban végződik. • Definíció. Adott S nem determinisztikus program és . • Az S nem determinisztikus program parciális helyességi • szemantikája: • M[S]() ={ S,  E,}; • Az S nem determinisztikus program teljes helyességi • szemantikája: • Mtot[S]() = M[S]()  • { S divergál  kezdeti értékből indítva  • {fail S hibás  kezdeti értékből indítva;

  8. Adott S nem determinisztikus program és  esetén: Mtot[S]() vagy véges, vagy tartalmazza  virtuális állapotot. Indoklás a König lemma alapján. Mtot[if then S1else S2fi] = Mtot[if   S1 ~  S2fi]; Mtot[while  do S od] = Mtot[do   S od]; if then S1else S2fi  if   S1 ~  S2fi; while  do S od  do  S od; Mtot[ if then S fi ]  Mtot[ if  S fi ]; nincs fail van fail

  9. Transzformáljuk át a párhuzamos programot nem determinisztikus programmá. Módszer: Adva S  parbegin S1 ... Snparend; Vezessünk be egy pci integer változót minden Si komponenshez. Ez a változó modellezi a programszámlálóját az Si végrehajtása során. Ez a számláló mindenkor az Si komponensen belül végrehajtandó következő atomi utasításra mutat. A pozíciók az Si komponensen belül 0,1,...; Az Si befejezési pontját azonosítsa termi. Si komponensben az atomi akciók "címeinek" halmaza: POSi

  10. Példa: Pozitív értékű elem gyors keresése az a[1:N] tömbben. Specifikáció: (1kN+1(i, 0ik)((a[i]0k  N)  a[k]0); FINDPOS i:=1 ; j:=2; oddtop:=N+1; eventop:=N+1; parbegin S1 S2parend; S1 while i min(oddtop,eventop) do if a(i)  0 then oddtop:= i else i:= i+2 fi; od; S2 while j min(oddtop,eventop) do if a(j)  0 then oddtop:= j else j:= j+2 fi; od; Owicki and Gries [1976]

  11. Példa. S  parbegin S1S2; S1 while i min(oddtop,eventop) do 0 if a(i)  0 then oddtop:= i else i:= i+2 fi 1 2 3 od; 4 S2 while j min(oddtop,eventop) do 0 if a(j)  0 then oddtop:= j else j:= j+2 fi 1 2 3 od; 4 term1=4; term2= 4; POS1 = POS2 = {0,1,2,3,4};

  12. S1 while i  min(oddtop,eventop) do 0 if a(i)  0 then oddtop:= i else i:= i+2 fi 1 2 3 od; 4 T1: do pc1 := 0  i  min(oddtop,eventop)  pc1:= 1;  pc1 := 0  ~(i  min(oddtop,eventop))  pc1:= 4;  pc1 := 1  a[i]  0  pc1:= 2;  pc1 := 1  ~(a[i]  0 )  pc1:= 3;  pc1 := 2  oddtop:= i; pc1:= 0;  pc1 := 3  i:= i+2; pc1:= 0;

  13. S2 while j  min(oddtop,eventop) do 0 if a(j)  0 then oddtop:= j else j:= j+2 fi 1 2 3 od; 4 do pc2 := 0  j  min(oddtop,eventop)  pc2:= 1;  pc1 := 0  ~(j  min(oddtop,eventop))  pc2:= 4;  pc1 := 1  a[j]  0  pc2:= 2;  pc1 := 1  ~(a[j]  0 )  pc2:= 3;  pc1 := 2  oddtop:= j; pc2:= 0;  pc1 := 3  j:= j+2; pc2:= 0; term1= 4; term2= 4;

  14. A nem determinisztikus program: T1 pc1:= 0; pc2 := 0; do pc1 := 0  i  min(oddtop,eventop)  pc1:= 1;  pc1 := 0  ~(i  min(oddtop,eventop))  pc1:= 4;  pc1 := 1  a[i]  0  pc1:= 2;  pc1 := 1  ~(a[i]  0 )  pc1:= 3;  pc1 := 2  oddtop:= i; pc1:= 0;  pc1 := 3  i:= i+2; pc1:= 0;  pc2 := 0  j  min(oddtop,eventop)  pc2:= 1;  pc2 := 0  ~(j  min(oddtop,eventop))  pc2:= 4;  pc2 := 1  a[j]  0  pc2:= 2;  pc2 := 1  ~(a[j]  0 )  pc2:= 3;  pc2 := 2  oddtop:= j; pc2:= 0;  pc2 := 3  j:= j+2; pc2:= 0; od;

  15. M, Mtot; N. • N[S] monoton: (X  Y )  N[S](X)  N[S](Y); • N[S1; S2](X) = N[S2](N[S1](X)); • N[(S1; S2); S3](X) = N[(S1; (S2; S3)](X); • M[(if1S1... nSnfi)](X) = • M[(S1)](X[1])...  M[(Sn)](X[n]); • (X ([1])...  [n]))  • Mtot[(if 1S1... nSnfi)](X) = • Mtot[(S1)](X[1])...  Mtot[(Sn)](X[n]); • M[(do1S1... nSnod)] = • M [do 1S1... nSn)1] ...  M [do 1S1... nSn)];

  16. A segély kiosztásának nem determinisztikus programja. Adva három csoport: a, b, c, akik között ki kell osztani N darab segélyt. A szeretetszolgálat osztja ki az ajándékot. Véletlenszerű az, hogy a soron következő segélyt melyik csoport kapja, de egymás után közvetlenül kétszer ugyan az a csoport nem kaphat segélyt. A csoportok által megkapott segélyek száma legyen mindenkor xa = count(a,ex); xb = count(b,ex); xc = count(c,ex); Ezek kezdőértéke: xa = xb = xc = 0. A kiosztható segélyek száma mindenkor: r = N - (xa + xb + xc ). Így r kezdőértéke: r = N.

  17. A mindenkor utoljára megajándékozott azonosítóját jelölje f{a,b,c}. f kezdőértéke: f = a. A követelmények alapján: Az a csoport kaphat mindenkor segélyt, amelyik nem a legutoljára megajándékozott volt és van még segély: (f  a)  r  0; Készítsük el a kiosztás szimulálásának a nem determinisztikus programját.

  18. kiosztás= (xa  0; xb  0; xc  0; f  a; r  N; átad; átad = do r  0  if f  a  (xa,r)  (xa+1, r-1); f  a  f  b  (xb,r)  (xb+1, r-1); f  b  f  c  (xc,r)  (xc+1, r-1); f  c fi od;

  19. A szemantika definiálásának másik módja a program-stuktúrák tranzakciós diagramjának megadása. S: u  e; ST: ({s,t},{(s, "true"  (u  e), t)}, s, t); "true"  (u  e) s t S: S1;S2; S1T: (L1,T1, s, r); S2T: (L2,T2, r, t); Ha L1 L2 = {r}, akkor ST = S1T; S2T = (L1L2, T1 T2, s, t); S1T S2T s r t

  20. S: if then S1else S2fi; ({s, t},{(s,   (u  fS1), t), (s, ~  (u  fS2), t)},s,t);   fS1 ~   fS2 s t S: if S1 ~   S2fi;   S1T: (L1,T1,s,t); ~ S2T: (L2,T2,s,t); Ha L1L2 = {s,t}, Akkor ST = (L1L2, T1T2, s,t). ST1 s t ST2

  21. S = while do SBod; ({s, t},{(s,   (u fSB), s), (s, ~  skip, t)}, s, t ); ~   skip   fSB s t S = while do SBod; S = do   SB ~   SE; exit od; SBT = (LB, TB, s, t); SET: (LE,TE,s,t); LBLE = {s}; ST: (LB  LE, TBTE, s, t); SE = skip.   SBT ~  SET s t

More Related