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

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

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

Az interrupt Benesóczky Zoltán 2004

Operációs rendszerek Folyamatok 1.1

Architektúra, megszakítási rendszerek

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

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

OPERÁCIÓS RENDSZEREK. Elmélet

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Operációs rendszerek. Bemutatkozá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

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

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

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

Operációs Rendszerek II.

Matematikai és Informatikai Intézet. 4. Folyamatok

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

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

Ütemezés (Scheduling),

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Előadás_#03. Előadás_03-1 -

ARM Cortex magú mikrovezérlők

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

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

(kernel3d vizualizáció: kernel245_graph.mpg)

Ütemezés (Scheduling),

A Számítógépek hardver elemei

Windows ütemezési példa

elektronikus adattárolást memóriacím

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

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

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

TestLine - Informatika gyakorló Minta feladatsor

Mikrorendszerek tervezése

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

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

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

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

TestLine - zsoltix83tesztje-01 Minta feladatsor

Mikrorendszerek tervezése

Adatok ábrázolása, adattípusok

Informatika érettségi vizsga

Operációs rendszerek MINB240

TestLine - zsoltix83tesztje-01 Minta feladatsor

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

Digitális technika VIMIAA01 9. hét

Bepillantás a gépházba

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

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

Bevezetés az informatikába

Számítógépes alapismeretek

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

9. Fejezet: Input/Output

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

13. óra op. rendszer ECDL alapok

Operációs Rendszerek II.

A Számítógépek hardver elemei

Utolsó módosítás:

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

Operációs rendszerek III.

Utolsó módosítás:

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

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

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

Megszakítási rendszer

Balogh Ádám Lőrentey Károly

Alkalmazások típusai Szoftverismeretek

5. tétel. A számítógép sematikus felépítése. (Ábra, buszok, CPU, Memória, IT, DMA, Periféria vezérlő)

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

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

A személyi számítógép felépítése

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

Konkurens TCP Szerver

Irányítástechnika Elıadás. PLC-k programozása

IT - Alapismeretek. Feladatgyűjtemény

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

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

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

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

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

Operációs rendszerek. UNIX fájlrendszer

Nagyteljesítményű mikrovezérlők

Alapismeretek. Tanmenet

Programozás alapjai. 10. előadás

A mikroprocesszor felépítése és működése

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Villamos jelek mintavételezése, feldolgozása. Mérésadatgyűjtés, jelfeldolgozás 9. előadás

Digitális rendszerek. Digitális logika szintje

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Dr. Schuster György október 3.

Készítette: Oláh István mestertanár

9. Fejezet: Input/Output

Alapismeretek. Tanmenet

Operációs rendszerek

Tudásszint mérés feladatlap

Operációs rendszerek (I 1204)

Magas szintű optimalizálás

Átírás:

Előadás_#02. 1. Folyamatok [OR_02_Folyamatok_zs.ppt az 1-12. diáig / Előadás_#02 (dinamikusan)] A multiprogramozott rendszerek előtt a tiszta szekvenciális működés volt a jellemző. Egy program (itt szándékosan nem folyamatnak nevezzük) futtatása elkezdődött, teljes egészében lefutott (eredményt képezett), majd megállt. Ezután indulhatott a következő program futása. Ütemezésre nem volt szükség, pusztán a sorrend ismerete elegendő volt. A több folyamat (és ebből következően nyilván a több szál amiről hamarosan szó lesz) párhuzamos megjelenését először az időosztásos (vagy időszeletes) rendszerek (time sharing systems) tették lehetővé, ahol egyszerre több felhasználó is bejelentkezhetett a rendszerbe. Alapvető kérdés volt a processzor (ami nyilván egymagos volt) idejének igazságos, de hatékony megosztása (azaz időszeletenkénti kiosztása) a felhasználók közt. Az itt szerzett tapasztalatok vezettek a klasszikus multiprogramozáshoz, amikor már egy felhasználó is a több, párhuzamos(nak érzékelt) folyamat futtatásának a lehetőségét kapta meg. A folyamat (process) a multiprogramozott operációs rendszerek alapfogalma. A folyamat tehát a számítási feladatok végrehajtásának alapegységét jelenti. Folyamaton így jellemzően a műveletek meghatározott sorrendben történő végrehajtását értjük. Az operációs rendszer működése folyamatok sorozata. Egy folyamat elkezdődik és a #6. dia által bemutatott lehetséges állapotokat felvéve előbb utóbb be is fejeződik. A vonatkozó részművelet végrehajtása viszont csak akkor kezdődhet el, ha az előző részművelet végrehajtása már befejeződött. A #6. dia folyamat állapotainak leírása: Futásra kész A folyamat már minden szükséges erőforrást birtokol, kivéve a CPU-t (pont a CPU-ra vár). Futó A folyamat fut, minden szükséges erőforrást birtokol, és ezen felül a CPU-t is birtokolja. Várakozó A folyamat valamilyen feltétel teljesülésére vár (például i/o művelet eredményére) Előadás_02-1 -

Multiprogramozott rendszerekben a processzor magok számának megfelelő számú folyamat képes tisztán egyidőben futni. (Nem szabad megfeledkezni a Hyper-threading technológiáról sem, de az nem a folyamatokkal, hanem a szálakkal kapcsolatos így arról kicsit később lesz szó.) A nem futó, hanem a várakozó, illetve a futásra kész folyamatok számának pedig csak gyakorlati korlátja van, elvi korlátja nincs. A folyamatkezelés (process management) az operációs rendszerek mindazon szolgáltatásainak, tevékenységeinek körét magába foglalja, amelyek a folyamatok végrehajtásával és az ehhez fűződő adminisztrálással kapcsolatosak. Egy folyamat viszont (ahogyan az a #6. dián látható) közel sem biztos, hogy elkezdődik, és egy menetben simán le is fut, hiszen a lényeg pont az, hogy az operációs rendszer lehetőséget ad arra, hogy egyszerre több végrehajtás alatt álló folyamat között (időszeletenként vagy más priorizálással) a CPU ütemező képes legyen váltani. [A CPU ütemező a rövid távú ütemező.] A módszer a váltások ellenére azt igyekszik (jellemzően sikerrel) "elhitetni" minden folyamattal, hogy ő az operációs rendszer és ebből kifolyólag a hardver egyedüli és osztatlan felhasználója. Ne felejtsük tehát el, hogy normál működés közben, amikor egy folyamat megkapta és használja a CPU-t (CPU magot), biztosan el fog következni egy olyan időpillanat is, amikor nem egy másik folyamat igénye jelentkezik a CPU-ra, hanem maga az operációs rendszer igényli a CPU-t a saját belső mechanizmusainak a működtetéséhez. Ez pedig nem is ritkán jelentkező esemény, hanem az órajel alapján ciklikusan jelentkező esemény. Egy folyamat futása tehát megszakadhat egy másik (pl. magasabb prioritású) folyamat CPU igénye miatt, vagy az operációs rendszer CPU igénye miatt. A megszakítás (interrupt) az a műveletsorozat, amikor az éppen feldolgozás alatt lévő folyamat futásának félbehagyásával egy magasabb prioritású igény végrehajtásának indítása történik, oly módon elmenve az éppen futó folyamat környezetét (ez a fogalom hamarosan részletesen tárgyalásra kerül) egy átmeneti tárolóba, hogy az a későbbiekben folytatható legyen. A megszakítást, mint eszközt az teszi szükségessé, hogy a folyamatok végrehajtása során felléphetnek olyan események, melyek egyszerű, de hatékony kezelése csak az folyamat végrehajtás normális menetének átmeneti felfüggesztésével lehetséges. Előadás_02-2 -

[Magát a "megszakítás" elnevezést és terminológiát először az IBM használta, és terjesztette el. Természetesen gyorsan lettek követői, de például a Motorola a "kivétel" (exception) fogalmat használja. További érdekesség, hogy a Microsoft és a VAX egyes rendszerei mindkét fogalmat használják ráadásul nem is rokon értelmű kifejezésként, hanem mindkettőnek önálló értelmet adva.] Kicsit közérthetőbben fogalmazva, az operációs rendszernek rugalmasan reagálnia kell a "külvilág" rendszert érintő eseményeire is. Ezt a kitűzött célt a megszakítás segítségével az operációs rendszer úgy éri el, hogy az éppen futó folyamatról a vezérlés ideiglenesen átadódik egy olyan másik folyamatra, amely képes kiszolgálni (kezelni) a bekövetkezett eseményt. A megszakítást kiszolgáló folyamat lefutása után pedig a megszakított folyamat végrehajtása a soron következő lépésétől kezdve folytatódik. Egy számítógép esetén például érzékelni kell a klaviatúra használatát, vagyis azt, hogy a felhasználó valamit begépel, vagy például azt, hogy egy periféria befejezte a kért műveletet és készen áll az eredmény vagy a kért adat átadására. Ez esetben például a néhány mikroszekundumos késleltetés/késlekedés nem jelent problémát, de a valós idejű (real time) és a folyamatirányítási (process control) rendszerek esetében az azonnali szuper gyors válaszadási idő már elsőrendű feladat. [Real Time: Semmiképpen sem szabad azt gondolni, hogy itt valami olyan csodáról van szó, amely elvi és gyakorlati késedelem és időveszteség nélkül hajtja végre az elvárt műveleteket. Egy rendszert akkor tekinthetünk Real Time rendszernek, ha ELVÁRT sebességgel reagál. Például egy csiga Real Time irányításához vagy vezérléséhez a másodperc nagyságrendű beavatkozási illetve válaszidő is elegendő, mert közismert, hogy a legfürgébb csiga sem kapkodja el a dolgokat... A Real Time összegezve tehát azt jelenti, hogy a valós időben érkező igényeinkre valós időben kapunk választ, azaz egyszóval (még éppen) időben megérkezik a válasz illetve az eredmény ahhoz, hogy a szóban forgó folyamat zökkenőmentesen futhasson.] Előadás_02-3 -

A legjellemzőbb ilyen események csoportosítása: meghatározott külső műveletek befejezése, melyek bekövetkezésére számítani lehet, de ezek időpontja pontosan nem tervezhető (például egy periféria jelzi, hogy egy I/O művelet befejeződött) szándékos, azaz programvezérelt módon generált események (rendszerhívások) meghatározott programhibák (például 0-val való osztás) teljesen véletlenszerűen és váratlanul fellépő események (például hardverhiba vagy áramkimaradás) A megszakítások két nagy csoportra bonthatók: Maszkolható megszakítás (interrupt request / IRQ [vagy IT]) Ezek végrehajtásának bekövetkezése az IRQ prioritási szintjétől függ. Nem maszkolható megszakítás (non maskable interrupt / NMI) Ezek jellemzően azonnal végrehajtandók (például órajel alapú megszakítás). A folyamatok is két nagy csoportra bonthatók: Oszthatatlan műveleteket is tartalmazó Ezt még az NMI sem szakíthatja meg, ha éppen oszthatatlan műveletnél tart! Oszthatatlan műveleteket nem tartalmazó Tetszőlegesen megszakítható. A végrehajtás alatt álló folyamatok közötti váltáshoz a váltandó folyamat környezetét (context) el kell menteni, illetve az indítandó (vagy folytatandó) folyamat környezetét pedig be kell tölteni. Ez a tevékenység a környezetváltás. A környezetnek, mint információhalmaznak tartalmaznia kell a folyamat illetve a számítógép aktuális állapotát, beleértve mindazt az információt, ami a folyamat folytatásához, azaz újraindításához szükséges. Előadás_02-4 -

A folyamat és a számítógép aktuális állapotát egy összetett adatstruktúra a PCB (Process Controll Block / Folyamatvezérlési Blokk) tartalmazza. A PCB struktúrájának 3 fő része, és azok legfontosabb összetevői: A folyamatot azonosító adatok o Memória információ, mely tartalmazza a folyamat által használt memóriaterületek adatait, illetve a címtranszformációs táblázatot. o A folyamat azonosítója mellett a szülőjének és gyerekeinek azonosítói. o I/O státus információ, mely a folyamathoz rendelt, illetve lefoglalt I/O-eszközök listáját, és a megnyitott fájlok listáját tartalmazza. A CPU állapotának adatai o CPU-regiszterek, melyek futás közbeni processzor szintű adatokat tartalmaznak. o CPU-ütemezési információ, mely az adott folyamat ütemezésével, prioritásával, jogosultságaival kapcsolatos adatok összessége. o Elszámolási információ, mely a felhasznált CPU-idő és valóságos idő, idő-korlátok, egyéb számlálók, stb. adatainak összessége. A folyamat vezérlési adatai o A folyamat állapota (a #6. dia tartalmazza a lehetséges állapotokat). o Programszámláló, mely a folyamat soron következő végrehajtandó utasításának a címét tartalmazza. o Mutatók (pointer), melyek a tárolásra használt adatszerkezet mutatói. Segítségükkel a tárolt adatok gyorsabban érhetők el. Az I/O műveletek paraméterei az (input output control block / be- és kimenetek vezérlő blokkja) IOCB-ben tárolódnak. Fontos része a rendszer struktúrájának, hogy az IOCB-k az I/O műveletet kezdeményező folyamat PCB-jére fűződnek fel. Ezzel azt is elértük, hogy az elindított I/O műveletek és az azokra várakozó folyamatok összekapcsolása is megoldottá vált. (lásd: A folyamatot azonosító adatok harmadik hivatkozása.) Előadás_02-5 -

2. Folyamatok modellezése [OR_03_Folyamat_modell_ok.ppt az 1-27. diáig / Előadás_#02 (dinamikusan)] Egy folyamat vagy a CPU egy magját használja (CPU Burst / CPU löket), vagy I/O műveletet hajt végre (I/O Burst / I/O löket). Ezzel el lehetett érni, hogy a CPU és az I/O (azaz a perifériák) valóban párhuzamosan működjenek. Legelső lépésként minden folyamat CPU lökettel kell hogy induljon. Ezen löketek kiosztásáról az operációs rendszer gondoskodik, aminek természetesen a saját működéséhez is szüksége van a CPU-ra. Szintén az operációs rendszer feladata a periféria vezérlők felprogramozása. Érdekes és hasznos megoldás a DMA (Direct Memory Access), a közvetlen memória elérés, aminek segítségével az arra alkalmas és arra képes perifériák közvetlenül használhatják a memóriát. Nyilván a DMA működéshez is elengedhetetlen a CPU, de ebben a megoldásban csak addig van szükség a CPU-ra, amíg a perifériavezérlő felprogramozása tart. Összefoglalva, tehát a rövid távú ütemező elkezdi ütemezni a folyamatok végrehajtását a CPU-n, szépen ütemezetten (CPU löketenként). Ebbe a "levesbe köp bele" ciklikus rendszerességgel az operációs rendszer CPU igénye egy NMI segítségével, illetve szinte sztohasztikusan az I/O műveletek egy IRQ, és a nem várt műveletek egy IRQ vagy egy NMI segítségével. [A #13-as dián az ábra hiányos! A "Futásra kész" és a "Felfüggesztve futásra kész", valamint a "Várakozó" és a "Felfüggesztve várakozó" állapotok között az átmenet oda vissza irányú, azaz két darab ellentétes irányú nyíl kell hogy legyen közöttük.] [OR_03_Folyamat_modell_ok.ppt az 1-27. diáig / Előadás_#02 (dinamikusan)] Előadás_02-6 -