440 likes | 602 Views
Struktura OS MS Windows. Načrtovan za kot “Multiple personality OS”. Arhitektura Server2003. System Processes. Applications. Environment Subsystems. Services. Service Controller. Alerter. Interix. User Application. WinLogon. RPC. Win32. Event Logger. Session Manager. User Mode.
E N D
Arhitektura Server2003 System Processes Applications Environment Subsystems Services Service Controller Alerter Interix User Application WinLogon RPC Win32 Event Logger Session Manager User Mode Subsystem DLLs System Threads NTDLL.DLL Executive API Kernel Mode I/O Manager PnP/PowerManager Processes & Threads Security Virtual Memory Cache Manager File systems Object management / Executive RTL Device drivers Kernel Hardware Abstraction Layer (HAL) Hardware interfaces (read/write port, timers, clocks, DMA, cache control, etc.)
Načrtovan v plasteh (kot hiša: temelji, nadstropje, nadstropje,..) Abstrakcije (stvari lahko uporabljamo brez razumevanja implementacije) Objektna usmerjenost (vse so objekti) Odjemalec-strežnik(most med uporab. režimom in režimom jedra deluje tako) Zgradba Windows NT
Zgornja plast operacijskega sistema Nudi funkcije “generičnega operacijskega sistema” (“servise”) Tvorba in brisanje procesov in niti Upravljanje s pomnilnikom Iniciacija in zaključevanje vhodno izhodnih zahtevkov Medprocesna komunikacija varnost Pisan v jeziku C Teče v režimu jedra (“privileged”, ring 0) Veliko vmesnikov do servisov izvajalnika ni dokumentiranih Windows Executive (izvajalnik)
Spodnje plasti operacijskega sistema Implementira funkcije, odvisne od procesorja (x86, Alpha, ...) Implementira tudi procesorsko neodvisne funkcije, ki so zelo blizu procesorsko odvisnim Glavne storitve Čakanje niti,razvrščanje in preklapljanje konteksta Dispečerske storitve za izjeme in prekinitve Sinhronizacijski primitivi operacijskega sistema Nekatere od teh storitev lahko vidimo tudi v uporabniškem režimu Ni klasično “mikrojedro” Souporablja naslovni prostor z drugimi komponentami jedra Windows Kernel (jedro)
Knjižnica podprogramov za jedro in gonilnike naprav Izolira jedro in izvajalnik od posebnosti platforme Gonilnikom predstavlja enak model za vhodno-izhodne naprave Abstrakcije HAL: Sistemski časovniki, koherenca medpomnilnikov, Podpora SMP, prioritete prekinitev aparaturne opreme HAL tudi implementira nekatere funkcije, ki jih vidimo v izvajalniku in jedru HAL - Hardware Abstraction Layer(Plast abstrakcije aparaturne opreme)
Kodo izvajamo v režimu jedra zaradi treh razlogov: 1. Zahtevki iz režima uporabnika (sistemski klici) Preko dispečerskega mehanizma za sistemske servise Koda v režimu jedra teče v kontekstu niti, ki to zahteva 2. Prekinitve iz perifernih naprav V režimu jedra obravnavamo prekinitve, tako kot pasti NT-ima “prekinitveni dispečer”, ki kliče prekinitvene servisne rutine (ISR) ISR teče v kontekstu prekinjene niti (takoimenovani “arbitrary thread context”) ISR pogosto zahteva izvajanje “DPC ” rutine, ki prav tako teče v režimu jedra 3. Posvečene niti v režimu jedra Nekatere sistemske niti obstajajo ves čas v režimu jedra Razvrščane in prekinjane so kot druge niti Izvajanje v režimu jedra ISR ... Interrupt Service Routine DPC...Deferred procedure Call
Jedro zagotavlja obravnavo pasti, če pride do aparaturnih prekinitev ali programskih izjem. Izjeme, ki jih ne more obravnavati “rokovalnik pasti” (trap handler), obravnava dispečer izjem (exception dispatcher). Dispečer prekinitev kliče ali ustrezno prekinitveno servisno rutino (ISR), ali neko interno rutino jedra. Za večprocesorsko medsebojno izobčenje uporablja jedro mehanizem “spin lock”, ki ga pomni v glavnem pomnilniku. Jedro — rokovanje s pastmi In software engineering, a spinlock is a lock where the thread simply waits in a loop ("spins") repeatedly checking until the lock becomes available. As the thread remains active but isn't performing a useful task, the use of such a lock is a kind of busy waiting. Once acquired, spinlocks will usually be held until they are explicitly released, although in some implementations they may be automatically released if the thread blocks (aka "goes to sleep")
Spin lock sinhronizacija Spin Locks (R/W-zaklepi): Sistemski vir Spin Lock Procesor 1 Proces 1 Procesor 2 Proces 2 Busy Waiting • Le en proces si lahko lasti Spin lock • Drugi procesi so v stanju Busy-Waiting Blokiranje procesov; Čakalne vrste / Semaforji
API (Application Programming Interface) Library DLL (Dynamic Link Library) Nekaj definicij
Application Programming Interface Skupina vnaprej pripravljenih programskih funkcionalnosti in orodij za gradnjo programskih aplikacij. APIs lajša razvoj programov tako, da programerju nudi gradbene bloke za tvorbo kompleksnih programov. API
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Abeceda Analogija API:jezik in OS Članki Subjekt povedek predmet Knjige Velike začetnice apple apple jabolko Cat Vse besede morajo imeti samoglasnik Cat mačka woman woman rada Pravila za ločila Spletne strani is is jesti Pravila za tvorbo besed Besede Slovnica Pisanje Native API (Low-level API) Executive Services Win32 API (High-level API) Aplikacije Microkernel
Windows XP daje na voljo dva glavna API: Win32 API, ki omogoča programerjem torbo Windows programov v uporabniškem režimu. “Native API”, ki omogoča programom in servisom v uporabniškem režimu izvajanje nalog v jedru. Programerji tega vmesnika ne uporabljajo (veliko), pač pa ga uporablja Win32 API. Ker vsi pogramerji uporabljajo ta vmesnika, imajo vsi programi enoten izgled. “Windows API” so shranjeni v knjižnicah Še o API
Windows uporabljajo posebno obliko programskih knjižnic, ki ji pravimo DLL (Dynamic Link Libraries) DLL je knjižnica izvršljivih funkcij ali podatkov, ki jih lahko uporabljamo v Windows aplikacijah. Primeri: user32.dll, kernel32.dll DLL nudijo eno ali več funkcij, do katerih dostopa program tako, da tvori do njih “link”. Beseda“Dynamic” pomeni, da link tvorimo kadarkoli potrebujemo tako funkcijo ali podatke (torej med izvajanjem programa) nameesto da bi bila funkcija povezana že v času priprave programa. DLLs lahko vsebujejo zgolj podatke, na primer ikone (n.pr. shell32.dll), fonti, tekst, in podobno. DLL podaljški so običajno; .dll, lahko pa tudi .sys, .fon, .drv, itd. Knjižnice (Libraries)
DLLs lahko sočasno uporablja več aplikacij. Iste funkcionalnosti ni potrebno večkrat zapisovati. Skupna koda je v DLL Primer: funkcija CreateWindow( ) vuser32.dll Nekatere DLLs sistema Windows XP so na voljo za poljubne Windows aplikacije. Samo v direktoriju \winnt najdemo preko 2,000 DLLs. Večina DLL operacijskega sistema je v \winnt\system32 Druge DLLs so pisane za posamezne aplikacije in so nemeščene skupaj z njimi Spellcheckerv MS Office je isti za Word, Excel, Power Point, itd. DLL that s to funkcionalnostjo je msp232.dll. Še o knjižnicah DLL
Windows API so shranjeni v knjižnicah. Imamo 4 glavne datoteke s knjižnicami: Native API (funkcije na nivoju jedra) so shranjene v datoteki ntdll.dll. Knjižnice Win32 API uporabljajo to za delo z aparaturno opremo Win32 API je razdeljen v 3 datoteke: kernel32.dll - File I/O (CreateFile( )), upravljanje z nitmi ipd. user32.dll - Window (n.pr. CreateWindow( )) in funkcije za posredovanje obvestil o dogodkih (na primer o klikih z miško) gdi32.dll – Funkcije za risanje oken, ki jih vidimo na zaslonu (n.pr. LineTo( )) API in DLL
Slika celote… Win 32-bit App Win 32-bit App Win 32-bit App Win 32-bit App Win32 Subsytem (Win32 API) User Mode Kernel Mode Executive Services Security Virtual Plug and Window I/O IPC Process Power Reference Memory Play Manager Manager Manager Manager Manager Monitor Manager Manager and GDI Graphics Object Manager File Device Systems Drivers Device Drivers Microkernel Hardware Abstraction Layer (HAL) Aparaturna oprema ...postane sedaj bolj smiselna
177 drugih knjižnic Notepad.exe – odpiranje datoteke 1 proces - 4 ločene niti kernel32.dll shlwapi.dll comctl32.dll Notepad.exe shell32.dll kernel32.dll comdlg32.dll ntdll.dll user32.dll gdi32.dll
NTarhitektura naj bi zagotavljala stabilnost, varnost in skalabilnost OS je sestavljen iz plasti, vsaka plast nudi servise plasti nad njo 2 najbolj pomembni plasti sta režim jedra in režim uporabnika Le malo programom je dovoljen neposreden dostop do aparaturne opreme – kar zagotavlja stabilnost Programerji oziroma programi dostopajo do nizko nivojske funkcionalnosti preko aplikacijskih uporabniških vmesnikov (API), ki so pomnjeni v datotekah DLL Povzetek
Kot uporabnik: Bodimo pozorni na datoteke DLL na svojem računalnku. Ne brišimo jih, če ne vemo,čemu služijo. Nekatere so souporabljene Pazimo, katere DLL nameščamo na sistem in kje bodo. Kot razvijalec: Kot razvijalec Windows aplikacij bomo verjetno morali vedeti kaj več o Win32 API Kaj sedaj?
Some key windows 2000 files mode they run in number of exported function calls main contents of each file Calls in win32k.sys not formally exported not called directly Podsistemi
LPC prejema zahtevke odjemalca in jih posreduje strežnemu procesu na istem računalniku. Na ta način zahtevamo storive od različnih NT podsistemov. Ko tvorimo LPC kanal, moramo specificirati enega od treh tipov posredovanja sporočil. Prvi tip je za kratka sporočila (do 256 bytov). Čakalno vrsto sporočila uporabimo za vmesno pomnenje. Sporočila so kopirana od enega procesa k drugemu. Drugi tip preprečuje kopiranje obsežnih sporočil tako, da za kanal tvorimo skupen objekt s segmentom pomnilnika in kažemo nanj. Tretja metoda je “hiter” LPC, ki ga uporabljamo za dele grafičnega prikazovanja s podsistemim Win32. Klic lokalne procedure (Local Procedure Call)
Podrobnosti podsistema Win32 Konzola Client Server Runtime (CSR) Subsystem Funkcije operacijskega sistema User Modus Kernel Modus WindowManager Servisi Win32k Executive Graphics Device Interface (GDI) Graphics Device Driver Microkernel HAL
Razmerje med Win32 aplikacijo in Win32 podsistemom WIN32 Aplikacija Win32 Podsistem Klic procedure Win 32 DLL User Modus Pakiranje Kernel Modus Sistemski servisi NT Executive Objekt Manager Varnostni monitor Proces- Manager Local Procedure Call Upravnik Virtualnega pomnilnika I/O Manager Kernel
Ležijo na nivoju uporabniškega režima. Omogočajo izvajanje programov, ki so bili razviti za druge operacijske sisteme. NT uporablja podsistem Win32 kot glavno izvajalno okolje. Win32 potrebujemo za zagon vseh procesov. Nudi tudi zmožnost uporabe tipkovnice, miške in grafičnega prikazovalnika. Okolje MS-DOS je včasih predstavjalo “virtual dos machine” (VDM), V novejših verzijah so ga opustili. Okoljski podsistemi
Rokuje s procesi (tvorba, zagon, zaustavitev, sprememba prioritet) Morebitne relacije oče-otrok oziroma hierarhije procesov so prepuščene posameznim okoljskim podsistemom, ki si lastijo te procese Ne opravlja funkcije razvrščevalnika procesov Process Manager
Nadzoruje večino vhodno izhodnih operacij sistema Na primer: Omrežne komunikacije Datotečni vhod- izhod Ne nadzoruje izhoda grafičnega uporabniškega vmesnika IO Manager
Objektno usmerjena narava NT omogoča uporabo enotnega mehanizma za validacijo dostopnosti do vseh entitet sistema v času izvajanja. Kadarkoli nek proces odpre ročico nekega objekta, preveri varnostni monitor procesov varnostni žeton in seznam dostopnosti (ACL, access control list) objekta ter ugotavlja, ali proces lahko izvede dano operacijo z objektom. Security Reference Monitor
Tvorba, spreminjanje in brisanje objektov sistema (na pr. Datoteke, vrata, tiskalniki,..) Object Manager
XP uses objects for all its services and entities; the object manger supervises the use of all the objects. Generates an object handle Checks security. Keeps track of which processes are using each object. Objects are manipulated by a standard set of methods, namely create, open, close, delete, query name, parse and security. Upravnik objektov (Object Manager)
The NT executive allows any object to be given a name, which may be either permanent or temporary. Object names are structured like file path names in MS-DOS and UNIX. NT implements a symbolic link object, which is similar to symbolic links in UNIX that allow multiple nicknames or aliases to refer to the same file. A process gets an object handle by creating an object by opening an existing one, by receiving a duplicated handle from another process, or by inheriting a handle from a parent process. Each object is protected by an access control list. Executive — imenovanje objektov