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

Hasonló dokumentumok
Operációs rendszerek. Folyamatok

Folyamatszálak szinkronizálása

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

Operációs rendszerek. Folyamatok

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

... 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.

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

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

Iman 3.0 szoftverdokumentáció

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

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

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

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

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

Operációs rendszerek MINB240

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

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

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

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

Windows ütemezési példa

Termelő-fogyaszt. fogyasztó modell

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

Java programozási nyelv 9. rész Kivételkezelés

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

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

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.

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

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

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

Java programozási nyelv

Operációs rendszerek

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

Optimista konkurenciavezérlés

Operációs rendszerek

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar január 4.

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

A programozás alapjai

A projekt idő-, erőforrás és költségterve 1. rész

Operációs rendszerek III.

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

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

Programozás alapjai Bevezetés

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

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

A számítógépek felépítése. A számítógép felépítése

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

ELŐADÁS ÁTTEKINTÉSE. Tevékenységek tervezése Gantt diagramm

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

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

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Rubin SPIRIT TEST. Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0. Készítette: Hajnali Krisztián Jóváhagyta: Varga József

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Rendszer szekvencia diagram

Utolsó módosítás:

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

Dr. Illés Zoltán

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

Fogalomtár Etikus hackelés tárgyban Azonosító: S2_Fogalomtar_v1 Silent Signal Kft. Web:

Globális operátor overloading

Objektumorientált paradigma és a programfejlesztés

Országos Szakiskolai Közismereti Tanulmányi Verseny 2005/2006 SZÁMÍTÁSTECHNIKA

WinSarc Irodai Vezérlőpult: - [Ügyfelek nyilvántartása]

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Bevezetés az informatikába

Concurrency in Swing

Dr. Illés Zoltán

Programozási nyelvek 6. előadás

Az interrupt Benesóczky Zoltán 2004

JOGSISZOFT TESZTLAPNYOMTATÓ PROGRAM. A program az egyszer elkészített teszt feladatokat eltárolja, így azok később is kinyomtathatóak.

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Web-programozó Web-programozó

A Java EE 5 plattform

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

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Algoritmusok. Hogyan csináljam?

C++ programozási nyelv

KIR-STAT internetes adatgyűjtő rendszer

IT - Alapismeretek. Feladatgyűjtemény

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

Objektumorientált paradigma és programfejlesztés Bevezető

Negatív alapú számrendszerek

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Informatikai rendszerek alapjai (Informatika I.)

Utolsó módosítás:

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

Követelmény az 5. évfolyamon félévkor matematikából

Dr. Kulcsár Gyula. Virtuális vállalat félév. Projektütemezés. Virtuális vállalat félév 5. gyakorlat Dr.

Tudásszint mérés feladatlap

Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Nemzeti alaptanterv 2012 MATEMATIKA

13. óra op. rendszer ECDL alapok

Matematikai és Informatikai Intézet. 4. Folyamatok

Az optimális megoldást adó algoritmusok

Oktatási cloud használata

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Adatstruktúrák, algoritmusok, objektumok

C++ programozási nyelv Konstruktorok-destruktorok

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Átírás:

Előadás_#05. 1. Az első ZH megírása 2. Szinkronizáció [OR_02_Folyamatok_zs.ppt az 57-114. diáig / nem minden diát érintve] Azok a folyamatok, melyek egymástól nem függetlenek, azaz valamilyen függőség fennáll közöttük, ahhoz, hogy a legkevesebb késedelemmel legyenek képesek adatot cserélni egymással összehangoltan kell együttműködniük. A másik folyamathoz való alkalmazkodás kompromisszumokkal és korlátozásokkal jár, de több a járulékos előny ebből, mint a hátrány. A folyamatok műveleteinek összehangolását nevezzük tehát szinkronizációnak. Az összehangolt folyamatok lefutása a következők szerint történhet: Előidejűség (precedencia) Az egyes folyamatok meghatározott műveletei között előírt végrehajtási sorrend van meghatározva. Egy azt jelenti, hogy ez egyik folyamat adott utasításának feltétlenül meg kell előznie a másik folyamat adott utasítását. Nem csak puszta megelőzésről van szó, hanem arról is, hogy a második folyamat adott utasítása csak az első folyamat adott utasításának a befejezése után kezdődhet el, azaz semmiképpen nem lehet időbeli átfedés. Legjellemzőbb eset az, amikor a második folyamatnak szüksége van egy, az első folyamat által előállított adatra. (#59-es dia) Egyidejűség (randevú) Az egyes folyamatok meghatározott műveletei között előírt végrehajtási mód lehet az, hogy a műveleteknek be kell várniuk egymást, és egyidejűleg kell végrehajtódniuk. Az egyidejű végrehajtás az után kezdődhet meg, hogy az azt megelőző folyamatok leghosszabbika is befejeződött. (#61-es dia) A randevú speciális esete a meghosszabbított randevú. Ez gyakorlatilag randevúk egymás utáni sorozatát jelenti. Jellemző, hogy ugyan a folyamatok egyszerre indulnak, szükségképpen mégsem biztos. hogy egyszerre fejeződnek be. Az ez után következő randevúra csak a lassabban lefutó folyamat befejeződése után kerülhet sor. (#63-as dia) Előadás_05-1 -

Kölcsönös kizárás (mutual exclusion) Az egyes folyamatok meghatározott műveletei között előírt végrehajtási mód lehet az, hogy a műveletek semmiképpen se egyszerre hajtódjanak végre. Sőt a műveletei még részlegesen sem fedhetik át egymást. (#64-es dia) Könnyen belátható, hogy több együtt futó folyamat esetében léteznek olyan program szakaszok, melyek semmi esetre sem hajtódhatnak végre együtt. Legjellemzőbb eset egy közösen használt erőforráshoz való hozzáférés. A folyamatoknak azon utasítás sorozatait, melyek végrehajtása egyidejűleg nem megengedett, kritikus szakasznak nevezzük. Egy folyamat csak akkor léphet be a kritikus szakaszba, azaz csak akkor kezdheti meg a kritikus szakaszként kijelölt utasítássorozat végrehajtását, ha a kritikus szakaszban másik folyamat nem tartózkodik. Amennyiben egy másik folyamat foglalja a kritikus szakaszt, meg kell várni annak a (rész)folyamatnak a befejeződését, azaz a kritikus szakasz felszabadulását. Párhuzamosan futó folyamatok összetartozó kritikus szakaszai tehát kölcsönösen kizárják egymást. A kölcsönös kizárás eredeti tipikus esete a nyomtatás egy megosztott nyomtatón, (fontos megjegyezni, hogy ez esetben a Windows előtti, azaz a nyomtatatási sor kezelő nélküli, közvetlen elérésű sornyomtató vagy mátrixnyomtató szerepel a példában) hiszen nem lenne szerencsés, ha egy lap szöveges tartalmának nyomtatása közben az egyik sor az egyik, a másik sor pedig egy másik folyamatból származna. Kölcsönös kizárással a második folyamat csak az első folyamat nyomtatásának befejezése után kezdhet maga is nyomtatni. A kölcsönös kizárás ma is az egyik leggyakrabban használt szinkronizációs eszköz mind szoftveres, mind hardveres erőforrások közös használata esetén. Jelentősége azonban már nem a nyomtatás, hanem a fájl és port műveletek esetében van. Magyarázat a #69-#77-es dián bemutatott gyakorlati példához. A "telielemekszáma" egy globális változó, azaz mindegyik folyamat látja. A #75-#77-es diákon a szaggatott vonal az ütemezést jelzi, vagyis a környezetváltást. Előadás_05-2 -

A kritikus szakasz gyakorlati megvalósításánál ügyelni kell arra, hogy a következő három feltételt teljesíteni tudjuk. A kölcsönös kizárás biztosítása A kritikus szakaszban egyszerre csak egy folyamat tartózkodhat. A haladás biztosítása Amennyiben a kritikus szakasz nem foglalt, és van legalább egy olyan folyamat, amely be szeretne lépni, akkor ezek közül egyet be kell engedni, A várakozási idő elviselhető szinten tartása Törekedni kell az éheztetés elkerülésére. A kritikus szakaszra való belépés engedélyezése történhet szoftveres vagy hardveres úton. A szoftveres út az egyszerűbb, de időigényesebb megoldás. Az operációs rendszernek ismernie kell a kritikus szakasz elejét (entry) és végét (exit). Az érintett folyamatoknak képesnek kell lenni egyrészt a belépési szándék jelezésére, másrészt a kritikus szakasz elhagyásának jelezésére. Feltétlenül szükség van legalább egy változóra, amely jelzi a kritikus szakasz effektív foglaltságát. A hardveres megoldásnak a processzor utasításkészletébe épülve kell képesnek lennie a foglaltság ellenőrzésének az elvégzésére. Ehhez speciális, megszakíthatatlan, egyidejűleg több művelet végrehajtására is alkalmas megoldásokra van szükség. TestAndSet A megnevezés azért van egybeírva, hogy ez is utaljon arra, hogy ez esetben egy lépésről van szó. Amennyiben egy érintett folyamat azt olvassa ki ebből a változóból, hogy szabadon beléphet, akkor belép és ezzel a TastAndSet logikai változó értékét szabadról foglaltra állítja. A megoldás tehát összesen egy darab logikai változót használ, viszont igényli azt, hogy a PRAM modell mindenképpen az "OlvasÉsÍr"oszthatatlan műveleti sorrendet kövesse. Swap Az elnevezés találó, hiszen ez esetben valóban egy cseréről van szó. Minden érintett folyamat rendelkezik egy kulcsnak nevezett logikai változóval. A kulcs 1-es értéke azt jelzi, hogy az adott folyamat be szándékozik lépni a kritikus szakaszba. Maga a kritikus szakasz szintén rendelkezik egy logikai változóval, aminek lakat az elnevezése. Amennyiben a kritikus szakaszban nem tartózkodik folyamat, a lakat értéke 0. A kritikus szakaszba való belépéshez az összes érintett program meg kell, hogy vizsgálja a lakat változó értékét. Amennyiben egy folyamat a lakat Előadás_05-3 -

értékét 0-nak találja, akkor a lakat értékét lecseréli (swap) saját kulcs változójának értékére (ami 1 volt), és belép a kritikus szakaszba. A többi folyamat a lakat vizsgálata során már 1-es értékkel találkozik, azaz nem léphet be. A kritikus szakasz elhagyása után a folyamat visszacseréli a lakat és a kulcs változók értékét, ezzel lehetővé téve egy másik folyamat belépését a kritikus szakaszba. Meg kell jegyezni, hogy a fent ismertetett két megoldás, a három teljesítendő feltétel közül csak az első kettőt tudja maradéktalanul megvalósítani. A harmadik feltétel (a várakozási idő elviselhető szinten tartása) csak lényegesen bonyolultabb eljárással valósítható meg. Szemafor A szemafor algoritmust Edsger Wybe Dijkstra (1930-2002, holland matematikus-informatikus) dolgozta ki, 1968-ban. A megoldás működési mechanizmusa egy egyvágányos vasúti sínszakasz védelmének modelljét vette alapul. A szemafor a szinkronizációs problémák megoldásának univerzális eszköze, hiszen a kölcsönös kizárás megvalósításán túl az előidejűség és az egyidejűség esetében is használható. A működés megvalósításához szükségünk van: o egy nem negatív értékeket hordozó változóra, ennek neve "s" (létezik bináris szemafor is ez esetben az "s" értéke csak 0 vagy 1 lehet) o három atomi, azaz nem megszakítható műveletre, melyek elegendőek a modell működéséhez: "Init" [beállít] a szemafor inicializálása, alaphelyzetbe állítása, azaz "s"=1 (kölcsönös kizárás) vagy "s"=0 (előidejűség) illetve "s" 1-nél nagyobb értékre állítása, mely érték a kezelt erőforrások számát mutatja meg. "Wait(s)" [vár] Ez a művelet "s" értékét csökkent 1-el, amennyiben "s" értéke nagyobb mint 0. Nevével ellentétben a wait művelet nem minden esetben várakoztat, csak az "s"=0 esetben történik várakoztatás. (Eredeti elnevezése "P" a proberen holland szó után [kipróbálni]) "Signal(s)" [jelez] Ez a művelet "s" értékét 1-el megnöveli. (Eredeti elnevezése "V" a verhogen holland szó után [megnövelni]) Előadás_05-4 -

A működés mechanizmusa a következő. Amennyiben "s" értéke 1, ez azt jelenti, hogy a modell a kölcsönös kizárást valósítja meg. A kritikus szakaszba belépni szándékozó folyamat egy "P" műveletet hajt végre, aminek hatására "s" értéke 0 lesz, és belép a kritikus szakaszba. A kritikus szakaszban végrehajtott programrész befejezése után egy "V" műveletet hajt végre a folyamat, azaz "s" értékét 1-el megnöveli, jelen esetben visszaállítja 1-re. A folyamat elhagyja a kritikus szakasz, lehetőséget teremtve másik folyamatok számára a belépésre. Amennyiben "s" értéke 0, ez azt jelenti, hogy a kritikus szakasz használatban van. A kritikus szakasz felszabadulása után "s" értéke 1 lesz. Fontos megjegyezni, hogy nem mindegy, hogy az "s" értéke az inicializálást követően lesz 1 vagy egy "V" művelet után. Amennyiben "s" értéke 2 (vagy ennél is több), akkor több folyamat egymás mellett képes belépni, mert az "s" értéke ez esetben azt mutatja meg, hogy a szemaforhoz tartozó erőforrásból mennyi áll rendelkezésre. Belépéskor a folyamatok sorban egymás után csökkentik (P), kilépéskor pedig növelik (V) "s" értékét. [Szemafor.xlsx] Működés közben sok folyamat teszteli az "s" értékét, ami legtöbbször felesleges aktív processzor használatot jelent. Lassú folyamatokat nem célszerű futásra kész állapotban tartani, hiszen a processzor, mint erőforrás ezen folyamatoknak még hiányzik, de számos más erőforrást viszont feleslegesen tartanak foglalásban. Célszerűbb a lassú folyamatok esetében altatni, azaz passzív várakozást alkalmazni, hogy elkerüljük az erőforrások pazarlását. (#105-ös dia) 3. A "Monitor" típusú programszerkezet A szemaforral ellentétben a monitor egy magasabb szintű, objektum elvű, objektum orientált művelet. Ezt a programszerkezetet C.A.R Hoare angol programfejlesztő dolgozta ki 1974-ben. A monitor objektum egy több szál által használt eljárás nem párhuzamos végrehajtását teszi lehetővé, azaz nem folyamat szintű művelet. Ötvözi az objektum orientált programozást a szinkronizációs metódusokkal. Előadás_05-5 -

A monitor objektum a következőkből áll: o osztott adat o ezeket az adatokat feldolgozó eljárások o monitort inicializáló metódusok A megvalósításhoz ez esetben is három dolog kell, egy feltételváltozó és két művelet (wait és signal), de a kritikus adatokhoz csak szinkronizált műveleteken keresztül lehet hozzáférni. Minden eljárás halmazt egy monitor kontrolál. A többszálas alkalmazás futásakor, a monitor egyetlen szálnak engedélyezi egy adott időpontban az eljárás végrehajtását. Ha egy szál éppen egy monitor által kontrolált eljárást akar futtatni akkor az lefoglalja a monitort. Abban az esetben ha a monitor már foglalt akkor a belépni szándékozó szál várakozik amíg a monitort lefoglaló szál befejezi a adott eljárás végrehajtását és felszabadítja a monitort. Előnye, hogy a közösen használandó erőforrások és az erőforrásokon végrehajtható műveletek egyetlen szintaktikus egységben helyezkednek el. A monitor és a szemafor összehasonlítása: A monitor magasabb szintű eszköz. Magas szintű, objektumorientált nyelvek esetében (pl. Java) roppant egyszerűen használható. A szemaforok segítségével rugalmasabban kezelhetők a kritikus szakaszok, hiszen kell beágyazott módon előre elkészíteni az összes kritikus szakaszt. A szemaforokkal több kritikus erőforrás használatát könnyebb általában összekombinálni egy kritikus szakaszon belül. Előadás_05-6 -