Operációs rendszerek MINB240 Ismétlés. előadás Processzusok 2 Alapvető hardware komponensek CPU Diszk Diszk kezelő Diszk Memória kezelő (Controller) Memória Nyomtató Nyomtató kezelő Rendszer busz 3 Alapvető hardware komponensek CPU Végrehajtja az utasításokat Betölt adatot a memóriából a rendszer buszon keresztül Eszköz kezelő (Device controller) Az eszköz működését ellenőrzi CPU-val párhuzamosan működik Szintén tud betölteni, tárolni a memóriában Regiszterei vagy memóriaként vagy port-ként elérhetők a CPU számára Megszakításokat adhat a CPU-nak 4
Egyszerű CPU modell Egyszerű CPU modell Stack mutató (Stack pointer): Fetch-execute ciklus Utasítás mutató (Instruction pointer): IP Státusz regiszter Zérus érték Kezdés Következő utasítás betöltése Utasítás végrehajtása Vége Túlcsordulás, stb Általános regiszterek Utasítás paraméterei Minimalizálja a memória elérést 5 6 Egyszerű CPU modell Fetch-execute ciklus. IP által mutatott helyről az utasítás betöltése 2. Az utasítás végrehajtása 3. IP értékének növelése 4. Ismétlés az. lépéstől Egyszerű CPU modell PC: Program counter (ahonnan az utasítást be kell tölteni) IR: Instruction register (a végrehajtandó utasítás) 7 8
Privilegizált mód Az operációs rendszer védelmének érdekében kettő vagy több CPU működési mód létezik Privilegizált (rendszer vagy kernel) mód Minden utasítás és regiszter elérhető Felhasználói mód Csak biztonságos utasítások és regiszterek használhatók Biztonságos regiszterek és utasítások Biztonságos akkor, ha: Csak az alkalmazás állapotát befolyásolja Nem tud más alkalmazást befolyásolni vagy nem tudja az operációs rendszert befolyásolni Az operációs rendszer által megadott működési módot (policy) nem tudja áthágni 9 0 Privilegizált mód I/O és megszakítások Memória hozzáférés is korlátozott 0xFFFFFFFF 0x80000000 0x00000000 Kernel mód Kernel és felhasználói mód I/O események meghatározhatatlan időben történnek (billentyűzet, egér, hálózati kapcsolat, stb) Honnan tudja a CPU, hogy egy I/O kérést kell kiszolgálni? 2
Megszakítás Megszakítási modell Interrupt A normál végrehajtási folyamat megszakítása Egy folyamat felfüggesztése, a folyamathoz képesti külső esemény hatására, olyan módon hogy a folyamathoz vissza lehet térni Kezdés Következő utasítás betöltése Megszakítás letiltva Utasítás végrehajtása Megszakítás engedélyezve Megszakítás ellenőrzése; Feldolgozása Vége 3 4 Megszakítás kezelő Megszakítás kezelő Egy szoftver mely meghatározza a megszakítás típusát és végrehajtja a szükséges lépéseket A hardver adja át a vezérlést!! A megszakítás kezelő az operációs rendszer része Felhasználói mód alkalmazás Kernel mód megszakítás kezelő 5 6
Szekvenciális megszakítások Egymásba ágyazott megszakítások Felhasználói mód Felhasználói mód Kernel mód Kernel mód 7 8 Megszakítások A rendszer letiltja a megszakításokat, ha már belépett egy megszakításba Így a folyamatot a CPU be tudja fejezni Közbenső megszakítások tárolódnak Bevezetés 9 20
Operációs rendszer Egy program mely ellenőrzi az alkalmazások át Erőforrás manager Egy interface a hardver és az alkalmazások között A kiterjesztett gép/virtuális gép Operációs rendszer célja Kényelem A számítógép használata kényelmesebb legyen Absztrakció Hardver független programozás Hatékonyság Lehetővé teszi hogy a számítógépet hatékonyan használjuk Fejlődő képes Lehetővé teszi a fejlesztést Védelem 2 22 Felhasználói mód Számítógép szerkezete Felhasználói mód Számítógép szerkezete Alkalmazás Alkalmazás Alkalmazás Alkalmazás Alkalmazás Alkalmazás Rendszer könyvtár Rendszer könyvtár Rendszer könyvtár Rendszer könyvtár Rendszer könyvtár Rendszer könyvtár Operációs rendszer Operációs rendszer CPU és eszköz Kernel mód Hardware 23 Kernel mód Hardware regiszterek, portok betöltésével és kiolvasásával, megszakításokkal kommunikálnak 24
Számítógép szerkezete Számítógép szerkezete Felhasználói mód Alkalmazás Rendszer könyvtár Könyvtár (library) függvények hívásával kommunikálnak Felhasználói mód Alkalmazás Rendszer könyvtár Rendszer hívások (system call) Operációs rendszer Operációs rendszer Kernel mód Hardware Kernel mód Hardware 25 26 Operációs rendszer szoftver Alapvetően egy hagyományos számítógépes szoftver Egy program amit végre kell hajtani Több jogosultsága van Az operációs rendszer feladja a CPU ellenőrzését, hogy más program futhasson Visszakapja a kontrolt Rendszer hívásokkal (system call) Megszakításokkal (interrupt) Kernel Az operációs rendszer azon része, mely privilegizált módban fut A memóriában helyezkedik el Alapvető és leggyakrabban használt funkcionalitást implementál 27 28
Operációs rendszer koncepciók Processzusok, egyszerűen Processzusok Ütemezés, holtpont Memória kezelés Fájlrendszerek Bevitel-Kivitel A végrehajtás alatt álló program Három részből áll Kód szegmens A végrehajtható utasítások Adat szegmens Globális változók Verem (stack) Lokális változók Hívási lista Verem Hézag Adat Kód 29 30 Függvényhívás Függvényhívás a b akármi a2 = (a2+); a2 = (a2+); void f() int a = ; int b; b = f2(a); 3 void f() int a = ; int b; b = f2(a); 32
Függvényhívás Függvényhívás a b akármi a b akármi a2 = (a2+); (argumentum) a2 = (a2+); a2 void f() int a = ; int b; f2(a); 33 void f() int a = ; int b; f2(a); 34 Függvényhívás Függvényhívás a b akármi a b akármi a2 = (a2+); a2 (argumentum) a2 = (a2+); a2 a3 void f() int a = ; int b; f2(a); 35 void f() int a = ; int b; f2(a); 36
Függvényhívás Függvényhívás a2 = (a2+); a b a2 a3 akármi a2 = (a2+); a b a2 a3 akármi void f() int a = ; int b; f2(a); Ekkor is függvényhívás történik, de most ignoráljuk. 37 void f() int a = ; int b; f2(a); 38 Függvényhívás Függvényhívás a2 = (a2+); a b a2 akármi a2 = (a2+); a b a2 akármi 2 void f() int a = ; int b; f2(a); 39 void f() int a = ; int b; f2(a); 40
Függvényhívás Függvényhívás a b akármi a b akármi a2 = (a2+); a2 2 a2 = (a2+); void f() int a = ; int b; f2(a); 4 void f() int a = ; int b; f2(a); 42 Függvényhívás Rendszer hívások a2 = (a2+); a b akármi Egy processzoros gép egy időben egy utasítást hajt végre Rendszer hívás esetén csapdát állít vagy rendszerhívó utasítást hajt végre Paraméterek segítségével dönthető el, hogy mit kell csinálni void f() int a = ; int b; f2(a); 43 44
Rendszer hívások Úgy is tekinthetjük, mint speciális függvényhívás Ellenőrzött belépés a kernelbe Míg a kernelben futnak, privilegizált utasításokat is végrehajthatnak Visszatérnek az eredeti híváshoz A rendszer hívások adják lényegében az operációs rendszer által definiált absztrakt gépet Rendszer hívás típusok Processzus kezelés Szignálok Fájlkezelés Könyvtár és fájlkezelés Védelem Időkezelés 45 46 Processzus kezelés Gyermekprocesszus létrehozása pid = fork() Gyermek megszűnésére akozás pid = waitpid(pid, status, opts) A gyermek memóriatérképének felülírása s = execve(name, argv, envp) A processzus végrehajtásának befejezése exit(status) Fájlkezelés Új fájl létrehozása Fájl megnyitása olvasásra, írásra Adat olvasása fájlból Adat írása fájlba Fájl mutató mozgatása Fájl állapotinformációk lekérése... 47 48
Könyvtár és fájlkezelés Unix és Win32 Új könyvtár létrehozása Üres könyvtár megszüntetése Fájlrendszer csatolása Fájlrendszer lecsatolása Egy új bejegyzés (link) létrehozása Egy bejegyzés megszüntetése... 49 50 Rendszer hívás mechanizmusa. Processzor mód Felhasználói módból Kernel módba lép Felhasználói -t elmenti, Kernel szintű -t inicializálja (helyreállítja) IP Felhasználói IP-t elmenti, Kernel szintű IP-t helyreállítja Rendszer hívás mechanizmusa 2. Regiszterek Bizonyos regiszterek megmaradnak a Kernel szintű bélépésnél Rendszerhívás típusát tárolja Rendszerhívás paramétereit tárolja 5 52
Miért kellenek a rendszerhívások? Rendszerhívás lépései Miért nem egyszerűen egy függvényhívással ugrunk a kernelbe? Az egyszerű függvény hívás: Nem vált kernel módba Nem tudja korlátozni a belépési pontokat Felhasználói alkalmazás libc API 2 3 Rendszerhívás Paraméterek verembe Függvény hívás Verem helyreállítása Kód regiszterbe Csapda kernelnek 9 8 Visszatérés a hívóhoz 4. Rögzített címen kezdve a végrehajtást 7 53 Kernel terület Operációs rendszer továbbküldés 5 6 Táblázatból választás Rendszehívás- Kezelő Munkavégzés 54 Uniprogramozás Processzusok Program A akozás akozás Idő A programnak akoznia kell az I/O utasítások végrehajtására mielőtt továbbfuthatna 55 56
Multiprogramozás Multiprogramozás Program A Program A Program B Program B Kombinált Program C Idő Amíg egy programnak akoznia kell az I/O végrehajtására egy másik program futhat Kombinált Idő 57 58 Időosztás Multiprogramozás használata, hogy egyszerre több akár interaktív programot is kezelni lehessen Processzor ideje megosztott több felhasználó között Processzus Végrehajtás alatt álló program Utasításszámláló Regiszterek Változók aktuális értéke (környezet) Egy olyan entitás, amit hozzá lehet rendelni és végre lehet hajtani egy processzoron Nyomonkövethető (task, job) 59 60
Egy utasításszámláló Processzusok Négy utasításszámláló Processzusok D Processzusok A B C A B C D C B A Idő D Elvileg minden processzusnak saját virtuális CPU-ja van. Valóságban egy CPU kapcsolgat a processzusok között. (Multiprogramozás) 6 Minden processzus végrehajtódik, de egyszerre csak egy processzus aktív, fut!!! 62 Processzusok, nyomonkövetés Nyomonkövetés 63 64
Nyomonkövetés Szürke részek micsodák? Processzus kezelő, indító (Dispatcher) Két-állapotú processzus Processzus két állapotban lehet: Futó Nem futó elindít (dispatch) belépés nem fut fut kilépés 65 leállít, akoztat (pause) 66 Nem futó processzusok Processzusok belépés Sor (queue) elindít Processzor kilépés Ütemező (dispatcher, scheduler) Operációs rendszer legalsó szintje Processzus indítás, megállítás, megszakításkezelés Processzusok leállít (pause) Ütemező 67 68
Processzus létrehozása Egyszerű rendszer: kezdetben minden processzust létrehozunk Általános célú rendszer: Működés közben kell létrehozni Négy esemény hatására jöhet létre processzus: A rendszer inicializálása A processzust létrehozó rendszerhívás létrehozása A felhasználó egy processzus létrehozását kéri Kötegelt feladat (batch job) kezdeményezése Processzus létrehozása, gyakorlatban Felhasználó bejelentkezik Szolgáltatás használata, pl. nyomtatás Program elindít egy másikat 69 70 Processzus létrehozása Rendszer induláskor több processzus keletkezik Előtérben fut Felhasználókkal tartják a kapcsolatot Hátterben fut Nincs felhasználóhoz kötve Sajátos feladatuk van démonok (daemon) Processzus létrehozása, MINIX Processzus létrehozása fork rendszerhívással Elkészíti a processzus tökéletes másolatát Ugyanaz a memóriakép, környezeti változók A gyermek processzus végrehajt egy execve rendszerhívást. Ezzel megváltoztatja a memóriaképet A szülő és gyermek külön címtartománnyal rendelkezik, de osztozhatnak bizonyos erőforrásokon 7 72
Processzus hierarchia Szülő létrehoz egy gyerek processzust A gyerek processzus is létrehozhat további processzusokat Hierarchia jön létre Unix: processzus csoportok Windows alatt nincs hierarchia Minden processzus egyenlő Processzus befejezése Szabályos kilépés (önkéntes) Kilépés hiba miatt (önkéntes) Kilépés végzetes hiba miatt (önkéntelen) Egy másik processzus megsemmisíti (önkéntelen) 73 74 Processzus befejezése, gyakorlatban Időkorlát lejárt Nincs több memória Matematikai hiba Zérussal osztás Érvénytelen utasítás Operációs rendszer leállítja (holtpont elkerülés) Szülő leállítja Futó Processzus állapotok Végrehajtás alatt áll, CPU-t használja Blokkolt Logikailag nem lehet folytatni, mert rendszerint bemenetre Futásra kész Elvileg készen áll, ra képes 75 76
Processzus állapotok Processzus állapotok futó 2 3 blokkolt ra kész belépés ra kész sor elindít Processzor kilépés 4. A processzus eseményre va blokkolt 2. Az ütemező másik processzust szemelt ki 3. Az ütemező ezt a processzust szemelte ki 4. Az esemény bekövetkezett esemény bekövetkezett timeout (idő lejárt) blokkolt sor eseményre 77 78 Unix processzus állapotok Unix processzus állapotok User running: Felhasználói módban fut Kernel running: Kernel módban fut Ready to run in memory: Futásra kész, az ütemező bármikor kiválasztahtja Asleep in memory: Nem lehet futtatni amíg egy esemény be nem következik (blokkolt állapot) Ready to run, swapped: Futásra kész, de még a memóriába kell helyezni Sleeping, swapped: Nem lehet futtatni amíg egy esemény be nem következik (blokkolt állapot). Lemezre kimásolta a rendszer Preempted: Processzus kernel módból felhasználói módba tér vissza, de a kernel egy másik processzust választ ki Created: A processzus létrejött, de még nem képes futni Zombie: A processzus többé nem létezik, de még hátrahagy információt a szülő processzusnak. 79 80
Processzus állapotok Táblázatok Processzus kép Minden processzus aktuális állapotáról információt kell tárolni Utasításszámláló Veremmutató Lefoglalt memória Megnyitott fájlok állapota Elszámolási és ütemezési információ Egyéb Az operációs rendszer táblázatban tárolja az információt Memória Eszközök Fájlok Processzusok Elsődleges processzus tábla Memória táblázat I/O táblázat Fájl táblázat Processzus. Processzus 2. Processzus 3.... Processzus. Processzus n. 8 Processzus n. 82 Processzus táblázat Egy bejegyzés: processzus vezérlő blokk (Process Control Block, PCB) Processzus azonosító Processzus állapot információ Processzus kontrol információ Processzus azonosító Process identifier, proc ID Numerikus érték (szám) Tartalmazza Ennek a processzusnak az azonosítója A létrehozó processzus azonosítója (parent id) Felhasználó azonosító 83 84
Processzus állapot információ Regiszterek Utasításszámláló Állapot regiszter Verem mutató Általános regiszterek Processzus kontrol információ Ütemezési információ Processzus állapota futó, blokkolt, ra Prioritás Aktuális Maximális Hátralévő ütemezett idő Felhasznált CPU idő 85 86 Megszakítás Egyszerre futó processzusok illúziója Multitasking Egy CPU Több I/O eszköz Egy I/O eszközosztályhoz megszakításleíró tábla Tábla bejegyzései megszakításvektor Megszakításvektor: megszakítást kiszolgáló eljárás címe Időzítő, óra is egy eszköz! Multitasking Egy processzus fut Hardware Egy megszakítás következik be, hardware eszköz jelez Megszakításokat letíltja A megszakítás hardware az aktuális veremben tárolja: Utasításszámláló Programállapot szó Egy vagy több regiszter A megszakításvektorban megadott címre ugrik 87 88
Megszakítás kiszolgáló Multitasking Processzus száma és a mutató globális marad (gyorsabban elérhető) Csak assembly tudja megtenni Összes regisztert elmenti az aktuális processzus PCB-be A megszakítás által tárolt változók kikerülnek a veremből és egy ideiglenes vermet állít be (processzus kezelő használja) C program Végrehajtja a megszakítást kiváltó műveletet, pl. beolvas az eszközről Multitasking Ütemező eldönti melyik processzus fusson legközelebb A megaszkításra ó processzus pl. ra akozóvá válik, kiválasztható Prioritást is figyelembe kell venni Ütemezési sorok frissítése A C program visszatér 89 90 Multitasking Az assembly kód elindítja az új (vagy ugyanazt a) processzust Regiszterek helyreállítása Verem beállítása Mikor vált processzust? Óra megszakítás Maximálisan felhasználható idő lejárt I/O megszakítás Csapda (trap) Matematikai hiba 9 92
Processzus, vezérlési szál (thread) Rendelkezik utasításszámlálóval, amelyik nyilvántartja, hogy melyik utasítás végrehajtása következik Regiszterei tárolják a munkaváltozókat Verem a végrehajtás eseményeit tárolja 93