termelő-fogysztó modell. a probléma absztrakt megfogalmazása: informális leírás

20
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N 1. Adott a folyamatoknak két csoportja, amelyek a tárolót használják. Az első csoportba n 1 folyamat tartozik, amelyeket termelőknek, A másik csoportba m 1 folyamat tartozik, amelyeket fogyasztóknak nevezzük. A termelő a tároló használata során egy-egy terméket h a tárolókban. A fogyasztó a tároló használata során egy-egy terméket a tárolóból.

Upload: aleshanee-clark

Post on 30-Dec-2015

29 views

Category:

Documents


3 download

DESCRIPTION

Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak két csoportja, amelyek a tárolót használják. Az első csoportba n  1 folyamat tartozik, amelyeket termelőknek, - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Termelő-fogysztó modell.A probléma absztrakt megfogalmazása: informális leírás.

• Adott egy N elemű közösen használt tároló, N 1.• Adott a folyamatoknak két csoportja, amelyek a tárolót használják.• Az első csoportba n 1 folyamat tartozik, amelyeket termelőknek,• A másik csoportba m 1 folyamat tartozik, amelyeket fogyasztóknak nevezzük.• A termelő a tároló használata során egy-egy terméket helyez el a tárolókban.• A fogyasztó a tároló használata során egy-egy terméket vesz ki a tárolóból.

Page 2: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Megállapodás.

• A termelő és a fogyasztó közötti sorrendiség. A fogyasztó ugyan abban a sorrendben veszi ki a termékeket a tárolóból, amilyen sorrendben a termelő azt lehelyezte.

• A termelő folyamatok közötti kölcsönös kizárás. A termelő folyamatok közül egyszerre csak egy folyamat használhatja a tárolót.

• A fogyasztó folyamatok közötti kölcsönös kizárás. A fogyasztó folyamatok közül egyszerre szintén csak egy folyamat használhatja a tárolót.

• A termelők és a fogyasztók közötti termék esetében példányonkénti kölcsönös kizárás. Ugyanazt a termék példányt a termelő nem helyezheti le, a fogyasztó nem veheti ki egyszerre.

Page 3: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

A megállapodás formális megfogalmazása.

A tároló: qsor, length(q) = N, N 1;

A termelő műveletei:

xa[i]; q add(q,x); i = 0, . . . ,M.

A fogyasztó műveletei:

(q,y) (rem(q), read(q)); b[j]y; j = 0, . . .M-1.

A sorrendiségi követelmények teljesülnek!

PC:

i 0; j 0;

{ (i,jinteger) q queue 0 length(q) N (a[0,M -1], b[0,M -1]vector) M 1 N 1 }

parbegin producer consumer parend;

Page 4: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

producer:while i M do

xa[i];

wait length(q) N ta;

q add(q,x);ii+1;

od;

consumer:while j M do

wait length(q) 0 ta;

(y,q) (read(q), rem(q));b[j]y;

j j+1;

od;

A kölcsönös kizárások teljesülnek.

Page 5: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Realizáció.

q: buffer[0:N -1]; ciklikus elhelyezéssel mod(N).

Behelyezésnél az index: in;

Kiemelésnél az index: out;

{ M 1 N 1 }

i 0; j 0; in 0; out 0;

parbegin producer consumer parend;

{(k, 0 k M)(a[k] = b[k])};

wait length(q) N ta: wait in - out N ta;

q add(q,x): buffer[in mod N] x; inin+1;

wait length(q) 0 ta: wait in - out 0 ta;

(y,q) (read(q), rem(q)); y buffer[out mod N]; out out + 1

Page 6: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

producer:

while i M do

xa[i];

wait in - out N ta;

buffer[in mod N] x; in in+1;ii+1;

od;

consumer:

while j M do

wait in - out 0 ta;

y buffer[out mod N]; out out + 1b[j]y;

j j+1;

od;

Page 7: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Erőforrás közös használatának problémaköre: Informális leírás.

Adva

S : parbegin S1 ... Sn parend párhuzamos rendszer.

Az e erőforrás.

Az e erőforrás felhasználási módjai:• A folyamatok egy csoportjának tagjai csak kizárólagosan hsaználhatják az erőforrást.

• A folyamatok egy másik csoportjának tagjai egyidejűleg akár hányan is használhatják az erőforrást.

• A két csoport tagjai vegyesen nem használhatják az erőforrást.

Probléma: - Erőforrás monopolizálása. - Kiéheztetés.

Page 8: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Kiéheztetés (starvation), monopolizálás.

Adva

S : parbegin S1 ... Sn parend párhuzamos rendszer.

Kiéheztetés informális definíciója:• a párhuzamos program végrehajtása nem fejeződik be,• a folyamatok egy csoportja monopolizálhatja a párhuzamos rendszer közös erőforrását.

Az erőforrás monopolizálásának informális definíciója:

• a párhuzamosan futó folyamatok között mindig van legalább egy olyan folyamat, amely lekötve tartja az erőforrást,• miközben a velük párhuzamos folyamatok nem üres csoportjának tagjai folyamatosan várakoznak az erőforrásra.

erőforrást használók; erőforrásra várakozók; lefutottak.

Page 9: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

A kiéheztetés-mentes szinkronizáció problémája.

Adva

• egy erőforrás;• n 3 folyamat, amelyek az erőforrást használják;• Adott a párhuzamos rendszer p() előfeltétele.

A kiéheztetés-mentes vezérlés:

• A folyamatok legalább két diszjunkt csoportot alkotnak.• Csoportok között teljesül a kölcsönös kizárás. (Egy adott időpontban különböző csoporthoz tartozó folyamatok az erőforrást nem használhatják).• Csoporton belüli közös használat. (Létezik legalább egy olyan csoport, amelyben a folyamatok egy adott időpontban többen is használhatják az erőforrást).• Kiéheztetés-mentesség. (Ne fordulhasson elő az, hogy az egyik csoportbeli folyamtok végtelen hosszú ideig várnak az erőforrásra, a másik csoport folyamatai közül mindig van legalább egy olyan, amely lekötve tartja azt).

Page 10: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

A rendszer formális megfogalmazása végtelenített rendszerre:

S: inicializálás; parbegin S1 ... Sn parend; n 3.

A folyamatok szerkezete:

Si: while B do

NKi: Nem kritikus szakasz;

EIi: Erőforrás igénylése;

EHi: Erőforrás használata;

EFi: Erőforrás felszabadítása;

od;ahol

(i,k,1i,knik) [(változó (NKi) változó (EHi))]

[(változó(EIk) változó(EFk))] = { };

Feltevés: NKi és EHi nem tartalmaz megvárakoztató utasítást.

Page 11: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

A kiéheztetés-mentesség feltételeinek formális megfogalmazása.

• Legyen adott a párhuzamos rendszer p() előfeltétellel.

• Adott egy, a folyamatok által közösen használt erőforrás.

• A folyamatok két csoportot alkotnak.

Legyen az A csoportba tartozó folyamatok azonosítója rendre

1, 2, ..., n1. n1 2.

Legyenek a B csoport azonosítói rendre n1+1, n1+2, . . . , n;

n3.

Page 12: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

A csoportok közötti kölcsönös kizárás.

Adott p() mellett nem létezik olyan

parbegin R1 . . . Rn parend , konfiguráció,

amelyre valamilyen

i {1, . . ., n1} és k { n1+1, . . ., n} esetén

Ri at(EHi in Si) és Rk at(EHk in Sk);

Csoporton belüli közös használat.

Adott p() mellett létezhet olyan

parbegin R1 . . . Rn parend , konfiguráció,

amelyre valamilyen

i, j {1, . . ., n1} esetén

Ri at(EHi in Sk) és Rk at(EHk in Sk).

Page 13: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Végtelen igénylés.

Adott p() mellett nem létezik olyan parbegin R11 . . . Rn1 parend , 1

parbegin R12 . . . Rn2 parend , 2 ...

végtelen végrehajtási sorozat, aholminden parbegin R1i . . . Rni parend , i konfiguráció esetén

(~i{1, . . ., n1}~k{n1+1, . . ., n})

(Rji at(EHj in Sj) és Rk at(EIk in Sk)).

Holtpont-mentesség.

Adott p() mellett a párhuzamos program végrehajtása nem végződik

holtpont állapotban:

M(S)[{p}].

Page 14: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

S: inicializálás; parbegin S1 ... Sn parend; n 3.

Si: while B do

NKi: Nem kritikus szakasz;

EIi: Erőforrás igénylése;

EHi: Erőforrás használata;

EFi: Erőforrás felszabadítása;

od;ahol

(i,k,1i,knik)

[(változó(NKi)változó(EHi))] [(változó(EIk)változó(EFk))] = { };

Feltevés:

NKi és EHi nem tartalmaz megvárakoztató utasítást.

Page 15: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

A kiéheztetés-mentesség feltételeinek formális megfogalmazása.

Legyen adott - a párhuzamos rendszer p() előfeltétellel; - egy, a folyamatok által közösen használt erőforrás.

A folyamatok két csoportot alkotnak.• Legyen az A csoportba tartozó folyamatok azonosítója rendre

1, 2, ..., n1. n1 2.

• Legyenek a B csoport azonosítói rendre n1+1,n1+2,. . .,n; n3.

A csoportok közötti kölcsönös kizárás.

Nem létezik olyan parbegin R1 . . . Rn parend , konfiguráció,

amelyrevalamilyen i {1, . . ., n1} és k { n1+1, . . ., n} esetén

Ri at(EHi in Si) és Rk at(EHk in Sk).

Page 16: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Csoporton belüli közös használat.

Adott p() mellett létezhet olyan parbegin R1 . . . Rn parend , konfiguráció, amelyre

Ri at(EHi in Si) és Rk at(EHk in Sk), ha i, k {1, . . ., n1}.

Végtelen igénylés.

Adott p() mellett nem létezik olyan parbegin R11 . . . Rn1 parend , 1

parbegin R12 . . . Rn2 parend , 2 ...

végtelen végrehajtási sorozat, ahol minden parbegin R1i . . . Rni parend , i konfiguráció esetén

(~i{1,..., n1}~k{n1+1,..., n})(Rjiat(EHj in Sj)Rkat(EIk in Sk)).

Holtpont-mentesség.

Adott p() mellett a párhuzamos program végrehajtása nemvégződik holtpont állapotban:

M(S)[{p}].

Page 17: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Feladat. Készítsük el az adatbázis egy absztrakt modelljét a következő szavakban megadott specifikáció alapján, majd végezzük el a modell tulajdonságainak elemzését a kiéheztetés- mentesség szempontjából.a.) Legyen n 0 db. felújító és m 1 db. lekérdező folyamat. A felújító folyamatok egymást kölcsönösen kizárják az adatbázis használatából.b.) A felújító folyamat és lekérdező folyamat egymást kölcsönösen kizárják az adatbázis használatából.c.) A lekérdező folyamatok közül tetszőleges számú folyamat használhatja egyidejűleg az adatbázist.

Megoldás. A lekérdező folyamatok számolják, hogy hányan használják az adatbázist egyidejűleg. Számláló: rcnt; kezdőértéke: 0. (Számláláshoz kölcsönös kizárás kell). Szemafor: sr, kezdőértéke: 1. Kölcsönös kizárás szemaforja: w;w 1; rcnt 0; sr 1;

parbegin writer1 ... writern reader1 ... readerm parend;

Page 18: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

w 1; rcnt 0; sr 1;

parbegin writer1 ... writern reader1 ... readerm parend;

writeri:

while "true" do

Információ gyűjtés;

P(w);

Adatbázis felújítás;

V(w);

od;

readerk:

while "true" do

P(sr);

rcntrcnt+1;

if rcnt = 1 then P(w) fi;

V(sr);

Adatbázis lekérdezés;

P(sr);

rcntrcnt-1;

if rcnt = 0 then V(w) fi;

V(sr);

Válasz kiértékelése;

od;

Page 19: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

1.) Mind a reader, mind a writer folyamatnak legyen meg az esélye az adatbázishoz való hozzáféréshez.2.) Ne álljon elő azonban az a helyzet, hogy a writer folyamatok monopolizálhassák az adatbázis használatát.3.) Ne álljon elő az a helyzet sem, hogy a reader folyamatok monopolizálhassák az adatbázis használatát.

Megoldás:

A writer folyamatok továbbra is egy kapun keresztül léphetnek be azerőforráshoz. Ide akadály nélkül eljuthatnak, de belépéskor lezárják a külsőkaput a reader folyamatok előtt.A reader két kapun keresztül léphet be az erőforráshoz.A külső kaput writer, akkor nyitja ki a reader előtt, amikor - afelújítást befejezte és megkezdi erőfforás elengedését.

A belső kapu viszont közös és ezért a writer és a reader egyforma eséllyelléphet be az erőforráshoz.

Szemafor: who {w,r}, kezdőértéke: w.

Page 20: Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás

Ha felújító folyamat használni akarja az adatbázist, akkor újabb

lekérdező folyamat ne férhessen már hozzá.

Megoldás: Szemafor: who {wr,r}, kezdőértéke: wr.

w 1; sr 1; rcnt 0; r 1; who wr;

parbegin writer1 ... writern reader1 ... readerm parend;

while "true" doInformáció gyűjtés;who wr;P(w);Adatbázis felújítás;await "true" then ww +1,

who r ta;od;

while "true" do wait who = r tw;

P(sr);rcntrcnt+1;if rcnt = 1 then P(w) fi;V(sr);Adatbázis lekérdezés;P(sr);rcntrcnt-1;if rcnt = 0 then V(w) fi;V(sr);Válasz kiértékelése;

od;