Kommunikáció és szinkronizáció. 1.) Kommunikáció: Lehetőség arra, hogy egyik folyamat befolyásolja a másik folyamat lefutását. Kommunikáció eszközei: közös.

Slides:



Advertisements
Hasonló előadás
Algoritmusok.
Advertisements

Osztott rendszer: (kommunikáció csatornán keresztül). Osztott rendszer informális definíciója. • Egymástól elkülönülten létező program-komponensek egy.
L ÁTHATÓSÁG MEGHATÁROZÁSA tavaszi félév.
Az elektromos mező feszültsége
Készítette: Szinai Adrienn
Párhuzamos programozás (a fork/join és a parbegin/parend technika)
Optimális rétegzés és településrétegzési vizsgálatok a KSH lakossági felvételeiben Fraller Gergely.
A MÉRŐESZKÖZÖK CSOPORTOSÍTÁSA
3.3. Reverzibilis állapotváltozások(2)
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Az egyenest meghatározó adatok a koordináta-rendszerben
3. előadás (2005. március 1.) Utasítások, tömbök
Matematika II. 3. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Feladatok együttműködésének ellenőrzése
Borland C/C++ mintapéldák mutatókra
Készítette: Pető László
A számítógépi grafika matematikai háttere
TECHNOLÓGIA & KONSTRUKCIÓ
Szállítási probléma - fogalmak
Az entalpia és a gőzök állapotváltozásai
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Körfolyamatok n A körfolyamat olyan speciális állapotváltozás (vagy egymáshoz kapcsolódó állapotváltozások sorozata), mely önmagába záródik, azaz.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;
Programozás I. Ciklusok
ISZAM III.évf. részére Bunkóczi László
HIPERBOLIKUS PROGRAMOZÁS
Operációs rendszerek Folyamatok.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Hurokszerkesztéses szimplex módszer
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
szinuszcsomó AV csomó jobb bal
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Ciklusok (iterációk).
Összetett adattípusok
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
Ültetési rend Jelzések:
Java programozási nyelv Vezérlési szerkezetek
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.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Párhuzamosság, kritikus szakasz, szemaforok Operációs rendszerek.
Készítette: Horváth Viktória
A Visual Basic nyelvi elemei
1 Mivel foglalkoz(t)unk a laborokon? 1.hét: Word dokumentumok 1.hét: Word dokumentumok tagolása, tartalomjegyzék, ábrák számozása, hivatkozások, egyenlet-szerkesztő.
Pipeline példák. Pipe 1. feladat Adott a következő utasítás sorozat i1: R0 MEM [R1+8] i2: R2 R0 * 3 i3: R3 MEM [R1+12] i4: R4 R3 * 5 i5: R0 R2 + R4 A.
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
1 Szervetlen és Analitikai Kémia Tanszék, Kémiai Informatika Csoport Számítástechnika Kari rendszergazda: Rippel Endre (Ch C2)
Objektum orientált programozás
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Gépészeti informatika (BMEGEMIBXGI)
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Programozás C# -ban Elágazások.
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Informatikai gyakorlatok 11. évfolyam
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Szálszinkronizáció.
Előadás másolata:

Kommunikáció és szinkronizáció. 1.) Kommunikáció: Lehetőség arra, hogy egyik folyamat befolyásolja a másik folyamat lefutását. Kommunikáció eszközei: közös változók, üzenet küldés. 2.) Szionkronizáció: Kölcsönös kizárás. (kritikus szakasz) Feltételtől függő szinkronizáció. (megvárakoztatás állapot alapján) Szinkron kommunikáció. (kommunikáció szinkronizált csatornákon keresztül) Asszinkron kommunikáció.

A kölcsönös kizárásra Peterson által adott megoldás. A megoldás az aktív várakozás (busy wait) technikájának alkalmazását szemlélteti, közös változókkal történő megoldás esetén. y i, i= 1,2; az igénylés nyilvántartása. t: a másik folyamat letiltása. 1. y i ="true":az i.edik folyamat igényli az erőforrást, 2. y i ="false":az i.edik folyamat nem tart igényt az erőforrásra; i  {1,2}. 3. t = 1 : az első megtiltja az erőforrás lekötését a 2. folyamatnak. 4. t = 2 : a második megtiltja az erőforrás lekötését az 1. folyamatnak.

y1  "false"; y2  "false"; t  1; parbegin P1  P2 parend; while "true" do nem kritikus szakasz1; (y1, t)  ("true", 1); while y2  t  2 do nil od; kritikus szakasz1; y1  "false" od; P1: while "true" do nem kritikus szakasz2; ( y2, t)  ("true",2); while y1  t  1 do nil od; kritikus szakasz2; y2  "false" od; P2: Igénybejelentés; Tiltás; Aktív várakozás (busy waiting). Tiltás feloldása.

t változó használata azt a konfliktust hivatott feloldani, hogy mindkettő az aktív várakozás állapotában várakozzon: Például: (y1, t)  ("true", 1); while y2  t  2 do nil od; kritikus szakasz1; ( y2, t)  ("true",2); while y1  t  1 do nil od; kritikus szakasz2; y2  "false" Aki előbb állította be t értékét, az :  aktív várakozás, a másik  belépés. Aki később, az kilépéskor :  kinyitja a kaput a másiknak.

y1  "false"; y2  "false"; t  1; parbegin P1  P2 parend; while "true" do nem kritikus szakasz1; (y1, t)  ("true", 1); wait y2  t  2 ta; kritikus szakasz1; y1  "false" od; P1: while "true" do nem kritikus szakasz2; ( y2, t)  ("true",2); wait y1  t  1 ta; kritikus szakasz2; y2  "false" od; P2: Aktív várakozás helyett várakozás (wait utasítás).

s  1; y1  0; y2  0; parbegin P1  P2 parend; Előbb s-nek értékadás: U0: while "true" do V0: while "true" do U1: nem kritikus szakasz1; V1: nem kritikus szakasz2; U2: s  1; V2: s  2; U3: y1  1; V3: y2  1; U4: wait (y2=0)  (s  1); V4: wait (y1=0)  (s  2); U5: kritikus szakasz1; V5: kritikus szakasz2; U6: y1  0; V6: y2  0; od; P1:P2:

P1 U0: while "true" do; U1: nem kritikus szakasz1; U2: s  1; U3: y1  1; U4: wait (y2=0)  (s  1); U5: kritikus szakasz1; P2 V0: while "true" do V1: nem kritikus szakasz2; V2: s  2; V3: y2  1; V4: wait (y1=0)  (s  2); V5: kritikus szakasz2; s y1 y Baj van: mindkét folyamat kritikus szakaszba került!

A Peterson féle algoritmus egy másik változata. Mi történik, ha az (y 1,s)  (1,1); (y 2,s)  (2,1); vektor műveletek nem hajthatók végre atomi utasításként?

s  1; y1  0; y2  0; parbegin P1  P2 parend Előbb y-nak értékadás: P1P2 while "true" do while "true" do nem kritikus szakasz1; nem kritikus szakasz2; y1  1; y2  2; s  1; s  1; wait (y2=0)  (s  1); wait (y1=0)  (s  2); kritikus szakasz1; kritikus szakasz2; y1  0; y2  0; od; A program helyessége formálisan bizonyítható.

Dijkstra példája aktív várakozással történő szinkronizációra Kölcsönös kizárás. (1968) parbegin S1  S2 parend; S1: begin in1  "true"; do in2  in1  "false"; in1  "true"; od; kritikus szakasz1; in1  "false"; nem kritikus szakasz1; end; S2: begin in2  "true"; do in1  in2  "false"; in2  "true"; od; kritikus szakasz2; in2  "false"; nem kritikus szakasz2; end; Igénybejelentés. Elengedés.

Egy lehetséges helyes lefutás. in1  "true"; in2  in1  "false"; in1  "true"; in2 kiértékelése; kritikus szakasz1; in1  "false"; nem kritikus szakasz1; end; in2  "true"; in1 kiértékelése; kritikus szakasz2; in2 = "false"; nem kritikus szakasz2; end;

Egy lehetséges divergencia: in1  "true"; in2  in1  "false"; in1  "true"; in2  "true"; in1  in2  "false"; in2  "true";...Nem tudnak kilépni a do... od ciklusból! in1  "true"; in2  "true"; (in2  in1  "false"; in1  "true"; in1  in2  "false"; in2  "true";) 

A kölcsönös kizárás Szymanski modellje. Készítsünk olyan párhuzamos rendszert, amelyben minden folyamat azonos algoritmust valósít meg. Folyamatok: P 0, P 1,...,P n-1 ; Változóik rendre: jel[0], jel[1],...,jel[n-1]. Minden közös változó értékét, minden folyamat ki tudja olvasni. Közülük csak egy tudja annak értékét egyidejűleg felülírni. A kritikus szakaszba történő belépésnél a várakozásuk idejének sorszámukkal arányosnak kell lennie.

1. kísérlet: U0: while "true" do U1: nem kritikus szakasz; U2: jel[i]  1; U3: wait (  j, 1  j  n  j  i )(jel[j]=0) tw; U4: kritikus szakasz; U5: jel[i]  0; od; P i : Kölcsönös kizárás teljesül: Ha P i kritikus szakaszban van, akkor jel(i ) =1, ezért P j, j  i nem tud belépni. Holtpontmentesség nem teljesül: Ha mindnyájan egyszerre hajtják végre U2-t, akkor (  j, 1  j  n )(jel[j]=1)!

2. kísérlet: U0: while "true" do U1: nem kritikus szakasz; U2: jel[i]  1; U3: wait (  j, 1  j  n) (jel[j]=0)  jel[j]=1) tw; U4: jel[i]  4; U5: wait (  j, 1  j  i )(jek[j]=0  jel[j]=1) tw; U6: kritikus szakasz; U7: jel[i]  0; od; P i : Akit igénybejelentés elsőnek továbbenged az megjelöli magát: U4. Beütemezés: Mindig a legkisebb indexű léphessen be elsőnek:U5. (ez felel meg az index-szel arányos várakozás követelményének).

2. kísérlet: U0: while "true" do U1: nem kritikus szakasz; U2: jel[i]  1; U3: wait (  j, 1  j  n) (jel[j]=0)  jel[j]=1) tw; U4: jel[i]  4; U5: wait (  j, 1  j  i )(jek[j]=0  jel[j]=1) tw; U6: kritikus szakasz; U7: jel[i]  0; od; P i : P2 beléphet, de utána az ütemezés szerint P1 is! Nem teljesül a kölcsönös kizárás! Ha valaki (jel[i]  4;), akkor az utána jövő várjon! P1 P2 j(0) j(1) U0 V0 0 0 U1 V0 0 0 U1 V1 0 0 U2 V1 0 0 U2 V2 0 0 U3 V2 1 0 U3 V3 1 1 U4 V3 1 1 U4 V4 1 1 U4 V5 1 4 U4 V6 1 4 U5 V6 4 4 U6 V6 4 4

3. kísérlet:Pi:Pi: U0: while "true" do U1: nem kritikus szakasz; U2: jel[i]  1; U3: wait (  j, 1  j  n)(jel[j]=0  jel[j]=1  jel[j] =2); U4: if (  j, 1  j  n)(jel[j]=1) then U5: jel[i]  2; U6: wait (  j, 1  j  n)(jel[j]=4) tw; fi; U7: jel[i]  4; U8: wait (  j, 1  j  i )(jel[j]=0  jel[j]=1); U9: kritikus szakasz; U10: jel[i]  0; od; P1 P2 j1 j2 U0 V0 0 0 U1 V1 0 0 U2 V2 0 0 U3 V3 1 1 U4 V4 1 1 U5 V5 1 1 U6 V6 2 2 Holtpont!

4. kísérlet: U0: while "true" do U1: nem kritikus szakasz; U2: jel[i]  1; U3: wait (  j, 1  j  n )(jel[j]=0  jel[j]=1  jel[j]=2) tw; U4: jel[i]  3; U5: if (  j, 1  j  n)(jel[j]=1) then U6: jel[i]  2; U7: wait (  j,1  j  n)(jel[j] = 4) tw; fi; U8: jel[i]  4; U9: wait (  j, 1  j  n )(jel[j]=0  jel[j]=1) tw; U10: kritikus szakasz; U11: jel[i]  0; Prioritás nem teljesül! Pi:Pi: P1 P2 j1 j2 U1 V0 0 0 U1 V1 0 0 U2 V1 0 0 U2 V2 0 0 U3 V2 1 0 U3 V3 1 1 U4 V3 1 1 U4 V4 1 1 U4 V5 1 3 U4 V6 1 3 U4 V7 1 2 U5 V7 3 2 U8 V7 3 2 U9 V7 4 2 U10 V7 4 2 U11 V7 4 2 U1 V7 0 2 U2 V7 0 2 U3 V7 1 2 U4 V7 1 2

5. kísérlet: U0: while "true" do U1: nem kritikus szakasz; U2: jel[i]  1; U3: wait (  j, 1  j  n )(jel[j]  3) tw; U4: jel[i]  3; U5: if (  j, 1  j  n)(jel[j]=1) then U6: jel[i]  2; U7: wait (  j,1  j  n)(jel[j] = 4) tw; fi; U8: jel[i]  4; U9: wait (  j, 1  j  i)(jel[j]  2) tw; U10: kritikus szakasz; U11: wait (  j, i  j  n)(jel[j]  2  jel[j]  3) tw; U12: jel[i]  0; od; Pi:Pi: Ez már helyes megoldás, feltéve, hogy a kiértékelések U3, U5, U7, U9, U11 utasítások meg nem szakítható utasítások. Ha ezt nem tesszük fel, lehet példát találni arra, hogy nem teljesül a kölcsönös kizárás.

Feladat. Bizonyos tulajdonságú objektum párhuzamos keresése felosztott adatbázisban. X j, j  {..., -2,-1,0,1, 2,...}, nagyon hosszú vektor. Feltevésünk az, hogy  (j  {...,-2,-1,0,1, 2,...})(X i [j] = e), pontosan egy; S :k  e; parbegin S 1  S 2 parend; z = if X[j] = e then j else i fi;

S :k  e; parbegin S1  S2 parend; z = if X[j] = k then j else i fi; S1: V0: V1: B  F; j  0; V2: while B = "false" do V3: B  (X[j] = k); V4: j  j+1; od; V5: S2: U0: U1: B  "false"; i  0; U2: while B = "false" do U3: B  (X[i] = k); U4: i  i -1; od; U5: Feltevés: pontosan egy olyan "a" indexérték van, amelyre X[a] = e és (~  i(i=a)(X[i] = e).

S1 V2 V3 V4 V2 S2 U0 U1 U2 B "F" "T" "F" j a a a a+1 i B  (X[a] = e); a  a+1; B  "F"; i  0; Végtelen ciklus! (a könyvben 4-5 próbálkozás)