Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Tartalomjegyzék

17. Osztott rendszerek 2


17.1. Feladatok specikációja: haladási és biztonságossági feltételek 2
17.1.1. Biztonságossági feltételek . . . . . . . . . . . . . . . . 3
17.1.2. Haladási feltételek . . . . . . . . . . . . . . . . . . . 3
17.1.3. Fixpontfeltétel . . . . . . . . . . . . . . . . . . . . . 3
17.1.4. Kezdeti feltétel . . . . . . . . . . . . . . . . . . . . . 4

17.2. Absztrakt párhuzamos program tulajdonságai . . . . . . . . 4


17.2.1. Biztonságossági tulajdonságok . . . . . . . . . . . . . 4
17.2.2. Haladási tulajdonságok . . . . . . . . . . . . . . . . . 5
17.2.3. Fixponttulajdonság, terminálási tulajdonság . . . . . 6
17.2.4. Programtulajdonságok tulajdonságai . . . . . . . . . 6

17.3. A megoldás fogalma . . . . . . . . . . . . . . . . . . . . . . . 7


17.3.1. Fixpont-nomítás tétele . . . . . . . . . . . . . . . . 7
17.3.2. Variánsfüggvény alkalmazása . . . . . . . . . . . . . . 8

17.4. Csatornaváltozók . . . . . . . . . . . . . . . . . . . . . . . . 8
17.4.1. Csatornaváltozók m¶veletei . . . . . . . . . . . . . . 9

17.5. Nevezetes feladatok megoldása párhuzamos és elosztott prog-


ramokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
17.5.1. Természetes számok generátora . . . . . . . . . . . . 9
17.5.2. Adatcsatorna tétele . . . . . . . . . . . . . . . . . . . 10
17.5.3. FORK . . . . . . . . . . . . . . . . . . . . . . . . . . 11
17.5.4. MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Készítette: Whisperity a 2016/17/II. félévben, a 2016/17/I. féléves tan-


anyagból, Dr. Horváth Zoltán és Tejfel Máté el®adásai és Horpácsi Dá-
niel gyakorlata alapján.
17. tétel

Osztott rendszerek

Programozási munkák során egyre többször fordul el®, hogy nagyobb, bo-
nyolultabb feladatokat kell megoldanunk  e feladatok megoldása azonban
a klasszikus, egy számítógépes (processzoros) rendszereken már az emberiség
számára akár beláthatatlan id®igénnyel rendelkezne. A problémára megol-
dást kínál a párhuzamos, illetve az elosztott programozás technikája, amikor
a feladatot több számítógépen (processzoron), kisebb részfeladatok kompo-
nensekre bontásával hajtjuk végre.

A klasszikus relációs modellben megismert el®- és utófeltétel szabályok


azonban nem elégségesen párhuzamos programok tekintetében: a verseny-
helyzetek következtében a tesztelés során azonos bemenetekre néha eltér®,
hibás kimenetek állhatnak el®, melyek felderítése túl sok munka. A részkom-
ponensek egymástól függetlenül dolgoznak, az ütemez® pedig a részkompo-
nensek utasításait olyan kombinációban is végrehajthatja, amely katasztro-
fális eredményekkel járhat.

Ennek megfelel®en egy új modellt és más módszereket kell adni, amelyek


a klasszikus modellben nem specikálhatóak.

17.1. Feladatok specikációja: haladási és biz-


tonságossági feltételek
17.1.0.1. Deníció. Legyen A egy állapottér, B pedig megszámlálható hal-
maz. A b∈B pontokhoz rendeljünk egy rendezett hetest, melynek kompo-
nensei relációk: két peremfeltételeket, öt pedig átmenetfeltételeket ad meg.
 
3 4
Az F ⊆ B × × P (P(A) × P(A)) × P (P(A)) relációt az A állapottér
1 1
feletti feladatnak, B -t a feladat paraméterterének nevezzük.

2
Feladatok specikációja: haladási és biztonságossági feltételek 3

A direktszorazt b ∈ B -hez rendelt h ∈ F (b) elemeit rendre Bh , 7→h , ,→h ,


TERMh , FPh , invh és INITh -val jelöljük.

Jegyezzük meg, hogy a feladat specikációs feltételei nem egy adott


absztrakt programra, hanem a megoldandó feladatra tesznek megkötéseket.
(Adott program specikációnak való megfelelését a megoldás kapcsán vizsgál-
juk.) Amennyiben F (b) egyelem¶, akkor h helyett b-t írunk, vagy  ha nem
okoz félreértést  a h indexet teljes egészében elhagyjuk. A paramétertér
viselkedése a klasszikus relációs modellel azonos: feladata, hogy a potenciá-
lisan végtelen sok kezd®állapotból induló program viselkedése helyett annak
egy adott alterén vizsgálódjunk  a klasszikus példa, hogy egy három kom-
ponens¶ állapottéren dolgozó, az a + b = c-t kiszámító program viselkedése
nem függ c értékét®l.

17.1.1. Biztonságossági feltételek


A P BQ (P, feltéve, hogy nem Q, P unless Q) és inv P (P invariáns)
alakú feltételeket biztonságossági feltételek nek nevezzük. Biztonságossági ki-
kötést adnak, mivel meghatározzák, hogy a program milyen módon végezhet
állapotátmenetet. Ha minden állapotra teljesül P ∧ ¬Q, akkor P BQ felté-
tel tiltja, hogy a program Q-ba (Q igazsághalmazába) való áthaladás nélkül
¬P ∧ ¬Q-ba jusson.
Az inv P pedig az invariáns feltételt adja meg: P igazsághalmazából a
program minden állapotátmenete P igazsághalmazába visz át (azaz a prog-
ram sosem hagyja el P -t), és ez a P a kezdeti értékadást követ®en már
teljesül.

17.1.2. Haladási feltételek


A P 7→ Q (P-b®l következik Q, P provides Q) és P ,→ Q (P-b®l elkerül-
hetetlen Q, P leads-to Q) feltételek a program ténylegesen bekövetkez®
állapotátmeneteire tesznek kikötést: P igazsághalmazából a programnak (7→
 egy lépésben, ,→  legalább egy lépésben, el®bb-utóbb) Q-ba kell jutnia.
A TERM kikötéseket tartalmazó halmazban szerepl® logikai függvények
igazsághalmazai az állapottér azon pontjait jelölik ki, amelyekb®l a program
biztosan xpontba jut (dQe ∈ TERM ≡ Q ,→ FP).

17.1.3. Fixpontfeltétel
Az FP xpontfeltételek állításokat fogalmaznak meg a program állapotára
abban az esetben, ha a program xpontba jutott. (dRe ∈ FP ≡ FP ⇒ R).
4 Absztrakt párhuzamos program tulajdonságai

17.1.4. Kezdeti feltétel


A modellben elégségesnek tekintjük a programhelyesség szempontjából csak
azon eseteket, amikor a program a dQe ∈ INIT feltételeket teljesít® állapottér-
beli pontokból indul.

17.2. Absztrakt párhuzamos program tulajdon-


ságai
Az absztrakt programban nem deniálunk végrehajtási sorrendet, hanem az
elemi utasításokat feltételes értékadások formájában adjuk meg, a kívánt sor-
rendet pedig a feltételek megfelel® megválasztásával biztosítjuk. Az értékadá-
sok feltétlen, pártatlan ütemezés mellett hajtódnak végre, azaz az ütemez®
folyamatosan, a végtelenségig, minden programot végtelen sokszor választ.
Amennyiben az értékadás feltétele nem teljesül, a program helyben marad,
egyébként az értékadás megváltoztatja az állapotot.
A program tulajdonságait az állapottér hatványhalmaza feletti relációkkal
adjuk meg a leggyengébb el®feltétel segítségével. A leggyengébb el®feltétel a
programszöveg alapján kiszámítható.
A továbbiakban az s∈S az absztrakt program utasításhalmazának prog-
ramjait jelöli, amelybe nem tartozik bele a kezdeti értékadás.

17.2.0.1. Deníció. S program R utófeltételre (logikai állítás) vonatkozta-


tott leggyengébb el®feltétele lf (S, R) = ∀s ∈ S : lf (s, R), ahol lf (s, R) a
klasszikus modellb®l ismert leggyengébb el®feltétel : dlf (s, R)e := {a ∈ Dp(s) |
p(s)(a) ⊆ dRe}.
Az absztrakt program szemantikáját tulajdonság-relációk együttese adja
meg.

17.2.0.2. Deníció. Az S absztrakt program viselkedési relációjának a


program állapottere felett adott (Bs , 7→s , ,→s , FPs , invs , TERMs ) rendezett
hatost nevezzük, és ezt p(S)-sel jelöljük.

Vegyük észre, hogy  a megoldás fogalmának ismerete mellett  a visel-


kedési relációban adott szimbólumok és a specikációban adott szimbólumok
közötti hasonlóság jelentéstartalommal bír.

17.2.1. Biztonságossági tulajdonságok


A biztonságossági tulajdonságok az absztrakt program állapotátmeneteit te-
relik egy adott mederbe, a Mit csinálhat a program? kérdésre adnak választ.
Absztrakt párhuzamos program tulajdonságai 5

17.2.1.1. Deníció. Bs := {(dP e, dQe) | P ∧ ¬Q ⇒ lf (S, P ∨ Q)}


Amennyiben Bs fennáll két logikai állítás között, a program P Q-n kívüli
részében vagy helyben marad, vagy Q-ba halad át. El®fordulhat, hogy egy
állítás feltétel nélkül igaz az állapottér egy részén a programra:

17.2.1.2. Deníció. P stabil, ha P Bs ↓ .

Azonban a háromszög-tulajdonság önmagában nem képes a program-


mal szemben garanciákat biztosítani, mivel nem tudjuk garantálni, hogy a
program valaha eléri P -t. Az invariáns tulajdonság a háromszögnél szigorúbb
állítást fogalmaz meg a program viselkedésér®l.

17.2.1.3. Deníció. invs (dQe) := {dP e | Q ⇒ lf (s0 , P ) és P ⇒ lf (S, P )}

Az invariánsok megfogalmaznak Bs tulajdonságot (hiszen P ⇒ lf (S, P ) ≡


P Bs ↓), viszont az invariánsokat a kezdeti értékadásnak be kell állítania 
innent®l kezdve viszont a program futása során örökre fennállnak.

17.2.1.4. Megjegyzés. Az invariánsok mellett fontosak a mindig igaz tulajdon-


ságok is. Informálisan, a mindig igaz tulajdonságok olyan állítások, amelyek
invariánsként viselkednek, de csak az elérhet® állapotokat vizsgálva, míg
az invariánsok a nem elérhet® állapotokban is igazak maradnak.
Ez a megkülönböztetés fontos, mivel nem várt eredményeket hozhat, ha
párhuzamos programkomponenseket tartalmazó programokat vizsgálunk, hi-
szen a részkomponensek saját invariánsaikat megtartó viselkedése a teljes
rendszert instabil, érvénytelen állapotba viheti.

17.2.2. Haladási tulajdonságok


A haladási tulajdonságok a program tényleges viselkedését írják le, a Mit
csinál a program? kérdésre adnak választ. Egy program biztosan állapotot
vált P -b®l Q-ba, ha garantálható, hogy P -b®l csak Q felé haladhat, és van
olyan utasítása, amely ezt az átmenetet képes is végrehajtani.

17.2.2.1. Deníció.
7 s := {(dP e, dQe) | P Bs Q

és ∃s ∈ S : (P ∧ ¬Q ⇒ lf (s, Q))}

Az 7→s csak egy lépésben bekövetkez® állapotátmeneteket ír le. A több


lépésben bekövetkez® állapotátmenetekhez e reláció tranzitív-diszjunktív le-
zárt ja szükséges, ,→s .
6 Absztrakt párhuzamos program tulajdonságai

17.2.2.2. Deníció. ,→s := (7→s )tdl .


Azaz ,→s a legsz¶kebb olyan reláció, melyre teljesül, hogy

• 7→s ⊆ ,→s

• tranzitív: P ,→s Q és Q ,→s R esetén P ,→s R

• diszjunktív: P ,→s Q és R ,→s Q esetén (P ∨ R) ,→s Q

17.2.3. Fixponttulajdonság, terminálási tulajdonság


Az absztrakt programot végrehajtása során a végtelenségig futtatjuk, azon-
ban egy végtelenségig futó konkrét program elképzelhetetlen lenne. Azonban
termináltnak tekintjük a programot, ha további állapotátmenetre nem ké-
pes, xpontba jutott. A program nem képes állapotátmenetre, ha minden
értékadó utasítására teljesül, hogy az értékadások jobb oldalán szerepl® kife-
jezések értéke azonos a bal oldalon álló változók aktuális értékével vagy, hogy
az értékadás feltétele Hamisra értékel®dik ki.

17.2.3.1. Deníció. Az S program xpontjainak halmaza  feltéve,


hogy minden értékadása feltételes és determinsztikus 
^
xponts (vagy ϕs ) := (πi → xi = yi )
si ∈S

17.2.3.2. Deníció. A xpont tulajdonság (FPs ) a xpontban teljesül®


állítások igazsághalmazainak halmaza: {dRe | xponts ⇒ R}

A xpont tulajdonság tehát azt adja meg, hogy mely állítások igazak
a programra, amikor az xpontba került. A xpontba kerülést viszont egy
másik tulajdonság, a TERMs terminiálási tulajdonság biztosítja.

17.2.3.3. Deníció. TERMs azon logikai állítások igazsághalmazainak hal-


maza, amelyekb®l a program biztosan xpontba jut: {dQe | Q ,→s xponts }

17.2.4. Programtulajdonságok tulajdonságai


A programtulajdonságok rendelkeznek bizonyos általánosan teljesül® össze-
függésekkel, melyeket különálló tételek helyett az alábbi táblázatban foglal-
tunk össze.
A megoldás fogalma 7

x Bs 7→s ,→s
P xP 3 3 3
P x¬P 3
↑ xP 3
Px ↑ 3 3 3
↓ xP 3 3
Px ↓ csak akkor, ha P ≡↓
P ⇒ Q esetén P xQ
3 3 3
(következik szabály)
Tranzitivitás 3
Diszjunktivitás 3 3
P xQ és Q⇒R esetén QxR
3 3 3
( jobb oldal gyengítése)
P ⇒Q és QxR esetén P xR
3
(bal oldal er®sítése)
stabillal metszés 3 3 3

17.3. A megoldás fogalma


A feladat specikációjában adott feltételeket és az absztrakt program visel-
kedési relációját a megoldás fogalma köti össze.

17.3.0.1. Deníció. Az S program megoldja az F feladatot, ha∀b ∈ B :


∃h ∈ F (b), hogy az S megfelel a h-ban adott invh P , P Bh Q, P 7→h Q,
P ,→h Q, FPh ⇒ R és Q ∈ TERMh alakú speccikációs feltételek mind-
egyikének, a Q ∈ INITh kezdeti feltételek mellett.

A feltételeket elég lenne csak az elérhet® állapotok tekintetében vizsgálni,


azonban a gyakorlatban célszer¶bb az elérhet® állapotok halmazánál b®vebb
halmazon (akár az összes lehetséges állapot halmazán, a teljes állapottéren)
vizsgálni, ugyanis így a számítások könyebbé válnak, amennyiben ez a b®-
vebb halmaz invariáns. (Az elérhet® állapotok halmaza mindig invariáns, a
legsz¶kebb invariáns.)
A továbbiakban általánosan igaz séma, hogy S program megfelel X spe-
cikációs feltételnek, ha létezik olyan K ∈ invs (∧Q∈INITh Q) invariáns, amely
mellett megfelel.

17.3.1. Fixpont-nomítás tétele


Bizonyos esetekben nehéz belátni, hogy a xpontban teljesül egy adott tu-
lajdonság. Megfelel®en megválasztott invariánsokkal sz¶kíthet® a program
8 Csatornaváltozók

Specikációs feltétel Megfelel K invariáns mellett, ha


V 
P ∈ invh P ∧ K ∈ invs Q∈INITh Q
P Bh Q P ∧ K Bs Q ∧ K
P 7→h Q P ∧ K 7→s Q ∧ K
P ,→h Q P ∧ K ,→s Q ∧ K
FPh ⇒ R xponts ∧K ⇒ R
P ∈ TERMh sp(s0 , P ) ∧ K ∈ TERMs

viselkedése oly módon, hogy egy ilyen nehezen belátható állítást az alábbi
tétel segítségével belássunk.

17.3.1.1. Tétel. Ha S megfelel az invh P és FP ⇒ R specikációs feltéte-


leknek és P ∧ R ⇒ Q, akkor S megfelel FPh ⇒ Q feltételnek is.

17.3.2. Variánsfüggvény alkalmazása


A megoldás belátása során a P ∈ TERMh -hoz szükséges megfelelést bizonyí-
tani nagyon nehéz, hiszen ,→s -t kell számítnani a kezd®állapotokból, amelyre
nagyon kevés módszerünk van, a denícióval való kiszámításon (amely ma-
gában foglal legtöbb esetben egy strukturális indukciót) kívül.
Ezt teszi könnyebbé a variánsfüggvény tétele, amely  a klasszikus mo-
dellben tanult ciklus levezetési szabálya tételhez hasonló állítást fogalmaz
meg: ha be tudjuk látni egy programról, hogy m¶ködése során egy függ-
vény értéke folyamatosan csökken amíg nem ér el egy adott állapotot, akkor
egyben belátjuk, hogy el tud jutni az adott állapotba.

17.3.2.1. Tétel. Legyenek P és Q logikai állítások, t variánsfüggvény


olyan, hogy P ∧ ¬Q ⇒ t > 0.
Ha ∀m ∈ N : (P ∧ ¬Q ∧ t = m) ,→s ((P ∧ t < m) ∨ Q), akkor P ,→s Q
teljesül.

17.4. Csatornaváltozók
A párhuzamos programok nem egy komponensb®l, nem egy utasításból áll-
nak. A komponensek egymás között információt cserélhetnek, ennek módja
 eltekintve az elméletben és gyakorlatban is veszélyes osztott memóriá-
tól  a csatorna használata. A csatornán üzenetek továbbítódnak, a sor
adatszerkezetet valósítjuk meg.
A feladatok specikációjában  a specikáció kifejez®erejének biztosí-
tása végett  használunk történetváltozó t. A történetváltozóra a csatornára
Nevezetes feladatok megoldása párhuzamos és elosztott programokkal 9

írt összes üzenet felkerül, törölni nem lehet róla, míg a csatornáról olvasás a
csatornáról eltávolítja, leveszi az üzenetet. A csatornaváltozót a specikáci-
óban Ch (T)-vel jelöljük (T tetsz®leges típus), az x csatornaváltozó történetét
x változóban tároljuk.

17.4.1. Csatornaváltozók m¶veletei


• Csatornára írás: x := hiext(x, e) vagy x := x; e
← x;e, x ← x;e
lf (x := x; e, R) = Rx

• Csatornáról levétel: x := lorem(x), ha x 6=<>


← lorem(x)

lf (x := lorem(x), ha x 6=<>, R) = x 6=<>→ Rx ∧(x =<>→ R)

• Csatorna inicializálása: x :=<>


← <>,x ← <>
lf (x :=<>, R) = Rx

• Következ® üzenet olvasása: x.lov, ha x 6=<>


• Csatorna ürességvizsgálata: x =<>
• Csatornán lév® üzenetek száma: |x|

17.5. Nevezetes feladatok megoldása párhuzamos


és elosztott programokkal
17.5.1. Természetes számok generátora
A természetes számok generátora egyesével generálja a természetes számo-
kat 1-t®l kezdve, amelyeket a csatornájára ír. A generátort egy nagyobb
programban komponensként felhasználhatjuk.

A = Ch (N) × Ch (N)
x x
B = Ch (N) × Ch (N)
x0 x0

• (x = x0 =<> ∧x = x0 =<>) ∈ INITx0 ,x0

• x ≤ [1, 2, . . . ] ∈ invx0 ,x0


10 Nevezetes feladatok megoldása párhuzamos és elosztott programokkal

• ∀k ∈ N0 : |x| = k ,→x0 ,x0 |x| = k + 1

Az állapottér egy i ∈ N0 segédváltozóval való kiterjesztése, és a feladat


specikációjának nomítása (amely az i növelésével megvalósított haladást
írja el®) után az (i := 0; {x, i := hiext(x, i + 1), i + 1}) program megoldja a
nomított feladatot.

17.5.2. Adatcsatorna tétele


Legyen F egy fn ◦ · · · ◦ f0 D = hd1 , . . . , dm i
függvénykompozíció, melyt a
sorozat elemeire szeretnénk elemenként alkalmazni, azaz hF (d1 ), . . . , F (dm )i-
t keressük, valamint tegyük fel, hogy m  n, azaz jóval több adatpontunk
van, mint alkalmazandó függvényünk.
Egy ilyen környezetben a teljes függvényt kiszámolni minden elemre egye-
sével nagyon költséges. Elegend® processzor esetén megoldható, hogy a be-
men® sorozat elemei egyesével haladjanak egy csatornákkal összekötött rend-
szerben, melynek minden pontján az F egy részkomponensét alkalmazzuk az
érkez® adatra. Így n+m lépésben  feltéve, hogy a függvények kiszámítási
ideje körülbelül azonos  el®állítható a végleges eredmény, szemben az n∗m
(egy processzoron) m¶veletigénnyel.

A = Ch (t) × Ch (t) × Ch (t) × Ch (t)


x0 x0 xn+1 xn+1

B = Ch (t) × Ch (t) × Ch (t) × Ch (t)


x0 0 x0 0 xn+1 0 xn+1 0

• Q := (x0 = x0 = x0 0 = x0 0 = D ∧ xn+1 = xn+1 = xn+1 0 = xn+1 0 ) ∈ INITh

• FP ⇒ xn+1 = F (x0 0 ) = F (D)


h

• Q ∈ TERMh

• (x0 = x0 0 = D) ∈ invh a teljes rendszerre

Az állapottéren felvesszük az x 1 . . . xn csatornákat, majd megintcsak no-


mítjuk a feladatot: feltesszük, hogy xpontban az összes közbens® csatorna
a xpontba jutáskor üres, és hogy az adatok a csatornákon balról jobbra
haladnak: amit az egyik csatornáról feldolgoztunk, azt ráírtuk a következ®-
re. A megoldáshoz variánsfüggvényt adunk, amely egy n helyiérték¶ m+1
számrendszer-beli szám, rendre az egyes csatornák elemszáma.
Az így megfogalmazott nomabb feladatot megoldja az alábbi program:
Nevezetes feladatok megoldása párhuzamos és elosztott programokkal 11

 n
|| xi :=<>,
i=1

n
{  xi , xi+1 := lorem(xi ), hiext(xi+1 , fi (xi .lov), ha xi 6=<>}
i=1

17.5.3. FORK
A F ORK (elágazás) egy olyan program, mely a bemeneti csatornájára
érkez® adatokat sorrendhelyesen a két kimeneti csatornájára írja. Minden
bejöv® adatot kiír (nincs adatvesztés), és csak a bejöv® adatokat írja ki (nincs
zaj).

A = Ch (t) × Ch (t) × Ch (t) × Ch (t) × Ch (t) × Ch (t)


x x y y z z

B = Ch (t) × Ch (t) × Ch (t) × Ch (t) × Ch (t) × Ch (t)


x0 x0 y0 y0 z0 z0

Tekintsük x-et a be-, y és z -t pedig a kimeneti csatornáknak.

• Q := (x = x = x0 = x0 = y = · · · = z 0 = z 0 =<>) ∈ INITh

• P := (split(x − x, y, z)) ∈ invh

• ∀k ∈ N : |x| = k ,→s |y| + |z| ≥ k

A F ORK megoldó programja:

(SKIP,
{x, y := lorem(x), hiext(y, x.lov), ha x 6=<>
x, z := lorem(x), hiext(z, x.lov), ha x 6=<>})

split
A sorrendhelyességet a split függvény adja, amely csatornahármasokon értel-
mezett logikai állítás: split : Ch (a)×Ch (a)×Ch (a) −→ L. Három csatorna
split relációban van egymással, ha a már split relációban álló csatornákat egy
elemmel kiegészítve az a-ra írt elem b-n vagy c-n szükségszer¶en megjelenik.
split a legkisebb ilyen igazsághalmazú függvény.
12 Nevezetes feladatok megoldása párhuzamos és elosztott programokkal

split(<>, <>, <>) =↑


split(a, b, c) ⇒ split (hiext(a, x), hiext(b, x), c) ∧
split (hiext(a, x), b, hiext(c, x))

17.5.3.1. Példa. Például az< 1, 2 >, < 1, 2 >, <> csatornák split relációban
vannak, ahogy < 1, 2 >, < 1 >, < 2 > és < 1, 2 >, < 2 >, < 1 > is.
De < 1, 2 >, < 2, 1 >, <> nincsenek split relációban, a felbontásuk nem
sorrendhelyes.

17.5.3.2. Példa. Az < 1, 2, 3 >, < 1, 3 >, < 2 > sorrendhelyes felbontás, míg
< 1, 2, 3 >, < 1 >, < 3, 2 > nem az.

17.5.4. MUX
A MUX a fork ellentettje: a két bemen® csatornával rendelkez® program
minden, a bemeneteken érkez® adatokat sorrendhelyesen a kimen® csatorná-
jára f¶zi, adatvesztés és zaj hozzáírása nélkül.
A feladat állapottere és a split deníciója a F ORK -nál látottakkal meg-
egyezik, azzal a megkötéssel, hogy x és y a be-, z pedig a kimeneti csatorna.

• Q := (x = x = x0 = x0 = y = · · · = z 0 = z 0 =<>) ∈ INITh

• P := (split(z, x − x, y − y)) ∈ invh

• ∀k ∈ N : |x| ≥ k ,→s |x − x| ≥ k

• ∀l ∈ N : |y| ≥ l ,→s |y − y| ≥ l

A MUX megoldó programja:

(SKIP,
{x, z := lorem(x), hiext(z, x.lov), ha x 6=<>
y, z := lorem(y), hiext(z, y.lov), ha x 6=<>})

You might also like