610 likes | 751 Views
Konkurens programok szintézise. Kozma László ELTE IK Alkalmazott Matematikai és Informatikai Szeminárium. Elméleti alapok. Párhuzamos programok szintézisére különböző matematikai eszközök állnak rendelkezésünkre: a klasszikus elsőrendű logika, a temporális vagy más néven időlogikák,
E N D
Konkurens programok szintézise Kozma László ELTE IK Alkalmazott Matematikai és Informatikai Szeminárium Budapest, 2006.02.27.
Elméleti alapok • Párhuzamos programok szintézisére különböző matematikai eszközök állnak rendelkezésünkre: • a klasszikus elsőrendű logika, • a temporális vagy más néven időlogikák, • a különböző fajta algebrák stb.
Konkurens programok szintézise az elsőrendű logikában • A konkurens programok olyan speciális párhuzamos programok, amelyekben • nem-determinisztikus szekvenciális programok, az ún. folyamatok működnek együtt egy közös cél megvalósítása érdekében. • Ezek a folyamatok vagy • közös, osztott változókon keresztül cserélnek egymással információt, • vagy minden folyamat saját, helyi adattárolóval rendelkezik és üzenetváltásokkal tartják a kapcsolatot egymással.
Konkurens programok • Modellünkben egy P konkurens program a következő (atomi) utasítások halmazából áll: • < Szinkronizációs Feltétel Tevékenység>. • P:: shared X; Initiate X; cobegin repeat P1||...|| repeat PNcoend • ahol P jelöli a PG(Bi Si) programot, az X pedig osztott változóinak halmazát • minden i-re Pi a <Bi(X) Si(X)> alakú atomi átmenet ismételt végrehajtásából áll • Bi(X) egy szinkronizációs feltétel, amely függhet az osztott változóktól • Si(X) szekvenciális utasítások sorozata [4].
Szemantika • PG(Bi Si) absztrakt program nem-determinisztikus, ciklikus program. • Ennek a programnak a szemantikáját azzal a leggyengébb előfeltétellel definiáljuk, amely biztosítja , hogy a program véges számú átmenetének végrehajtása után az R predikátum szükségszerűen előálljon. • Ezt a leggyengébb előfeltételt a következő fixpontegyenlet legkisebb fixpontjaként kaphatjuk meg: • H = R BB k=1N (Bk wp(Sk , H)) • ,ahol • BB = k=1VN Bk, • R a célpredikátum és • wp(S,H) a Dijkstra-féle leggyengébb előfeltétel függvény.
A (gyengén) helyes konkurens programok szintézise • A feladat definiálása • Folyamatok meghatározása • Osztott változók bevezetése • Invariáns meghatározása • A megoldás váza • Szekvenciális utasítások sorozata • Atomi tevékenységek meghatározása • Az absztrakt program generálása • Az őrfeltételek meghatározása a szemantika alapján • Az absztrakt program megvalósítása • Célnyelvtől függő módon [1],[13].
Az erősen helyes konkurens programok szintézise • Definíció: Egy gyengén helyes konkurens program erősen helyes, ha mentes a globális holtponttól és az egyes komponensek koplalás-mentesek. • Definíció: Egy PG(Bi Si) program akkor és csak akkor mentes a globális holtponttól, ha a BB predikátum a PG(Bi Si) program invariáns, ahol BB = i=1VN Bi • Állítás: Egy PG(Bi Si) program akkor és csak akkor mentes a globális holtponttól, ha minden i-re (1 <= i <= N) Bi wp(Si , BB).
Holtpontmentesség • Definíció: Egy PG(i Si)program a PG(Bi Si) programnak akkor és csak akkor nem üres erősítése, ha minden i-re (1 <= i <= N) i Bi és false. • Tétel. Egy adott PG(Bi Si) programnak akkor és csak akkor létezik nem üres PG(i Si) globális holtponttól mentes erősítése, ha létezik egy D predikátum, amely nem azonosan hamis, kielégíti a • D i=1N (Bi wp(Si , D)) kifejezést és D a PG(i Si) invariánsa. • Következmény. Legyen PG(Bi Si) olyan program, amelynek a J predikátum az invariánsa. A globális holtpont akkor és csak akkor előzhető meg ezen invariáns erősítésével, ha létezik olyan D predikátum, amely nem azonosan hamis és kielégíti a D J i=1N wp(Si , D) kifejezést. A PG(i Si)program leggyengébb biztos invariánsa a D = D J i=1N wp(Si , D) egyenlet legnagyobb fixpontja lesz, amely levezethető a fixpont tétel duálisa alapján.
Koplalás-mentesség • A PG(i Si) program koplalás-mentes erősítése hasonló módon levezethető. Egy PG(Bi Si) program < Bj Sj > komponense akkor és csak akkor koplalás-mentes, ha a Bj predikátum a • PG(Bi Si, i j) programnak nem invariánsa. • Következmény. A PG(i Si) program egy < Bj Sj > komponense akkor és csak akkor koplalhat, ha a K K Bji=1ijN (Bi wp(Si , K)) leggyengébb megoldása nem azonosan hamis. A legnagyobb koplalási tartomány meghatározása: Minden j-re oldjuk meg a K = K Bji=1ijN (Bi wp(Si , K)) fixpont egyenleteket, keressük meg a legnagyobb fixpontot. A PG(i Si) program akkor és csak akkor mentes az egyedi koplalástól, ha minden j-re K false.
Konkurens programok szintézise temporális logikákban • A PTL szintaxisa • Legyen A atomi ítéletek megszámlálható halmaza; • és logikai műveletek; , , és U temporális operátorok. • Formulák: • minden atomi ítélet formula; • ha A formula, akkor A, A, A és A szintén formulák; • ha A és B formulák, akkor AB és AUB is formulák. • További operátorok a szokásos módon vezethetõk be, így a , , stb.
A PTL szemantikája • Egy K temporális (vagy Kripke) struktúra leképezések {0,1,2,...} végtelen sorozata, ahol i: A{t,f}. • A sorozat elemeit a továbbiakban állapotoknak nevezzük, 0 a kezdeti állapot. • Minden K temporális struktúrára, minden i N0-ra és minden F formulára Ki(F) jelöli az F formula igazságértékét az i állapotban: • Ki(v)=i(v) vA • Ki(A)=t Ki(A)=f • Ki(AB)=t Ki(A)=t és Ki(B)=t • Ki(A)=t Kk(A)=t valamely ki-re • Ki(A)=t Kk(A)=t minden ki-re • Ki(AUB)=t Kk(B)=t valamely ki-re és Kn(A)=t minden n-re, (i<n<k), vagy Kn(A)=t minden n>i-re.
Tabló a PTL-ben • A PTL tablójának felépítésekor a temporális operátorokat tartalmazó formulákat a következő azonosságok alapján sorolhatjuk be az illetve típusú formulák közé : • □f f □f; • f f f; • fUg fU(f (fUg)). • Az típusú illetve típusú formulákat ezután a következő relációk alapján határozhatjuk meg.
típusú formulák • (a) f g {{f,g}}, azaz f g akkor és csak akkor elégíthető ki, ha mind az f, mind pedig g kielégíthető; • (b) f {{f}}; • (c) f {{f}}; • (d) □f {{f, □f}}; • (e) (fUg) {{f, f (fUg)}}; • (f) f {{f, f}}.
típusú formulák • (g) (f g) {{f},{g}}, • azaz (f g) akkor és csak akkor elégíthető ki, ha vagy f kielégíthet, vagy pedig g kielégíthető; • (h) f {{f},{f}}; • (i) (fUg) {{f},{f (fUg)}}; • (j) □f {{f},{□f}}.
Elemi formula • Elemi formulának nevezzük azokat a formulákat, • amelyek atomi ítéletek vagy ezek negáltjai; • vagy amelyeknek fő összekötője a temporális operátor (ez utóbbiakat -formuláknak nevezzük).
Tabló a PTL-ben • Legyen p egy PTL formula. • A tabló gyökérpontját címkézzük meg {p}-vel. • Tegyük fel, hogy elkészítettünk egy gráfot, amelynek csúcspontjait a dekompozíciós szabályoknak megfelelően címkéztük meg és minden belső pontban bizonyos formulákat "feldolgozva" jelzéssel láttunk el. • Tegyük fel, hogy egyik végpontunk címkehalmaza és ebben a q formula nem elemi és nincs még feldolgozva.
Új csúcspontok • Ha q típusú formula, legyen a csúcspont egyetlen fiának címkehalmaza {1,2} és ebben jelöljük meg q-t, mint feldolgozott formulát. • Ha q típusú formula, legyen a csúcspont két fiának címkehalmaza {1} illetve {2}, és jelöljük meg a q formulát mindkét leszármazottban
Visszacsatolás • Ha egy n csúcspont csak elemi és megjelölt formulákat tartalmaz, akkor legyen a csúcspontnak n1 az egyetlen leszármazottja. • n1 címkehalmazát az n -formuláiból úgy kapjuk meg, hogy ezek legkülső -operátorát elhagyjuk. • Ha a tabló felépítése során egy m csúcspont leszármazottjaként olyan n csúcspontot hoznánk létre, amelynek címkehalmaza megegyezik egy már létező k csúcspont címkehalmazával, akkor nem hozzuk létre az n csúcspontot, hanem m-et visszacsatoljuk k-hoz
Döntési eljárás • Állapotnak nevezzük azokat a csúcspontokat, amelyek csak elemi vagy megjelölt formulákat tartalmaznak. • A gyökérpontot és egy állapot közvetlen leszármazottját elő-állapotnak nevezzük • A tablóban a csúcspontok száma legfeljebb 24k , ahol k a kiindulási formulánk hossza. • Ha a tabló valamely csúcspontja a p formulát és annak negáltját is tartalmazza, akkor a csúcspontot töröljük. Ha egy csúcspont összes leszármazottját töröltük, akkor töröljük a csúcspontot is.
Törlési eljárás • Ha egy elő-állapot egy p vagy egy pUq alakú formulát tartalmaz, és ez nem kielégíthető egy elő-állapotban, akkor töröljük a csúcspontot. • A p formula kielégíthető egy elő-állapotban, ha el lehet jutni az elő-állapotból egy olyan csúcspontba, amelynek címkehalmaza tartalmazza p-t. • a pUq formula kielégíthető egy elő-állapotban, ha el lehet jutni az elő-állapotból egy olyan csúcspontba, amelynek címkehalmaza tartalmazza q-t. • A döntési eljárás akkor ér véget, ha töröltük az összes nem kielégíthető csúcspontot. • Tétel.Egy PTL formula akkor és csak akkor kielégíthető, ha a formulára generált tabló gyökérpontja nincs törölve.
A döntési eljárás egy javítása • Mivel a tabló módszerrel generált gráf csúcspontjainak száma max. 24k , a tabló használata a fenti módon még nagyon kényelmetlen. • Abban az esetben , ha feltételezhetjük, hogy minden állapotban pontosan egy atomi ítélet igaz, az eljárás lényegesen egyszerűsíthető, esetleg linearizálható [6,7]. Ezt olyan módon érhetjük el, hogy a dekompozíciós eljárást minden p atomi ítéletre külön-külön elvégezzük, azt feltételezve, hogy a p atomi ítélet igaz, a többi atomi ítélet pedig hamis.
Kommunikáló folyamatok szintézise • Specifikáljuk a folyamatokat • A specifikáció általánosítása • Alkalmazzuk a tabló módszert • Határozzuk meg az egyes célnyelvű folyamatokat
Sok hasonló konkurens folyamat szintézise • A párhuzamos kiszámítás modellje • Egy P = P1\\ … \\ Pkkonkurens program véges számú, párhuzamosan végrehajtott P1,…,Pk szekvenciális folyamatból áll. • Egy Pi folyamat szinkronizációs váza egy automata (state machine), amelyet egy irányított gráf reprezentál. • A gráf minden éle egy B A szinkronizációs utasítással cimkézett, ahol B egy őrfeltételt (guard), A egy tevékenységet jelöl.
Az MPCTL* specifikációs nyelv • Az MPCTL* (Many-Process CTL*) specifikációs nyelv a CTL* (Computational Tree Logic*) temporális logika egy kiterjesztése • A CTL* egy ítéletalapú elágazó idejű temporális logika (propositional branching-time temporal logic).
A CTL* szintaxisa • (S1) Minden atomi ítélet egy állapot formula; • (S2) ha f,g állapot formulák, akkor fg, f is állapot formulák; • (S3) ha f egy útformula, akkor Ef és Af állapot formulák. • (P1) Minden állapot formula egyúttal útformula is; • (P2) ha f,g útformulák, akkor fg, f is útformulák; • (P3) ha f,g útformulák, akkor Xjf, fUg is útformulák.
Modalitások • Path quantifiers: • Ef intuitív jelentése: létezik olyan maximalis út, amelyre az f teljesül. • Af intuitív jelentése: f teljesül minden maximális útra. • Linear-time modalities: • G (always) • F (sometime) • Xjf (stong nexttime) intuitív jelentése: az Xjf formula teljesül egy s állapotban egy maximális úton, ha a Pj folyamat következő atomi tevékenységének végrehajtásával az s állapotból közvetlenül elérhető állapotban az f teljesül. • Yj (weak “nexttime”) • FUg formula teljesül egy maximális úton egyállapotban, ha létezik olyan s állapot a maximális úton, ahol g teljesül és f az s állapotig minden állapotban teljesül az úton, de az s állapotban már nem feltétlen teljesül.
A CTL* szemantikája • Legyen M = (S, Ri1,…, Rik), ahol • S az állapotok egy megszámlálható halmaza. Minden állapot egy olyan leképezés, amely az atomi ítéletek halmazát az {true, false} halmazra képezi le. • Rij S x S, egy bináris reláció, amely az ij szekvenciális folyamat átmeneteit adja meg. • Legyen R = Ri1 … Rik. • Egy út állapotok egy (s1,s2, …) szekvenciája, amelyekre i, (si, si+1) R. • Egy teljes út (fullpath) egy maximális út. Egy teljes út egy (s1,s2,…) végtelen sorozat, kivéve ha valamely sk állapothoz nincs olyan sk+1 állapot amelyre (sk, sk+1 ) R.
Jelölések • = (s1,s2, …) egy teljes út, i = (si, si+1, si+2 …) egy suffix. • M,s1= f jelentése: f igaz az M struktúrában az s1állapotban. • M,= f jelentése: f igaz az M struktúrában a teljes úton. • M,S = f jelentése: f igaz az M struktúrában sS állapotban.
Szemantika 1 • (S1) M,s1= p iff s1(p) = true • (S2) M,s1= fg iff M,s1= f és M,s1= g M,s1= f iff not(M,s1= f) • (S3) M,s1= Ef iff létezik olyan = (s1,s2, …) teljes út az M struktúrában, hogy M,= f ; M,s1 = Af iff minden = (s1,s2, …) teljes útra az M struktúrában: M,= f.
Szemantika 2 • (P1) M,= f iff M,s1= f • (P2) M,= fg iff M,= f és M,= g M,= f iff not(M,= f) • (P3) M,= Xjf iff 2 definiált és (s1,s2) Rj és M,2= f M,= fUg iff létezik olyan i [1 : ], hogy M,i= g és minden j [1 : (i-1)]: M, j= f.
Jelölések • = f jelöli, hogy f érvényes, azaz igaz minden struktúra minden állapotában. • Ł jelöli a CTL* egy részlogikáját (sublogic). • Például Ł(,,AG(qi => AFri), AG(qi => AXri)) logika a CTL* egy részlogikája, amely az AG(qi => AFri), AG(qi => AXri) formulák összes pozitív kombinációját tartalmazza.
Az összeköttetési reláció (Interconnection Relation) • I {i1, … ,ik} X {i1, … ,ik} , ahol {i1, … ,ik} a K folyamatból álló rendszer azon folyamatainak indexét tartalmazza, amelyeket specifikálni akarunk. • Az i I j reláció akkor és csak akkor áll fenn az i és a j folyamatok között, ha i és j között kapcsolat van. • Az I reláció reflexív, szimmetrikus és totális, azaz minden folyamat legalább egy másik folyamattal összeköttetésben áll. • K folyamatból álló rendszerre több összekapcsolási séma definiálható, így a K folyamatból álló rendszer helyett a továbbiakban I rendszerről beszélünk (I-system). • Az I reláció része a probléma specifikációnak.
MPCTL* (Many-Process CTL*) • Legyen AP = {APi1,…, APik} atomi formulák egy indexelt családja. Az APi halmaz formulái csak indexeikben különböznek az APj halmaz formuláitól. • Például. • APi = {Qi, Ri} és APj = {Qj, Rj}. • Egy spatial modalitást ivagy ijjelöl. imodalitás a i folyamatindexre vonatkozik, míg a ij modalitás azon i és j folyamatindexekre vonatkoznak, amelyeket az I reláció kapcsol össze. Ha a spatial(térbeli) modalitás i, akkor a CTL* formulában csak az APi halmazból való atomi formulák megengedettek. Ha a spatial modalitás ij, akkor a CTL* formulában csak az APi APj halmazból való atomi formulák megengedettek.
Példa MPCTL* specifikációra • Kölcsönös kizárás specifikálása • Egy Pi folyamat az Ni , Ti , Ci állapotok közül minden időpillanatban pontosan egy állapotban lehet. • Az Ni állapot a folyamat nem kritikus szakaszának kódterületét, • a Ti állapot a kritikus szakaszba való belépési próbálkozás kódterületét, • a Ci állapot a folyamat kritikus szakaszának kódterületét jelöli. • Egy folyamat a nem kritikus szakaszában nem használ közös, kritikus erőforrásokat. • A Pi folyamat a Ti állapotába kerül, ha egy kritikus erőforrást akar megszerezni további működéséhez. Ebből az állapotból belép a kritikus szakaszába a lehető legrövidebb időn belül, feltéve, hogy a szükséges erőforrások rendelkezésére állnak.
A rendszer specifikációja • A kezdeti állapotban minden folyamat a nem kritikus szakaszában van: iNi • Egy folyamat a nem kritikus szakaszból mindig a próbálkozás szakaszába megy át és az ilyen átmenet mindig lehetséges: i AG(Ni => (AYiTi EXiTi)) • Egy folyamat a próbálkozás szakaszából mindig a kritikus szakaszába megy át: iAG(Ti => (AYiCi))
Egy folyamat a kritikus szakaszból mindig a nem kritikus szakaszába megy át és az ilyen átmenet mindig lehetséges: iAG(Ci => (AYiNi EXiNi)) • A Pi folyamat az Ni , Ti , Ci állapotok közül minden időpillanatban pontosan egy állapotban lehet: iAG(Ni(TiCi)) iAG(Ti(NiCi)) iAG(Ci (TiNi)) • A Pi folyamat nem koplal: iAG(Ti => (AFCi))
Az egyik folyamat egy átmenete nem eredményezi egy másik folyamat valamely átmenetének bekövetkeztét: ijAG((Ni => AYjNi ) (Nj => AYiNj)) ijAG((Ti => AYjTi ) (Tj => AYiTj)) ijAG((Ci => AYjCi ) (Cj => AYiCj)) • Két folyamat nem lehet egyszerre a kritikus szakaszában: ijAG((Ci Cj ))
Megjegyzések • Ha I = dom(I) x dom(I) – {(i,i) i dom(I)}, azaz a folyamatok minden két különböző párja I-kapcsolatban van, akkor a fenti specifikáció a K folyamat kölcsönös kizárását írja le. • Ha I = {{1,2},{2,3},{3,4},{4,5},{5,1}}, akkor öt étkező filozófust szerveztünk egy gyűrűbe. • Ha I = {{1,3},{1,4},{2,3},{2,4},{3,4}} és P1, P2 az olvasó folyamatokat, P3, P4 pedig az író folyamatokat jelenti, akkor az író-olvasó probléma egy specifikációját adtuk meg, ahol az íróknak nincs prioritása.
A szintézis lényege • Adjuk meg a feladat specifikációját MPCTL*nyelven • Vezessünk le egy páros rendszert az adott temporális logikai specifikációból • Általánosítsuk a páros rendszert egy I-rendszerré.
T2 x12 := 2 N2 (T2 x12 = 1) T1 C1 N1 N2C2 T1 x12 := 1 N1 (T1 x12 = 2) T2 C2 N2 N1 C1 Két folyamat kölcsönös kizárása:P1 // P2
T3 x13 := 3 N3 (T3 x13 = 1) T1 C1 N1 N3C3 T1 x13 := 1 N1 (T1 x13 = 3) T3 C3 N3 N1 C1 Két folyamat kölcsönös kizárása:P1 // P3
T3 x23 := 3 N3 (T3 x23 = 3) T2 C2 N2 N3C3 T2 x23 := 2 N2 (T2 x23 = 3) T3 C3 N3 N2 C2 Két folyamat kölcsönös kizárása:P2 // P3
T2 T3 x12 := 2 // x13 := 3 T2 (N3C3) x12 := 2 C1 (N2 (T2 x12 = 1)) (N3 (T3 x13 = 1)) T1 C1 N1 (N2C2) T3 x13:= 3 (N2 C2 ) (N3 C3 ) Három folyamat kölcsönös kizárása: P1 // P2 // P3 • P1:
T1 T3 x12 := 2 // x23 := 3 T1 (N3C3) x12 := 1 C2 (N1 (T1 x12 = 2)) (N3 (T3 x23 = 2)) T2 C1 N2 (N1C1) T3 x23:= 3 (N1 C1 ) (N3 C3 ) P2:
T1 T2 x13 := 1 // x23 := 2 T1 (N2C2) x13 := 1 C3 (N1 (T1 x13 = 3)) (N2 (T2 x23 = 3)) T3 C1 N2 (N1C1) T2 x23:= 2 (N1 C1 ) (N2 C2 ) P3:
Példa: a szorzás megvalósítása • Az “a*b” szorzatot akarjuk meghatározni akkor, ahol az a és b természetes számok • Tegyük fel, hogy van N objektumunk, amelyek a “+” műveletet hajtják végre; • van továbbá ugyanennyi objektumunk a “–” művelet végrehajtására; • Létezik egy sender ill., egy receiver objektum a pipeline rendszer elején ill., végén.
A szorzás algoritmusa • Az objektumokat egy nem lineáris pipeline rendszerbe szervezzük • A páros indexű objektumok a “+”-objektumok (kivéve az utolsót, mert az a receiver) • A páratlan indexű objektumok a “–”-objektumok (kivéve az elsőt, mert az a sender) • Minden objektumnak három argumentuma van: szorzandó, a szorzó és a részeredmény. • A “+” objektum hozzáadja az első argumentumot a részeredmény argumentumhoz és az adatokat elküldi a következő “–” objektumnak. • A “–” objektum kivon egyet a második argumentumból és ha az eredmény nagyobb mint zéró, akkor elküldi az adatokat a következő “+” objektumnak, ha az eredmény zéró, akkor pedig a receiver-nek. • Ha az utolsó “–” objektum második argumentuma nem zéró, akkor az adatokat elküldi az első “+” objektumnak.
A pipeline rendszer S + – + – R – + …
A objektumokból álló pipeline rendszer szintézise • Az adott problémát két lépésben oldottuk meg. • Először kidolgoztunk egy algoritmust a sok hasonló objektumokból álló rendszer szintézisére, • Majd módszert adtunk pipeline rendszerek szinkronizációs részének szintézisére.
Sok hasonló objektumokból álló rendszer szintézise • A következő problémákat oldottuk meg: • az összeköttetési relációt dinamikussá tettük; • kidolgoztunk egy technikát az objektumok hasonlóvá tételére; • Az öröklődés kezelésére módszert adtunk. inheritance. • A részletek megtalálhatóak cikkünkben: • Hajdara, Sz. – Kozma, L. – Ugron, B.: Synthesis of a system composed by many similar objects, Annales Univ. Sci. Budapest., Sect. Comp. 22 (2003), 127-150.