Operációs rendszerek MS Windows NT (2000) folyamatok Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: szálak ütemezése végrehajtásra interruptok és kivételek kezelése alacsony szint! multiprocesszor szinkronizálás hibák utáni visszaállítási eljárások rezidens, nincs preemptivitás (de megszakítható) C és assembly 2
Kernel objektumok Egyszer!bbek, mint az Executive objektumok két csoport: Control objects kernel folyamat objektumok, aszinkron eljárás hívás, késleltetett eljárás hívás, energia kezelés Dispatcher objects szinkronizálás, kernel szálak, kernel események, kernel mutexek, kernel timerek 3 Folyamatok Az NT folyamat modelljéhez tartozó elemek: a végrehajtandó program kódja és adatai, a folyamat által használható virtuális memória címtér, rendszerer"források, amelyeket az OPR foglal le a folyamatnak (pl.: szemaforokat, file-okat), a folyamat egyedi azonosítója (process ID, PID), legalább egy végrehajtható szál, amely ütemezésre kerül. 4
Szálak jellemz"i Szál környezet: végrehajtó processzor regiszterei (processzor állapota), két veremtár (stack): a kernel illetve felhasználói módokhoz, kizárólagosan használható tárterület a DLL-ek, és run-time könyvtárak számára. A szál egyedi azonosítója a thread ID. (Thread ID-t és a process ID-t azonos névtérb"l választja ki.) 5 Folyamatok és szálak viszonya Az adott folyamathoz tartozó szálak: közös virtuális címtartományt használnak, és osztoznak az er"forrásokon. A folyamatok: külön címtartományt használnak, átfedés csak kommunikáció esetén lehetséges. 6
Folyamat logikai modellje 7 Folyamat és szál objektumok 8
Folyamatok leírása az Executive rétegben Folyamat leírás: folyamatblokkban (EPROCESS): kísér" adatok és mutatók a kapcsolódó adatstruktúrákra, a rendszer címterében helyezkedik el. folyamatkörnyezeti blokk (Process Environment Block, - PEB): a futási környezetet írja le, a folyamat címterében van, mert a tartalmát a felhasználói módban futó kód is megváltoztathatja. 9 Szálak leírása az Executive rétegben Szálak leírása: executive szálblokk (ETHREAD): a rendszer címterében helyezkedik el. szálkörnyezeti blokk (Thread Environment Block, - PEB): a folyamat címterében van, mert a tartalmát a felhasználói módban futó kód is megváltoztathatja. 10
Folyamatokat és szálakat leíró adatszerkezetek 11 Alrendszerek folyamatkezelése Windows NT: több környezeti alrendszer, az executive réteg processz objektumának kezelése (minden alrendszer használhatja), elválasztva a Win32 folyamat létrehozási tevékenységt"l. 12
A Win32 CreateProcess() f"bb lépései A folyamaton belüli végrehajtandó image-file (.EXE) megnyitása. A Windows NT executive processz objektumának létrehozása. A kezdeti szál létrehozása. A Win32 értesítése az új processzr"l. (Felkészülhessen az új processzre és szálra.) A kezdeti szál végrehajtásának elindítása. Az újonnan létrehozott processz és szál környezetben a címtér inicializálása (pl. a szükséges DLL-ek betöltése). A program végrehajtásának elkezdése. 13 A folyamat prioritásának a meghatározása CreateProcess() hívásakor megadható. CreateProcess() hívásakor egynél több prioritási osztály is specifikálható: az NT a processzhez automatikusan a legalacsonyabb prioritási osztályt rendeli. Ha nincs prioritási osztály specifikálva: az új folyamat a Normal prioritási osztályba kerül. 14
Az executive szál blokk felépítése 15 Elemi szálak (fiber) Könny! súlyú szálak Cél: skálázható (szerver) megoldások kialakítása id"szelet kihasználása context switch elkerülése Megvalósítás felhasználói módban kezelve kernel számára láthatatlan felhasználói ütemezés 16
Folyamatok, szálak, elemi szálak process thread task context switch scheduling (kernel mode) fiber switch (user mode) 17 Szálak ütemezése Prioritás alapú, preemptív ütemezés 0 (alacsony)..31 (magas) prioritás szint 16-31 real-time 0-15 változó prioritás 0 rendszer célokra fenntartva 31 várakozó sor 18
Szál állapotai 19 Szál állapotai (folyt.) ready: futásra várakozó standby: adott processzorra futásra kiválasztva running: fut ameddig magasabb prioritású szál kiszorítja id" kvantum lejár terminálódik önkéntesen várakozó állapotba kerül waiting: várakozó állapot transition: végrehajtásra kész, de er"források nincsenek meg terminated: végrehajtás befejez"dött 20
Interrupt- és kivételkezelés HW architektúra függ" megoldások trap handling ok meghatározása -> kernel vagy executive kezelés interrupt vektoros kezelés automatikus ISR kiválasztás és végrehajtás device interruptok: ISR device driverben rendszerhívás: executive service 21 Szál szinkronizálás Synchronization objects (Executive) event, event pair, semaphore, timer, mutant két állapot: signalled non-signalled wait szolgáltatás Object type Set to signalled state when... Effect on waiting threads Process last thread terminates All released Thread thread terminates All released File I/O operation completes All released Event a thread sets (signals) the event All released Event-pair dedicated client or server thread sets the event Other dedicated thread released Semaphore count drops to zero All released Timer set time arrives or interval expires All released Mutant thread releases the mutant One thread released 22
Riasztások és aszinkron eljáráshívás alert: jelzés küldési mechanizmus APC: szál értesítése el"re definiált eljárás végrehajtására I/O rendszer kernel módú APC-vel értesíti a szálakat Felhasználói módú APC: szabályozható mikor kerüljön végrehajtásra polling (rendszerhívással teszteli) wait egy objektumon, szabályozva a várakozás megszakíthatóságát 23