Elosztott rendszerek. Az elıadás. Az elosztott rendszer definíciója. Köztesrétegként felépülı elosztott rendszer. Célok

Hasonló dokumentumok
Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Elosztott rendszerek. Az elıadás. Az elosztott rendszer definíciója. Köztesrétegként felépülı elosztott rendszer

Elnevezési rendszerek. 7. előadás

Elnevezési rendszerek. A névtér elosztása (2) 4. előadás. A névfeloldás implementálása (1) A névfeloldás implementálása (2)

Kommunikáció. Kommunikáció. Folyamatok. Adatfolyam-orientált kommunikáció. Kommunikáció típusok (1) Kommunikáció típusok (2) Média. Folyamok (Streams)

Elnevezési rendszerek. Szinkronizálás

Szinkronizálás. 9. előadás

Kommunikáció. 3. előadás

Folyamatok. 6. előadás

1. előadás. Elosztott rendszerek. 1. Bevezetés

Konzisztencia és többszörözés. 10. kurzus

Lineáris. Soros. Okozati FIFO. Belépő

UNIX: folyamatok kommunikációja

Hálózatok. Alapismeretek. A hálózatok célja, építőelemei, alapfogalmak

Hálózati ismeretek. Az együttműködés szükségessége:

Bevezetés a párhuzamos programozási koncepciókba

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

S04-2 Elosztott alkalmazások készítése

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 5. rész: Elnevezési rendszerek

Hálózati architektúrák laborgyakorlat

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Autóipari beágyazott rendszerek. A kommunikáció alapjai

Transzport Réteg. Transzport réteg protokollok

Adatátviteli rendszerek Mobil IP. Dr. habil Wührl Tibor Óbudai Egyetem, KVK Híradástechnika Intézet

Elosztott rendszer architektúrák

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

SzIP kompatibilis sávszélesség mérések

Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

2. fejezet Hálózati szoftver

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

Hálózati architektúrák és Protokollok GI - 9. Kocsis Gergely

Számítógépes munkakörnyezet II. Szoftver

Elosztott rendszerek

Osztott alkalmazások fejlesztési technológiái Áttekintés

Hálózati operációs rendszerek II.

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

4. Hivatkozási modellek

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Névfeloldás hosts, nsswitch, DNS

ECDL Információ és kommunikáció

Tartalomjegyzék. Előszó... 10

Osztott rendszerek (Distributed

Hálózatok Rétegei. Számítógépes Hálózatok és Internet Eszközök. TCP/IP-Rétegmodell. Az Internet rétegei - TCP/IP-rétegek

Információ és kommunikáció

Számítógépes Hálózatok. 5. gyakorlat

A számítástechnika gyakorlata WIN 2000 I. Szerver, ügyfél Protokoll NT domain, Peer to Peer Internet o WWW oftp opop3, SMTP. Webmail (levelező)

2. fejezet Hálózati szoftver

Alapszintű formalizmusok

Kommunikációs rendszerek programozása. Voice over IP (VoIP)

Hálózati architektúrák laborgyakorlat

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Operációs rendszerek. UNIX/Linux fájlrendszerek

SZAKDOLGOZAT ÓBUDAI EGYETEM. Neumann János Informatikai kar Alba Regia Egyetemi Központ

11. Elosztott állománykezelés. Operációs rendszerek. Elosztott állománykezelés. Teljesítmény növelése. Az állományokra hivatkozás. Az állományok nevei

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Operációs rendszerek. Bemutatkozás

Operációs rendszerek. UNIX fájlrendszer

Hálózati architektúrák és Protokollok GI 8. Kocsis Gergely

ELTE, IK, Információs Rendszerek Tanszék

Számítógépes Hálózatok. 7. gyakorlat

9. MPI

Párhuzamos programozási platformok

Járműinformatika Multimédiás buszrendszerek (MOST, D2B és Bluetooth) 4. Óra

Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen

III. előadás. Kovács Róbert

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Információ és kommunikáció

A SZOFTVERTECHNOLÓGIA ALAPJAI

Az Internet működésének alapjai

Elosztott rendszerek

INTERNET. internetwork röviden Internet /hálózatok hálózata/ 2010/2011. őszi félév

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 3. óra. Kocsis Gergely, Kelenföldi Szilárd

VIII. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Komponens modellek. 3. Előadás (első fele)

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

TELE-OPERATOR UTS v.14 Field IPTV műszer. Adatlap

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

A JGrid rendszer biztonsági architektúrája. Magyaródi Márk Juhász Zoltán Veszprémi Egyetem

The Flooding Time Synchronization Protocol

BEÁGYAZOTT RENDSZEREK TERVEZÉSE UDP csomag küldése és fogadása beágyazott rendszerrel példa

Dr. Mileff Péter

Operációs rendszerek III.

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Operációs rendszerek. Az X Window rendszer

Operációs rendszerek. Az NT memóriakezelése

Számítógépes Hálózatok 2010

Hálózati réteg. WSN topológia. Útvonalválasztás.

Erőforrás gazdálkodás a bevetésirányításban

Elosztott adatbázis-kezelő formális elemzése

Az adott eszköz IP címét viszont az adott hálózat üzemeltetői határozzákmeg.

Non-stop hozzáférés az üzleti információkhoz bárhol, bármikor és bármilyen eszközzel

RPC Remote Procedure Call Távoli eljárás hívás

Tartalom. Hálózati kapcsolatok felépítése és tesztelése. Rétegek használata az adatok továbbításának leírására. OSI modell. Az OSI modell rétegei

Párhuzamos programozási platformok

Adatszerkezetek 1. előadás

Számítógépes hálózatok

Komponens alapú fejlesztés

Számítógép hálózatok gyakorlat

Átírás:

1. elıadás Az elıadás Elosztott rendszerek 1. Bevezetés Tankönyv: Andrew S. Tanenbaum Maarten van Steen: Elosztott Rendszerek Alapelvek és Paradigmák http://people.inf.elte.hu/bonnie bonnie@inf.elte.hu Az elosztott rendszer definíciója Köztesrétegként felépülı elosztott rendszer Az elosztott rendszer az önálló számítógépek olyan összessége, amely kezelıi számára egyetlen koherens rendszernek tőnik. 1.1 Célok Felhasználók és erıforrások összekapcsolása Átlátszóság Nyitottság Felhasználók és erıforrások összekapcsolása Távoli erıforrások elérése Más felhasználókkal ellenırzött módon való megosztás Átméretezhetıség

Átlátszóság az elosztott rendszerekben Átlátszóság Hozzáférhetıség (Access) Elhelyezkedés (Location) Áthelyezhetıség (Migration) Mozgathatóság (Relocation) Többszörözhetıség (Replication) Egyidejőség (Concurrency) Meghibásodás (Failure) Állandóság (Persistence) Leírás Elrejti az erıforrás elérésének mikéntjét és az adatábrázolási különbözıségeket. Elrejti az erıforrás fizikai elhelyezkedését. Elrejti az erıforrás más helyre való áthelyezhetıségét. Elrejti a használatban lévı erıforrás más helyre való mozgathatóságát. Elrejti az erıforrás többszörözöttségét. Elrejti az erıforrás több versenyhelyzető felhasználó közötti megoszthatóságát. Elrejti az erıforrás meghibásodását és újbóli üzembe helyezését. Elrejti, hogy a (szoftver) erıforrás a memóriában vagy a háttértárolón van-e. Nyitottság Szolgáltatások jól definiált szintaktikai és szemantikai szabályoknak megfelelıen Együttmőködés Hordozhatóság A megvalósítás és a módszer szétválasztása Átméretezhetıségi problémák Decentralizált algoritmusok Koncepció Központosított szolgáltatás Központosított adat Központosított algoritmus Példa Egy kiszolgáló minden felhasználó számára Egyetlen on-line telefonkönyv adatbázis A teljes információn alapuló útválasztás Mintapéldák az átméretezhetıség korlátaira Egyetlen gépnek sincs teljes információja a rendszer állapotáról. A gépek kizárólag helyi információk alapján hoznak döntéseket. Egyetlen gép meghibásodása sem okozza az algoritmus leállását. Még közvetett módon sem feltételezi bármiféle globális óra meglétét. Az átméretezés technikája (1) Az átméretezés technikája (2) 1.4 1.5 Miként különbözik a) a szerver, vagy b) a kliens által végzett őrlap ellenırzés az őrlap kitöltése közben Példa a DNS-névtér zónákra osztása

Szoftverkoncepciók Egyprocesszoros operációs rendszerek Rendszer Leírás Fı cél DOS (Distributed Operating Systems) NOS (Network Operating Systems) Köztesréteg Többprocesszoros és homogén multiszámítógépek szorosan csatolt operációs rendszere Heterogén multiszámítógépek (LAN és WAN) gyengén csatolt operációs rendszere A NOS fölötti, általános célú szolgáltatásokat implementáló újabb réteg Hardvererıforrások elrejtése és kezelése Helyi szolgáltatások távoli kliensek számára elérhetıvé tétele Elosztottsági átlátszóság biztosítása Az operációs rendszer és az alkalmazások elválasztása a mikrokernel használatával Többprocesszoros operációs rendszerek (1) monitor Counter { } private: int count = 0; public: int value() { return count;} void incr () { count = count + 1;} void decr() { count = count 1;} Az egész számot az egyidejő eléréstıl megvédı monitor Többprocesszoros operációs rendszerek (2) monitor Counter { private: int count = 0; int blocked_procs = 0; condition unblocked; public: } int value () { return count;} void incr () { if (blocked_procs == 0) count = count + 1; else signal (unblocked); void decr() { if (count ==0) { blocked_procs = blocked_procs + 1; wait (unblocked); blocked_procs = blocked_procs 1; Egyidejő elérés ellen védett egész számot megvalósitó monitor, amely képes blokkolni a hívó folyamatokat } } } else count = count 1; Multiszámítógépes operációs rendszerek (1) Multiszámítógépes operációs rendszerek (2) A blokkolás és a pufferelés lehetséges esetei üzenetátadáskor

Multiszámítógépes operációs rendszerek (3) Szinkronizációs pont Küldı puffer Megbízható-e a kommunikáció? Küldı blokkolása amíg a puffer tele Van Nem feltétlenül Küldı blokkolása az üzenet elküldéséig Nincs Nem feltétlenül Küldı blokkolása az üzenet megérkezéséig Nincs Kötelezıen Küldı blokkolása az üzenet kézbesítéséig Nincs Kötelezıen A blokkolás a pufferelés és a megbízható kommunikáció összefüggése Elosztott, közös memóriájú rendszerek a) A címtartomány lapjainak elosztása négy gép között b) A kialakult helyzet, miután CPU 1 a 10. lapra hivatkozott c) A kialakult helyzet, ha a 10. lap csak olvasható, és többszörözést is használunk Hálózati operációs rendszerek (1) Hálózati operációs rendszerek (2) A hálózati operációs rendszer általános felépítése Egy szerver és két kliens a hálózati operációs rendszerben. Hálózati operációs rendszerek (3) A köztesréteg helyének kiválasztása A különbözı kliensek a szervereket különbözı helyre Szerelhetik fel. A köztesrétegként megvalósított elosztott rendszer általános felépítése.

A köztesréteg és a nyitottság A nyitott köztesréteg alapú elosztott rendszerben mind a köztesrétegek által használt protokollnak, mind pedig az alkalmazásokhoz kapcsolható interfészüknek meg kell egyeznie. A rendszerek összehasonlítása Szempont Átlátszóság foka Azonos operációs rendszer minden csomóponton? Operációs rendszer másolatok száma Kommunikáció alapja Erıforráskezelés Elosztott operációs rendszer Nagyon magas Hálózati operációs rendszer Köztesréteg alapú elosztott rendszer Magas Alacsony Magas Igen Igen Nem Nem 1 N N N Közös memória Globális, központi Üzenetek Állományok Modellfüggı Globális, elosztott Többprocesszoros Multiszámítógépes Csomópontonként Csomópontonként Átméretezhetıség Nincs Közepes Igen Változó Nyitottság Zárt Zárt Nyitott Nyitott

2. előadás Kommunikáció A és B folyamatnak meg kell egyeznie a bitek jelentésében Kommunikáció 1. rész Szabályok protokollok ISO OSI Többrétegű protokollok előnyei Kapcsolat-orientált / kapcsolat nélküli Protokollrétegek (1) Protokollrétegek (2) Az OSI-modell szintjei, interfészei és protokolljai. A hálózaton megjelenő tipikus üzenet szerkezete. Fizikai réteg Adatkapcsolati réteg (2) 0/1 átvitelének módjai Feszültség, küldés sebessége, stb. Adatkapcsolati réteg Meghibásodást fedi el Adatkeretek Ellenőrző összeg A küldő és a fogadó közötti párbeszéd az adatátviteli rétegben.

Útvonalválasztás IP Internet Protocol Hálózati réteg Szállítás Csomagok elveszhetnek Megbízható kapcsolatot épít TCP Transmission Control Protocol UDP Universal Datagram Protocol RTP Real-time Transport Protocol Kliens-szerver TCP a) A TCP normál működése b) Tranzakciós TCP Viszony- és megjelenítési rétegek Párbeszéd vezérlése Bitek jelentése Alkalmazási réteg FTP File Transfer Protokoll vs. ftp-program Köztesréteg-protokoll Köztesréteg protokoll (1) Logikailag az alkalmazási rétegbe tartozik, de tartalmaz általános célú protokollokat Köztesréteg szolgáltatásait támogató protokollok Azonosító Jogosultságok Véglegesítő protokoll Elosztott zárolási protokoll Magas szintű kommunikációs szolgáltatások: RPC, RMI Köztesréteg protokoll (2) RPC Remote Procedure Call Elrejti a kommunikáció tényét Hagyományos eljáráshívás count = read(fd, buf, nbytes); Érték szerinti / hivatkozás szerinti paraméterátadás A hálózatos kommunikáció módosított hivatkozási modellje.

Hagyományos eljáráshívás Kliens- és szerveroldali eljáráscsonkok a) Paraméter-átadás helyi eljáráshívás esetén: a verem állapota a read függvény meghívása előtt b) A verem állapota a hívott eljárás futása közben A kliens és a szerver közötti távoli eljárás hívásának (RPC) alapelve. Távoli eljárás hívása során végrehajtandó lépések 1. A kliensfolyamat hagyományos módon meghívja a kliensoldali eljáráscsonkot. 2. A csonk felépíti az üzenetet, és meghívja a helyi op. rsz.-t. 3. A kliensoldali op. rsz. elküldi az üzenetet a távoli op. rsz.-nek. 4. A távoli op. rsz. átadja az üzenetet a szerveroldali eljáráscsonknak. 5. A csonk kicsomagolja a paramétereket és meghívja a szervert. 6. A szerver elvégzi a feladatát, és visszaadja az eredményt a csonknak. 7. A csonk becsomagolja az eredményt, és meghívja a helyi (szerveroldali) op. rsz.-t. 8. A szerveroldali op. rsz. elküldi az üzenetet a kliensoldali op. rsz.-nek. 9. A kliensoldali op. rsz. átadja az üzenetet a kliensoldali csonknak. 10. A csonk kicsomagolja az eredményt, és visszatér a hívó kliensfolyamathoz Paraméterek átadása (1) Az RPC útján történő távoli feladatvégzés során szükséges lépések. Paraméterek átadása (2) A paraméterek leírása és a csonk generálása a) Az eredeti üzenet a Pentium gépen. b) Az üzenet, miután megérkezik a SPARC gépre. c) Az invertált üzenet (a dobozok felső sarkában látható kis számok a bájt sorszámát jelentik).

Elosztott objektumok A távoli objektum elterjedt kialakítása a kliensoldali helyettes (proxy) alkalmazásával

3. előadás Protokollok Kommunikáció 2. rész RPC (Remote Procedure Call) távoli eljáráshívás RMI (Remote Method Invocation) távoli metódushívás MOM (Message-Oriented Middleware) üzenetorientált köztesréteg Streams folyamatok - Üzenetküldés elrejtése - Hozzáférési átlátszóság Távoli eljáráshívás RPC kommunikáció menete 2-8 RPC - paraméterátadás Probléma: különböző gépek, különböző adatábrázolással Mutatók Komplex adatszerkezetek => protokoll: Üzenet formátumának definiálása Egyszerű adatszerkezetek ábrázolása Üzenettovábbítás módja IDL (Interface Definition Language) DCE RPC (1) Distributed Computing Environment Konverzió IDL Eljáráshívás szintaxisa Konstans deklaráció Típusdefiníció konvertálási információ Azonosítók

DCE RPC (2) DCE RPC (3) Kliens és a szerver megírásának lépései a DCE RPC esetén. Kliens csatlakozása a szolgáltatáshoz Ajtók - Doors Aszinkron RPC a) A kliens és a szerver együttműködése hagyományos RPC során b) Együttműködés aszinkron RPC esetén Késleltetett szinkronizált RPC RMI elosztott objektumok Kliens és szerver együttműködése két aszinkron RPC segítségével. Modell kliensoldali helyettessel és szerveroldali vázzal.

RMI Kliens csatlakozása az objektumhoz Elosztott objektum Távoli objektum Distr_object* obj_ref; obj_ref = ; obj_ref-> do_something(); // Deklarálja az objektumhivatkozást // Inicializálja az objektumhivatkozást // Implicit csatlakozás és metódushívás Fordítási idejű objektum Futási idejű objektum Állandó objektum Nem állandó objektum Distr_object objpref; Local_object* obj_ptr; obj_ref = ; obj_ptr = bind(obj_ref); obj_ptr -> do_something(); (a) (b) // Deklarálja az objektumhivatkozást // Deklarálja a helyettes mutatóját // Inicializálja az objektumhivatkozást // Explicit csatlakozás (helyettes mutatója) // Helyetes metódusának meghívása a) Implicit csatlakozás b) Explicit csatlakozás RMI távoli művelet hívása Statikus hívás - IDL -> csonk fobject.append(number); Dinamikus hívás - futás közbeni összeállítás invoke(fobject, id(append), number); [ általánosan: invoke(objektum, metódus, input_paraméterek, output_paraméterek); ] Csak távoli objektum Java RMI Objektumok zárolása synchronized kliensen blokkol Helyettes szerializálható Üzenetorientált kommunikáció Korábbi kommunikációs modell RPC, RMI nem mindig használható: Szerver nem biztos, hogy üzemel a kérés elküldésekor Nem mindig hatékony a nagyfokú szinkronitás => üzenetcsere Pufferelés és a küldő blokkolásának lehetséges helyei

Új kommunikációs modell Üzenetküldés Megtartó kommunikáció Időleges kommunikáció Szinkron kommunikáció Aszinkron kommunikáció Ezek kombinációja is lehetséges Kommunikáció fajtái 1. Kommunikáció fajtái 2. a) Megtartó aszinkron kommunikáció b) Megtartó szinkron kommunikáció c) Időleges aszinkron kommunikáció d) Nyugta alapú időleges szinkron kommunikáció Kommunikáció fajtái 3. Üzenetorientált időleges kommunikáció Szállítási réteg által biztosított modell Kommunikációs csatlakozópont (socket) TCP primitívek e) Kézbesítés alapú időleges szinkron kommunikáció f) Válasz alapú időleges szinkron kommunikáció

Berkeley kommunikációs csatlakozópontok Berkeley kommunikációs csatlakozópontok Primitív Csatlakozópont (Socket) Kötés (Bind) Figyel (Listen) Elfogad (Accept) Csatlakozik (Connect) Küld (Send) Fogad (Receive) Lezár (Close) Jelentése Új kommunikációs végpont létrehozása A csatlakozóponthoz hozzárendel egy helyi címet Meghirdeti a kommunikációra való képességet Blokkolja a hívót a kapcsolatfelvételi kérés megérkezéséig Aktívan megkísérli a kapcsolat felépítését Adatot küld a kapcsolaton keresztül Adatot fogad a kapcsolaton keresztül Bontja a kapcsolatot MPI Üzenetátadó interfész MPI Üzenetátadó interfész Message-Passing Interface Csatlakozóponos megoldás nem eléggé magas szintű => kommunkációs könyvtárak inkompatibilitás => MPI (szabványosítás) Időleges kommunikáció Azonosító (csoport, folyamat) Primitív MPI_bsend MPI_send MPI_ssend MPI_sendrecv MPI_isend MPI_issend MPI_recv MPI_irecv Jelentése A helyi küldőpuffer végéhez hozzáadja a kimenő üzenetet Üzenetet küld, és vár annak helyi vagy távoli pufferbe történő másolásáig Üzenetet küld, és vár a nyugta megérkezéséig Üzenetet küld, és vár a válasz megérkezéséig Átad egy kimenő üzenetre mutató hivatkozást, és továbbmegy Átad egy kimenő üzenetre mutató hivatkozást, és várja ennek nyugtázását Üzenet fogadása; blokkolódik, ha nincs üzenet Ellenőrzi, hogy van-e beérkező üzenet, de nem blokkolja a hívót Üzenetorientált megtartó kommunikáció Üzenetsor-kezelő modell Üzenetorientált köztesréteg MOM Megtartó aszinkron kommunikáció Üzenetek köztes szinten való tárolása (várakozási sorok) Várakozási sort használó gyengén csatolt kommunikáció 4 lehetősége

Üzenetsor-kezelő modell Az üzenetsor-kezelő rendszer általános felépítése Primitív Betesz (Put) Kivesz (Get) Lekérdez (Poll) Értesít (Notify) Jelentése A megadott várakozási sor végére helyez egy üzenetet Mindaddig blokkol, amíg üres a várakozási sor, majd kiveszi a legelső üzenetet Megvizsgálja, a megadott várakozási sort, és kiveszi a legelső üzenetet, nem blokkol Egy kezelő rutint installál, amely mindannyiszor meghívásra kerül, ha üzenet kerül a várakozási sorba Az üzenetsor-kezelő rendszer várakozási sorát kezelő alapinterfész Az üzenetsor-kezelő szint szerinti és szállítási szint szerinti cím összefüggése Az üzenetsor-kezelő rendszer általános felépítése Üzenetközvetítők Az útválasztókkal kiépített üzenetsor-kezelő rendszer általános felépítése Az üzenetközvetítőt használó üzenetsor-kezelő rendszer általános felépítése

4. előadás Kommunikáció 3. rész Folyamatok 1. rész Kommunikáció 3. rész Adatfolyam-orientált kommunikáció Kommunikáció típusok (1) Diszkrét interakció A Kommunikáció típusok (2) Eddig: egymástól független, teljes információegységek cseréje kommunikáció lezajlásának pillanata nem fontos Folyamatos interakció A B idő Most: időzítés pontossága alapvető fontosságú folyamatos média támogatása Hogyan támogatja ezt az elosztott rendszer? < B idő Média Diszkrét (ábrázolású) média pl. szöveg, kép Folyamatos (ábrázolású) média: pl. hang, videó Multimédia Folyamatos képsor biztosítása Quality of Service Átlátszóság Standardok Folyamok (Streams) Adategységek sorozatának átviteli módjai: aszinkron szinkron izoszinkron Folyam Egyszerű folyam (Simple Stream) Összetett folyam (Complex Stream) több egymással kapcsolatban álló egyszerű folyam alfolyamok közötti kapcsolat szintén időfüggő

Movie, mint összetett folyam Adatfolyam (1) Két folyamat között a hálózaton keresztül létesített folyam. Adatfolyam (2) Adatfolyam (3) Közvetlenül két eszközt összekötő folyam. Példa egy műsorszóró folyam több fogadó felé való küldésére. Multimedia Rendszer-környezet (Multimedia System Environment) Technológiai adatok Multimédia forrás Mbit/s GB/h Telefon (PCM) 0.064 0.003 Eszköz Mbit/s Fast Ethernet 100 MP3 0.14 0.06 EIDE Disk 133 Audió CD 1.4 0.62 ATM OC-3 156 MPEG-1 videó 1 1.5 0.66 SCSI Ultra wide disc 320 MPEG-2 videó 4 1.76 IEEE 1394 (FireWire) 400 Digitális kamera (720*480) 25 11 Gigabit Ethernet 1 000 Tömörítetlen TV (640*480) 221 97 SCSI Ultra-160 1 280 Tömörítetlen HDTV (1280*720) 648 288

A szolgáltatás minősége QoS Quality of Service Időfüggő követelmények mit várunk el a hálózattól Folytonos adatfolyamok esetén időzítési mennyiségi és megbízhatósági kérdések QoS kategóriák Időbeliség (timeliness) adatnak időben kell megérkeznie Mennyiség (volume) áteresztőképesség (throughput) Megbízhatóság (reliability) adatvesztés mértéke Költség (cost) Kritikusság (criticality) Érzékelés minősége (quality of perception) QoS dimenziók Időbeliség dimenziói Késleltetés (latency) Kezdeti késleltetés (start-up latency) Remegés (jitter) Mennyiség dimenziói sávszélesség frames/s vagy bits/s vagy bytes/s Megbízhatóság dimenziói MTBF (Mean Time Between Faliure) MTTR (Mean Time To Repair) Telekommunikációs vonalak esetén a hiba-ráta Qos követelmények megadása Determinisztikus - folyamspecifikáció precíz értékek, értékhatárok Valószínűségi (probabilistic) valószínűségi értékek a QoS-re Eloszláson alapuló (stochastic distributions) Minőségi osztályok Tipikus QoS követelmények A QoS meghatározása zsetontartály algoritmus (1) QoS Max késleltetés (s) Max remegés (ms) Sávszélesség (Mbit/s) Bit hiba-ráta Csomag hiba-ráta Hang 0.25 10 0.054 < 10-3 < 10-4 Videó (TV) 0.25 100 100 < 10-2 < 10-3 Tömörített videó 0.25 100 2 10 < 10-6 < 10-9 Kép 1-2 10 < 10-4 < 10-9 Adat (file-átvitel) 1-2 100 0 0 Valós-idejű adat 0.001 1 - < 10 0 0 A zsetontartály-algoritmus elve.

A QoS meghatározása zsetontartály algoritmus (2) Bemeneti adatok jellemzői Adategység maximális mérete (bájt) Zsetontartály időegységráta (bájt/s) Zsetontartály mérete (bájt) Maximális átviteli adatráta (bájt/s) Megkövetelt szolgáltatások Veszteségi érzékenység (bájt) Veszteségi időtartam (µs) Löketveszteségi érzékenység (adategység) Legkisebb észlelt készleltetés (µs) Legnagyobb késleltetési eltérés (µs) Szavatolt minőség QoS függőségek Egy komponens által nyújtott QoS függhet egy másik komponens által nyújtott QoS-től pl. rétegelt rendszerekben QoS igények megfogalmazásának egy rendszere Folyamspecifikáció. Specifikáció QoS működtetése Tárgyalás (negotiation) az alkalmazás kevesebbet is elfogadhat kevesebb költségért Beléptetés (admission control) ha belépett, a rendszer garantálja a QoS-t Erőforrás-lefoglalás ha szükséges a QoS betartásához A folyam megindítása QoS-nek megfelelő erőforrások lefoglalása sávszélesség puffer feldolgozási kapacitás Erőforrás lefoglaló protokoll (RSVP Resource reservation Protocol) QoS fogadó által kezdeményezett beléptetés, lefoglalás multicast üzenetküldés támogatása A folyam megindítása Az RSVP-módszerrel történő erőforrás-lefoglalás általános vázlata az elosztott rendszerben.

Szinkronizálási mechanizmusok (1) Szinkronizálási mechanizmusok (2) Az adategység szintjén történő explicit szinkroniálás elve. A magas szintű interfészek által támogatott szinkronizáció elvi vázlata. Folyamatok Folyamatok 1. rész Folyamat kezelése, ütemezése folyamattábla új folyamat létrehozása átkpcsolás folyamatok elválasztása egymástól átlátszó Szál szálkezelő rendszer szálak védése egymástól a programozó feladata Szálak használata a nem elosztott rendszerekben Szálak implementációja Száltámogató csomagok létrehozás, megsemmisítés szinkronizálás Szálkönyvtár futhat felhasználói módban kernel módban hibrid megoldás: könnyűsúlyú folyamatok (LWP LightWeight Process) Az IPC hatására bekövetkező állapotváltozások LWP: száltámogató csomag felhasználói módban blokkoló rendszerhívás nem blokkolja az egész folyamatot átlátszó

Szálak implementációja Többszálú szerverek (1) A felhasználói szintű szálak és a kernel szintű könnyűsúlyú folyamatok kombinációja. A diszpécser/dolgozó modell szerinti többszálú szerver felépítése. Többszálú szerverek (2) Modell Szálak Egyszálú folyamat Véges állapotú gép Jellemzője Párhuzamos végrehajtás, blokkoló rendszerhívások Nincs párhuzamos végrehajtás, blokkoló rendszerhívások Párhuzamos végrehajtás, nem blokkoló rendszerhívások A szerver felépítésének három módja.

5. előadás Folyamatok 2. rész Elnevezési rendszerek 1. rész Folyamatok 2. rész Emlékeztető Folyamatok Szálak Könnyűsúlyú folyamatok Szálak nem elosztott rendszerekben rendszerhívásra várakozás alatt hasznos munka többprocesszoros rendszerek kihasználása implementációs okok Többszálú kliens Előnyök: elosztottsági átlátszóság hatékonyság Kliens (tipikus) feladatai: felhasználói felület helyi feldolgozó rész kommunikációs rész + elosztottsági átlátszóság eléréséhez szükséges elemek Kliensoldali szoftver és az átlátszóság Többszörözhetőségi átlátszóság megvalósítása kliens-oldalon Hozzáférhetőségi átlátszóság Elhelyezkedési, áthelyezhetőségi és mozgathatsági átlátszóság Meghibásodási átlátszóság Többszörözhetőségi átlátszóság A távoli objektumtöbbszörözés átlátszóvá tételének egyik lehetséges módja a kliensoldali megoldás használata.

Többszálú szerver (1) Többszálú szerver (2) Előnyök: egyszerűbb kód párhuzamos végrehajtás lehetősége blokkoló rendszerhívás idejének kihasználása Szerver feladatai: várakozik a beérkező kérésekre kezeli a kérést A diszpécser/dolgozó modell szerinti többszálú szerver felépítése. Többszálú szerver általános tervezési szempontok Hogyan találják meg a kliensek a szervert Ismétlőszerver <-> konkurens szerver Lehet-e megszakítást küldeni a szervernek Állapot nélküli szerver <-> állapotteljes Hogyan találják meg a kliensek a szervert a) démon használatával (mint a DCE esetén szokásos) b) szuperszerver használatával (mint a Unix-rendszerekben szokásos) Kód áthelyezése A kód áthelyezésének okai A kód áthelyezésének okai: teljesítménynövelés terhelésmegosztási algoritmusok kommunikáció leszorítása adatot ott dolgozzuk fel, ahol van párhuzamos végrehajtás kihasználása rugalmasság A kliens szerverrel folytatott kommunikációjának dinamikus konfigurálási elve. A kliens először letölti a szükséges szoftvert, majd meghívja a szervert.

A folyamat szegmensei Kódszegmens végrehajtott program Végrehajtási szegmens futási állapot Kódáthelyezési modellek (1) Gyenge mobilitás Erős mobilitás Küldő által kezdeményezett Fogadó által kezdeményezett Gyenge mobilitásnál Célfolyamatban fut Külön folyamatban fut Erős mobilitásnál Áthelyezett folyamat Klónozott folyamat Kódáthelyezési modellek (2) Az áthelyezés és a helyi erőforrások (1) Folyamat-erőforrás kötés azonosítókapcsolt kizárólag az adott erőforrás kell tartalomkapcsolt az adott erőforrás tartalma kell típuskapcsolt adott típusú erőforrás kell Erőforrás-gép kötés csatolatlan könnyen áthelyezhető rögzített áthelyezhető, de költséges mozdíthatatlan nem helyezhető át A kódáthelyezés lehetőségei. Folyamat-erőforrás kötés Erőforrásszegmens igényelt külső erőforráshivatkozások Azonosítókapcsolt Tartalomkapcsolt Típuskapcsolt Csatolatlan Rögzített Mozdíthatatlan erőforrás áthelyezése (vagy globális hivatkozás létesítése) tartalom másolása (vagy erőforrás áthelyezése vagy globális hivatkozás létesítése) újrakapcsolódás helyileg elérhetőhöz (vagy erőforrás áthelyezése vagy tartalom másolása) Erőforrás-gép kötés globális hivatkozás létesítése (vagy erőforrás áthelyezése) globális hivatkozás létesítése (vagy tartalom másolása) újrakapcsolódás helyileg elérhetőhöz (vagy globális hivatkozás létesítése vagy tartalom másolása) globális hivatkozás létesítése globális hivatkozás létesítése újrakapcsolódás helyileg elérhetőhöz (vagy globális hivatkozás létesítése) Másik gépre való kódáthelyezés során a helyi erőforrásokra való hivatkozásokkal kapcsolatos műveletek. Kód áthelyezése heterogén rendszerben Szükséges az összes platform támogatottsága újrafordítás Erős mobilitásnál végrehajtási szegmens áthelyezhetősége Végrehajtási szegmens tartalma: folyamat által elérhető védett adatok programszámláló értéke folyamat vermének tartalma Lehetséges megoldás: kódáthelyezés csak meghatározott pontokon programvermem másolatának (áthelyezési verem) tárolása gépfüggetlen módon kódáthelyezéskor kód és áthelyezési verem átküldése

Kód áthelyezése heterogén rendszerben Programozási nyelv által támogatott mobilitás JoCaml Szerver: let def f x = reply x*x in Ns.register "square" f vartype;; Kliens: let loc here do {};; Ns.register "here" here vartype; Join.server ();; let loc mobile do { let here = Ns.lookup "here" vartype in go here; A végrehajtási szegmens áthelyezhetőségének támogatásához szükséges áthelyezési verem kezelésének elvi vázlata heterogén környezetben. } let sqr = Ns.lookup "square" vartype in let result = sqr 5 in print_string ("square of 5 = "^string_of_int result^"\n"); flush stdout; Elnevezési rendszerek 1. rész Nevek, azonosítók és címek Nevek erőforrások megosztása, entitások egyértelmű azonosítása, helyek megjelölése, stb. Nevek feloldása névszolgáltató rendszer Kapcsolódási pont Helyfüggetlen név Azonosító Emberközeli nevek Névterek (1) Névterek (2) Elnevezési gráfok csomópontok gyökér globális név helyi név Általános elnevezési gráf egyetlen gyökércsomóponttal.

Névfeloldás Csatolás és felszerelés (1) Név visszakeresése Csomópontról csomópontra Kiválasztási mechanizmus Az elnevezési gráfban lévő szimbolikus hivatkozás elvének magyarázata. Csatolás és felszerelés (2) Csatolás és felszerelés (3) Távoli névtér felszerelése adott hozzáférési protokoll segítségével. A DEC globális névszolgáltatásának felépítése.

6. előadás A névtér elosztása (1) Elnevezési rendszerek 2. rész A DNS-névtér felosztása (három rétegre), amely az interneten keresztül elérhető állományokat is tartalmaz. A névtér elosztása (2) A névfeloldás implementálása (1) Egység Globális Szervezeti Kezelői Földrajzi átméretezhetőség Világméretű Vállalat szintű Osztály szintű Csomópontok száma Kevés Sok Rendkívül sok Visszakeresés elvárt válaszideje Másodpercek Milliszekundumok Azonnal Frissítési terjedés Ráérősen Azonnal Azonnal Másolatok száma Sok Nincs vagy kevés Nincs Kliensoldali gyorsítótárat használunk? Igen Igen Néha A globális, szervezeti és kezelői rétegbe szervezett nagyméretű névtérben található, csomópontokat implementáló névszerverek összehasonlítása. Tegyük fel, hogy a névszervereket nem többszörözzük és nem használunk kliensoldali gyorsítótárat Iteratív névfeloldás kliens több névszerverrel is felveszi a kapcsolatot Rekurzív névfeloldás kliens csak a gyökér-névszerverrel tartja a kapcsolatot root:<nl, vu, cs, ftp, pub, globe, index.txt> (ftp://ftp.cs.vu.nl/pub/globe/index.txt) A névfeloldás implementálása (2) A névfeloldás implementálása (3) Az iteratív névfeloldás elve. A rekurzív névfeloldás elve.

A névfeloldás implementálása (4) A névfeloldás implementálása (5) Feloldandó Átadja a gyereknek Csomópontszerver Visszakeresendő Visszakapja és tárolja cs <ftp> #<ftp> -- -- #<ftp> Visszatér az igénylőhöz vu <cs,ftp> #<cs> <ftp> #<ftp> #<cs> #<cs, ftp> nl <vu,cs,ftp> #<vu> <cs,ftp> #<cs> #<cs,ftp> gyökér <nl,vu,cs,ftp> #<nl> <vu,cs,ftp> #<vu> #<vu,cs> #<vu,cs,ftp> #<vu> #<vu,cs> #<vu,cs,ftp> #<nl> #<nl,vu> #<nl,vu,cs> #<nl,vu,cs,ftp> Az <nl, vu, cs, ftp> rekurzív névfeloldása. A névszerverek gyorsítótárba helyezik a köztes eredményeket a későbbi visszakeresés gyorsítása érdekében. A rekurzív és az ismétlő névfeloldás során szükséges kommunikáció összehasonlítása. A DNS-névtér (1) A DNS-névtér (2) Tartományi névszolgáltató rendszer (Domain Name System) Levelezőszerverek és gazdagépek nevének lekérdezése DNS névtér fa címke, teljes név tartomány, tartománynév erőforrásrekordok Rekord típusa Kapcsolódó entitás Leírás SOA Zóna A hozzá tartozó zónáról tartalmaz információt A Gazdagép A csomópont által képviselt gazdagép IP-címét tartalmazza MX Tartomány A csomópontnak címzett levelet kezelő szerverre való hivatkozás SRV Tartomány Adott szolgáltatást nyújtó szerverre való hivatkozás NS Zóna A kapcsolódó zónát implementáló névszerverre való hivatkozás CNAME Csomópont Szimbolikus hivatkozás a kapcsolódó csomópont elsődleges nevére PTR Gazdagép A gazdagép teljes nevét tartalmazza HINFO Gazdagép A csomópont által képviselt gazdagépről tartalmaz információt TXT Bármi Hasznosnak gondolt entitásspecifikus információt tartalmaz A DNS-névtér csomópontjainak tartalmát alkotó erőforrásrekordok legfontosabb típusai. A DNS megvalósítása (1) A DNS megvalósítása (2) A kezelői réteg nem a DNS része Minden zónát névszerver valósít meg A névszerverek többszörözöttek A cs.vu.nl zóna DNSadatbázisának részlete A zóna frissítését az elsődleges névszerver végzi Zónaátvitel Erőforrás-rekordok

A DNS megvalósítása (3) OSI X.500 (1) Katalógusszolgáltatás Név Rekord típusa Rekord értéke cs.vu.nl NS solo.cs.vu.nl solo.cs.vu.nl A 130.37.21.1 Tulajdonság alapú keresés Katalógusbejegyzések Rekord tulajdonság-érték párok A vu.nl tartomány leírásának a cs.vu.nl altartományt meghatározó részlete. X.500 (2) X.500 (3) Tulajdonság Rövidítés Érték Country C NL Locality L Amsterdam Organization L Vrije Universiteit OrganizationalUnit OU Math. & Comp. Sc. CommonName CN Main server Mail_Servers -- 130.37.24.6, 192.31.231,192.31.231.66 FTP_Server -- 130.37.21.11 WWW_Server -- 130.37.21.11 Katalógus információs fa részlete X.500-as elnevezési konvenciókat használó egyszerű példa az X.500-as katalógusbejegyzéseire The X.500 Name Space (3) Mozgó entitások helyének meghatározása Jellemző Érték Jellemző Érték Country NL Country NL Locality Amsterdam Locality Amsterdam Organization Vrije Universiteit Organization Vrije Universiteit OrganizationalUnit Math. & Comp. Sc. OrganizationalUnit Math. & Comp. Sc. CommonName Main server CommonName Main server Host_Name star Host_Name zephyr Host_Address 192.31.231.42 Host_Address 192.31.231.66 Két olyan katalógusbejegyzés, amelyeknél a Host_Name a relatív megkülönböztető név. Cím megváltozik tartományon belül tartományon kívül Nevet nem szabad megváltoztatni gép új címe a DNS adatbázisba szimbolikus hivatkozás Nevek helyett azonosítók használata helymeghatározó szolgáltatás

Entitások elnevezése a helymeghatározással szemben Egyszerű megoldások Adatszórás és csoportcímzés kérés mindenkinek az érintett válaszol (cím) pl. ARP Továbbítómutatók az entitás hivatkozást hagy maga után pl. SSP lánc módszere a) Címek és nevek közötti közvetlen, egyszintű leképezés. b) Azonosítókat használó kétszintű leképezés. Továbbítómutatók (1) Továbbítómutatók (2) A továbbmutató átirányítása a rövidítő információ tárolásával. A (helyettes, váz) párokat használó továbbmutatók elve. Otthon alapú módszerek (1) Otthon alapú módszerek (2) Nagyméretű hálózaton Otthon entitás pillanatnyi helye pl. Mobile IP hazai ügynök (home agent) felügyeleti cím (care-of address) A Mobile IP elve.

Hierarchikus módszerek (1) Hierarchikus módszerek (2) A helymeghatározó-szolgáltatás hierarchikus tartományokká szervezése, melyek mindegyikének van egy hozzá tartozó katalógus-csomópontja. Különböző levéltartományokban elhelyezkedő, két címmel rendelkező entitásra vonatkozó információ tárolása. Hierarchikus módszerek (3) Hierarchikus módszerek (4) Adott hely megkeresése a hierarchikusan szervezett helymeghatározó-szolgáltatással. a) A kérés az első olyan csomópontig megy, amely ismeri E entitást. b) A levélcsomópontig vezető továbbítómutatók láncának létrehozása. Mutatótárolás (1) Mutatótárolás (2) Arra a katalógus-csomópontra hivatkozó mutató gyorsítótárba való helyezése, amely az entitás leggyakoribb tartózkodási helyét takarja. Érvénytelenítendő, gyorsítótárban lévő mutató, amely nem helyi címmel térne vissza, miközben helyi cím is elérhető lenne.

A méretezhetőség kérdései A helymeghatározó-szolgáltatás által fedett hálózat méretezhetőségi problémája, ha az alcsomópontokat egyenlően osztjuk el a hálózaton.

7. előadás Elnevezési rendszerek 3. rész Szinkronizálás 1. rész Elnevezési rendszerek 3. rész A nem hivatkozott entitások eltávolítása Motiváció A nem hivatkozott objektumok problémája A nem elérhető hivatkozást el kell távolítani => elosztott szemétgyűjtő Példa az egymásra hivatkozó objektumokat ábrázoló gráfra. Egyszerű hivatkozásszámlálás Objektumra mutató hivatkozások megszámolása Probléma az egyszerű hivatkozásszámlálással (1) Hivatkozás létrehozásakor növeljük Hivatkozás eltávolításakor csökkentjük Ha a számláló 0, az objektum törölhető A hivatkozásszámláló helyes értékének beállítási problémája megbízhatatlan kommunikáció esetén.

Probléma az egyszerű hivatkozásszámlálással (2) a) A hivatkozás átmásolása egy másik folyamatnak és a hivatkozásszámláló elkésett növelése b) A megoldás Fejlettebb hivatkozásszámlálás (1) Súlyozott hivatkozásszámlálás csak csökkentés Minden objektumnak előre meghatározott teljes súlya van. <-> részleges súly Új hivatkozáskor, másoláskor a súly felét átadjuk Törléskor: az objektum a teljes súlyát a törlendő részleges súlyával csökkenti Ha a teljes súly 0, az objektum törölhető Fejlettebb hivatkozásszámlálás (2) Fejlettebb hivatkozásszámlálás (3) a) A súlyok kezdeti hozzárendelése súlyozott hivatkozásnál. b) Súlyok hozzárendelése az új hivatkozás létrehozásakor. c) Súlyok hozzárendelése a hivatkozás másolásánál. Fejlettebb hivatkozásszámlálás (4) Fejlettebb hivatkozásszámlálás (5) Indirekció alkalmazása, amikor egy hivatkozás részleges súlya eléri az egyet. Távoli hivatkozás létrehozása és átmásolása nemzedéki hivatkozásszámlálás esetén.

A váz nyilvántartja a rá hivatkozó helyetteseket (mutató) Létező elem hozzáadása, nem létező törlése idempotens művelet Létrehozáskor az új elküldi azonosítóját a váznak Másoláskor az új értesíti a vázat Pl. Java RMI Hivatkozáslista Elérhetetlen entitások azonosítása (1) Egyszerű nyomkövetés az elosztott rendszerben egyprocesszoros rendszerekben jelöl és takarít (mark and sweep) a jelölőszakasz a gyökérkészletből indulva megjelöli az entitásokat fehér minden entitás kezdetben szürke ami elérhető, de még nem dolgoztuk fel (a folyamat előrehaladása közben) fekete ami elérhető a gyökérből (a jelölő szakasz végére) a takarítószakasz törli a meg nem jelölteket Elérhetetlen entitások azonosítása (2) Csoporton belüli nyomkövetés (1) Csoporton belüli nyomkövetés vázak megjelölése a jelölések kiterjesztése a vázakról a helyettesekre a jelölések kiterjesztése a helyettesekről a vázakra stabilizálás az előző két lépés megismétlésével szemét eltávolítása váz lehet: puha / kemény a helyettes lehet: puha / kemény / semmilyen A vázak kezdeti jelölése. Csoporton belüli nyomkövetés (2) Csoporton belüli nyomkövetés (3) A folyamatok helyi jelölésmásolásának befejezése utáni állapot. Végső jelölések.

Az órák szinkronizálása Szinkronizálás 1. rész Ha mindegyik gép a saját óráját használja, akkor az adott esemény után történt másik eseményhez az elsőnél korábbi idő társulhat. Fizikai órák (1) Fizikai órák (2) A csillagidő és a szoláris idő összefüggése. A TAI-másodperc a szolárissal ellentétben azonos hosszúságú. Szökőmásodperceket kell használnunk arra, hogy a TAI a Nappal szinkronban tartható legyen. Óraszinkronizáló algoritmusok Cristian algoritmusa Az óra által mutatott idő és az UTC összefüggése az óra eltérése esetén. A pontos idő lekérdezése az időszerverről.

A Berkeley-algoritmus Átlagoló algoritmusok Decentralizált algoritmus Újraszinkronizálási időszakok minden gép kihirdeti a saját idejét elindít egy időmérőt a beérkezett hírdetéseket összegyűjti a) Az idődémon lekérdezi a többi géptől az általuk nyilvántartott pontos időt b) A gépek válaszolnak c) Az idődémon mindegyiket utasítja, hogyan állítsa be az óráját Többszörözött külső időforrások Több UTC-forrás vevő a rendszerben Ezek rendszeresen kihirdetik az idejüket Szinkronizált órák használata Lamport időbélyege Többször küldött üzenetek figyelmen kívül hagyására hogy ne kelljen a végtelenségig tárolni Logikai órák Elegendő, ha az összes gép órája ugyanazt az időt mutatja Az események sorrendje a fontos a). Három folyamat, mindegyik saját órával. Az órák különböző sebességgel futnak. b). Lamport algoritmusa az órák összehangolására. Példa pontosan sorbarendezett csoportcímzés Időbélyeg vektor (1) C(a) és C(b) összehasonlítása semmit sem mond a és b kapcsolatáról Lamport időbélyegei nem foglalkoznak az oksági viszonyokkal Oksági viszony időbélyeg-vektorok alkalmazása Ha VT(a) < VT(b) => a b előzménye A többszörözött adatbázis frissítése és az inkonzisztens állapot kialakulása.

Időbélyeg vektor (2) P i folyamat V i vektorának tulajdonságai: 1. V i [i] a P i folyamatban eddig bekövetkezett események száma 2. Ha V i [j] = k, akkor P i tudja, hogy a P j folyamatban eddig k esemény történt Okozatilag összefüggő üzenetek küldése r csak akkor kézbesíti az üzenetet, ha: 1. vt(r)[j] = V k [j] + 1 2. vt(r)[i] < / = V k [i] teljesül valamennyi i<>j

Globális állapot (1) Szinkronizálás 2. rész a) Konzisztens metszet b) Inkonzisztens metszet Globális állapot (2) Globális állapot (3) a) A folyamat és csatornáinak szerkezete az elosztott pillanatfelvétel elkészítéséhez. b) Q folyamat a jelzést először kapja meg, ezért feljegyzi saját állapotát. c) Q valamennyi érkező üzenetét feljegyzi. d) Q megkapja a jelzést a bejövő csatornán és befejezi a csatorna állapotának rögzítését. Szavazó algoritmusok - zsarnok (1) Szavazó algoritmusok - zsarnok (2) A zsarnok algoritmus A 4-es folyamat választást tart 5-ös és 6-os válaszol, megmondva 4-esnek, hogy álljon le a választással 5-ös és 6-os választást kezdeményez d) 6-os szól 5-ösnek, hogy álljon le a választással e) 6-os megnyeri a választást és kihirdeti a győzelmét

Szavazó algoritmusok - gyűrű Kölcsönös kizárás: A központosított algoritmus Kört használó szavazó algoritmus. a) Az 1-es folyamat engedélyt kér a koordinátortól, hogy beléphessen a kritikus területre. Az engedély megadva. b) A 2-es folyamat engedélyt kér ugyanerre a kritikus területre való belépéshez. A koordinátor nem válaszol. c) Amikor az 1-es folyamat elhagyja a kritikus területet, értesíti erről a koordinátort, aki ezután válaszol a 2-es folyamatnak. Kölcsönös kizárás: Az elosztott algoritmus Kölcsönös kizárás: A zsetongyűrű algoritmus a) Két folyamat akar ugyanabban a pillanatban belépni ugyanarra a kritikus területre. b) A 0-ás folyamatnak alacsonyabb az időbélyege, így ő nyer. c) Amikor a 0-ás folyamat végzett, ő is elküldi az OK választ, így a 2-es folyamat már beléphet a kritikus területre. a) A folyamatok rendezetlen csoportja a hálózaton. b) A szoftver által alkotott logikai gyűrű. Kölcsönös kizárás: összehasonlítás Elosztott tranzakciók - tranzakciómodell (1) Algoritmus Belépési / kilépési üzenetszám Belépés előtti késleltetés (üzenetidőben) Központosított 3 2 Elosztott 2 ( n 1 ) 2 ( n 1 ) Zsetongyűrű 1 to 0 to n 1 Problémák A koordinátor összeomlása Bármely folyamat összeomlása Elveszett zseton, a folyamat összeomlása A kölcsönös kizárást biztosító algoritmusok összehasonlítása. A mesterszalag frissítése hibatűrő folyamat.

Elosztott tranzakciók - tranzakciómodell (2) Elosztott tranzakciók - tranzakciómodell (3) Primitív BEGIN_TRANSACTION END_TRANSACTION ABORT_TRANSACTION READ WRITE Leírása Tranzakció kezdetének jelzése Tranzakció végének jelzése A tranzakció félbeszakítása és az eredeti állapot visszaállítása Adat beolvasása állományból, táblából vagy bárhonnan Adat kiírása állományba, táblába vagy bárhová Néhány példa a tranzakció-primitívekre. BEGIN_TRANSACTION reserve WP -> JFK; reserve JFK -> Nairobi; reserve Nairobi -> Malindi; END_TRANSACTION (a) BEGIN_TRANSACTION reserve WP -> JFK; reserve JFK -> Nairobi; reserve Nairobi -> Malindi full => ABORT_TRANSACTION (b) a) 4 járat helyfoglalása egy tranzakcióként b) A tranzakció félbeszakad, amikor a negyedik járat nem elérhető A tranzakciók tulajdonságai (ACID) A tranzakciók osztályozása 1. Oszthatatlan (elemi) - Atomic 2. Konzisztens - Consistent 3. Elkülönülő - Isolated 4. Maradandó - Durable Az egységes tranzakciók korlátai Beágyazott tranzakciók Elosztott tranzakciók Elosztott tranzakciók Implementáció saját munkaterület a) Beágyazott tranzakció b) Elosztott tranzakció a) Egy három blokk hosszúságú állomány indexei és lemezblokkjai b) Az állomány 0-ás blokkjának módosítása a tranzakció során, és egy negyedik blokk hozzáfűzése után kialakult helyzet c) A tranzakció lezárása utáni helyzet

Implementáció munkatervnapló x = 0; y = 0; BEGIN_TRANSACTION; x = x + 1; y = y + 2 x = y * y; END_TRANSACTION; (a) Log [x = 0 / 1] (b) Log [x = 0 / 1] [y = 0/2] (c) Log [x = 0 / 1] [y = 0/2] [x = 1/4] (d) a) Egy tranzakció b) d) Az egyes utasítások végrehajtása előtt kiírt naplóbejegyzés

9. előadás Szinkronizálás 3. rész Konzisztencia és többszörözés 1. rész Szinkronizálás 3. rész Konkurenciakontroll A tranzakciók tulajdonságai (ACID) Konkurenciakontroll (1) 1. Oszthatatlan (elemi) - Atomic 2. Konzisztens - Consistent 3. Elkülönülő Isolated [sorosítható serializable] 4. Maradandó - Durable A tranzakciókat megvalósító kezelők általános felépítése. Konkurenciakontroll (2) Sorosíthatóság (1) Az elosztott tranzakciókat feldolgozó kezelők általános felépítése. BEGIN_TRANSACTION x = 0; x = x + 1; END_TRANSACTION (a) BEGIN_TRANSACTION x = 0; x = x + 2; END_TRANSACTION (b) BEGIN_TRANSACTION x = 0; x = x + 3; END_TRANSACTION (c) 1. ütemterv x = 0; x = x + 1; x = 0; x = x + 2; x = 0; x = x + 3 Helyes 2. ütemterv x = 0; x = 0; x = x + 1; x = x + 2; x = 0; x = x + 3; Helyes 3. ütemterv x = 0; x = 0; x = x + 1; x = 0; x = x + 2; x = x + 3; Hibás (d) a) c) Három tranzakció: T 1, T 2, and T 3 d) Lehetséges ütemtervek

Sorosíthatóság (2) Kétfázisú zárolás (1) write(t i, x); read(t i, x); write(t i, x) ütköző műveletek szinkronizálás kölcsönös kizárás időbélyegek megközelítés pesszimista optimista Kétfázisú zárolás Kétfázisú zárolás (2) Pesszimista időbélyeg-rendezés (1) T tranzakció ts(t) kezdeti időbélyeg x adatelem ts RD (x), ts WR (x) utolsó olvasást / írást végző tranzakció időbélyege read(t, x), ahol ts(t) < ts WR (x) => T megszakad read(t, x), ahol ts(t) > ts WR (x) => OK [ts RD (x) <- max{ts(t), ts RD (x)}] Szigorú kétfázisú zárolás write(t, x), ahol ts(t) < ts RD (x) => T megszakad write(t, x), ahol ts(t) > ts RD (x) => OK [ts WR (x) <- max{ts(t), ts WR (x)}] Pesszimista időbélyeg-rendezés (2) Optimista időbélyeg-rendezés Saját munkaterület Ha az ütközések ritkák Tranzakció közben nincs vizsgálat, csak nyilvántartás (írások, olvasások) Az időbélyeget használó konkurenciakontrol. Tranzakció lezárásakor az összes többi tranzakció vizsgálata megszakad, vagy lezárul Időbélyeg használata

A többszörözés okai Konzisztencia és többszörözés 1. rész Megbízhatóság növekedése Teljesítmény növekedése Többszörözés ára konzisztencia Átméretezési technika frissítések gyakorisága konzisztencia Gyorsítótár (cache) Többszörözhetőségi átlátszóság megvalósítása kliens-oldalon Objektumtöbbszörözés (1) A távoli objektumtöbbszörözés átlátszóvá tételének egyik lehetséges módja a kliensoldali megoldás használata. Két különböző kliens által közösen használt elosztott távoli objektum szerkezete. Objektumtöbbszörözés (2) Példa pontosan sorbarendezett csoportcímzés a) A konkurens hívások kezelésére képes távoli objektum. b) A konkurens hívások kezelésének felelősségét az objektumadapterre átruházó távoli objektum. A többszörözött adatbázis frissítése és az inkonzisztens állapot kialakulása.

Objektumtöbbszörözés (3) Adatközpontú konzisztenciamodellek a) Többszörözést támogató objektumok az elosztott rendszerben. b) Az elosztott rendszer felel a többszörözés kezeléséért. A fizikailag több folyamat között elosztott és többszörözött logikai adattár általános felépítése. Szigorú konzisztencia Lineáris és soros konzisztencia (1) Azonos adatelemen műveletet végző két folyamat viselkedése: a) szigorúan konzisztens adattár b) nem szigorúan konzisztens adattár a) A sorosan konzisztens adattár. b) A sorosan konzisztens kritériumot nem teljesítő adattár. Lineáris és soros konzisztencia (2) Lineáris és soros konzisztencia (3) Process P1 Process P2 Process P3 x = 1; print ( y, z); y = 1; print (x, z); z = 1; print (x, y); x = 1; print ((y, z); y = 1; print (x, z); z = 1; print (x, y); Prints: 001011 x = 1; y = 1; print (x,z); print(y, z); z = 1; print (x, y); Prints: 101011 y = 1; z = 1; print (x, y); print (x, z); x = 1; print (y, z); Prints: 010111 y = 1; x = 1; z = 1; print (x, z); print (y, z); print (x, y); Prints: 111111 Három egyidejűleg végrehajtott folyamat. Signature: 001011 (a) Signature: 101011 (b) Signature: 110101 (c) Signature: 111111 (d) Ez előző ábrán bemutatott folyamatok 4 lehetséges végrehajtási sorrendje.

Okozati konzisztencia (1) Okozati konzisztencia (2) Szükséges feltétel: A potenciálisan okozatilag összefüggő írási műveleteket valamennyi folyamatnak ugyanabban a sorrendben kell látnia. Ez a sorrend megengedett az okozatilag konzisztens adattárban, de tiltott a sorosan vagy a szigorúan konzisztens rendszerben. Okozati konzisztencia (3) FIFO-konzisztencia (1) Szükséges feltétel: Egy adott folyamat által végrehajtott valamennyi írási művelet eredményét az összes többi folyamatnak az írást végző folyamat által meghatározott sorrendben kell látnia. a) Az okozati konzisztenciát megsértő műveleti sorrend. b) Az események konzisztens adattárban érvényes lehetséges sorrendje. FIFO-konzisztencia (2) FIFO-konzisztencia (3) x = 1; print (y, z); y = 1; print(x, z); z = 1; print (x, y); Prints: 00 x = 1; y = 1; print(x, z); print ( y, z); z = 1; print (x, y); Prints: 10 y = 1; print (x, z); z = 1; print (x, y); x = 1; print (y, z); Prints: 01 Az események lehetséges sorrendje a FIFOkonzisztenciamodell szerint. (a) (b) (c) A korábbi ábrán látható 3 folyamat utasításainak különböző végrehajtási sorrendje.

FIFO-konzisztencia (4) Gyenge konzisztencia (1) Process P1 x = 1; if (y == 0) kill (P2); Process P2 y = 1; if (x == 0) kill (P1); Két konkurens folyamat. Tulajdonságok: Az adattárhoz tartozó szinkronizáló változók elérése sorosan konzisztens. A szinkronizáló változóval végzett újabb művelet mindaddig nem engedélyezett, amíg az összes korábbi írási művelet mindenütt be nem fejeződött. Az adatelemeken végzett egyetlen írási vagy olvasási művelet sem engedélyezett, amíg az összes szinkronizáló változó értelmezett művelet mindenütt be nem fejeződött. Gyenge konzisztencia (2) Gyenge konzisztencia (3) int a, b, c, d, e, x, y; /* variables */ int *p, *q; /* pointers */ int f( int *p, int *q); /* function prototype */ a = x * x; /* a stored in register */ b = y * y; /* b as well */ c = a*a*a + b*b + a * b; /* used later */ d = a * a * c; /* used later */ p = &a; /* p gets address of a */ q = &b /* q gets address of b */ e = f(p, q) /* function call */ A program fragment in which some variables may be kept in registers. a) Gyenge konzisztencia esetén megengedett eseménysorrend. b) Gyenge konzisztencia esetén tiltott eseménysorrend. Feloldó konzisztencia (1) Feloldó konzisztencia (2) Az eseményeknek a feloldó konzisztenciamodellben megengedett lehetséges sorrendje. Szabályok: Megosztott adaton bármely olvasási/írási művelet előtt minden korábbi igénylésnek be kell fejeződnie. Feloldási művelet előtt a folyamatnak az összes korábbi írási/olvasási műveletét be kell fejeznie. A szinkronizáló változók elérése FIFOkonzisztens.

Belépő konzisztencia (1) Belépő konzisztencia (2) Feltételek: Szinkronizáló változó adott folyamat általi igénylése addig nem történhet, amíg az általa védett megosztott adat valamennyi frissítőművelete be nem fejeződött az adott folyamat számára. A folyamat csak akkor szerezheti meg a kizárólagos ellenőrzést a szinkronizáló változó felett, ha egyetlen más folyamat sem birtokolja. Miután egy folyamat megszerezte a kizárólagos ellenőrzést egy szinkronizáló változó felett, bármely más folyamat nem kizárólagos ellenőrzési kérelme addig nem teljesíthető, amíg a kizárólagos jogot az azt birtokló folyamat fel nem adja. A belépő konzisztenciában érvényes eseménysorrend.

10. előadás Konzisztencia és többszörözés 2. rész Adatközpontú konziszteniamodellek összehasonlítása Konzisztencia Szigorú Lineáris Soros Okozati FIFO Konzisztencia Gyenge Feloldó Belépő Leírás Valamennyi megosztott hozzáférés abszolút sorrendje. A megosztott hozzáféréseket valamennyi folyamat pontosan ugyanabban a sorrendben látja. A hozzáférések sorrendjét (nem egyedi) globális időbélyeg határozza meg. A megosztott hozzáféréseket valamennyi folyamat pontosan ugyanabban a sorrendben látja. A hozzáférések nincsenek idő szerint sorba rendezve. Az okozatilag összefüggő megosztott hozzáféréseket valamennyi folyamat pontosan ugyanabban a sorrendben látja. Valamennyi folyamat a többi írási műveleteit pontosan a kiadás sorrendjében fogja látni. A különböző folyamatok által végrehajtott írási műveletek sorrendje bármi lehet. a) Szinkronizáló műveleteket nem igénylő konzisztenciamodellek. b) Szinkronizáló műveleteken alapuló konzisztenciamodellek. (a) Leírás A megosztott adat konzisztens voltára csak a szinkronizálás végrehajtása után lehet számítani. A megosztott adat konzisztensé válik a kritikus terület elhagyásakor. A kritikus területhez tartozó megosztott adat konzisztensé válik a kritikus területre való belépéskor. (b) Gyenge konzisztencia (ismétlés) Feloldó konzisztencia (ismétlés) a) Gyenge konzisztencia esetén megengedett eseménysorrend. b) Gyenge konzisztencia esetén tiltott eseménysorrend. Az eseményeknek a feloldó konzisztenciamodellben megengedett lehetséges sorrendje. Belépő konzisztencia (ismétlés) Kliensközpontú konzisztenciamodellek Adattárak különleges csoportja: nincs párhuzamos módosítás a legtöbb művelet csak olvassa az adattárat Fokozatos konzisztencia (1) A belépő konzisztenciában érvényes eseménysorrend. Frissítés hiányában valamennyi másolat lassan az összes többivel egyformává válik (a frissítéseket előbb-utóbb valamennyi másolathoz elküldjük)

Fokozatos konzisztencia (2) Fokozatos konzisztencia (3) Probléma: a felhasználó nem mindig ugyanahhoz a másolathoz csatlakozik Megoldás: kliensközpontú konzisztencia egy adott felhasználó számára nyújt biztosítékot arra nézve, hogy az általa látott adattár konzisztens lesz Az elosztott adatbázis különböző másolatait elérő mozgó felhasználó elve. Monoton olvasás (1) Monoton olvasás (2) Ha a folyamat beolvassa x adatelemet, akkor x minden további olvasásának ugyanazt vagy frissebb értéket kell szolgáltatnia. Adott P folyamat által végzett olvasási műveletek az adattár két különböző helyi másolatán futnak. a) Monoton olvasási konzisztens adattár b) Monoton olvasás követelményét ki nem elégítő adattár Monoton írás (1) Monoton írás (2) Adott folyamat által végrehajtott x adatelemet módosító írási műveletnek be kell fejeződnie, mielőtt ugyanez a folyamat újabb írási műveletet hajtana végre ugyanezen az adatelemen. Egyetlen P folyamat által ugyanazon adattár két különböző másolatán végrehajtott írási műveletek sorrendje. a) Monoton írási konzisztenciával rendelkező adattár esete b) Monoton írási konzisztencia követelményét nem teljesítő adattár esete