Okna in zaščiteni podsistemi


Uvod v zaščitene podsisteme

Zaščiteni podsistemi  Windows NT so strežni procesi, ki tečejo v uporabniškem režimu. Tvori jih operacijski sistem ob svojem zagonu. Imamo okoljske (environment) podsisteme, ki implementirajo vmesnik zahtevanega operacijskega sistema (takoimenovan API, Application Program Interface), ter skupne (integral) podsisteme, ki opravljajo naloge osnovnega operacijskega sistema. Tak skupni podsistem je na primer varnostni podsistem. Tako organizacijo ponazoruje spodnja slika:


 

Podsistemi komunicirajo med seboj  s posredovanjem obvestil (message passing). Ključen mehanizem je klic lokalne procedure (LPC), ki je izveden iz  koncepta RPC (klic oddaljene procedure), znanega pri porazdeljenih računalniških sistemih. Vsak podsistem zato vzpostavi komunikacijski kanal (vrata, port), ki je - dosledno s filozofijo Windows NT - realiziran kot objekt.

Ker tečejo podsistemi v uporabniškem režimu, ne morejo direktno spreminjati struktur izvajalnika NT.

Potek komunikacije med klijentov (v našem primeru aplikativnim programom Win 32) in strežnim procesom (v našem primeru podsistemom Win32) z uporabo mehanizma LPC je razviden tudi iz naslednje slike:


 
 

 Windows NT ohranja koncept dinamično povezanih knjižnjic (DLL). Te imajo med drugim vstopne točke klicanih rutin API (takoimenovane štrclje, stubs). Tako aplikativni program čuti, kot da bi tekel v svojem naravnem okolju. Koncept DLL omogoča tudi delno optimizacijo celotnega sistema, saj ni potrebno prav za vsak servis (posebej) klicati izvajalnika NT.



 

Podsistem Win32

Upravnik oken krmili okna na zaslonu, usmerja uporabnikove vhodne interakcije k aplikacijam, prenaša podatke v odložišče (clipboard) ali iz njega in izvaja še več drugih nalog.

Vmesnik grafičnih naprav (Graphics Device interface, GDI) zagotavlja množico rutin API (Application program Interface) za risanje črt, slik, simbolov in teksta na grafičnih napravah (prikazovalniku, tiskalniku,..) Rutine GDI kličeta konzola (za izpis besedil) in Upravnik oken, te rutine pa nato kličejo  gonilnike grafičnih naprav.

Pri Windows  NT 5.0 in Windows 2000 so vmesnik  grafičnih naprav (GDI) in gonilniki grafičnih naprav locirani na nivoju izvajalnika.

Funkcije operacijskega sistema zagotavljajo sinhronizacijo - na splošno večnitnih- aplikacij z dogodki in z drugimi aplikacijami. Zagotavljajo tudi upravljanje s pomnilnikom  skupaj z izvajalnikom, katerega servise lahko direktno kliče.


Virtualni stroj DOS (VDM)

Virtualni stroj DOS (VDM, Virtual DOS Machine) je seja, ki jo odpre uporabnik, ko kliče aplikacijo DOS.

Sistem dopušča  sočasno izvajanje več aplikacij DOS.

Aplikacije DOS so pogosto pisane v zbirnem jeziku in predvidevajo prost dostop do pomnilnika in perifernih naprav ter dostop do funkcij operacijskega sistema DOS. Vsaka taka aplikacija predvideva, da teče sama zase na nekem MS_DOS stroju. VDM daje takim aplikacijam ekvivalentno okolje s privatnim virtualnim naslovnim prostorom. VDM vsebuje v bistvu navidezni operacijski sistem DOS z navideznimi (virtualnimi) gonilniki naprav. Koncept navideznega stroja DOS (VDM) ponazorujeta spodnji sliki:

Koda pod mejo 16MB temelji na 16-bitnih segmentiranih naslovih.
Virtualni gonilniki naprav delujejo kot vmesnik med aplikacijo DOS in aparaturno opremo, ki jo krmili sistem.


WOW

(Windows on Windows) / 16- bitne okenske aplikacije



Posredovanje obvestil s klicem lokalne procedure

Niti v različnih procesih lahko med seboj komunicirajo z mehanizmom LPC (Local Procedure Call), ki oponaša uveljavljeni princip klica oddaljene procedure (RPC), poznan pri porazdeljenih sistemih. Pri tem je postopek pri procesih, ki potekajo na istem sistemu NT, optimiziran. Aplikacijski program kliče API rutino v navezani DLL (Dynamic Linked Library), ta pa preko mehanizma LPC (ki je del izvajalnika NT)  pošlje obvestilo  ustreznemu zaščitenemu podsitemu, ki mora izvesti zahtevani servis.

Načinov posredovanja obvestil je več, v vseh primerih pa mora proces-klijent vzpostaviti komunikacijski kanal z zaščitenim podsitemom. To dosežemo  uporabo vrat (port). Imamo povezovalna (connection port) in komunikacijska (communication port) vrata. Protokol povezovanja in komuniciranja med procesom- klijentom in strežnim procesom prikazuje spodnja slika.

Vrata so objekti, podobno kot toliko drugih stvari pri WindowsNT. Strežnik vzpostavi par komunikacijskih vrat, potem, ko ena njegovih niti dobi ustrezni zahtevek za povezavo. Ročaj na ena vrata zadrži zase, ročaj drugih komunikacijskih vrat pa vrne klijentu.

Načinov komunikacije je več. Kratka  obvestila so posredovana preko čakalnih vrst, ki se lahko vzpostavijo pred posameznimi komunikacijskimi vrati. Izmenjava daljših obvestil poteka preko dodatnega objekta, deljenega pomnilnika (shared memory object). Obstoja pa še hitri LPC (quick LPC), ki ga lahko uporablja le privilegirani podsistem Win 32.