21. fejezet - Párhuzamos absztrakt program

Tartalom

21.1.Az absztrakt program szerkezete
21.1.1.A feltételes értékadás fogalma
21.2.Állapotátmenetfák
21.2.1.Utasítások kiterjesztése, szuperpozíciója
21.2.2.Program kiterjesztése
21.3.Pártatlan ütemezés fogalma
21.4.Az absztrakt program tulajdonságai
21.4.1.A leggyengébb előfeltétel és általánosítása
21.4.2.Invariánsok és elérhető állapotok
21.4.3.Biztonságossági tulajdonságok
21.4.4.Haladási tulajdonságok
21.4.5.Fixpont tulajdonságok
21.4.6.Terminálási tulajdonságok
21.5.Az absztrakt program viselkedési relációja
21.6.Feladatok

Az absztrakt párhuzamos program a UNITY-ből ismert programfogalom relációs alapú megfogalmazása. Ahhoz, hogy eldönthessük, hogy egy program megold-e egy feladatot (. fejezet), össze kell vetnünk a feladatot definiáló relációt a program viselkedését leíró relációval. A programhoz annak viselkedési relációját hozzárendelő leképezést tekinthetjük úgy is, mint egy olyan szemantikai leképezést, amelynek absztrakciós szintje megegyezik az absztrakt feladat szemantikájának absztrakciós szintjével.

21.1.Az absztrakt program szerkezete

Az absztrakt program struktúrája nem eredményezheti, hogy olyan szinkronizációs kényszerek épüljenek be a megoldásba, amelyek feleslegesek, valódi párhuzamos architektúrán szükségtelenül lassítják a program futását. Ha a programot szekvenciális folyamatok halmazának tekintenénk, ahogy ezt pl. CSP-ben [[???Hoa 78]] vagy Adában [[???ALRM 83]] megszoktuk, akkor ezzel eleve végrehajtási sorrendet definiálnánk utasítások nagy részhalmazai felett. Ezért a párhuzamos programot feltételes értékadások halmaza segítségével adjuk meg. Az egyes utasítások bármikor végrehajthatóak, állapotváltozás azonban csak akkor következhet be, ha az értékadás feltétele teljesül. A feltételek helyes megválasztásával elérhetjük, hogy az állapotátmenetek a kívánt sorrendben következzenek be. A program tulajdonságok meghatározását is megkönnyíti, ha a programot utasítások halmazaként definiáljuk. Általában megköveteljük, hogy az egyes értékadások végrehajtása pillanatszerű, atomi legyen.

21.1. Példa (Absztrakt program megadása).

.

Ha az . program utasításainak pillanatszerű végrehajtása biztosított, akkor az egyik lehetséges végrehajtási út mentén a következő állapotokat és állapotátmeneteket figyelhetjük meg: . Ha az értékadások atomicitása nem biztosított, akkor a következő állapotátmenetsorozat is megfigyelhető: , pedig nincs olyan érvényes állapot, amelyben .

A nemdeterminisztikus végrehajtási sorrend korlátozására szinkronizációs feltételeket használunk (pl. termelő-fogyasztó esetén üres pufferből nem lehet fogyasztani). Az absztrakt program tehát szimultán feltételes értékadások (. def.) [[???Fót 83, ???Hor 93]] véges halmazával adható meg [[???Cha Mis 89]], ahol az egyes értékadások jobboldalán függvénykompozíciók is szerepelhetnek (pl. kapcsos zárójellel megadott függvény).

21.1.1.A feltételes értékadás fogalma

21.1. Definíció (Utasítás).

Az relációt utasításnak nevezzük, ha

  • ,

  • .

21.2. Definíció (Hatásreláció).

A reláció az utasítás hatásrelációja, ha

ahol függvény az véges sorozathoz annak végpontját rendeli. .

21.3. Definíció.

.

  • Azt mondjuk, hogy az változó konstans függvény az utasításban, ha .

  • Azt mondjuk, hogy az utasítás végrehajtása biztosan nem változtatja meg az változót, ha .

Elemi utasítás az értékadás és az üres utasítás.

21.4. Definíció (Üres utasítás, SKIP).

Üresnek nevezzük, és SKIP-pel jelöljük azt az utasítást, amire .

21.5. Definíció (Általános értékadás).

Legyen , , ahol . Az utasítás általános értékadás [[???Fót 83]] , ha , ahol az redukáltjának nevezzük, és -val jelöljük azt a sorozatot, amit úgy kapunk, hogy az sorozat minden azonos elemekből álló véges részsorozatát a részsorozat egyetlen elemével helyettesítjük.

21.6. Definíció (Változó az értékadás baloldalán).

Azt mondjuk, hogy a változó az értékadás baloldalán áll, az értékadás értéket ad a változónak, ha az reláció nem egyenlő a projekcióval [[???Fót 86]], azaz az értékadás hatásrelációja megváltoztatja a változót (. def.). Az értékadás baloldalán álló változók halmazát -sel jelöljük. Az értékadás azoknak a változóknak ad értéket, amelyek a baloldalán állnak A . definíció azokat a változókat nevezi az értékadás baloldalán állónak, amelyek az értékadás végrehajtása során megváltozhatnak, azaz van olyan állapot, amelyre . A definíció tehát független az értékadás szintaktikus alakjától..

21.1. Megjegyzés (Szimultán értékadás).

Az értékadás egyszerre több változó értékét is megváltoztathatja, ezért ún. szimultán értékadásról van szó.

21.7. Definíció (Egyszerű értékadás).

Ha legfeljebb egy változó áll az értékadás baloldalán, akkor egyszerű értékadásról beszélünk.

21.8. Definíció (Változó az értékadás jobboldalán).

Azt mondjuk, hogy a változó az értékadás jobboldalán áll, ha az értékadás hatásrelációja nem független (. def.) az állapottérkomponenstől. Az értékadás jobboldalán álló változók halmazát -sel jelöljük.

21.9. Definíció (Feltételes értékadás).

Legyen , , ahol . Legyen . az kiterjesztése a feltételre nézve Általánosabban egy reláció feltételre vonatkozó kiterjesztését az alábbi módon definiálhatjuk: Legyen altere -nak. . A függvény az -beli pontokhoz -beli vetületüket rendeli hozzá [[???Fót 83]]. . .: és , különben. Az relációval megadott általános értékadást feltételes értékadásnak nevezzük, ha .

21.2. Megjegyzés.

A változóra vonatkozó egyszerű, determinisztikus, feltételes értékadást a alakban adjuk meg. Röviden: -vel jelöljük. Szimultán, nemdeterminisztikus, feltételes értékadás megadható a alakban. Ha lehetséges, akkor sok változó esetén a rövidítést alkalmazzuk.

Ha a feltételes értékadásban szereplő valamelyik egyszerű értékadáshoz rendelt egyetlen feltétel egy állapothoz értéket rendel, akkor ez a . definíció szerint annak a rövid megfogalmazása, hogy az értékadás az pontból indítva nem változtatja meg a baloldalon álló változó értékét. Ezáltal a feltételes értékadások mindenütt értelmezve vannak az állapottér felett.