Operációs rendszerek. Folyamatok

Hasonló dokumentumok
Operációs rendszerek. Folyamatok

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

... 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 kezelése a UNIX-ban

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

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

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

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

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

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

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

Folyamatok. 6. előadás

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

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

UNIX: folyamatok kommunikációja

Operációs rendszerek III.

Operációs rendszerek. Bemutatkozás

OPERÁCIÓS RENDSZEREK. Elmélet

Termelő-fogyaszt. fogyasztó modell

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

Szkriptnyelvek. 1. UNIX shell

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

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

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

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

Operációs rendszerek MINB240

Elosztott rendszerek

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

Előadás_#02. Előadás_02-1 -

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

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

(kernel3d vizualizáció: kernel245_graph.mpg)

Architektúra, megszakítási rendszerek

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

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

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

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

Matematikai és Informatikai Intézet. 4. Folyamatok

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.

A programozás alapjai

Operációs rendszerek Folyamatok 1.1

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

13. óra op. rendszer ECDL alapok

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

Operációs rendszerek. A Windows NT

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

Operációs Rendszerek II.

Párhuzamos programozási platformok

Mintavételes szabályozás mikrovezérlő segítségével

Informatika 1 Operációs rendszerek

Kiterjesztések sek szemantikája

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

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

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

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

Hálózati architektúrák laborgyakorlat

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

Párhuzamos programozási platformok

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Digitális technika VIMIAA01 9. hét

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

Dr. Illés Zoltán

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

Szekvenciális hálózatok és automaták

Operációs rendszerek

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

Számítógép architektúra

és az instanceof operátor

Számítógépes alapismeretek 1.

Folyamatszálak szinkronizálása

Tartalom Tervezési egység felépítése Utasítások csoportosítása Értékadás... 38

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

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

Pénzügyi algoritmusok

Informatika érettségi vizsga

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

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

SZÓBELI ÉRETTSÉGI TÉMAKÖRÖK

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

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

12. óra op. rendszer 1

A számítógép egységei

Adatok ábrázolása, adattípusok

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

AWK programozás, minták, vezérlési szerkezetek

Operációs rendszerek. UNIX fájlrendszer

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

Konkurens TCP Szerver

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

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

_INVHU000_WriteReadParameter.cxf Frekvenciaváltók

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

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

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

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

Operációs rendszerek be és kivitelkezelése, holtpont fogalma, kialakulásának feltételei, holtpontkezelési stratégiák, bankár algoritmus.

AWK programozás, minták, vezérlési szerkezetek

Digitális rendszerek. Digitális logika szintje

Átírás:

Operációs rendszerek Folyamatok Folyamatok A folyamat (process) a multiprogramozott rendszerek alapfogalma. Folyamat általános definíciója: Műveletek meghatározott sorrendben történő végrehajtása. Műveletek sorrendjét a vezérlési szál definiálja.

Folyamatok logikai modellje Végrehajtó gép processzor memória (folytonos) Oszthatatlan utasítások: fizikai processzor utasításainak egy része rendszer szolgáltatás (pl. I/O műveletek) Folyamat utasításai: program kód definiálja. Folyamat állapotának jellemzői: processzor állapota memória tartalom (kód, változók, veremtár) Folyamatok gyakorlati modellje I. Végrehajtás alatt álló "életre kelt" program (kód és adatterület együtt). Folyamat memóriaterületének részei: a program kódja, adatterületek, veremtár: dinamikusan növelhető terület.

Folyamatok gyakorlati modellje II. Multiprogramozott rendszer: több végrehajtás alatt álló folyamat, egy fizikai processzor, folyamatok közötti átkapcsolás, virtuális párhuzamos végrehajtás. Szükséges műveletek: folyamat végrehajtásának leállítása, folyamat újraindítása. Folyamatok állapota Új elfogadva futás megszakítása Befejezett Futásra kész Futó CPU ütemező kiválasztja futásra Várakozó

Folyamatok váltása Folyamat környezet (context) fogalma: Program és a végrehajtó gép állapotának leírása. Azon információ összessége, ami szükséges a folyamat későbbi újraindításához. Környezetváltás definíciója: a CPU-t birtokló futó folyamat váltása. Folyamat környezet részei processzor állapota program számláló CPU regiszterei folyamat leíró adatok (ami a futtatáshoz kell) vezérlési információk (állapot, azonosító, stb.) ütemezési információ folyamat jogosultságai (futási, állomány-elérési jogok a védelemhez) folyamat által használt erőforrások a felhasználó által definiált környezeti változók memória területek tartalma

Folyamat környezet leírása: Processz Vezérlési Blokk Mutató ütemezéshez Processz állapota Processz sorszáma Programszámláló Memória-korlátok Megnyitott fájlok listája... Folyamatok váltása Fut Rendszerhívás Várakozik A folyamat Állapotok elmentése PVB A -be... Állapotok visszatöltése PVB B -ből B folyamat Várakozik Rendszerhívás Fut Állapotok elmentése PVB B -be... Állapotok visszatöltése PVB A -ból Fut Operációs Dr. Benyó rendszer Balázs Várakozik

Folyamatok memóriakezelése Minden folyamat futása során úgy tapasztalja, mintha egyedül használná a számítógépet: memóriát eszközöket (perifériákat) OR feladata: összehangolni a folyamatok működését biztosítani a folyamatok adatainak sérthetetlenségét Folyamat memóriaterületének részei - logikai memóriakép TEXT DATA STACK program kód: statikus dinamikus (DLL) adatterületek: inicializált (DATA) nem inicializált (BSS) heap (dinamikus adatok) veremtár: dinamikusan növelhető terület

Szálak (thread, lightweight process) Együttműködő folyamatok. Környezetük részben közös: memória (kód és adatok) erőforrások Egyedi környezet: a program számláló CPU regiszterek tartalma veremtár Előny: gyors környezetváltás Folyamatok, szálak használatának előnyei Hatékony erőforrás kihasználás CPU, perifériák Párhuzamos végrehajtás lehetősége Feladat partícionálása Több CPU esetén gyorsítás Több alkalmazás egyidejű végrehajtása Áttekinthető rendszerstruktúra Egymáshoz viszonylag lazán kapcsolódó részekre osztása a feladatnak.

Párhuzamos folyamatok viszonya Független folyamatok: Egymás futását nem befolyásolják. Aszinkron futnak, egymáshoz viszonyított sebességükről nincs információ. Csatolt folyamatok: Versengő folyamatok: Logikailag független de közös erőforrásokat használó folyamatok. Együttműködő folyamatok: Közös cél végrehajtásán munkálkodó folyamatok. Folyamatok együttműködése

Szinkronizáció: Alapfogalmak folyamatok futásának időbeli összehangolása Kommunikáció: információcsere a folyamatok között Holtpont Éheztetés Holtpont - éheztetés Holtpont: Végtelen várakozás. Folyamatok csoportja várakozik a csoport tagjai által előidézendő eseményre. Éheztetés: Gyakorlatilag végtelen várakozás. Nem fair ütemezés következtében valamelyik folyamat véges időn belül nem jut egy adott erőforráshoz.

Folyamatok közötti információcsere (kommunikáció) Információcsere formái: Közös tárterületen keresztül. Kommunikációs csatornán keresztül. Mechanizmus: küldő SEND(üzenet), vevő RECEIVE(üzenet). Közös tárterületen történő kommunikáció

Közös tárterületen történő kommunikáció Osztott elérésű memória read write Operációs rendszer Kommunikációs alrendszer read write read write C folyamat B folyamat A folyamat Közös tárterületen történő kommunikáció PRAM (Pipelined/Parallel Random Access Memory) modell Oszthatatlan atomi műveletek: olvas, ír. Probléma: műveletek ütközése.

Műveletek ütközésének kezelése Nem lapolódhat át időben a műveletek végrehajtása. Ütköző műveletek sorrendjét meg kell határozni. Valós használat: szinkronizáció, kölcsönös kizárás biztosítása. Üzenetváltás kommunikációs csatornán keresztül

Üzenetváltás kommunikációs csatornán keresztül send(b, üzenet) Kommunikációs közeg: Operációs rendszeren keresztül receive(a, üzenet) A folyamat B folyamat Kommunikáció általános sémája A send(b, üzenet) OR B feldolgoz A B üzenet receive(a, üzenet)

Üzenetváltás kommunikációs csatornán keresztül Séma: kommunikációs csatorna (közeg) műveletek: SEND(címzett folyamat, üzenet), RECEIVE(küldő folyamat, üzenet) "üzenet" üzenetküldésnél: az üzenetet tároló adat tömb "üzenet" vételnél: feltöltendő adat tömb Kommunikációs modell Nincs egységes modell. A műveletek hatása, paraméterei az alkalmazott megoldástól függ.

Rendszerezési szempontok (tartalom) Kommunikáció típusai: partner megnevezés módja, (1.) műveletek hatása (szemantikája). (2-3.) Csatorna jellemzői. (2-3.) Kommunikáció típusai Partner megnevezés alapján. Műveletek szemantikája alapján. (Üzenetküldési műveletek a folyamat működésére gyakorolt hatása alapján.)

Kommunikáló partner megnevezése alapján közvetlen kommunikáció közvetett kommunikáció csoport kommunikáció Közvetlen kommunikáció Kommunikációs közeg (operációs rendszer) send(b, üzenet) receive(a, üzenet) A folyamat üzenet B folyamat üzenet

Közvetlen kommunikáció Általában szinkronizáció a folyamatok között. Műveletek szintaktikája: SEND(címzett folyamat, üzenet) RECEIVE(küldő folyamat, üzenet) Közvetett kommunikáció Postaláda (mail box) (kommunikációs közeg) send(postaláda, üzenet) receive(postaláda, üzenet) A folyamat üzenet B folyamat üzenet

Közvetett kommunikáció Postaláda (FIFO tároló) használata. Nem szükséges szinkronizáció. Műveletek szintaktikája: SEND(postaláda, üzenet) RECEIVE(postaláda, üzenet) Kérdések: postaláda kapacitása, használó folyamatok száma. Aszimmetrikus kommunikáció Kommunikációs közeg (operációs rendszer) send(p, üzenet) A folyamat üzenet B folyamat üzenet receive(üzenet) P bemeneti port

Aszimmetrikus kommunikáció Csatorna használata: FIFO összeköttetés két folyamat között. Ki vagy bemeneti (port) kapu használata. A kommunikáló folyamat nem kell, hogy ismerje a partner azonosítóját. Vevő oldali bemeneti port használata Vevő nem ismeri a küldőt. Pl. kliens-szerver modell: szerver szolgáltató várja a kliens kéréseket. Műveletek: SEND(címzett folyamat bemeneti portja, üzenet) RECEIVE(üzenet) (implicit a port-ra)

Vevő oldali bemeneti port Kommunikációs közeg (operációs rendszer) send(p, üzenet) receive(üzenet) Kliens üzenet Szerver üzenet P: bemeneti port Adó oldali kimeneti port Adó nem ismeri a címzettet. pl. farmer worker modell: a munkát szétosztó manager folyamat várja a munkáért versengő feldolgozó folyamatokat. Műveletek: SEND (üzenet) RECEIVE (adó folyamat kimeneti portja, üzenet)

Adó oldali kimeneti port Kommunikációs közeg (operációs rendszer) send(üzenet) receive(p, üzenet) Farmer üzenet P: kimeneti port Worker üzenet Csoport kommunikáció A kijelölt folyamat-csoport minden tagja megkapja az üzenetet. Ún. broadcasting üzenet: minden folyamat megkapja az üzenetet Művelet: SEND(csoport, üzenet)

Csatorna jellemzői - Üzenetküldő műveletek szemantikája Csatorna jellemzői I. Átviteli közeg típusa: mail box, hálózati összeköttetés stb. Kapcsolat iránya: Szimplex (egyirányú) csatorna, Fél duplex (osztottan kétirányú) csatorna, Duplex (kétirányú) csatorna. Csatornát használó folyamatok száma: kettő v. több

Csatorna jellemzői II. Üzenetek tárolása a csatornán: automatikus pufferelés. Kérdések: csatorna kapacitása, csatorna megbízhatósága. Csatorna kapacitása Üzenetváltáskor implicit szinkronizáció. Nincs tárolás (közvetlen kommunikáció): szinkronizáció (randevú) szükséges. Véges tárolás: kölcsönös kizárás, ill. várakoztatás szükséges. Végtelen tárolás: virtuális lehetőség, nincs várakozás.

Csatorna megbízhatósága I. Távoli kommunikáció: megbízhatatlan kommunikáció. Kezelendő hiba események: adó meghal vevő meghal Felismerés lehetséges módja: Időkorlát (timeout) használata. SEND(címzett f., üzenet, időkorlát) RECEIVE(küldő f., üzenet, időkorlát) Csatorna megbízhatósága II. Üzenetvesztés, sérülés esetén: OR jelzi és kezeli. OR jelzi, felhasználó kezeli. Felhasználó veszi észre és kezeli. Hibakezelés technikája: hibakód visszatérési érték. SEND(címzett folyamat, üzenet, hibakód) RECEIVE(küldő f., üzenet, hibakód)

Üzenetek sérülése Üzenetek sérülésének megakadályozása kódolással: Hiba detektálása. Hiba javítása. Nem minden üzenet érvényes. Érvénytelen (hibás) üzenet észlelésejavítása. Üzenetváltás műveleteinek általános formája Műveletek általános paraméterei: SEND(címzett folyamat, üzenet, időkorlát, hibakód) RECEIVE(küldő folyamat, üzenet, időkorlát, hibakód)

Üzenetváltás módja Üzenetváltás módja: aszinkron, szinkron, időkorlát használata: 0 végtelen. Szinkronizáció

A szinkronizáció formái előidejűség (precedencia) egyidejűség (randevú) meghosszabbított (extended) randevú kölcsönös kizárás (mutual exclusion) Előidejűség (precedencia) A U 1 B U 1 előidejű U 2 -höz képest: U 2 U 1 vége megelőzi U 2 megkezdését

Egyidejűség (randevú) A B R 1 R 2 U 1 egyidejű U 2 -vel: R 1 vége megelőzi U 2 megkezdését és U 1 U 2 R 2 vége megelőzi U 1 megkezdését Meghosszabbított randevú A B R 1 R 2 U 1 egyidejű U 2 -vel R 1 vége megelőzi U 2 megkezdését és U 1 U 2 vár S 1 S 2 R 2 vége megelőzi U 1 megkezdését U 1 megvárja U 2 végét

A U 1 B Kölcsönös kizárás (mutual exclusion) U 2 U 1 -re és U 2 -re igaz a kölcsönös kizárás: U 1 és U 2 egyidejűleg nem hajtódik végre Kölcsönös kizárás (mutual exclusion)

Kölcsönös kizárás (mutual exclusion) Leggyakrabban használt szinkronizációs eszköz. Erőforrások (hardver vagy szoftver) használata: Egyidejűleg csak egy folyamat használhatja. Párhuzamos használat hibás működést eredményezne. Pl. fájlok, portok, printer stb. Programrészletek. Kölcsönös kizárás -gyakorlati példa Termelő-fogyasztó (felhasználó) modell. Nyomtatás vezérlése. Termelő: Adatcsomagokat készít elő nyomtatásra. Fogyasztó: Adatcsomagokat vár és kinyomtatja őket.

Termelő-fogyasztó modell Termelő Fogyasztó következőkész következőfeldolgozandó buffer (osztott elérésű memória) Termelő repeat [Készít egy új kinyomtatandó adatot a következőkész változóban.] while telielemekszáma >= N do üresutasítás; buffer[következőüres]:= következőkész; következőüres:= (következőüres + 1) mod N; telielemekszáma := telielemekszáma + 1; until false;

Fogyasztó repeat while telielemekszáma <= 0 do üresutasítás; következőfeldolgozandó := buffer[következőteli]; következőteli := (következőteli + 1) mod N; telielemekszáma := telielemekszáma -1; [Kinyomtatja a következőfeldolgozandó változóban tárolt adatot.] until false; Probléma A telielemekszáma változó inkrementálásának, ill. dekrementálásának gépi utasításai párhuzamosan (átlapolódva) hajtódhatnak végre. Eredmény a végrehajtás sorrendjétől függ!

Inkrementálás-dekrementálás Inkrementálás MOV AX, <telielemekszáma> INC AX MOV <telielemekszáma>, AX Dekrementálás MOV AX, <telielemekszáma> DEC AX MOV <telielemekszáma>, AX Végrehajtás 1 MOV AX(5), telielemekszáma(5) INC AX(6) MOV telielemekszáma(6), AX(6) MOV AX(6), telielemekszáma(6) DEC AX(5) MOV telielemekszáma(5), AX(5) Eredmény: telielemekszáma=5

Végrehajtás 2 MOV AX(5), telielemekszáma(5) INC AX(6) MOV AX(5), telielemekszáma(5) DEC AX(4) MOV telielemekszáma(4), AX(4) MOV telielemekszáma(6), AX(6) Eredmény: telielemekszáma=6 Végrehajtás 3 MOV AX(5), telielemekszáma(5) INC AX(6) MOV AX(5), telielemekszáma(5) DEC AX(4) MOV telielemekszáma(6), AX(6) MOV telielemekszáma(4), AX(4) Eredmény: telielemekszáma= 4

Kritikus szakasz Kritikus szakasz Kölcsönös kizárás megvalósítása. Olyan utasítássorozat a programban, amelyen belül a végrehajtás során egyidejűleg csak egyetlen folyamat tartózkodhat.

Kritikus szakasz felépítése Belépő (entry) utasítások (szakasz). Kritikus szakasz (védett utasítások). Kilépő (exit) utasítások (szakasz). A KSZ helyes implementálásának kritériumai Kölcsönös kizárás biztosítása. Haladás biztosítása. Korlátozott várakozás.

Kritériumok Kölcsönös kizárás biztosítása: Az egymáshoz tartozó kritikus szakaszokban mindig legfeljebb egyetlen folyamat tartózkodhat. Haladás biztosítása: Ha a kritikus szakasz szabad és van a kritikus szakaszra várakozó folyamat, akkor ezek közül egyet engedjen be. Korlátozott várakozás: Elkerüli a várakozó folyamatok kiéheztetését. A kritikus szakasz implementálása

Tisztán programozott megoldás Két folyamat esetén alkalmazható megoldás: A két folyamat: P 1, ill. P 2. A P i folyamathoz tartozó belépő (entry) és kilépő (exit) szakasz. Belépő és kilépő szakaszok entry: flag [i] := IGAZ; következő := j; while ( flag[j]==igaz and következő == j ) do { üres utasítás }; exit: flag [i] := HAMIS;

Belépő és kilépő szakaszok P1 entry: flag [1] := IGAZ; következő := 2; while ( flag[2]==igaz and következő == 2 ) do { üres utasítás }; exit: flag [1] := HAMIS; Belépő és kilépő szakaszok P2 entry: flag [2] := IGAZ; következő := 1; while ( flag[1]==igaz and következő == 1 ) do { üres utasítás }; exit: flag [2] := HAMIS;

Programozott KSZ megvalósítás tulajdonságai Két folyamat esetén alkalmazható. Mind a három kritikus szakaszra vonatkozó feltételt teljesíti. Tetszőleges n folyamat esetén használhatómegoldás: jóval bonyolultabb. KSZ megvalósítása HW támogatással Speciális, megszakíthatatlan, egyidejűleg több műveletet végző hardver utasítások: TestAndSet(lakat), swap(lakat, kulcs), szemafor.

TestAndSet TestAndSet(lakat) művelet működése: lakat: boolean váltózó. Beállítja a lakat váltózót IGAZ értékre. Visszatér a lakat változó eredeti értékével. Használat: lakat = IGAZ, ha foglalt a KSZ. entry: exit: TestAndSet -KSZ megvalósítása while TestAndSet(lakat) do { üres utasítás }; lakat:= HAMIS;

Swap swap(lakat, kulcs) művelet működése: lakat, kulcs: boolean változók. Kicseréli a lakat és a kulcs változókban tárolt értékeket. Használat: lakat = IGAZ, ha foglalt a KSZ. Swap entry: kulcs := IGAZ; do swap(lakat, kulcs); while (kulcs == IGAZ); exit: lakat:= HAMIS;

TestAndSet, Swap - tulajdonságok a Kölcsönös kizárás biztosítása. a Haladás biztosítása. r Korlátozott várakozás. A harmadik feltétel kielégítése: jóval bonyolultabb megoldások. Szemafor E. W. Dijkstra definiálta az 1960-as évek végén vasúti példa alapján: egy vágányos sínszakasz védelme Speciális adatszerkezet és rajta értelmezett oszthatatlan utasítások. Szemafor: s Műveletek: init(s, v) inicializálás P(s) prolagen = proberente verlagen ~ trytodecrease V(s) verhogen ~ increase

Műveletek jelentése init(s, v): s := v; P(s): while (s <= 0) do { üres utasítás }; s := s - 1; V(s): s := s + 1 Szemaforok típusai és tulajdonságai s egész változó, értéke az alkalmazástól függően értelmezhető. Pl. a kritikus szakaszba beléphető folyamatok száma. Bináris szemaforok: csak 0 vagy 1 (true és false) érték; Univerzális eszköz szinkronizációs feladatok megvalósítására.

Kritikus szakasz megvalósítása szemaforral init(s,1) entry: P(s) exit: V(s) Előidejűség Utasítás1 megelőzi Utasítás2-t: init(s,0); Utasítás1; V(s); P(s); Utasítás2; 1. folyamat: 2. folyamat:

Szemafor implementálása passzív várakozással P(s): if s <= 0 then tedd a várakozó listára és altasd el; else s := s - 1; V(s): if (várnak rá és a várakozó lista nem üres) then (leveszi és felébreszti az elsőt a várakozók közül); else s := s + 1; Szemafor tulajdonságai Aktív várakozás: erőforrások pazarlása. Passzív várakozás: korrekt megoldás, a szemafort nem lehet a felébresztett folyamattól ellopni. Szemafor általános problémája: túl alacsonyszintű eszköz. Nehéz megbízhatóan programozni.

KSZ megvalósítása magas szintű programnyelvekben Magas szintű nyelvi szerkezetek. Erőforrások ill. változók. Kritikus szakaszba tartozó utasítások. Kritikus szakasz region változó do utasítások end Feltételes kritikus szakasz region változó when feltétel do utasítások end A megvalósítás problémái Az azonos erőforráshoz tartozó kritikus szakaszok a program szövegben szétszórtan fordulnak elő. Erőforrás felszabadulása: Az erőforrásra várakozó összes folyamatot fel kell ébreszteni, mert a kernel nem tudja kiértékelni a belépési feltételeket.

Monitor A közösen használandó erőforrás és az összes rajta végezhető művelet egyetlen szintaktikus egységben. Felépítése: osztott elérésű változók, elérési pontok (eljárások), inicializáló utasítások, várakozó folyamatok listája. Monitor Automatikusan kölcsönös kizárást biztosít a belépési pontok (entry point) eljárásaira. Csak kölcsönös kizárást valósít meg. Egyéb szinkronizáláshoz más eszköz kell: pl. feltételes változó.

Szinkronizáció monitorral Feltételes változó (conditional variable). Bináris szemaforhoz hasonló adattípus. Két speciális belépési ponttal: wait() Mindig blokkol, elhagyja a monitort. Folyamat várakozó állapotba kerül. signal() Csak akkor van hatása, ha várakozik valaki. Felébreszti a változóra várakozó folyamatokat. Monitor - problémák Feltételes változók: alacsony szintű eszköz, nehéz áttekinthetően és biztonságosan szinkronizációt szervezni.