Szekvenciális tranzakciós s diagram A program vezérlési szerkezete egy címkékkel ellátott irányított gráf. Tranzakciós diagram T = ( L, T, s, t ) Gráf csúcsok a program állapotai entry kitüntetett csúcs: indulási állapotot azonosító cimke: s exit kitüntetett csúcs: befejező állapotot azonosító cimke: t L állapotokat azonosító címkék halmaza: l L A gráfban minden él egy állapotátmenet, melyhez egy utasítás tartozik címkeként: c f l c logikai feltétel, f állapot transzformáció. (l, c f, l') T állapotátmenetek halmaza. l l'
Tranzakciós s diagram kiszámítása sa Egy P = (L, T, s, t) tranzakciós diagram egy η végrehajtása (kiszámítása) a σ 0 kezdőértékkel a kezdő l 0 címkétől l i, σ i konfigurációk egy sorozata: η: l 0,σ 0 l 1,σ 1 l 2,σ 2... ahol l 0 = s. Minden tranzakcióhoz létezik l c f l' úgy, hogy c(σ i ) = true és σ i+1 = f(σ i ) A sorozat nem bővíthető. Ha véges, akkor az utolsó konfigurációnak nincs rákövetkezője.
Tranzakciós s diagram kiszámítása sa Ha a sorozat véges és az utolsó konfiguráció: t,τ val(η) = τ (τ Σ) Ha a sorozat véges és az utolsó konfiguráció: l n, τ, l n t val(η) = fail Ha a sorozat végtelen val(η) = (, fail Σ) comp(p)(σ): P kiszámításainak halmaza, a σ kiindulási állapot mellett. A P tranzakciós diagram jelentése: M[P](σ) = { val(η) η comp[p](σ) }
Tranzakciós s diagram A tranzakciós diagram jelentése az összes lehetséges σ eredmény-érték halmaza, ( fail, M[P](σ) ). A jelentés független az aktuális végrehajtási sorozatoktól, amelyek azt eredményezték. Definíció Adott P = ( L, T, s, t ) és P' = ( L', T,s,t ), azonos Σ állapot halmazzal. A tranzakciós diagramok eredményük alapján megegyeznek, ha létezik egy átnevezés, amely áttranszformálja P összes csomópontját P' megfelelő csomópontjába, vagyis formálisan bijekciót létesít L L', T T', s s', valamint t t' között.
Tranzakciós s diagram Definíció: Tranzakciós diagramok ekvivalenciája A P = ( L, T, s, t ), P' = ( L', T', s', t' ) tranzakciós diagramokat ekvivalensnek nevezzük, ha létezik egy Φ: L L' bijekció úgy, hogy s = Φ(s) t = Φ(t) ( l, α, m ) T akkor és csak akkor, ha ( Φ(l), α, Φ(m) ) T'. Definíció: Ekvivalens tranzakciós diagramok egy osztályát tranzakciós rendszernek, másképpen programnak nevezzük.
Tranzakciós s diagram A programok és a tranzakciós diagramok között bijekció áll fenn. Tranzakciós diagramok ekvivalencia osztályában minden tranzakciós diagramnak azonos a jelentése. Az osztály egy programjának jelentését úgy definiálhatjuk, hogy veszünk egy tetszőleges elemet az osztályból, azaz veszünk egy tranzakciós diagramot, mint az osztály reprezentánsát: Legyen a program: P = ( L, T, s, t ) Elemezzük P -t. Az elemzés eredménye az osztály minden tagjára érvényes.
Példa Példa Σ = { x, y, z }, σ Σ P = ( L, T, s, t ) L = { s, l, t } T = { (s, true f 0, l), (l, c 1 f 1, l), (l, c 2 f 2, t) } c 1 (σ) = true σ(y) > 0 c 2 (σ) = true σ(y) = 0 f 0 (σ) = (σ(y), σ(z)) (σ(x), 0 ) f 1 (σ) = (σ(y), σ(z)) (σ(y) - 1, σ(y) + σ(z)) f 2 (σ) = σ (megfelel a skip-nek) s true f 0 l c 2 f 2 t c 1 f 1 σ(x) 0: M[P](σ) = { (σ(y), σ(z)) ( 0, Σi ), ahol i = 0,..., σ(x) } σ(x) < 0: M[P](σ) = { fail }
Párhuzamos programozás A XX. században robbanásszerű fejlődést hozott az informatika területén a párhuzamos programozás lehetősége. Különbségek szekvenciális és párhuzamos programok között Konkurrens program Kommunikációs hálózat Folyamatok, közös használatú erőforrás Kommunikáció, kommunikáció sikeressége, szinkronizáció Kölcsönös kizárás Petterson példái Dijkstra: szinkronizáció megvalósítása aktív várakozással Bizonyos tulajdonságú objektum párhuzamos keresése felosztott adatbázisban.
Párhuzamos programozás Alkalmazási igények: Nagybonyolultságú feladatok gyors megoldása. számítógép konfiguráció proc 1 memória (nagy kapacitás) proc 2... proc n párhuzamos program
Szekvenciális és s párhuzamos p programok közötti k különbsk nbség Végrehajtás processzor igénye Szekvenciális program végrehajtásához egy processzor elég. Párhuzamos program végrehajtásához annyi processzor kell ahány párhuzamos komponenst tartalmaz. (time sharing!) Programok jellemzése Szekvenciális program jellemzéséhez elég megadni a bemenő adatainak és az azokhoz tartozó eredmény adatoknak kettőseit, és ezek alapján két szekvenciális programot ekvivalensnek tekintünk. A szekvenciális program atominak tekinthető. A párhuzamos program komponensei egymással kommunikálva, egymással szinkronban oldják meg a feladatot. A jellemzéshez a közbülső állapotok is hozzátartoznak az együttműködésben szerepet játszó változóknak az értékei.
Párhuzamos programok Konkurrens program Folyamatok végrehajtás alatt lévő szekvenciális programok Közösen használt objektumok változók adattípus objektumok közösen használt kommunikációs csatornák Implementációs lehetőségek közösen használt memória (shared memory) számítógépes kommunikációs hálózat
Párhuzamos programok osztott memóri riával Párhuzamos program { p } S 1... S n { q } Probléma Memória cellákhoz való párhuzamos hozzáférés Követelmény Szinkronizáció P 1 P 2 Memória
Párhuzamos programok kommunikáci ciós s csatornával P1 lokális memória1 Kommunikációs Hálózat C P2 lokális memória2 Probléma Garantálni kell, hogy ha a P1 küld egy üzenetet a C csatornán keresztül P2-nek, ez az üzenet megérkezik a címzetthez. Követelmény Ha az üzenet megérkezett P2-höz, akkor annak erre általában vissza kell jeleznie. Tehát ez P2 és környezetének bizonyos szinkronizálását kívánja meg: szinkronizáció.
Párhuzamos programozás alapfogalmai Konkurens program: (P, E) P : folyamatok véges halmaza, E : közös használatú erőforrások véges halmaza. Definíció A folyamat az a végrehajtás alatt lévő szekvenciális program, amely párhuzamosan fut más folyamatokkal együtt közös feladat megoldása során. Közös használatú erőforrás: közös használatú objektum Közös használatú memória, (közös használatú egyszerű vagy indexes változó a programozási nyelvben) közös használatú adattípus objektuma, közös használatú kommunikációs csatorna.
Párhuzamos programozás alapfogalmai Kommunikáció A kommunikáció azt jelenti, hogy a konkurens folyamatok egyike befolyásolja a másik komponens végrehajtását közös változók felhasználásával ill. üzenetküldéssel. Kommunikáció sikeressége Kommunikáció során az egyik folyamat beállítja a közös változó értékét, ill. üzenetet küld, amelyet a másik folyamat elolvas. Ez a kommunikáció akkor sikeres, ha az érték, ill. üzenet kiolvasásának megtörténtéről a címzett folyamat a kommunikációs partnerének egyértelmű választ ad, még mielőtt az érték, ill. üzenet megsemmisülne. Szinkronizáció = sikeres kommunikáció
Kölcsönös s kizárás Peterson módszerével Kölcsönös kizárás Peterson aktív várakozásos módszere A megoldás az aktív várakozás (busy waiting) technikájának alkalmazását szemlélteti, közös változókkal történő megoldás esetén. igénylés nyilvántartása: y i, i = 1, 2 másik folyamat letiltása: t y i = "true" : az i-edik folyamat igényli az erőforrást y i = "false" : az i-edik folyamat nem tart igényt az erőforrásra t = 1 : az 1. tiltja az erőforrás lekötését a 2. folyamatnak t = 2 : a 2. tiltja az erőforrás lekötését az 1. folyamatnak
Kölcsönös s kizárás Peterson módszerével y 1 "false" y 2 "false" t 1 parbegin P1 P2 parend P1: while "true" do nem kritikus szakasz 1 (y 1, t) ("true", 1) while y 2 t 2 do nil od kritikus szakasz 1 y 1 "false" od Igénybejelentés, tiltás Aktív várakozás Tiltás feloldása P2: while "true" do nem kritikus szakasz 2 (y 2, t) ("true", 2) while y 1 t 1 do nil od kritikus szakasz 2 y 2 "false" od
Kölcsönös s kizárás Peterson módszerével t változó használata azt a konfliktust hivatott feloldani, hogy mindkét folyamat az aktív várakozás állapotában várakozzon. Például: ( y 1, t ) ( "true", 1 ) while y 2 t 2 do nil od kritikus szakasz 1 y 1 "false" ( y 2, t ) ( "true", 2 ) while y 1 t 1 do nil od kritikus szakasz 2 Aki előbb állította be t értékét, az léphet először a kritikus szakaszba és annak kell kilépéskor kinyitnia a kaput a másiknak.
Kölcsönös s kizárás Peterson módszerével y 1 "false" y 2 "false" t 1 parbegin P1 P2 parend P1: while "true" do nem kritikus szakasz 1 (y 1, t) ("true", 1) while y 2 t 2 do nil od kritikus szakasz 1 y 1 "false" od Igénybejelentés, tiltás Aktív várakozás Tiltás feloldása P2: while "true" do nem kritikus szakasz 2 ( y 2, t) ("true", 2) while y 1 t 1 do nil od kritikus szakasz 2 y 2 "false" od Aktív várakozás helyett várakozás utasítás (wait) használata.