... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Hasonló dokumentumok
6. Közös változóval rendelkező párhuzamos program, Közös változó,

Kiterjesztések sek szemantikája

Termelő-fogyaszt. fogyasztó modell

Osztott rendszer. Osztott rendszer informális definíciója

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Programok értelmezése

S0-01 Szintézis és verifikáció (Programozás elmélet)

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

BASH script programozás II. Vezérlési szerkezetek

Komputeralgebra Rendszerek

Programozási módszertan

Occam 1. Készítette: Szabó Éva

Java II. I A Java programozási nyelv alapelemei

Szkriptnyelvek. 1. UNIX shell

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

Alap fatranszformátorok II

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Időzített átmeneti rendszerek

A digitális számítás elmélete

Algoritmusok helyességének bizonyítása. A Floyd-módszer

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

S0-02 Típusmodellek (Programozás elmélet)

Java programozási nyelv

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Java II. I A Java programozási nyelv alapelemei

Informatika terméktervezőknek

LabView Academy. 4. óra párhuzamos programozás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Kifejezések. Kozsik Tamás. December 11, 2016

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Markov-láncok stacionárius eloszlása

A C# programozási nyelv alapjai

ködös határ (félreértés, hiba)

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Algoritmizálás + kódolás C++ nyelven és Pascalban

AWK programozás, minták, vezérlési szerkezetek

Programozási nyelvek (ADA)

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Hardver leíró nyelvek (HDL)

Diszkrét matematika 2.C szakirány

Programozási Módszertan definíciók, stb.

Algoritmizálás és adatmodellezés tanítása 1. előadás

Operációs Rendszerek II. labor. 2. alkalom

Diszkrét matematika 2. estis képzés

UNIX: folyamatok kommunikációja

Apple Swift kurzus 3. gyakorlat

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Atomi műveletek őrfeltételének meghatározása. Konkrét program elkészítése. 1. Példa: Számítógép labor használata.

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

AWK programozás, minták, vezérlési szerkezetek

Alapszintű formalizmusok

Előadás_# Az első ZH megírása

Analízis I. Vizsgatételsor

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

Kongruenciák. Waldhauser Tamás

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Szoftvertervezés és -fejlesztés I.

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Feldspar: Nyelv digitális jelfeldolgozáshoz

Algoritmizálás, adatmodellezés tanítása 6. előadás

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Formális nyelvek - 9.

Számítógépes döntéstámogatás. Genetikus algoritmusok

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

2. Logika gyakorlat Függvények és a teljes indukció

Szoftvertechnológia alapjai Java előadások

Informatika 1 Operációs rendszerek

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

A modell-ellenőrzés gyakorlata UPPAAL

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Diszkrét matematika 2. estis képzés

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Programozás II. 2. Dr. Iványi Péter

Dr. Schuster György február / 32

Szoftverminőségbiztosítás

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Átírás:

Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat a végrehajtás alatt lévő program. Kommunikáció jelentése a közös változók értékének párhuzamosan futó folyamatok általi kiolvasása, felülírása. Közös változóhoz egynél több folyamat is hozzáférhet, Lokális változóhoz csak egyetlen folyamat férhet hozzá.

Párhuzamos végrehajtv grehajtás követelményei Közös változóhoz való hozzáférés követelményei Hozzáférés 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. Végrehajtás követelményei A végrehajtás sebessége minden, be 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). Közös változóhoz való hozzáférésre várakozás esetén 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ű.

Párhuzamos végrehajtv grehajtás követelményei A közös változókhoz való hozzáférések lineárisan sorba rendezettek. Megvárakoztatás (blokkolt állapot) Garantált hozzáférés minden folyamat számára (holtpont mentesség) Folyamatok végrehajtási sebessége pozitív érték, kivéve közös erőforrásra várakozásnál (fair követelmény) Reynold féle kritérium Ha az 1., 2. követelmény teljesül, 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, azaz logikai kiértékelés, 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).

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

Közös s változv ltozóval rendelkező determinisztikus párhuzamos p program Szintaxis 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})

Közös s változv ltozóval rendelkező determinisztikus párhuzamos p program Lemma A közös változóval rendelkező párhuzamos program blokkolás-mentes. Ugyanis, 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 és σ Σ 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.)

Atomi utasítások sok Programhelyesség bizonyításánál feltesszük Bool kifejezés, értékadás, skip, atomi régió mindegyike atomi akció, azaz Meg nem szakíthatók, vagy Egymás után hajtódnak végre, de a végrehajtás sorrendje nincs meghatározva. Egy hagyományos 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) >

Példa S parbegin x y y x parend; x y esetén atomi műveletek: y kiolvasása, x értékének felülírása. x = 1; y = 2; esetén lehetséges eredmények: x = y = 2; x = y = 1; x = 2 és y = 1. A parallel modell 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ás az egyszerű kezelés célját szolgálja a helyességbizonyításnál.

Atomi utasítások sok A párhuzamos program helyesség bizonyítását leegyszerűsíti a virtuális <S> atomi definíció. 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.

Párhuzamos program szinkronizáci 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;

Dijkstra-féle szemafor utasítások sok Egyszerű implementáció 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; ta; await V[j] then ta end if s < 0 then V[j] "false" fi; V(s) : await "true" then begin s s+1; if s 0 then begin válassz i-t, ahol V[i] = "false"; fi end ta; end V[i] "true

Szemantika, holtpont állapot 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,τ > 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.

Párhuzamos program szinkronizáci 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. Jelölés parbegin S 1... S n parend; Más jelölések cobegin S 1... S n coend; [ S 1 S 2 ];

Párhuzamos program szinkronizáci cióval 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, Definíció ha p(σ) ~b = "true". Legyen S párhuzamos program és annak egy σ állapotára p(σ) = "true". Az <S, σ> konfigurációt holtpontnak nevezzük, ha ~(S E); <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.

Párhuzamos program szinkronizáci cióval 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)

Példa: kölcsk lcsönös s kizárás Probléma Adott egy erőforrás, amelyet n > 0 db folyamat használ feladatainak megoldása sorá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.

Példa: kölcsk lcsönös s kizárás A követelmények formális megfogalmazása S: inicializálás; parbegin S 1... S n parend; ahol i, k, 1 i, k n i k esetén [( var(nk i ) var(eh i ))] [( var(ei k ) var(ef k ))] = { } (az előké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. Elnevezések NK Nem közös változókat használó programrész EI Erőforrás igénylés EH Erőforrást használó programrész EF Erőforrás felszabadítása S i while "true" do NK i ; EI i ; EH i ; EF i ; od ;

Kölcsönös s kizárás, blokkolás-mentess mentesség Triviális megoldás: Definíció Kölcsönös kizárás Az S végrehajtása során nem létezik olyan S j : while "true" do NK j ; EH j ; od; < parbegin R 1... R n parend, σ > konfiguráció, hogy valamely j, k {1,..., n}, j k esetén R j at(eh j in S j ) ; R k at(eh k in S k ) Blokkolás-mentesség Nincs olyan végrehajtás σ Σ : <S, σ> <T, > amely holtpont konfigurációban végződik.

Dijkstra féle f kölcsk lcsönös s kizárás out bool; S: out True; parbegin S 1... S n parend; P: passeren V: vrijgeven Szemaforral: s k; k > 0; P(out) await out then out False ta; V(out) out True; P(s) await s > 0 then s s - 1 ta; S i : while "true" do NK i ; P(out); EH i ; V(out); od;

Párhuzamos, nem determinisztikus program szinkronizáci cióval Szintaxis Nem determinisztikus kiválasztás if b 1 S 1... b n S n fi 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;