Tartalom. Operációs rendszerek. Precedencia. 3.2 Szinkronizáció. 3.1 Folyamatokból álló rendszerek. Együttműködő folyamatok használatának indokai



Hasonló dokumentumok
... 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. Folyamatok

Operációs rendszerek MINB240

Előadás_# Az első ZH megírása

Operációs rendszerek Folyamatközi kommunikáció 1.1

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

Termelő-fogyaszt. fogyasztó modell

Operációs rendszerek. Folyamatok

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

LabView Academy. 4. óra párhuzamos programozás

6. Közös változóval rendelkező párhuzamos program, Közös változó,

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

UNIX: folyamatok kommunikációja

Operációs rendszerek. 3. előadás Ütemezés

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

Szálak szinkronizálása (Ro- Sincronizarea threadurilor)

Architektúra, megszakítási rendszerek

Informatika 1 Operációs rendszerek

Operációs rendszerek Folyamatok 1.1

Tartalom. Operációs rendszerek. 4.1 Holtpont definíciója. Bevezetés helyett... Rendszermodell 1. A klasszikus példa...

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Osztott rendszer. Osztott rendszer informális definíciója

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

Nem biztos, hogy mindenhol helytáll, helyenként hiányos, de az eddigi kérdések össze vannak gyűjtve őszi félév első zhval bezárólag.

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

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

Operációs rendszerek

Előadás_#06. Előadás_06-1 -

5. Hét Sorrendi hálózatok

Elosztott rendszerek

Előadás_#04. Előadás_04-1 -

Dr. Illés Zoltán

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

Dr. Illés Zoltán

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Számítógépek felépítése

Folyamatszálak. Folyamatszálak. Folyamat. Folyamatszál. Szálak felépítése. Folyamatszálak általános jellemzői

Dr. Illés Zoltán

Operációs rendszerek. Folyamatok ütemezése

Autóipari beágyazott rendszerek. Integrált és szétcsatolt rendszerek

Operációs rendszerek MINB240

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

OPERÁCIÓS RENDSZEREK. Elmélet

9. MPI

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

Programozási nyelvek és módszerek Java Thread-ek

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

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

10. előadás Párhuzamos programozási kérdések. Az Ada taszkok (1).

Operációs rendszerek

Operációs rendszerek II. Folyamatok ütemezése

Az operációs rendszer szerkezete, szolgáltatásai

Matematikai és Informatikai Intézet. 4. Folyamatok

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

(kernel3d vizualizáció: kernel245_graph.mpg)

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

Kiterjesztések sek szemantikája

Operációs rendszerek előadás Multiprogramozott operációs rendszerek

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

Programozási nyelvek Java

Operációs rendszerek. Bemutatkozás

Bevezetés a számítástechnikába

Folyamatok. 6. előadás

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Operációs rendszerek MINB240

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

9. Állományok kezelése. Operációs rendszerek. Állomány (file) Könyvtár. Az állománykezelő feladatai. Az állományrendszer réteges implementációja

Modellezés Petri hálókkal. dr. Bartha Tamás dr. Majzik István dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék

Occam 1. Készítette: Szabó Éva

"Eseményekre imm/connection Server scriptek futtatása

BASH script programozás II. Vezérlési szerkezetek

A programozás alapjai

AZ OPERÁCIÓS RENDSZER MINT ABSZTRAKT, VIRTUÁLIS GÉP

Folyamatszálak szinkronizálása

Amortizációs költségelemzés

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

Konkurens TCP Szerver

UNIX operációs rendszer bemutatása. A UNIX története, fejlesztésének céljai.

A SPIN használata, példák II

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

Operációs rendszerek. Az NT folyamatok kezelése

Szoftvertechnológia alapjai Java előadások

Operációs rendszerek. 6. gyakorlat: Processzusok közti kommunikáció (osztott memória, üzenetsor)

Operációs rendszerek. A védelem célja. A fenyegetés forrásai. Védelmi tartományok. Belső biztonság. Tartalom

2. Visszalépéses keresés

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Szkriptnyelvek. 1. UNIX shell

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

Digitális rendszerek. Utasításarchitektúra szintje

Tartalom. Operációs rendszerek Bevezetés CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés

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

The Flooding Time Synchronization Protocol

Informatika érettségi vizsga

Adatszerkezetek 1. Dr. Iványi Péter

Magas szintű optimalizálás

Feladatok (task) együttműködése

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Az adatkapcsolati réteg

Átírás:

Tartalom Operációs rendszerek 3. Folyamatok kommunikációja Simon Gyula Bevezetés Szinkronizáció A kritikus szakasz megvalósítási módozatai Információcsere ok között Felhasznált irodalom: Kóczy-Kondorosi (szerk.): Operációs rendszerek mérnöki megközelítésben Tanenbaum: Modern Operating Systems 2nd. Ed. Silberschatz, Galvin, Gagne: Operating System Concepts 2 3.1 Folyamatokból álló rendszerek Egy rendszer sok ból állhat. Ezek között csatolás lehet: független ok egymás működését nem befolyásolják, aszinkron működés egymással párhuzamosan is végrehajtódhatnak, Nincs időbeli függőség függő ok, logikailag független ok, de megosztott erőforrás használat (pl. több user, azonos gépen dolgozik) logikailag függő ok közösen oldanak meg valamely feladatot együttműködnek, kommunikálnak, közös változók, stb. 3 Együttműködő ok használatának indokai Erőforrások megosztása átlapolt működés, jobb kihasználtság Számítások felgyorsulása (több processzor) Számítások párhuzamosítása, végrehajtási sebesség nő. Felhasználók kényelme Egy időben több feladat megoldása. Modularitás Egy adott kisebb részekre való bontása Jobb áttekinthetőség Bizonyos feladatoknál (párhuzamos részek) kézenfekvő modell. Pl. vezérlés, irányítás Afüggőséget valahogy biztosítani kell 4 3.2 Szinkronizáció A végrehajtásának olyan időbeli korlátozása, ahol ez egy másik futásától illetve egy külső esemény bekövetkezésétől függ. Gyakori feladatok: Precedencia (előidejűség) Egyidejűség Kölcsönös kizárás (versenyhelyzet, kritikus szakasz) Egyéb kapcsolódó fogalmak: Holtpont (deadlock) Precedencia Meghatározott sorrend biztosítása. Egy P k S k utasítása csak akkor mehet végbe ha a P i S i utasítása már befejeződött. pl: szakács-kávét főz kukta-cukrot vesz (különben kihűl a kávé) 5 6 1

Egyidejűség Két vagy több bizonyos utasításait (S k ; S j ) egyszerre kell elkezdeni. Két találkozása (randevú). Két bevárja egymást mielőtt további működését elkezdené. pl. szakács-kávét főz kukta-habot ver (különben kihűl a kávé vagy összeesik a hab) Kölcsönös kizárás (mutual exclusion) A résztvevő ok utasításainak sorrendjére nincs korlátozás, de egy időben csak egyik futhat. pl. szakács-habot ver X kukta-habverőt mosogat 7 8 Versenyhelyzet Több párhuzamosan futó közös erőforrást használ. A futás eredménye függ attól, hogy az egyes ok mikor és hogyan futnak, ezáltal hogyan (milyen sorrendben) férnek az erőforráshoz. Elkerülendő, nagyon nehéz debuggolni! Példa: A mért hőmérséklet (T) értékét egy két szó hosszúságú változóban (TK) tároljuk. A hőmérő a hőmérsékletet szavanként beírja a változóba, a szabályzó pedig kiolvassa a változót és annak értékét használja. 9 idő Példa versenyhelyzetre: hőmérséklet-szabályzó hőmérő (T=2ºC) Hőmérő Hőmérő Írás: alsó szó (régi TK=3ºC) *Ha ebben a pillanatban olvas, hibás, inkonzisztens értéket kap. 03 03 Írás: felső szó Hőmérő (új TK=2ºC) * Szabályzó Szabályzó Szabályzó 10 Kritikus szakasz Kritikus szakaszoknak nevezzük a program olyan (általában osztott változókat használó) utasításszekvenciáit, amelyeknek egyidejű (párhuzamos) végrehajtása nem megengedett. Versenyhelyzet elkerülésére a kritikus szakaszok kölcsönös kizárását biztosítani kell. (Ha az egyik már a kritikus szakaszában van, akkor más nem léphet be a (természetesen saját) kritikus szakaszába.) Pl. Tipikus kritikus szakasz a közös memória használata. Példa kritikus szakaszra: hőmérséklet-szabályzó Hőmérő Hőmérő leolvasása Írás: alsó szó Írás: felső szó Kritikus szakaszok Szabályzó Olvasás: alsó szó Olvasás: felső szó Számítás 11 12 2

Kritikus szakaszok és a kölcsönös kizárás 3.3 A kritikus szakasz megvalósítási kritériumai A belép a kritikus szakaszba A kilép a kritikus szakaszból A megvalósítás követelményei B próbál belépni a kritikus szakaszba B belép a kritikus szakaszba B blokkolt T 1 T 2 T 3 T 4 B kilép a kritikus szakaszból A kritikus szakaszban lévő A blokkolja B végrehajtását, amikor az is a kritikus szakaszba kíván lépni (T 2 ). Amikor A kilép a kritikus szakaszból (T 3 ), a blokkolás véget ér és B most már beléphet a kritikus szakaszba. 13 1. Biztosítsa a kölcsönös kizárást Egy időben csak egyetlen hajthatja végre a kritikus szakaszban lévő utasításokat. 2. Haladjon Ha nincs a kritikus szakaszban, de van több belépő, akkor az algoritmus ezek közül véges idő alatt kiválaszt egyet és beengedi a kritikus szakaszba. 3. Folyamat várakozása korlátozott legyen (ne éheztessen) Csak véges számú esetben előzhetik meg. A 3. kritériumot nem veszik annyira szigorúan (nem minden algoritmus teljesíti). 14 Kritikus szakasz megvalósítása A általános struktúrája: //Process i non_critical_region1(); entry_section(); exit_section(); non_critical_region2(); 15 Kritikus szakasz megvalósítási módozatai Interrupt tiltása Busy waiting megoldások Nincs HW támogatás, tiszta SW megoldás. Naiv megközelítés (ROSSZ) Strict alternation (JOBB) Peterson algoritmusa (HELYES) HW támogatással: TestAndSet Szemafor Magas szintű módszerek 16 Interrupt tiltása Naiv programozott megközelítés Megoldás: disable_interrupt(); enable_interrupt(); Egyszerű megoldás: Nincs IT, tehát nem lehet a végrehajtást megszakítani. (Ütemező sem tud futni!) Probléma: A nak joga van letiltani az IT-t. Az egész rendszert lefagyaszthatja. Hasznos az OS szintjén Nem célszerű a felhasználói szinten. Közösen használt változókon (flag) alapul. Egy foglaltsági bitet használ, amit a belépni kívánó tesztel. Gond: a változót többen is olvashatják, mielőtt az első foglaltra állítja! //Process 0 while (flag!=0) /*loop*/; flag = 1; flag = 0; non_ //Process 1 while (flag!=0) /*loop*/; flag = 1; flag = 0; non_ 17 18 3

Szigorú váltás (strict alternation) algoritmus Közös változó: turn. Jelentése: ki van soron. Csak felváltva lehet belépni. Gond: Ha jelentős a sebességkülönbség, akkor az egyik feleslegesen sokat vár. Nem halad! //Process 0 while (turn!=0) /*loop*/; turn = 1; non_ //Process 1 while (turn!=1) /*loop*/; turn = 0; non_ Spin lock 19 Peterson algoritmusa 1. define FALSE 0 define TRUE 1 define N 2 /* a ok száma */ int turn; /* ki van soron? */ int interested[n]; /* kezdetben csupa 0 */ void enter_region(int process); /* a belép a kritikus szakaszba*/ { int other; other = 1 process; /* a másik */ interested[process] = TRUE; /* az érdeklődés jelzése */ turn = process; /* flag beállítása */ while (turn == process && inerested[other] == TRUE) /* nop */; void leave_region(int process); /* a elhagyja a kritikus szakaszt */ { interested[process] = FALSE; 20 Peterson algoritmusa 2. Ha csak egy akar belépni, az enter_region() visszatér és a a kritikus szakaszba léphet. A másik addig nem léphet be, amíg a leave_region() az interested változót nem törli. Ha két egyszerre akar belépni, a turn változót utoljára állító várakozik, míg a másik végre nem hajtja a saját leave_region() eljárását. Megjegyzés: A turn változó írásának megszakíthatatlanak kell lenni (ez könnyen teljesíthető). Hardver támogatás kritikus szakasz megvalósításához Speciális megszakíthatatlan gépi utasítások 1. TestAndSet Kiolvassa és visszaadja a bit értéket, majd azonnal 1-be állítja. int TestAndSet(int *flag){ tmp = *flag; *flag = 1; oszthatatlan return(tmp) 2. Swap Két változó értékét cseréli fel void swap(int *a, int *b){ tmp = *a; *a = *b; oszthatatlan *b = tmp; 21 22 Kritikus szakasz TestAndSet utasítással Kritikus szakasz swap utasítással //init flag = 0; //Process i while (TestAndSet(&flag)!=0) /*empty loop*/; flag = 0; /*exit critical section*/ non_ Nem garantálja az éhezés kiküszöbölését! //init flag = 0; //Process i myflag = 1; while (myflag!=0) swap(myflag, flag); flag = 0; /*exit critical section*/ non_ Nem garantálja az éhezés kiküszöbölését! 23 24 4

Szemafor E. W. Dijkstra, 1965 Speciális adattípus (nemnegatív egészek), Az s szemafor-változó két oszthatatlan utasítással érhető el: P(s) -vizsgál/belép művelet Működési elv: while s < 1 do üres utasítás; s := s 1 V(s) kilép művelet Működési elv: s := s + 1 Mutex A mutex olyan speciális szemafor, amelynek csak két értéke lehet: nyitott (unlocked) zárt (locked) Műveletei: mutex_lock mutex_unlock 25 26 Szinkronizáció szemaforral Előidejűség (S 1 előbb mint S 2 ) s := 0 P 1 : S 1 ; V(s); P 2 : P(s); S 2 ; Randevú (S 1 és S 2 egyszerre) s 1 := 0; s 2 := 0 P 1 : V(s 1 ); P(s 2 ); S 1 ; P 2 : V(s 2 ); P(s 1 ); S 2 ; Kölcsönös kizárás s := 1 P 1 : P(s); S 1 ; V(s); P 1 : P(s); S 2 ; V(s); Az s kezdő értékétől függ, hogy hány lehet egyszerre a kritikus szakaszban. Legtöbbször bináris szemafort (mutex) használunk. 27 Szemaforok megvalósítása Probléma a szemafor elvi megvalósításával: busy waiting P(s): while s < 1 do üres utasítás; s := s 1 Ez blokkolt állapotban is állandóan futna, állandóan használná a CPU-t. Így nem használható. Multiprogramozott megoldás: A P(s) az üres utasítás helyén a tól elveszi a CPU-t és várakozó állapotba teszi (feljegyzi a szemaforhoz tartozó valamilyen adatszerkezetekbe). A V (s)-nél nem csak a számláló nő, hanem egy ot (ha van) futásra kész állapotba tesz (többféle stratégia lehet). 28 Szemaforok megvalósítása type semaphore = record value: integer list : list of process end; P(s): s:value := s:value - 1 if s:value < 0 then begin a felfűzése a s.list-re a felfüggesztése, újra ütemezés end V(s): s:value := s:value + 1 if s:value <= 0 then begin leveszünk egy ot s:list -ről felébresztjük ezt a ot end 29 Monitor A szemafor hasznos szinkronizációs eszköz, de alacsony szintű. Sok hibalehetőség, ráadásul nehéz a hibakeresés. Nyelvi elemekkel való támogatás: monitor, egy magas szintű szinkronizációs primitív. A monitor eljárások, változók, adatszerkezetek speciális gyűjteménye. A monitor eljárásai szabadon hívhatóak, de a változókhoz nem lehet kívülről közvetlenül hozzáférni. Egyszerre csak egy eljárás lehet aktív a monitoron belül! 30 5

Monitor példa Egyszerű monitor példa: Csak a producer és a consumer eljárások láthatók Az i és c belső változókat csak a belső eljárások kezelhetik Legfeljebb egy eljárás lehet aktív: vagy a producer, vagy a consumer monitor example integer i; condition c; procedure producer(); end; end end monitor; procedure consumer(); 31 Az akadály (barrier) B C A D Barrier C a) Több (A, B, C, D) szinkronizálására szolgál b) Az akadályt elérő ok blokkolódnak c) Az összes megérkezésekor az akadály ledől, az összes egyszerre folytatja futását. A B D Barrier Barrier A B C D 32 3.4 Információcsere ok között Folyamatok együttműködéshez információ cserére (interprocess communication) van szükség. Alapvetően két mód: közös tárterületen keresztül (szorosan csatolt) (kölcsönös kizárás témaköre) kommunikációs csatornán keresztül (lazán csatolt) Kommunikációs csatorna Két között valamilyen - fizikai, virtuális (logikai) - csatorna van. Egyik küld, a másik vesz. 33 Kommunikációs csatorna tulajdonságai milyen közeg biztosítja az átvitelt: Pl: párhuzamos vagy soros, lokális hálózat, virtuális esetén közös tár kapcsolat egy vagy kétirányú kapcsolatot két vagy több használhatja két között pont-pont kapcsolat ugyanazt a csatornát több is használhatja egy időben, vagy időmultiplexelt rendszerben van-e közbülső tárolás (puffer) megbízhatóság 34 Folyamatok megnevezése (naming) Az a módszer, amellyel a kommunikációban résztvevő ok egymásra hivatkoznak. Közvetlen kommunikáció Közvetett kommunikáció Aszimmetrikus megnevezés Üzenetszórás Közvetlen kommunikáció Folyamatok: P, Q üzenet küldés: send(q; message), üzenet fogadás: message=receive(p); csak egy csatorna létezik, és más ok nem használhatják P Q 35 36 6

Közvetett kommunikáció Közbülső adatszerkezeten (pl. postaládán (mailbox)) keresztül valósul meg. Küldés: send(mailbox, message); Fogadás: message=receive(mailbox); Két között lehet több postaláda. Ugyanazt a postaládát több is használhatja egyidejűleg. A postaláda megosztása a vevők között: csak két használhatja egy időben csak egy vevő lehet a rendszer választ hogy melyik vevőnek küldi az üzenetet és erről értesíti az adót. P mail Q Aszimmetrikus megnevezés Adó vagy vevő megnevezi, hogy melyik tal akar kommunikálni A másik fél egy kaput (port) használ, ezen keresztül több hoz, is kapcsolódhat. Tipikus eset: a vevőhöz tartozik a kapu, az adóknak kell a vevő ot és annak a kapuját megnevezni. (Pl. szerver, szolgáltató ) Küldés: send(q:port,message); Fogadás: message=receive(); P Q 37 38 Üzenetszórás A közeg több ot köt össze. Az üzenet amelyet több, esetleg mindegyik veheti. Küldés: send(message, to_all); Fogadás: message=receive(); P Q 2 Q 3 Q 1 39 Implicit szinkronizáció Folyamatok között információcsere implicit szinkronizációval jár, ennek típusa a puffertől függ. Tárolás nélküli átvitel Nincs tárolás, így az adás vétel egy időben zajlik (randevú). Véges kapacitású tároló Egy időben csak az egyik használhatja (kölcsönös kizárás) Vevő várakozik, amíg legalább egy elem nincs elküldve; adó várakozik, ha a puffer megtelt. A két utasításai között adott sorrendiségnek kell teljesülni (precedencia). "Végtelen" puffer Az adó nem várakozhat (pl. külső, amelyre az OS-nek nincs hatása). A valóságban természetesen a puffer véges, így megtelhet. Ilyenkor információvesztés: új adat figyelmen kívül hagyása vagy régi adat felülírása a pufferben. 40 Átviteli hibák kezelése Elosztott rendszer hibája Folyamat befejeződése: adó vagy vevő váratlanul befejeződik Csatorna hibája Elveszett, torzult üzenetek Elosztott rendszer hibája Adó áll le A vevő hiába várakozik a következő üzenetre. Nem holtpont (csak egy ot érint). Felismerése: timeout. Feloldása: az OS terminálhatja a vevőt vagy jelzi neki az adó megszűnését. Vevő áll le Az adó nulla vagy véges kapacitású puffer esetén várakozni kényszerül, megoldás az előzőekhez hasonló Végtelen puffer esetén az adó az esetleges nyugták megszűnéséből veheti észre a vevő megszűnését. Timeout: egy időkorlát túllépése (az az időtartam, amelyen belül valaminek biztosan történnie kell) nehéz megállapítani. 41 42 7

Csatorna hibája Elveszett, torzult üzenetek Az OS felismeri és újraküldi Az OS felismeri, az adót értesíti, így az újraküldi Vevő ismeri fel, az adót értesíti, így az újraküldi Torzult üzenetek felismerése egyszerű (HW vagy SW) CRC (Cyclic Redundancy Codes) checksum (pl: összeg mod 256) ECC (Error Correcting Codes). Elveszett üzenetek detektálása bonyolultabb eljárás, pl. időkorlátok figyelése. 43 8