A Windows NT tulajdonságai Operációs rendszerek A Microsoft Windows NT 1 Bevezetés Felépítése Processzkezelés Ütemezés Többfelhasználós Multitasking / multithreading Virtuális memória / memória védelem Az oprendszerrelszorosan integrált GUI SMP támogatás Platformfüggetlen (elvileg) Hálózati támogatás 2006. 05. 22. Szigeti Szabolcs / Windows NT 2 Az NT története A DOS után valami igazira vágyott az IBM és a Microsoft Megkezdték OS/2 fejlesztését Windows 3 sikere miatt MS szakított az IBM-mel, és Windows kompatíbilis rendszert kezdett kifejleszteni 2006. 05. 22. Szigeti Szabolcs / Windows NT 3 Az NT története Az elso használható verzió az NT 3.1-volt Széleskörben a 3.51 kezdett terjedni A siker fo oka a Windows 3.1-hez való hasonlóság felhasználói szinten Az NT 4.0 foleg a grafikus felület megvalósításában és kinézetében különbözik a 3.51-tol Windows2000 sokban különbözik Windows XP inkább csak kinézetben fejlodés 2006. 05. 22. Szigeti Szabolcs / Windows NT 4 Az NT felépítése A mikrokerneles és a monolitikus rendszerek keveréke 3 különbözo alrendszert támogat (win32, posix, os/2 1.2) Hardverfüggetlenség egy absztrakciós rétegen (HAL) keresztül Rendszer processzek Az NT felépítése Executive Device Kernel HAL Service processzek Alrendszer DLL-ek Hardver Alrendszer processzek Felhasználói processzek Grafikus alrendszer User mód 2006. 05. 22. Szigeti Szabolcs / Windows NT 5 Kernel mód 2006. 05. 22. Szigeti Szabolcs / Windows NT 6
A rendszer processzek Olyan processzek, amelyek a rendszer muködéséhez elengedhetetlenek, pl. winlogon.exe vagy csrss.exe Hasonló szerepekkel mint a UNIX init A service processzek A különbözo service-ekhez tartozó folyamatok Hasonlóan a UNIX daemon processzekhez 2006. 05. 22. Szigeti Szabolcs / Windows NT 7 2006. 05. 22. Szigeti Szabolcs / Windows NT 8 Az alrendszer processzek A natív NT szolgáltatások megfelelo alrendszer szolgáltatássá (win32, posix, os/2) való transzformációját segítik A felhasználói processzek csak az alrendszer DLL-eken keresztül kommunikálnak, és bizonyos esetekben ebben részt vesznek az alrendszer processzek is. 2006. 05. 22. Szigeti Szabolcs / Windows NT 9 A felhasználói processzek Minden, felhasználó által futtatható alkalmazás Lehet: win32, win3.1, DOS, Posix, OS/2 Új alrendszer esetén elindul az alrendszert kiszolgáló processzis. win32 alrendszer kötelezo 2006. 05. 22. Szigeti Szabolcs / Windows NT 10 A kernel mód Executive: alap oprendszer szolgáltatások (memória managment, process, thread management, I/O, biztonsági szolgáltatások, IPC) Kernel: alacsonyszintu szolgáltatások (ütemezés, kivétel, megszakítás, SMP kezelés) 2006. 05. 22. Szigeti Szabolcs / Windows NT 11 A kernel mód HAL: Hardverfüggetlen felületet biztosít az oprendszer többi részének Device driver: file rendszer és device kezelési szolgáltatások Grafikus rendszer: Teljesítmény okok miatt lett kernel szintre hozva 2006. 05. 22. Szigeti Szabolcs / Windows NT 12
Hordozhatóság Különbözo architektúrák: Intel 486 + DEC Alpha - Win 2000 már nem PowerPC - már nem MIPS - már nem IA64 kérdéses 64bites x86 - igen HAL különbözo minden platformon Többi kód nagy része C-ben Processz kezelés Minden NT processznek megfelel egy Executive processz A megfelelo alrendszer párhuzamosan további adatokat tart nyilván Legmagasabb egység a process (2000: job) Processzen belüli egység a thread Threaden belüli egység a fiber 2006. 05. 22. Szigeti Szabolcs / Windows NT 13 2006. 05. 22. Szigeti Szabolcs / Windows NT 14 Thread állapotok Ready - futásképes Standby - ez fog következonek futni Running - fut Waiting - várakozik valamire Transition - futásképes, de a kernel stack nincs memóriában Terminated - befejezte futását 2006. 05. 22. Szigeti Szabolcs / Windows NT 15 Ütemezés Prioritásvezérelt, preemptív ütemezés Ütemezési egység: thread A legmagasabb prioritású, futásképes thread fut (kivétel lehet SMP rendszerekben) User és kernel szinten is lehet újraütemezés 2006. 05. 22. Szigeti Szabolcs / Windows NT 16 Ütemezés 31 prioritási szint: 16-31 : real-time (nem változatja az NT) 1-15 : normál 0 : rendszer Win32 prioritások: process: real-time, magas, normál, idle threadek prioritása ehhez képes állítódik Ütemezés A thread futása megszakadhat: ha feladja a futást, késobb azonnal futásképes lehet (quantumja egyel csökkenni fog) ha nagyobb prioritású thread futásképes lesz, késobb befejezheti idoszeletét elfogy az idoszelete (quantum) megszunik a thread 2006. 05. 22. Szigeti Szabolcs / Windows NT 17 2006. 05. 22. Szigeti Szabolcs / Windows NT 18
Prioritás növelés Wait állapotból kilépéskor: függ a várakozás hosszától, és a várakozás típusától: utána quatumonként egyel csökken a prioritás, az alap prioritásig GUI eseményre váráskor, de csak egy quantumideig Régóta (3-4 s) ready állapotú threadeknek, egy quantumig 2006. 05. 22. Szigeti Szabolcs / Windows NT 19 A quantum Egy futásképes thread csak meghatározott ideig: quantumfuthat Hamarabb feladhatja a futást A quatumértéke sok mindentol függ 2006. 05. 22. Szigeti Szabolcs / Windows NT 20 A quantum kiszámítása Induláskor egy thread 6 (NT workstation) vagy 36 (NT server) quatummal indul Minden óra interrupt során a futó thread quantuma 3-mal csökken: NTworkstation esetén 2 óraütésig, server esetén 12-ig futhat egy thread A quantum kiszámítása Az órainterrupt gyakorisága rendszerfüggo: 486: 10ms Pentium: 15ms Intel SMP: 15ms Alpha: 7.8ms (régi értékek) 2006. 05. 22. Szigeti Szabolcs / Windows NT 21 2006. 05. 22. Szigeti Szabolcs / Windows NT 22 A quantum kiszámítása NT workstation esetén az elotérben lévo process quantumja megnohet A quantummegkétszerezodik, ha prioritás növelés történt Ha egy thread kilép a wait állapotból, quatumja egyet csökken. Ha eléri a nullát, visszaáll eredeti helyzetbe SMP specialitások Processzor affinitás: mely processzorokon futhat a thread. Beállítható Két processzor: ideális, és következo 2006. 05. 22. Szigeti Szabolcs / Windows NT 23 2006. 05. 22. Szigeti Szabolcs / Windows NT 24
A processzor kiválasztása Ha van szabad processzor: 1. - ideális processzor 2. - következo processzor 3. - aktuális processzor (amin az ütemezo fut) Ha nincs szabad, de újraütemezheto van: 4. - ideális 5. - következo 6. - az elso, amin futhat 2006. 05. 22. Szigeti Szabolcs / Windows NT 25 A thread kiválasztása a ready queu-ból SMP rendszerben Utoljára futott az adott processzron Az ideális processzora az adott processzor Több mint két quantumot várakozott Prioritása >= 24 2006. 05. 22. Szigeti Szabolcs / Windows NT 26 Memória kezelés Operációs rendszerek A Microsoft Windows NT 2 Memóriakezelés Fo célok: Virtuális címek fizikai címekre leképezése Virtuális memória kezelés (paging és swapping) Virtuális és fizikai memória allokáció Egyéb szolgáltatások (file mappelés, copy-onwrite, stb.) 2006. 05. 22. Szigeti Szabolcs / Windows NT 28 Memória manager szolgáltatásai Memória allokáció Shared memória Mappelt file-ok Virtuális memória kezelés Memória védelmi funkció Kernel szintu funkciók (device drivereknek) Memória mérete Több memória management paraméter függ a fizikai memória méretétol: kicsi < 19M közepes 20-32M nagy >32 (wks) >64M (svr) (Elavult értékek) 2006. 05. 22. Szigeti Szabolcs / Windows NT 29 2006. 05. 22. Szigeti Szabolcs / Windows NT 30
Memória foglalás Két lépésben: reserve commit Reserve: virtuális címtartomány lefoglalása Commit: virtuális memória lefoglalása Memória foglalás Egy lap a processzcímtartományában lehet: szabad reserved commited Egy committed lap lehet: privát mappelt (section) - ekkor lehet shared 2006. 05. 22. Szigeti Szabolcs / Windows NT 31 2006. 05. 22. Szigeti Szabolcs / Windows NT 32 A két lépéses memória foglalás Célja: hatékonyabb muködés A processzelore lefoglalhat egybefüggo címtartományokat, de csak szükség esetén kell memóriát is foglalni Így muködik pl. a thread userstack-je Lefoglalt tartomány a lapméret többszöröse, és 64k-ra igazított Shared és mappelt memória Shared memória: két vagy több processz számára elérheto memória terület Mappelt file: file tartalma memóriaterületként érheto el Mindkettot a section objektumok valósítják meg 2006. 05. 22. Szigeti Szabolcs / Windows NT 33 2006. 05. 22. Szigeti Szabolcs / Windows NT 34 Section-ök Egy section virtuális memória leképezése diszkre Ez lehet: page file (shared memóriához) normál file Shared, ha több processzhasználja egyszerre Viewés a file-mapping Ha a mappelendo file nagyobb mint a processzcímtartománya, csak egy részét mappeli egy idoben: ez a view Mapping használata: egyszeru I/O DLL programbetöltés 2006. 05. 22. Szigeti Szabolcs / Windows NT 35 2006. 05. 22. Szigeti Szabolcs / Windows NT 36
Copy-on-Write Hatékonysági megfontolások CoW lap esetén írási hozzáférésnél kizárás helyett a processza lap írható másolatát kapja Mint pl.: UNIX fork/vfork Heap Kisebb-nagyobb memóriaterületek lefoglalására Minden processzalaphelyzetben rendelkezik egy 1M-ás heap-pel Legtöbb Win32 hívás innen allokál memóriát További heapeket hozhat létre 2006. 05. 22. Szigeti Szabolcs / Windows NT 37 2006. 05. 22. Szigeti Szabolcs / Windows NT 38 Rendszer memória Nem pagelt (non paged pool): garantáltan fizikai memóriában található Pagelt (paged pool): elképzelheto, hogy csak laphibával érheto el Memóriavédelem Négy fo módszer: Kernel szintu adatstruktúrák csak kernel módban érhetok el Minden processz saját virtuális címtartománnyal rendelkezik (kivéve shared memória) Hardver megvalósított védelmi funkciók Memória objektumok ellátása ACL-ekkel 2006. 05. 22. Szigeti Szabolcs / Windows NT 39 2006. 05. 22. Szigeti Szabolcs / Windows NT 40 Memóriatérkép Összesen 4G címtartomány: 2G user (3G Enterprise Server esetén) 2G kernel (1G) 00000000 Processzenkénti user terület Címtranszformáció Kétszintu laptábla, méretek hardverfüggoek: Intel: 10 bit laptábla directory index, 10 bit laptábla index, 12 bit byte index 7FFFFFFF Kernel, executive, HAL 80000000 C0000000 C0800000 Laptábla Cache, paged & non paged FFFFFFFF 2006. 05. 22. Szigeti Szabolcs / Windows NT 41 2006. 05. 22. Szigeti Szabolcs / Windows NT 42
Objektumok az NT-ben Operációs Rendszerek A Microsoft Windows NT 3 Objektumok Biztonság Device kezelés Az NT a legtöbb eroforrást objektumként kezeli: Egységes felület az eroforrások kezelésére Biztonság (C2 eloírás) Különbözo kvóták Megnevezés Alrendszerek 2006. 05. 22. Szigeti Szabolcs / Windows NT 44 Objektumok az NT-ben Két objektumtípus: Executive object Kernel object Kernel objektumok Primitív objektumok, alapveto szolgáltatások (pl. szinkronizálás) végrehajtására Az Executive számára nyújtanak szolgáltatásokat Egy Executive objektum több kernel objektumot foglal magába 2006. 05. 22. Szigeti Szabolcs / Windows NT 45 2006. 05. 22. Szigeti Szabolcs / Windows NT 46 Executive objektumok Ez executive objektumokat az környezeti alrendszerek használják saját objektumaik létrehozására User szintrol elérhetoek Az alrendszerek kiterjeszthetik az Executive objektumokat (pl. win32 named-pipe) Bizonyos alrendszer nem viszi tovább az objektum-orientáltságot (pl. posix) 2006. 05. 22. Szigeti Szabolcs / Windows NT 47 Executive objektumok Object Directory Symbolic Link Process Thread Section File Port Access Token Event Semaphore Mutant Timer Queue Key Profile 2006. 05. 22. Szigeti Szabolcs / Windows NT 48
Objektum típusok Object directory hierarchikus elnevezés megvalósítására Symbolic link szimbolikus utalás más objektumra Process process virtuális memóriája és egyéb futáshoz szükséges információk Objektum típusok Thread processzen belüli végrehajtható egység Section megosztott memória/file mapping File file vagy I/O eszköz 2006. 05. 22. Szigeti Szabolcs / Windows NT 49 2006. 05. 22. Szigeti Szabolcs / Windows NT 50 Objektum típusok Port processzek közti üzenettovábbításra Access token processz vagy thread biztonsági jellemzoi Event szinkronizációra vagy jelzésre Semaphore szemafor Mutant mutex Timer idozítésre Objektum típusok 2006. 05. 22. Szigeti Szabolcs / Windows NT 51 2006. 05. 22. Szigeti Szabolcs / Windows NT 52 Objektum típusok Queue I/O muveletkehez Key registry kulcs Profile processz futás statisztika készítéséhez 2006. 05. 22. Szigeti Szabolcs / Windows NT 53 Objektum felépítése Fejléc és törzs Fejléc Object manager által kezelve Hivatkozás az ot megnyitva tartó processzekre Hivatkozás a típus objektumra Törzs A tulajdonló executive komponens által managelve 2006. 05. 22. Szigeti Szabolcs / Windows NT 54
Standard fejlécek Név - objektum neve (ha van) Directory - más objektumok tárolására Security leíró - ki és mit csinálhat vele Quota - a tulajdonosra számlázandó quota Számláló - hányszor van megnyitva Típus - mutató a típus objektumra Referencia számláló - kernel mód hivatkozás 2006. 05. 22. Szigeti Szabolcs / Windows NT 55 Általános objektum metódusok Close - bezárás Duplicate - megosztás Query object - standard attr. lekérése Query security - biztonsági attr. lekérése Set security - biztonsági attr. beállítása Wait single - várakozás egy objektumra Wait multi - várakozás több objektumra 2006. 05. 22. Szigeti Szabolcs / Windows NT 56 Típus objektumok Közös információ tárolására Attribútumok: Név: process, event, stb. Pooltype: paged/non-paged Default quota Access type: egedélyezezett hozzáférés típusok Access right map: r/w/e/a leképzése specifikusra Synchronization: lehet-e várakozni ezen? Methods: object manager által hívandó 2006. 05. 22. Szigeti Szabolcs / Windows NT 57 Metódusok hívása Open - ha a handle-t megnyitják Close - ha a handle-t bezárják Delete - mielott az OM törli az objektumot Query name - név lekérdezésekor Parse - név keresésekor Security - biztonsági beállítás 2006. 05. 22. Szigeti Szabolcs / Windows NT 58 Objektum könyvtárak \?? - MS-DOS device nevek (user szint) \BaseNamedObjects - alap típusok (user szint) \device - device-ok \driver - driverek \FileSystem - filerendszer driverek \KnownDlls - mappelt dll-ek \nls - NLS táblák \ObjectTypes - objektum tpusok \RPC Control- RPC portok \security - biztonsági alrendszer objektumai \windows - win32 alrendszer objektumai 2006. 05. 22. Szigeti Szabolcs / Windows NT 59 Szinkronizáció Threadek várakozhatnak objektumokon Egy objektum lehet signalled vagy notsignalled állapotban Különbözo objektumoknál mást jelent a siganalled állapot 2006. 05. 22. Szigeti Szabolcs / Windows NT 60
Signalled állapot Object - signalled ha: - várakozó futhat Process - Utolsó thread kilép - minden Thread - Kilép - minden File - I/O megtörténik - mind Notify event - valaki beállítja - mind Sync event- valaki beállítja - egy, reset Semaphore- számláló = 0 - mind Timer - ido lejár - mind Mutex - valaki elengedi - egy 2006. 05. 22. Szigeti Szabolcs / Windows NT 61 Biztonság SRM - Security Reference Monitor objektumok ellenorzése, jogok kezelése LSA - Local security authority Lokális policy-k ellenorzése, autentikáció stb. LSA policy database LSA adatbázisa SAM - Security Accounts Manager userek és groupok kezelése helyileg vagy domainben 2006. 05. 22. Szigeti Szabolcs / Windows NT 62 Biztonság SAM database SAM adatbázisa Logon process bejelentkezéseket kezelo processz Ntwork logon távoli bejelentkezéseket kezelo service 2006. 05. 22. Szigeti Szabolcs / Windows NT 63 Objektumok védelme Security descriptor: Owner SID tulajdonos security ID Group SID elsodleges csoport SID (posix alrendszer) Discretionaly ACL (DACL) ki, mit csinálhat System ACL (SACL) audit 2006. 05. 22. Szigeti Szabolcs / Windows NT 64 Access token Process vagy thread biztonsági tulajdonságait leíró adatszerkezet: SID Csoportok Privilégiumok Öröklodik Megfelelo jogokkal létrehozható 2006. 05. 22. Szigeti Szabolcs / Windows NT 65 Device driverek Hardver: közvetlenül kezeli a hardvert Class driver: pl: diszk, CD, szalag stb. Port driver: pl: SCSI port kezeloje Miniport : ált. I/O kéréseket specifikussá File system: filerendszerszintut alacsonyra File system filter: filerendszer szintu feldolgozása, majd alacsonyra 2006. 05. 22. Szigeti Szabolcs / Windows NT 66
NT I/O rendszer CDROM file system CDROM class driver NTFS Fault tolerant driver FAT Disk class port driver miniport driver 2006. 05. 22. Szigeti Szabolcs / Windows NT 67