Arhitektura Windows NT porodice operacijskih sustava se sastoj od dva sloja korisničkog načina rada i jezgrinog načina rada), s raznim modulima između ovih dvaju slojeva.

Windows Vista, Windows Server 2003, Windows XP, Windows 2000 i Windows NT su svi dio Windows NT porodice Microsoftovih operacijskih sustava. Svi su preventivni, paralelno iskoristivi operacijski sustavi dizajnirani za rad s ili jednoprocesorski ili simetrično multiprocesorski (SMP) zasnovanim računalima. Za obradu ulazno/izlaznih (U/I) zahtjeva koristi paketno upravljan U/I koji rabi podatkovnu strukturu IRP koja predstavlja ulazno/izlazne pakete zahtjeva, i asinkroni U/I. Počinjući s Windowsima XP, Microsoft je započeo ugradnju 64-bitne podrške u svoje operacijske sustave — prije ovoga su operacijski sustavi bili zasnovani na 32-bitnom modelu. Programi i podsustavi u korisničkom načinu rada imaju ograničen pristup sustavskim sredstvima, dok jezgrin način rada ima neograničen pristup sustavskoj memoriji i vanjskim uređajima. Jezgra operacijskih sustava u ovoj liniji je poznata kao hibridna jezgra - iako valja napomenuti da je ovaj naziv osporavan, naglašujući da je jezgra u suštini monolitna jezgra strukturirana kao mikrojezgra. Arhitektura se sastoji od hibridne jezgre, sloja za apstrakciju sklopovlja (HAL), pogonskih programa i izvršnih komponenti (Executive), pri čemu su svi oni u jezgrinom načinu rada [1]. Servisi više razine su ostvareni u izvršnim komponentama.

Jezgrin način rada u Windows NT liniji se sastoji od podsustava sposobnih prosljeđivati U/I zahtjeve odgovarajućem pogonskom programu koji se izvodi u jezgrinom načinu rada rabeći U/I upravitelj (I/O Manager). Dva podsustava čine korisnički način rada Windowsa 2000: podsustav okoline (Environment subsystem) (pokreće aplikacije napisane za različite vrste operacijskih sustava), i integralni podsustav (Integral subsystem) (funkcije specifične za operacijski sustav koje djeluju u ime podsustava okoline). Jezgrin način rada u Windowsima 2000 ima neograničen pristup sklopovlju i sustavskim sredstvima računala. Jezgrin način rada sprječava servise i aplikacije u korisničkom načinu rada da pristupe kritičnim područjima operacijskog sustava kojima ne bi smjeli imati pristup.

Izvršne komponente sučeljuju s podsustavima u korisničkom načinu rada. Barataju i s U/I, upravljanjem objekata, sigurnošću i upravljanjem procesa. Jezgra sjedi između sloja za apstrakciju sklopovlja i izvršnih komponenti kako bi omogućila multiprocesorsku sinkronizaciju, raspoređivanje i otpremanje prijekida i niti, te rukovanje i otpremanje zamki i iznimaka. Jezgra je također odgovorna za inicijalizaciju pogonskih programa uređaja prilikom pokretanja OS-a. Pogonski programi u jezgrinom načinu rada postoje na tri razine: pogonski programi najviše razine, pogonski programi srednje razine i pogonski programi niske razine. Windows Driver Model (WDM) postoji u međusloju i ponajprvo je dizajniran kako bi bio kompatibilan binarno i na razini izvornog koda između Windowsa 98 i Windowsa 2000. Pogonski programi najniže razine su ili naslijeđeni pogonski programi s Windowsa NT koji izravno upravljaju uređajem, ili pak mogu biti od PnP sklopovske sabirnice.

Korisnički način rada

[uredi | uredi kôd]

Korisnički način rada je sačinjen pod podsustava koji mogu prosljeđivati U/I zahtjeve odgovarajućim pogonskim programima preko U/I upravitelja (koji djeluje u jezgrinom načinu rada). Dva podsustava čine sloj korisničkog načina rada Windowsa 2000: podsustav okoline i integralni podsustav.

Podsustav okoline je dizajniran kako bi omogućio pokretanje aplikacija napisanih za različite vrste operacijskih sustava. Podsustavi okoline ne mogu izravno pristupiti sklopovlju, i moraju zahtijevati pristup memorijskim sredstvima preko upravitelja virtualne memorije koji djeluje u jezgrinom načinu rada. Također, aplikacije se pokreću na nižem prioritetu od procesa u jezgrinom načinu rada. Trenutačno postoje tri glavna podsustava okoline: Win32 podsustav, OS/2 podsustav i POSIX podsustav.

Win32 podsustav okoline može pokretati 32-bitne Windows aplikacije. Sadrži podršku za konzolu i tekstualne prozore, te gašenje i rukovanje teškim grješkama svih drugih sustava okoline. Također podržava VDM-ove koji dopuštaju pokretanje MS-DOS i 16-bitnih Windows 3.x (Win16) aplikacija na Windowsima. Postoji specifični MS-DOS VDM koji je pokrenut u vlastitom adresnom prostoru i koji emulira Intel 80486 s pokrenutim MS-DOS-om 5.

Win16 programi su, međutim, pokrenuti u Win16 VDM. Svaki program pretpostavljeno se pokreće u istom procesu, na taj način rabeći isti adresni prostor, a Win16 VDM daje svakom programu vlastitu nit u kojoj je pokrenut. Međutim, Windows 2000 dopušta korisnicima pokretanje Win16 programa u odvojenim Win16 VDM-ovima, što im dopušta da budu preventivno povišezadaćeni s obzirom na to da će Windows 2000 preventirati cijeli VDM proces, a koji pak sadrži svega jednu pokrenutu aplikaciju. OS/2 podsustav okoline podržava 16-bitne znakovno zasnovane OS/2 aplikacije i emulira OS/2 1.x, ali ne i 32-bitne ili grafičke OS/2 aplikacije kao što se koristi na OS/2 2.x ili naprednijem. POSIX podsustav podržava aplikacije koje su strogo napisane po ili POSIX.1 standardu ili srodnim ISO/IEC standardima.

Integralni podsustav se brine o specifičnim funkcijama operacijskog sustava u ime podsustava okoline. Čine ga sigurnosni podsustav, servis radne stanice i poslužiteljski servis. Sigurnosni podsutav barata sigurnosnim žetonima, dozvolama i odbijenicama pristupima korisničkim računima zasnovanim na sredstvenim permisijama, rukovodi zahtjevima za prijavu i započinje autentikaciju prijave, te određuje koja sustavska sredstva Windows 2000 treba ispitati (audit). Također upravlja aktivnim direktorijem. Servis radne stanice je API na mrežni preusmjerivač, koji omogućuje računalni pristup mreži. Poslužiteljski servis je API koji omogućuje računalu pružanje mrežnih servisa.

Jezgrin način rada

[uredi | uredi kôd]

Jezgrin način rada Windowsa 2000 ima neograničen pristup sklopovlju i sustavskim sredstvima računala i izvršuje kod u zaštićenom memorijskom području. Kontrolira pristup raspoređivanju, prioretizaciji niti, upravljanju memorijom i međudjelovanju sa sklopovljem. Jezgrin način rada sprječava servise u korisničkom načinu rada od pristupa kritičnim područjima operacijskog sustava kojima ne bi smjeli pristupiti, te stoga procesi u korisničkom načinu rada vrše zahtjeve jezgrinom načinu rada za obavljanje takvih operacija u svoje ime.

Jezrin se način rada sastoji od izvršnih servisa, koji se sastoje od mnogo modula koji obavljaju specifične zadaće, jezgrinih pogonskih programa, jezgre i sloja za apstakciju sklopovlja (HAL - Hardware Abstaction Layer).

Izvršne komponente

[uredi | uredi kôd]

Izvršne komponente (Executive) sučeljuju sa svim podsustavima u korisničkom načinu rada. Barataju s U/I, upravljanjem objekata, te upravljanjem sigurnošću i procesima. Neformalno se dijeli na nekoliko podsustava, među kojima su upravitelj priručnom memorijom, upravitelj konfiguracijom, U/I upravitelj, lokalni poziv procedura (LPC), upravitelj memorije, upravitelj objekata, sturktura procesa i nadglednik sigurosnih referenci (SRM). Zajednički grupirani, komponente se mogu zvati izvršni servisi (interno ime Ex). Sustavski servisi (interno ime Nt), tj. sustavski pozivi, su također ostvareni na ovoj razini, osim tek nekolicine koji izravno pozivaju u jezgru radi poboljšanja performansi.

Svaki objekt u Windowsima 2000 postoji u globalnom prostoru imena. Ovo je screenshot iz SysInternalsovog programa WinObj

Upravitelj objektima (Object Manager - interno ime Ob) je posebni izvršni podsustav kroz koji prolaze svi drugi izvršni podsustavi, napose sustavski pozivi, kako bi pristupili Windows 2000 sredstvima, na taj ga način čineći servisom za upravljanje infrastrukturom sredstava.

Upravitelj objektima se koristi u svrhu redukcije udvostručenja funkcionalnosti upravljanja sredstvima u drugim izvršnim podsustavima, što bi možebitno moglo voditi ka programskim grješkama i otežati razvoj Windowsa 2000.[2] S gledišta upravitelja objekata, svako je sredstvo objekt, bez obzira na to radi li se o fizičkom sredstvu (poput datotečnog sustava ili vanjskog uređaja) ili logičkog resursa (poput datoteke). Svaki objekt ima strukturu ili tip objekta koji upravitelj objekata razumije.

Stvaranje je objekata dvofazni postupak, stvaranja i umetanja. Stvaranje uzrokuje alokaciju praznog objekata i rezerviranje bilo kakvih sredstava koje upravitelj objekata zahtijeva, kao što je (opcionalno) ime u prostoru imena. Ako stvaranje nije uspjelo, podsustav odgovoran za stvaranje popunjuje prazan objekt. [3] U konačnici, ako podsustav označi inicijalizaciju uspješnom, instruira upravitelj objekata za umetanje objekta, što ga čini dostupnim preko njegova (opcionalnog) imena ili magičnog kolačića zvanog ručica (handle). Od tog trenutka, životom objekta upravlja upravitelj objekata a na podsustavu je da drži objekt u radnom stanju sve dok mu upravitelj objekata ne signalizira da ga se riješi.

Ručice su svrhom slične UNIX datotečnim opisnicima, na način da svaka predstavlja referencu na jezgrino sredstvo kroz neprozirnu vrijednost. Slično, otvaranje objekta po imenu potpada u sigurnosnu provjeru, ali djelovanje kroz već postojeću, otvorenu, ručicu je ograničeno tek na razinu pristupa zahtijevanu prilikom stvaranja ili otvaranja objekta.

Tipovi objekata definiraju procedure nad njima i bilo koje specifične podatke. Na taj način, upravitelj objekata dopušta Windowsima 2000 da budu objektno orijentiran operacijski sustav, s obzirom na to da se tipovi objekata mogu shvatiti kao polimorfne klase koje definiraju objekte. Većina podsustava se, doduše, s U/I upraviteljom kao istaknutom iznimkom, pouzdaje na pretpostavljenu implementaciju za sve tipove procedura.

Svaka instanca kreiranog objekta pohranjuje ime, parametre proslijeđene funkciji koja je kreirala objekt, sigurnosne atribute i pokazivač na tip objekta. Objekt također sadrži proceduru za zatvaranje objekta i broj referenci na njega koji upravitelju objekata govori koliko drugih objekata referencira objekt, te stoga određuje može li objekt biti uništen prilikom prosljeđivanja zahtjeva za zatvaranje. [4] Svaki imenovani objekt egzistira u hijerarhijskom prostoru imena objekata.

Daljnji izvršni podsustavi su sljedeći:

Počinjući od Windows NT Server 4.0, Terminal Server Edition, upravitelj memorije ostvaruje takozvani sesijski prostor, niz memorije u jezgrinom načinu rada koji je podložan zamjeni konteksta baš kao i memorija u korisničkom načinu rada. Ovo omogućuje paralelno pokretanje višestrukih instanci Win32 podsustava i GDI pogonskih programa u jezgrinom načinu rada, unatoč nedostatcima u početnom dizajnu. Svaki sesijski prostor dijeli više procesa, koji se zajednički naslovljavaju "sesijom".
Kako bi se osigurao stupanj izolacije između sesija bez uvođenja novog tipa objekta, asocijacijom između procesa i sesija upravlja nadglednik sigurnosnih referenci, kao atribut sigurnosnog predmeta (žetona - token), i koji se može izmijeniti samo s posebnim privilegijama.
Relativno nesložena i ad-hoc priroda sesija jest posljedica činjenica da nisu bile dio izvornog dizajna, te da su trebale biti razvijene s minimalnim ometanjem glavne linije razvoja, i to od strane treće ruke (Citrix) kao preduvjet za njihov terminalski poslužitelj proizvod za Windows NT, zvan WinFrame. Počinjući s Windows Vistom, međutim, sesije su konačno postale normalan dio Windows arhitekture. Više nisu konstrukt upravitelja memorije koji ulazi u korisnički način rada neposredno kroz Win32, već su proširene u sveprožimajuću apstrakciju koja utječe na većinu izvršnih podsustava. Ustvari, uobičajena poraba Windows Viste uvijek rezultira u višesesijskoj okolini.[5]

Jezgra

[uredi | uredi kôd]

Jezgra sjedi između HAL-a i izvršnih komponenti i omogućuje multiprocesorsku sinkronizaciju, raspoređivanje i otpremanje niti i prijekida, te rukovanje iznimkama i otpremanje iznimki; također je odgovorna za inicijalizaciju pogonskih programa uređaja prilikom pokretanja OS-a, potrebitih za njegov operativni rad. To jest, jezgra obavlja sve zadaće tradicionalne mikrojezgre - strogo razlikovanje između izvršnih komponenti i jezgre je najistaknutija značajka izvornog mikrojezgrastog dizajna, i povijesni dizajn dokumenti dosljedno naslovljavaju komponentu jezgre kao "mikrojezgru".

Jezgra često sučeljuje s upraviteljem procesa [10]. Razina apstrakcije je takva da jezgra nikad ne poziva izravno u upravitelj procesa, već samo obratno (osim za nekolicinu graničnih slučajeva, iako još uvijek ne do razine funkcijske ovisnosti).

Pogonski programi u jezgrinom načinu rada

[uredi | uredi kôd]

Windows 2000 rabi pogonske programe u jezgrinom načinu rada kako bi omogućio djelovanje sa sklopovskim uređajima. Svaki od ovih pogonskih programa ima dobro definirane sustavske postupke i nutarnje postupke koje izlaže ostatku operacijskog sustava. Kod u korisničkom načinu rada vidi sve uređaje kao datotečne objekte u U/I upravitelju, iako su samom U/I upravitelju uređaji viđeni kao objekti uređaja, koje pak definira kao ili datotečne, uređajne ili objekte pogonskih programa. Pogonski programi u jezgrinom načinu rada postoje u tri sloja: pogonski programi najviše razine, pogonski programi srednje razine i pogonski programi niske razine. Pogonski se programi najviše razine, poput pogonskih programa datotečnog sustava za FAT i NTFS, pouzdaju na pogonske programe srednje razine. Pogonski se programi srednje razine sastoje od funkcijskih pogonskih programa - ili glavnog pogonskog programa za uređaj - koji su opcionalno umetnuti između filterskih pogonskih programa niske i visoke razine. Funkcijski se pogonski program tad pouzdaje na sabirnički pogonski program - ili na pogonski program koji servisira sabirnički upravljač, prilagodnik, ili most - koji može imati opcionalni filtrirajući pogonski program sabirnice koji sjedi između samog sebe i funkcijskog pogonskog programa. Pogonski se programi srednje razine pouzdaju na pogonske programe najniže razine. Windows Driver Model egzistira u sloju srednje razine. Pogonski programi najniže razine su ili naslijeđeni Windows NT pogonski programi koji izravno upravljaju uređajem, ili su od PnP sklopovske sabirnice. Ovi pogonski programi niže razine izravno upravljaju sklopovljem i ne pouzdaju se na druge uređaje.

Sloj za apstrakciju sklopovlja

[uredi | uredi kôd]

Windows 2000 sloj za apstrakciju sklopovlja, ili HAL (od engl. Hardware Abstraction Layer), je sloj između fizičkog sklopovlja računala i ostatka operacijskog sustava. Oblikovan je kako bi sakrio (tj. asptrahirao) razlike u sklopovlju i stoga omogućio dosljednu platformu na kojoj se aplikacije mogu izvoditi. HAL uključuje sklopovski specifičan kod koji upravlja U/I sučeljima, prijekidnim upravljačkim sklopovima i višestrukim procesorima.

Posebice, "sklopovska apstrakcija" ne uključuje apstrakciju instrukcijskog skupa, koji pak potpada pod općenitiju koncepciju prenosivosti. Apstrahiranje instrukcijskog skupa, kada je potrebno (poput rukovanja nekoliko inačica x86 instrukcijskog skupa, ili za emuliranje nedostajućeg matematičkog koprocesora), je obavljeno od strane jezgre, ili putem platformske virtualizacije.

Unatoč svojoj svrsi i označenom mjestu unutar arhitekture, HAL nije sloj koji u potpunosti leži ispod jezgre na način na koji jezgra leži ispod izvršnih komponenti: sve poznate implementacije HAl-a na neki način ovise o jezgri, pa čak i o izvršnim komponentama. Izvedbeno, ovo znači da jezgra i HAL dolaze u paru, posebno inženjerirani za zajednički rad.

Bilješke i reference

[uredi | uredi kôd]
  1. ^ MCSE Exam 70-215, Microsoft Windows 2000 Server. Chapter 1, Introduction to Microsoft Windows 2000, pg 7–18.
  2. ^ Mark Russinovich (October 1997). Inside NT's Object Manager. Introduction.
  3. ^ Mark Russinovich (October 1997). Inside NT's Object Manager. "Object Types".
  4. ^ Mark Russinovich (October 1997). Inside NT's Object Manager. "Objects".
  5. ^ Microsoft. "Active Directory Data Storage".
  6. ^ MSDN. Trustee definition.
  7. ^ Siyan, Kanajit S., 2000.
  8. ^ MSDN. ACE definition.
  9. ^ Inside Microsoft Windows 2000 (Third Edition). Microsoft Press. Pages 543–551.
  10. ^ Microsoft. "Impact of Session 0 Isolation on Services and Drivers in Windows Vista".
Reference

Vanjske poveznice

[uredi | uredi kôd]