Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.

Hasonló előadás


Az előadások a következő témára: "Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével."— Előadás másolata:

1 Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével kommunikálnak. Folyamat a végrehajtás alatt lévő program. Kommunikáció azt jelenti, hogy a közös változó értékét párhuzamosan futó folyamatok kiolvassák, illetve felülírják. Közös változó: olyan változó, amelyhez egynél több folyamat is hozzáférhet. Lokális változó: olyan változó, amelyhez csak egy folyamat férhet hozzá.

2 A párhuzamosan történő végrehajtás követelményei: Követelmény (A közös változóhoz való hozzáférés követelményei). - A hozzáférés a közös változóhoz: a változó értékének kiolvasása vagy felülírása. - A közös változókhoz való hozzáférések atomi operációnak tekintendők. 1. Követelmény (A végrehajtás követelményei). - A végrehajtás sebessége minden, de nem fejeződött folyamat esetén pozitív és tetszőleges, ( kivéve, ha a közös változóhoz való hozzáférésre vár). - Ekkor azonban a hozzáférés kellő idő után garantált és a végrehajtás folytatódhat. - Az atomi műveletek (közös változóhoz való hozzáférések) lineárisan sorba rendezettek, de a sorrend véletlenszerű. 2.

3 A közös változókhoz való hozzáférések lineárisan sorba rendezettek. Megvárakoztatás. (blokkolt állapot). Követelmény, garantált a hozzáférés minden folyamat számára. (holtpont mentesség állapota). Folyamatok végrehajtási sebessége pozitív érték, kivéve, ha a közös erőforrásra várnak. (fair követelmény). Reynold féle kritérium: Ha az 1., 2. követelmények teljesülnek, a párhuzamos komponensek végrehajtása során érvényes a program állapotára vonatkozóan a nem determinisztikus egymás utáni atomi végrehajtás  a logikai kiértékelés és  a felülírás, (feltéve, hogy a logikai kiértékelés és felülírás közös változót tartalmaz).

4 Atomi (primitív) művelet, utasítás végrehajtása: - meg nem szakítható végrehajtás, - aszinkron módon. Atomi műveletek: - Egy bool kifejezés kiértékelése. - Egy változó értékének a kiolvasása. - Értékadás egy változónak. Atomi utasítás. Egy olyan S program szakasz, amelyet atomivá teszünk, amelyet ciklust, vagy atomi utasítást nem tartalmaz. Jelölés:  S  ;

5 Közös változóval rendelkező determinisztikus párhuzamos program szintaxisa: S ::= skip | y  t | S 1 ;S 2 | if  then S 1 else S 2 fi | while  do S 1 od | parbegin S 1  S 2 parend ; atomi program:  S  ; Más jelölés: while  do S 1 od : do   S 1 od; Szemantika.  S,     E,   S ,     E,  M[  S  ]({p}) = M[S]({p})

6 Lemma. A közös változóval rendelkező párhuzamos program blokkolás-mentes. T.i.: Minden  S,   konfigurációnak S  E és  esetén van rákövetkezője a  reláció szerint. Lemma. Minden S párhuzamos program  esetén a  S,   konfigurációnak véges számú rákövetkezője van a  reláció mellett. Következik: A szintaktikai axiómákhoz, szabályokhoz rendelt tranzakciók relációinak definícióiból.

7 Lemma. Adott S és  kezdő állapot. M tot [S](  ) vagy véges számú állapotot tartalmaz, vagy csak a  virtuális állapotot. A bizonyítás a fákra vonatkozó König lemma [1927] adaptációjával mutatható ki. Ezt Knuth D. E. végezte el 1968-ban.

8 Programhelyesség bizonyításnál feltesszük: Bool kifejezés, értékadás, skip, atomi régió, kiértékelődik ill. végrehajtódik atomi akcióként: Meg nem szakíthatók; Egymás után hajtódnak végre, de a végrehajtás sorrendje nincs meghatározva. A konvencionális hardver ezt nem garantálja. Garancia: Általában a kritikus hivatkozások atomi kezelését garantálja, kizárólagos írási vagy olvasási atomi hozzáférést garantál az egyszerű, vagy indexes változók esetében. y  f(x,y) :  y  f(x,y) 

9 Példa: S  parbegin x  y  y  x parend; Feltevéssel: x  y esetén két atomi művelet van: y kiolvasása és az x értékének felülírása a kiolvasott értékkel. Legyen x=1; y=2; Lehetséges eredmények: x=y=2; x=y=1; x=2 és y=1. A parallel modellünk jelentése nem azonos a hagyományos hardware által nyújtott megoldással. Minden komponens program szoftver-akkumulátorok bevezetésével áttranszformálható egy olyan vele ekvivalens párhuzamos programmá, ahol minden atomi akció egy hozzáférést jelent a közös változóhoz. S'  parbegin AC 1  y; x  AC 1  AC 2  x; y  AC 2 parend; A párhuzamosság atomi egységére vonatkozó  x  y  szemantikai meghatározásunk az egyszerű kezelés célját szolgálja a helyességbizonyításnál.

10 Ha az ahol s egy közös változó, akkor ez azonos a hagyományos hardver által nyújtott lehetőséggel. A párhuzamos program helyesség bizonyítását leegyszerűsíti a virtuális atomi definíciónk. Minél kisebb egységre vonatkozik az atomi definíciónk annál inkább megfelel a valóságos végrehajtásnak. Minél nagyobb egységre vonatkozik az atomi definíciónk annál inkább megkönnyíti a program helyességének a bizonyítását.

11 Párhuzamos program szinkronizációval. A feltételes atomi utasítás szintaxisa:  b  S  ; Dijkstra - féle jelölés: await b then S ta; Speciális esetek: await "true" then S ta; await b then skip ta; await b then ta; wait b tw; A Dijkstra - féle atomi szemafor utasítások: P(s): s  s-1; if s  0 then állj be az s-hez rendelt várakozó sorba fi; V(s): s  s+1; if s  0 then induljon el egy folyamat az s-hez rendelt várakozó sorból fi;

12 A Dijkstra féle szemafor utasítások egyszerű implementációja: P(s) : await s  0 then s  s-1 ta; V(s) : await "true" then s  s+1 ta; Egy pontos implementáció: P(s) : await "true" then begin s  s-1; if s  0 then V[j]  "false" fi; await V[j] then ta end ta; V(s) : await "true" then begin s  s+1; if s  0 then begin válassz egy olyan i-t, amelyre V[i] = "false"; V[i]  "true" end fi end ta;

13 Szemantika. Az őrfeltételes atomi utasítás jelentése:  (b) = "true"   S,     E,     b  S ,     E,    (b) = "true"   S,     E,    await b then S ta,     E,   A holtpont állapot informális definíciója. Az S párhuzamos program holtpont állapotba jutott, ha a program végrehajtása nem fejeződött be és annak minden olyan komponense, amely nem fejeződött be, blokkolt állapotban van.

14 Párhuzamos program szinkronizációval. Szintaxis. S ::=  b  y  f(x,y)   S 1 ; S 2  if b then S 1 else S 2 fi  while b do S od  parbegin S 1  S 2 parend; Feltételes meg nem szakítható (atomi) utasítás:  b  S  ; amely nem tartalmazhat iterációt, vagy másik atomi utasítást. parbegin S 1 ...  S n parend; Más jelölései: cobegin S 1 ...  S n coend; [ S 1  S 2 ];

15 Lemma. A párhuzamos program végrehajtása során, a  állapotban, a p(  ) állítás mellett, az await b then S ta utasításnál blokkolt állapotba kerül, ha p(  )  ~b = "true". Definíció. Adva az S párhuzamos program, és annak egy  állapota a p(  ) = "true" mellett. Az  S,  konfigurációt holtpontnak nevezzük, ha 1.1. ~(S  E); 1.2.  S,    S',  '  tranzakció nem létezik. A holtpont virtuális állapot jele: . Az S program a  állapotból holtpontra juthat, ha létezik olyan kiszámítás, amely holtpont konfigurációban végződik.

16 Az S program holtpontmentes, (p mellett) ha nem létezik olyan  állapot p(  ) = "true" mellett, amelynél S holtpontra juthat. Az S párhuzamos program szemantikája. Parciális helyességi szemantikája  kiindulási állapot mellett: M[S](  ) = {    S,      E,   }. Gyenge teljes helyességi szemantikája  kiindulási állapot mellett: M wtot [S] (  ) = M[S](  )  {  S divergál  kezdő állapotból}. Teljes helyességi szemantikája  kiindulási állapot mellett: M tot [S] (  ) = M wtot [S] (  )  {  S holtpontba jut  kezdő állapotból}. ( , , fail  virtuális állapotok).

17 Példa. Kölcsönös kizárás: Probléma: Adva egy erőforrás, amelyet "n" folyamat használ feladatainak megoldása során, ahol 0  n. Követelmények: Kölcsönös kizárás. Az erőforrást egy adott időpontban legfeljebb csak egy folyamat használhatja. Blokkolás mentesség. A párhuzamos folyamatok futását a szinkronizáció ne függessze fel végtelen hosszú időre. Erőforráshoz való hozzáférhetőség. Minden egyes folyamat, ha használni akarja az erőforrást, akkor véges időn belül használhassa azt.

18 A követelmények formális megfogalmazása. S: inicializálás; parbegin S 1 ...  S n parend; S i : while "true" do NK i ; EI i ; EH i ; EF i ; od ; ahol: (  i,k,1  i,k  n  i  k) [( var(NK i )  var(EH i ))]  [( var(EI k )  var(EF k ))] = { }; (az elkészítés és erőforrás használatának változói különböznek az igénylés és a felszabadítás változóitól) Feltevés: NK i és EH i nem tartalmaz őrfeltételes utasítást.

19 Definíció. a.) Kölcsönös kizárás: Az S végrehajtása során nem létezik olyan  parbegin R 1 ...  R n parend,   konfiguráció, ahol valamilyen j,k  {1,..., n}, i  j esetén R j  at(EH j in S j ) ; R k  at(EH k in S k ), b.) Blokkolás-mentesség: Nincs olyan végrehajtás  :  S,    T,  amely holtpont konfigurációban végződik. Triviális megoldás: S j : while "true" do NK j ;  EH j  ; od;

20 A kölcsönös kizárás Dijkstra féle megoldása: out  bool; S: out  T; parbegin S 1 ...  S n parend; A folyamatok szerkezete: S i : while "true" do NK i ; P(out); EH i ; V(out); od; P : passeren; V: vrijgeven; Szemaforral: s  k; k  0; P(out)  await out then out  F ta; V(out)  out  T; P(s)  await s  0 then s  s-1 ta;

21 Párhuzamos nem determinisztikus program szinkronizációval. Szintaxis. Nem determinisztikus kiválasztás: if b 1  S 1 ...  b n  S n if Nem determinisztikus iteráció: do b 1  S 1 ...  b n  S n od Kilépéses nem determinisztikus iteráció: do S B  S E ; exit od S B : b 1  S 1 ...  b n  S n ; S ::=  b  y  f(x,y)   S 1 ; S 2  if b 1  S 1 ...  b n  S n if  do b 1  S 1 ...  b n  S n od  do S B  S E ; exit od  parbegin S 1  S 2 parend;


Letölteni ppt "Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével."

Hasonló előadás


Google Hirdetések