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

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

... 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.

Kiterjesztések sek szemantikája

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

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

Programok értelmezése

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

Alapszintű formalizmusok

Termelő-fogyaszt. fogyasztó modell

Időzített átmeneti rendszerek

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.

Bevezetés az informatikába

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

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

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

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

UML (Unified Modelling Language)

A SPIN használata, példák II

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Programozási módszertan

A modell-ellenőrzés gyakorlata UPPAAL

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

Modell alapú tesztelés mobil környezetben

Komputeralgebra Rendszerek

Fordítás Kódoptimalizálás

Java programozási nyelv

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

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

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

Programozási nyelvek (ADA)

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

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

Szkriptnyelvek. 1. UNIX shell

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.

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

Dinamikus modell: állapotdiagram, szekvencia diagram

Alkalmazások architektúrája

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

Informatika 1 2. el adás: Absztrakt számítógépek

Java II. I A Java programozási nyelv alapelemei

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

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:

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

Alapszintű formalizmusok

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

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

Számítógép architektúra

Szoftver-modellellenőrzés absztrakciós módszerekkel

Programozás Minta programterv a 1. házi feladathoz 1.

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

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Informatika terméktervezőknek

A JavaScript főbb tulajdonságai

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

Maximum kiválasztás tömbben

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

Szoftverminőségbiztosítás

Java II. I A Java programozási nyelv alapelemei

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Modellek ellenőrzése és tesztelése

Kölcsönhatás diagramok

ERLANG PROGRAMOK TRANSZFORMÁCI CIÓJA ERLANG

Szimuláció. Fault Tolerant Systems Research Group. Budapest University of Technology and Economics. Department of Measurement and Information Systems

Modellezés Petri hálókkal. dr. Bartha Tamás dr. Majzik István dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék

Programozás alapjai. 2. előadás

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

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

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

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

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

Időzített rendszerek és az UPPAAL II

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

A L Hospital-szabály, elaszticitás, monotonitás, konvexitás

Programfejlesztési Modellek

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

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

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Programozási alapismeretek 3. előadás

A C# programozási nyelv alapjai

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

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

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

Programozás alapjai (ANSI C)

Szoftverminőségbiztosítás

Programozási technológia

Szoftvertervezés és -fejlesztés I.

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

1. Jelölje meg az összes igaz állítást a következők közül!

AZ ALGORITMUS. az eredményt szolgáltatja

Valószínűségi változók. Várható érték és szórás

Software Engineering Babeş-Bolyai Tudományegyetem Kolozsvár

Csatorna: Jelölések:... 2 Megjegyzés:... 2 műveletei:... 2 Tulajdonságai: split: Definíció:... 4 Létezik-e split?... 4 MUX...

Részletes szoftver tervek ellenőrzése

Szoftver karbantartási lépések ellenőrzése

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

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Nem ellenőrzött!!! Tartalom

Átírás:

Osztott rendszer Osztott rendszer informális definíciója Egymástól elkülönülten létező program-komponensek egy halmaza. A komponensek egymástól függetlenül dolgoznak saját erőforrásukkal. A komponensek időről-időre egymásnak üzeneteket küldenek a közös feladat megoldása érdekében. Osztott programrendszer végrehajtása Párhuzamosan futó folyamatoknak egy halmaza. Minden folyamat rendelkezik saját változókkal. A különböző folyamatokhoz tartozó változók halmazai diszjunktak. A folyamatok egymással üzenetek révén kommunikálnak.

Osztott rendszer folyamat 1 lokális változók folyamat 2 lokális változók folyamat n lokális változók csatorna üzenetek Üzenet formában történő kommunikáció Szinkron kommunikáció Aszinkron kommunikáció Kommunikáció csatornán keresztül A kommunikációs csatorna nem irányított A kommunikációs csatornának nincsen típusa

Kommunikáci ciós s csatorna Input utasítás Szintaxis: C?x C csat, csat csatornák halmaza x egyszerű változó. Jelentés Output utasítás Azt fejezi ki, hogy az utasítást kiadó program x változója egy értéket fogadjon a C csatornán keresztül. Ha ez teljesül, akkor x változó felveszi az értéket. Szintaxis: C!e C csat, ahol csat a csatornák halmaza e: a C!e utasítást kiadó programnak lokális változóival képezett aritmetikai kifejezés, Jelentés Azt fejezi ki, hogy az utasítást kiadó program az e kifejezés értékét elküldje a C csatornán keresztül.

Kommunikáci ciós s csatorna Őrfeltétellel ellátott csatornautasítás Szintaxis b;c?x; illetve b;c!e, ahol b logikai kifejezés. Jelentés Az I/O csatorna utasítás kiegészül egy tesztelési függvénnyel, amely folyamatosan vizsgálja, hogy lehetséges-e a kommunikáció a C csatornán keresztül. Jelölések Amíg ez nem következik be, a b kifejezés kiértékelése "false értéket eredményez. Ha bekövetkezik, "true" értéket eredményez. A "true";c?e illetve "true"; C!e rövid jelölése: C?e var(s): channel(s): összes változó + csatorna nevek csatornanevek S-ben C!e

Kommunikáci ciós s csatorna b 1 ;C?u és b 2 ;C!e utasítások egymáshoz illeszthetőek azonos csatornára hivatkoznak e kifejezés és u változó típusa azonos b 1 és b 2 őrfeltételek kiértékelése igaz értéket szolgáltat Az α 1 :C?u, α 2 : C!e illesztés eredménye: u e; Szinkron kommunikáció jelentése C csatornán keresztül a b 1 ;C?u, b 2 ;C!e egymáshoz illeszthető utasítás pár esetén Várakozás Mindkét kérés teljesítésének várnia kell, amíg a másik nem jelenik meg. Egyidejűség Mindkét kérés végrehajtása egyszerre történik meg. Értékadás A kommunikáció eredménye az, hogy az u e értékadás megtörténik.

Osztott rendszer Definíciók Az osztott rendszer S 1 és S 2 folyamatai diszjunktak, ha change(s 1 ) var(s 2 ) = var(s 1 ) change(s 2 ) = { } Az S i és S j (i j) folyamatokat a C csatorna összeköti, ha C channel(s i ) channel(s j ) A S 1,..., S n folyamatok pontról pontra összekötöttek, ha 1 i < j < k n : channel(s i ) channel(s j ) channel(s k ) { } Osztott program parbegin S 1... S n parend; S 1,..., S n folyamatok páronként diszjunktak Bármely 1 i < j < k n esetén az S i, S j, S k folyamatok pontról pontra összekötöttek S végrehajtása befejeződik, ha mindegyik S j befejeződik.

Komponens elvű programfejlesztés C. B. Jones A pre/post specifikációkat minden sc komponens (shared component) esetén egészítsük ki megbízhatósági / garancia (rely / garantee) előírással is: { p, r } sc { g, q } Előfeltétel: p: Σ Σ Utófeltétel: q: Σ Σ Σ Megbízhatósági feltétel: r: Σ Σ Σ Garancia feltétel: g: Σ Σ Σ Probléma A programfejlesztés alávetése a szekvencializációs szabályoknak!

Komponens elvű programfejlesztés Modellalkotás 1990-es évek végén: Warmer J., Kleppe A.: The Object Constraint Language Precise Modelling with UML Lényege: Probléma megoldásának modelljei + korlátozások Forgatókönyv (scenario) készítésekor rögzítjük a komponensekre vonatkozó megállapodásokat: contracts, scenario, prototype. Probléma megoldás számítógépes hálózaton keresztül A problémát ágensek oldják meg úgy, hogy összehangolt akciókkal kívánják a közös célt elérni.

Komponens elvű programfejlesztés Ágens Akció Cél Felhasználó, program, rendszer, stb. Tevékenységek végrehajtása. Például: Gomb megnyomása, üzenet, algoritmus végrehajtása, stb. A rendszer kívánt állapotának elérése egy jövőbeli időpontban. Összehangolás Kontraktus alapján (komponensek közötti szerződés) Kontraktus, megállapodás Dokumentum, specifikáció, program szövege Probléma Adott a kontraktus, és az ágensek egy halmaza. Kérdés: Egy adott célt képesek-e elérni az ágensek az adott kontraktussal?

Kontraktus felhasználó és s gép g p közöttk Batch feldolgozás Választás a számítógépé (belső nem determinisztikus választás) Dijkstra: abort = {false} user Ha abort-ot hajtott végre a felhasználó, jelzi, hogy a felhasználó megsértette a megállapodást. Ugyanis a számítógép felhatalmazást kapott a további rész akár hibás végrehajtásra is. Interaktív program Példa A felhasználónak van választási lehetősége a végrehajtásnál. (Alternatívák közül választhat) A számítógép belső döntéseket hozó mechanizmus szerint dolgozik. S = S 1 ; S 2 a felhasználó b számítógép S 1 = (x : = x + 1 a x: = x + 2 ); S 2 = (x : = x - 1 b x: = x - 2 );

Kontraktus a felhasználó és s a gép g p közöttk S = S 1 ; S 2 a felhasználó b számítógép S 1 = (x : = x + 1 a x: = x + 2 ); S 2 = (x : = x - 1 b x: = x - 2 ); A felhasználó választása attól függ, hogy mit akar elérni: x 0 vagy x 0 a x:= x+1 x:= x+2 b b x:= x - 1 x:= x - 2 x:= x-1 x:= x-2 x = 0 x = -1 x = 1 x = 0

Ágens rendszerek Legyen Ω az ágensek egy összessége, A az ágensek egy halmaza és a, b, c A. Ekkor az ágens rendszer = (A, S, I ct, Q). A : a rendszer ágenseinek véges halmaza S : S 0 ; do b 1 S 1 a... a b n S n a S E ; exit; od; S 0, S 1,..., S n ; nem determinisztikus programok. S 0 : rendszer indulása előtt elvégzendő feladatok végrehajtására szolgáló program (inicializálás). I ct : a A : Q : kontraktust rögzítő invariáns ágens a megfelelő komponens kiválasztásáért felelős az ágens rendszer végrehajtása során elérendő célállítás

Példa: Kecske, farkas és s káposztak átszállítása a folyón Kontraktus A farkas a kecskével csak akkor lehet együtt, ha a hajós is ott van: fa = ke ha = fa A kecske a káposztával csak akkor lehet együtt, ha a hajós is ott van: A kontraktus invariánsa ( l ct ): Kiindulási állapot: Q Cél állapot: Ágens(ek): a hajós (fa = ke ha = fa) (ke = ká ha = ke) ( n { fa, ke, ká, ha })(n bool) ke = ká ha = ke ha = F fa = F ke = F ká = F ha = T fa = T ke = T ká = T

Példa: Kecske, farkas és s káposztak átszállítása a folyón átkelés = ha := F; fa := F; ke := F; ká := F; do od; ha = fa (ha, fa) := ( ha, fa); a ha = ke (ha, ke) := ( ha, ke); a ha = ká (ha, ká) := ( ha, ká); a ha = ha; a skip; exit a: hajós;

Példa: Raktár r szimuláci ció Egy raktárban háromféle áru raktározható Áruféleségek: Raktár kapacitása: Kikötések A, B, C N B és C áru vegyesen tárolható. A és C áru vegyesen tárolható. A és B áru nem tárolható vegyesen. Nem determinisztikus módon érkeznek/távoznak az árúk. Készítsük el a helyes működésének szimulációját. Adott áruból raktáron lévő mennyiség n A = cont(a,ent) - count(a,ex) n B = cont(b,ent) - count(b,ex) n C = cont(c,ent) - count(c,ex)

Példa: Raktár r szimuláci ció Kontraktus B és C áru vegyesen tárolható, ha nincs a raktárban A áru N n B + n C 0 n A = 0 A és C áru vegyesen tárolható, ha nincs a raktárban B áru N n A + n C 0 n B = 0 Komponensek közötti megállapodást rögzítő I ct (N, n A, n B, n C ) invariáns ((N n 0 n A = 0) (N n 0 n B = 0)) (n = n A + n B + n C )

Példa: Raktár r szimuláci ció raktár = (n A 0; n B 0; n C 0; n N; raktároz; raktároz = do beszállít a elszállít a skip; exit od; a, b, c A', ágenshalmaz beszállít = if (N > n 0 n B = 0) ( binsert(r, A); (n A, n) ( n A + 1, n + 1) ) b (N > n 0 n A = 0) ( binsert(r, B); (n B, n) ( n B + 1, n + 1) ) b (N > n 0) ( binsert(r, C); (n C, n) ( n C + 1, n + 1) ) fi; elszállít = if (n A > 0) ( bdelete(r, A); (n A, n) ( n A - 1, n - 1) ) c (n B > 0) ( bdelete(r, B); (n B, n) ( n B - 1, n - 1) ) c (n C > 0) ( bdelete(r, C); (n C, n) ( n C - 1, n - 1) ) fi;

Fair tulajdonság Példa nem fair programra S 1 jel:= "false"; do ~ jel következő sor nyomtatása ~ jel jel:= "true" od; // nyomtatás // kilépés A nem determinisztikus program szemantikája nem garantálja, hogy a második sor megkapja a vezérlést. Gyenge fair követelmény A do od ciklusban minden olyan őrfeltételes utasítás, amely valamely időponttól folyamatosan készen áll a végrehajtásra, annak végtelen sokszor aktiválódni kell. Az első komponens ilyen feltétel esetén nem aktiválódhatott volna kizárólagosan, ha a második komponens kész a végrehajtásra.

Fair tulajdonság Példa erősen fair programra S 2 jel:= "false"; lap := "false"; i := 0; do ~ jel következő sor nyomtatása; i := (i+1) mod 30; lap := (i=0) ~ jel lap jel:= "true" od; Most is az első tud aktiválódni először, de 30 nyomtatás után a második komponens indulásának feltétele folyamatosan teljesül, így a második ág végrehajtásra kerül. A második ág végrehajtása után egyik komponens belépési feltétele sem teljesül, ezért az iteráció befejeződik. Ezt az esetet nevezik erős fair (strong fairness) tulajdonságnak.

Fair tulajdonság Egyszerű, egyszintű nem determinisztikus program S 0 ; do α 1 S 1... α n S n od; S 0, S 1,..., S n determinisztikus komponensek. Fair nem determinisztikus szemantika definíciója S egyszintű, nem determinisztikus program esetén σ Σ kezdőállapot mellett M fair [S](σ) = { τ < S, σ > * < E, τ > } { S divergálhat σ kezdő állapotból egy fair kiszámítás esetén } { fail S hibás eredményre juthat σ kezdő állapotból } M tot [S](σ) és M fair [S](σ) közötti különbség