STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000...

13
Seminarski rad ____________________________________________________________ _ 3. ARHITEKTURA OPERATIVNOG SISTEMA WINDOWS 2000 3.1 Osnove Windows 2000 arhitekture Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl. user space). U kernel prostoru se vrši rukovanje procesima, memorijom, fajl sistemima, itd. Korisnički prostor je okruženje u kojem se izvršavaju aplikacije. Korisnički dio cine: DLL-ovi, podsistemi okruženja i servisni procesi (koji se povezuju na kernel dio). Karakteristično je da je Windows 2000 naslijedio osobinu NT tehnologije i u tome što je skoro čitav operativni sistem (sistemske pozive, grafiku itd.) smjestio u kernel modu. Podsistem okruženja predstavlja interfejs između aplikacije korisnika i Windowsa 2000. Zahtjevi aplikacije se, preko ovog podsistema, pretvaraju u zahtjeve koje razumije Windows 2000 i prosljeđuju se ka izvršnom dijelu gdje se izvršavaju u kernel modu. Podsistem kernel mode-a se izvršava u zaštićenom području memorije. Organizacija strukture Windows 2000 je prikazana na slici 1. ____________________________________________________________ ____________ 7

Transcript of STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000...

Page 1: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

3. ARHITEKTURA OPERATIVNOG SISTEMA WINDOWS 2000

3.1 Osnove Windows 2000 arhitekture

Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl. user space). U kernel prostoru se vrši rukovanje procesima, memorijom, fajl sistemima, itd. Korisnički prostor je okruženje u kojem se izvršavaju aplikacije. Korisnički dio cine: DLL-ovi, podsistemi okruženja i servisni procesi (koji se povezuju na kernel dio).

Karakteristično je da je Windows 2000 naslijedio osobinu NT tehnologije i u tome što je skoro čitav operativni sistem (sistemske pozive, grafiku itd.) smjestio u kernel modu.

Podsistem okruženja predstavlja interfejs između aplikacije korisnika i Windowsa 2000. Zahtjevi aplikacije se, preko ovog podsistema, pretvaraju u zahtjeve koje razumije Windows 2000 i prosljeđuju se ka izvršnom dijelu gdje se izvršavaju u kernel modu. Podsistem kernel mode-a se izvršava u zaštićenom području memorije.

Organizacija strukture Windows 2000 je prikazana na slici 1.

slika 1

HAL i Kernel su dva najniža softverska nivoa i ona su pisana djelimično u programskom jeziku C a djelimično u asembleru što ih čini djelimično zavisnim od same mašine. Svi nivoi iznad njih su pisani u C-u , ili eventualno (slučaj nekih drajvera) u C++. U analizi strukture sa slike 1, počećemo od najnižeg nivoa (ne uključujući hardver).

3.2 (HAL)

________________________________________________________________________7

Page 2: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

Viši nivoi operativnog sistema rukovode uglavnom internim sistemskim objektima. Niži nivoi, kao što je HAL (i djelimično kernel), komuniciraju sa uređajima pa su vezani za samu konfiguraciju. HAL je softver koji je pisan da bi se smanjili problemi implementacije operativnog sistema u raznim platformama (mašinama), tj. da instalaciju Windows-a 2000 učini što nezavisnijom od postojećeg hardvera. Posao HAL-a je da predstavi operativni sistem sa apstrakovanim dijelom za hardver. HAL je isti u svim Windows 2000 sistemima. Kada uključujemo neki novi hardver, postojeći driveri Windows-a 2000 i kernel preživljavaju promjene. HAL podrazumjeva pristup registrima uređaja (engl. device registers), adresiranje uređaja nezavisno od bus-a (npr. bilo koja PCI kartica može da se stavi na bilo koji PCI slot itd.), rukovođenje interrupt-ima i resetovanje, DMA transfere, rukovođenje tajmerima, multiprocesorsku sinhronizaciju, interfejs između Windows-a i BIOS-a, tj. sa njegovom CMOS memorisanom konfiguracijom. Drajveri uređaja pozivaju HAL rutine za prikupljanje informacija o platformi (mašini).

U današnjim računarima se dešava da dva ili više uređaja imaju istu adresu bus-a tako da, kada je drajveru potrebno da im pristupi, njemu je potrebno da razlikuje adrese. Zbog ovoga HAL rješava problem tako što dodjeli takvim uređajima logičke adrese na osnovu kojih ce ih drajveri prepoznati.

HAL rukovodi klokovima i osvježava ih svakih 100ns. Napominjemo da je DOS ovakva osvjezavanja radio sa mnogo sporijim taktom (2 s). HAL takođe rukovodi i DMA transferima i to sistemskim i onim specijalnim DMA mašinama u samim karticama.

Pored ovih funkcija, naveli smo i mogućnost sinhronizacje kod multiprocesorskih sistema. HAL omogućava neke osnovne alatke za sinhronizaciju kao što su pokretni prekidači ili ključevi (spin locks) gdje npr. jedan procesor čeka neki podatak da bude pusten od drugog procesora.

HAL, kao što smo pomenuli, komunicira sa BIOS-om. Poslije butovanja, HAL ispituje CMOS da bi saznao koje basove i I/O uređaje sistem posjeduje i kako su konfigurisani. Ove podatke HAL smješta u bazu registara tako da ih druge komponente sistema jednostavno nalaze ne zadirući u BIOS.

Kao što smo napomenuli, HAL je mašinski zavisan i razne verzije su dostupne na CD-u Windowsa 2000. Kada se sistem instalira, bira se odgovarajući HAL i smješta se u obliku fajla hal.dll u direktorijumu \winnt\system32. Otklanjanje ovog fajla onemogućit ce butovanje sistema.

HAL kao takav može u brzim multimedijalnim zahtjevima ponekad da ne zadovolji brzinu komunikacije sa hardverom. On se tada obogaćuje takozvanim DirectX procedurama koje su specijalizovane da pruže bržu (direktniju) komunikaciju između korisničkih procesa i hardvera.

3.3 Jezgro Operativnog Sistema Windows 2000 (engl. Kernel Layer)

Kernel je u stvari nivo u kojem je virtualno smješten čitav operativni sistem još od početka NT tehnologije. Kernel predstavlja viši nivo apstrakcije hardvera. U kernelu se nalazi algoritam upravljanja nitima. Pored ove funkcije, kernel rukovodi internim objektima. Ovi objekti se dijele na: objekte upravljanja i dispacher objekte. Ovo nijesu objekti kojima se može manipulisati preko korisničkih procesa već su objekti preko kojih izvršni dio kreira korisničke objekte.

________________________________________________________________________8

Page 3: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

Objekti upravljanja su oni objekti koji su od suštinskog značaja za algoritam upravljanja u kernelu. Pored interrupt objekata, objekti upravljanja mogu biti: DPC (Deferred Procedure Call) objekti ili APC (Asynchronous Procedure Call) objekti.

DPC objekti služe da bi se odvojili vremensko-kritični dijelovi interapt procedura od vremensko-nekritičnih. Drugim riječima DPC je mehanizam za pamćenje da neki interapti nijesu u datom trenutku tako važni i da ti određeni poslovi mogu sačekati. Tako, npr. kada se pritisne neki taster sa tastature, ukoliko se u međuvremenu startovao neki bitniji proces (većeg prioriteta), kôd tog tastera se ne procesira odmah iako interrupt procedura dozvoljava prosljeđivanje za taj taster.

APC je slično DPC-u s’tim što se on dešava u kontekstu nekog procesa. Pored ove osobine, glavne karakteristike APC –a su:

- APC se uvijek aktivira u određenim vremenskim intervalima od strane operativnog sistema,

- APC može da uzrokuje preuzimanje prvenstva onog thread-a koji se trenutno izvršava,

- APC rutini se može takođe preuzeti prvenstvo izvršavanja. Dispacher objekti su: semafori, muteksi, event-i, itd. Ovo su objekti koji

omogucuju realizaciju scheduling- a (upravljanja saobracajem threads-a) što je u stvari i jedan od glavnih uloga kernela.

3.4 Izvršni modul (engl.The Executive)

Executive je softver pisan u programskom jeziku C i može se reći da je hardverski nezavisan. Executive sadrži 10 komponenti (na slici 11-7 prikazanim osjenčenjem). To su u stvari procedure koje rade zajedno u ostvarenju nekog zadatka. Između njih ne postoje čvrste granice i mogu čak biti drugačije organizovane. Između procedura istog nivoa postoji komunikacija, tj. one intenzivno pozivaju jedna drugu. Thread-i, dok su u kernel modu, izvršavaju ove procedure. Executive obezbjeđuje rukovanja većinom I/O operacija (u slučaju diska, raznih kartica za I/O itd.) i rukovođenje objektima. Ono jedino ne podrazumjeva I/O tastature i ekrana.

Object manager rukovodi svim mogućim objektima operativnog sistema (procesima, thread-ima, fajlovima, semaforima, itd.) Kada se objekat kreira, object manager rezerviše jedan blok virtualne memorije u kernelu a kada se objekat uništi, prazni tu memoriju i tada je ona slobodna. Object manager rukovodi prostorom imena objekata gdje se nalazi lista svih postojećih objekata. Objekti se stvaraju od strane svih komponenti Executive-a.

I/O manager predstavlja set ključnih procedura za komunikaciju sa I/O uređajima i komandovanje tim uređajima od strane korisnika. I/O manager takođe predstavlja skladište svim drajverima i on ih poziva kada je potrebno izvršiti neku fizičku I/O operaciju.

Process manager je ključ funkcionalnosti Windowsa 2000. On rukovodi svim procesima i thread-ima od samog kreiranja do njihovog završetka (uništenja).

Memory manager rukovodi učitavanjem virtualnih stranica u okvire fizičke stranice. On na neki način predstavlja i mehanizam zaštite jer dozvoljava procesu da pristupi samo onim stranicama koje spadaju u adresni prostor tog procesa. Na ovaj način se jednom procesu, osim u specijalnim okolnostima, ne dozvoljava pristup adresnom prostoru drugog procesa. Memorijska arhitekrura se sastoji od virtualne memorije kojoj

________________________________________________________________________9

Page 4: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

se pristupa linearno preko 32-bitnih adresa. Memory manager takođe pravi i sistemske pozive koji su vezani za rukovođenje memorijom.

Security manager treba, između ostalog, da zadovolji sigurnosne zahtjeve Američkog Ministarstva Odbrane propisane u tzv. Narandžastoj knjizi C2. Ovdje se specificiraju razni zahtjevi za sigurnošću počevsi od log-in zaštite pa do činjenice nuliranja virtuelnih stranica prije ponovnog korišćenja. Napominjemo da je za ovo nuliranje stranica u Windowsu 2000 zadužen tzv. zero-page thread.

Cache manager ima zadatak da blokove podataka sa diska koji se najčešće koriste zadrzi u memoriji tako da se njima može brže pristupiti u slučaju ponovnog poziva. Kada je neki blok memorije potreban, prvo se zahtjeva od Cache Mangera da preda taj blok. Ako ovaj ne sadrži taj blok, zahtjeva se od fajl sistema da alocira potrebnu memoriju. Kolicina kes-a, tj. te memorije, je dinamička i mjenja se u zavisnosti od zahtjeva. Cache Manager mora stalno biti u sinhronizovanom radu sa Virtual Memory Manager-om pošto se blokovi fajlova učitavaju u virtualnom adresnom prostoru procesa.

Plug- and-play manager dobija sve zapise o novim uređajima. Zadatak ovog softvera je da konfiguriše novi uređaj, da mu dodjeli određeni interapt i da locira i učita odgovarajući drajver za taj uređaj. Za neke uređaje (SCSI, itd.), provjera novog hardvera se obavlja prilikom samog butovanja sistema a za neke i u toku rada kompjutera (npr. USB). Napominjemo da “plug and play” nije postojao u Windows NT

Configuration manager barata sa registrima. On dodaje nove vrijednosti u registrima i traži vrijednosti (podatke) sa registara kada je to potrebno.

Power manager ima zadatak da isključi monitor i hard disk i neki drugi hardver kada su nekorišćeni određeno vrijeme. Power manager može da, pored standardnog radnog stanja, stavi kompjuter u jednom od sljedećih načina rada:

Sleep-1: snaga procesora reducirana, RAM i keš su uključeni, trenutno ukljucivanje (buđenje) uspomoc neke akcije.

Sleep-2: CPU i RAM uključeni, procesorski keš isključen, nastavlja se rad sa tog istog računara.

Sleep-3: CPU i keš isključeni, RAM uključen, sistem se mora restartovati sa fiksne adrese.

Hiberanate: isključeni CPU, RAM i kes. Sistem se restartuje od nekog sačuvanog fajla na disku. Poslije butovanja, na ekranu je sve isto kao i prije ulaska u hibernate stanje.

Off: Sve je isključeno. Potreban je potpuni restart sistema.Treba napomenuti da Power Manager nije postojao u Windows NT 4.0.

Local procedure call manager omogućava efikasniju kumunikaciju između procesa i njihovih podsistema.

GDI je u Windowsu 2000 smješten u kernel modu, što Windows 2000 čini bržim multimedijalnim sistemom. GDI sadrži funkcije za rukovanje slikom na ekranu i slikom koja se šalje štampaču. GDI takođe sadrži Window manager i display driver (drajvere za prikaz). Ekzekutivni fajl (modul) Win32 obavlja neke sistemske pozive za grafičku podrsku i komunikaciju sa grafičkim uređajima.

Nivo Sistemskih servisa služi da obezbijedi interfejs za izvršni (executive) dio. On prihvata sistemske pozive (koji dolaze iz korisničkog dijela) i poziva odgovarajuće sastavne dijelove executive-a da izvrše zahtjeve tih poziva.

Drajveri uređaja (engl. device drivers) nijesu sastavni dio executive-a ni kernela što znaci da nijesu dio fajla ntoskrnl.exe. Drajver koji se instalira u sistemu se upisuje u

________________________________________________________________________10

Page 5: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

registre i on se učitava svaki put kada se sistem podiže. Kada kažemo drajveri, ne mislimo samo na makroskopske uređaje kao što su kartice, skeneri, štampači itd. već mislimo i na čipove (npr. na samoj matičnoj ploči). Postoje i tzv. file system driveri koji rade na relaciji: file I/O <-> device I/O.

Najveći drajver je drajver grafike. Drajveri se instaliraju u kernel memoriji (jer se oni nalaze unutar kernel moda) pa imaju pun pristup kernel tabelama i čitavom hardveru. Drajveri su stvari kernel moduli koji se učitavaju. Oni ne manipulišu hardverom već pozivaju dijelove HAL-a. Zbog svega ovoga, važno je da se drajveri pišu kvalitetno, jer mogu uzrokovati promjene i pad operativnog sistema.

Treba napomenuti da se komponenete kernel i executive nalaze smještene u fajlu ntoskrnl.exe. Ovaj fajl je na indirektan način pristupačan i korisničkom modu preko fajla NtDll.Dll o kome će biti riječi kasnije u odjeljku za podsistem okruženja.

3.5 Objekti i njihova implementacija u Windows 2000.

Objekti su jedna od najvažnijih kategorija operativnog sistema Windows 2000. Oni se najjednostavnije mogu definisati kao podaci RAM-a. Fajlovi memorisani na disku, npr. nijesu Windows 2000 objekti. Objekti se stvaraju kada se ti fajlovi otvore. Oni su u stvari skup memorijskih riječi u kernel adresnom prostoru. Zato se, u slučaju restartovanja sistema, svi ovi objekti izgube osim sistemskih procesa i procesa idle. Svaka vrsta rukovanja objektima ide preko Object manager-a. Ova činjenica je važna jer pruža jednostavan način za sigurnosne provjere tako što su svi mehanizmi provjere na jednom mjestu. Takođe je važno da se na ovaj način u svakom trenutku može znati koji su objekti još u upotrebi a koji se mogu obrisati. Svim objektima se pristupa na isti način i na isti način im se dodjeljuju imena. To se radi koristeci handles-e objekata.

Objekti se sastoje od object header i object data. Object header ima sljedeće komponenete: ime objekta, direktorijum u kojem je objekt smješten, sigurnosne informacije (koje objekat koristi), kvote korišćenja, listu procesa sa hendles-ima koji ga koriste, brojač, i pokazivač na tip objekta.

Rekli smo da objekti žive u kernelu, što znači da oni tada zauzimaju određeni adresni prostor. Zbog ovoga je važno znati koji objekat nije više u upotrebi i obrisati ga. Ovdje važnu ulogu igra brojač koji broji koliko je hendles-a otvoreno od strane svih procesa za određeni objekat. Kada se objektu pristupi od strane procesa, tj. kada se on otvori, brojač se inkrementira za 1. Kada se objekat zatvori, brojač se dekrementira za 1. Da bi se objekat mogao obrisati (i time oslobodio virtualni adresni prostor kernela) potrebno je da ovaj brojač bude 0 a takođe i drugi brojač koji broji ekzekutivne procese što koriste objekat. Kada su ova dva brojača 0, znači da nijedan korisnički ni ekzekutivni proces ne koristi objekat i zato se on briše. Na osnovu navedenog, vidi se da su objekti u stvari dinamična sturktura podataka koju object manager treba da održava. Ali, nijesu samo objekti oni koji u kernel prostoru imaju dinamičku strukturu. Pitanje dinamičke strukture kernela se u Windowsu 2000 rješava preko dijeljenja prostora na skladišta (engl. paged i nonpaged pool). Ovime se određeni objekti koji se češće koriste smjestaju u nonpaged pool dok se ovi drugi (kao što su npr. registri) smještaju u paged pool. Važno je napomenuti da se veličine vrijednosti ovih prostora mogu podesiti u registrima.

________________________________________________________________________11

Page 6: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

Svaki objekat pokazuje (pokazivačem u hederu) na tip objekta. Tip objekta čuva zajednička svojstva za određene grupe objekata. Ova svojstva su: ime tipa, načini pristupa i prava pristupa, informacija da li novi objekat ovog tipa ide na paged ili nonpaged područje, itd. Treba pomenuti posljednju osobinu tipa objekta a to je pokazivač na set standardnih funkcija (koda) kao što su: open, close, delete, itd.

Generalno govoreći, ne postoji definitivna lista tipova objekata. Ekzekutivne komponente mogu uvijek stvoriti neki novi tip objekta. Najčešće korišćeni tipovi objekata su objekti kreirani od strane: procesa, thread-a (prev. niti), portova, tajmera, uređaja (engl. device), drajvera, otvorenih fajlova, itd. Tako, za svaki proces i svaki thread postoji po jedan objekat koji čuva glavne osobine tog procesa ili tog thread- a i taj objekat se koristi za rukovanje tim procesima ili thread-ima. Port je, npr. objekat koji služi kao komunikacioni kanal između dva procesa (za komunikaciju porukama). Isto tako, svaki uređaj ima objekat uređaja koji sadrži informacije o tom uređaju i služi da bi se izvršile naredbe nad tim uređajem, tj. da se njime može rukovati. Svi drajveri uređaja koji su učitani imaju po jedan objekat u objektnom prostoru.

Kada korisnik kreira ili otvara neki objekat, on zapravo pravi Win32 poziv koji se preko sistemskog servisa (ntdll.dll) pretvara u pravi sistemski poziv. Ovaj sistemski poziv koji treba da otvori ili kreira objekat ima za rezultat 64-bitnu vrijednost smještenu u privatnoj tabeli procesa koja drzi handles-e a koja se nalazi u kernelu. Vrijednosti ove tabele sadrže dvije 32-bitne riječi, jedna koja sadrži 29-bitni pokazivač na header objekta, 3 koja govori o nasljeđivanju i 32 koja predstavljaju informaciju o pravima na objekat (da li proces ima prava upisa na objekat ili samo čitanja). Pozicija odgovarajućeg handles-a sa tabele, se vraća korisniku da bi ga on koristio prilikom kasnijih poziva, u cilju manipulacije objektom.

Važan detalj vezan za objekte je prostor imena objekata (engl. Object Name Space). U ovom prostoru su smješteni svi objekti. Ovo grupisanje može poslužiti npr. da neki proces pristupi nekom objektu koji pripada nekom drugom procesu, ako mu je to dozvoljeno. Inače, u Windows-u 2000 postoje 3 vrste prostora za imena i to: fajl sistem prostor, registarski prostor imena i prostor imena objekata. Prije boot- ovanja sistema, tj. dok se sistem podiže, nema objekata u memoriji i prostor imena objekata je prazan. U toku boot-ovanja, Plug and Play Manager provjerava uređaje i za svakog od njih kreira device objekat kojeg odmah ubacuje u prostor imena objekata. Za ove uređaje potrebno je da se učitaju i drajveri. Sistem prilikom boot-ovanja pregleda registre i vidi koji su drajveri potrebni. Za svaki od tih drajvera se kreira objekat i svaki od tih objekata se ubacuje u prostor imena. Kada se sistem odbutuje do kraja, svi I/O uređaji, disk particije itd. su u prostoru imena objekata.

3.6 Podsistem Windows 2000 korisničkog okruženja.

Ovaj podsistem služi kao interfejs između aplikacije i sistema. Windows 2000 formalno podržava 3 vrste API (Application Programing Interface) i to: Win32, POSIX i OS/2. Treba napomenuti da okruženje za POSIX (koji pruža minimalnu podršku za UNIX aplikacije) i OS/2, u praksi se skoro i ne mogu koristiti. Da bi se mogli koristiti programi sa UNIX-a na Windows 2000, Microsoft je izdao proizvod nazvan Interix. Inače, Windows 2000 pruža punu implementaciju Win32 i Win32 je oficijalni interfejs za Windows 2000.

________________________________________________________________________12

Page 7: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

Kao što smo rekli, Windows 2000 se sastoji od komponeneti u kernel modu i u korisničkom (user) modu. Komponente korisničkog moda su: DLL-ovi, podsistem okruženja (engl. enviroment subsystem) i servisni procesi. U ovom trenutku bavićemo se analizom podsistema okruženja.

DLL-ovi služe kao interfejs između pravih sistemskih poziva i korisničkih poziva. Programer pravi pozive ka Win32 podsistemu i on “ne vidi” sistemske pozive. Win32 podsistem okruženja sada poziva procedure iz DLL fajlova koji prave sistemske pozive. Neki pozivi se izvršavaju (od strane DLL fajlova) direktno u korisničkom prostoru ne prelazeći uopšte u kernel mod. Program se piše prema pravilima i specifikacijama podsistema Win32 okruženja. Win32 je zvanično interfejs za Windows 2000 ali i za verzije Windows 95/98/Me i CE. Ovo znači da će program koji zadovolji Win32 specifikacije moći uvijek da se implementira u bilo kojoj od ovih verzija, bez obzira što se one razlikuju po svojim sistemskim pozivima. Win32 program sadrži mnogo poziva za Win32 API funkcije (Win32 podsistem). Pošto neki programi koriste neke iste (zajedničke) procedure biblioteka (kao što su npr. excell, word, itd.) a da ovi programi ne bi svaki ponaosob sadržali istu kopiju procedura biblioteka, napravljeni su tzv. DLL fajlovi koje koriste sve verzije Windows-a. Oni grupišu set blisko povezanih procedura biblioteka u jednom fajlu (koji obično ima ekstenziju .dll). Tako, npr. ako su istovremeno otvoreni fajlovi Excell-a i Word-a, pošto ono koriste iste tipove menija, prozora itd.,oni mogu koristiti isti DLL. Pozivi procedura sa DLL ova se rade indirektno, preko vektora transfera koji se nalazi u adresnom prostoru pozivaoca (npr. procesa) i sadrži adresu procedure u DLL-u. Na početku, ovaj vektor se sastoji samo od nula pošto se još ne znaju adrese procedura koje se pozivaju. Kada se neki proces startuje, lociraju se potrebni DLL-ovi i učitavaju u adresnom prostoru procesa. Sada se transfer vektor popunjava adresama procedura i na osnovu tih adresa se te procedure vrlo efikasno mogu pozvati od strane tog procesa kad god je to potrebno. Prednost ovog pristupa je u tome da u fizičkoj memoriji sada postoji samo jedan DLL tekst i da razni procesi mogu da pristupe svojim procedurama preko njihovih transfer vektora. Svaki korisnički proces se linkuje sa određenim brojem DLL–ova (kao npr. na slici 2). Ovdje su (kao primjer) uzeta samo tri najvažnija dll-ova.

slika 2

Da bi se napravio API poziv, poziva se procedura unutar nekog DLL –a (koja se već nalazi u transfer vektoru adresnog prostora tog procesa). Ovdje postoje nekoliko puteva izvršavanja.

________________________________________________________________________13

Page 8: STRUKTURA OPERATIVNOG SISTEMA WINDOWS 2000 · Web viewOsnove Windows 2000 arhitekture. Windows 2000 se sastoji od dvije komponente: jezgra (kernel space) i korisničkog dijela (engl.

Seminarski rad _____________________________________________________________

U nekim slučajevima pozvati DLL može da pozove ntdll.dll koji ima zadatak da prebaci pozive sa korisničkog na kernel prostor. U ovoj situaciji, posao koji treba da se odradi, odrađuje se u kernel prostoru.

Druga situacija je (koja je posebno bila karakteristika prvih verzija Windowsa NT) kada se prvo pošalje poruka procesu Win32 podsistema (fajlu csrss.exe). Ovaj proces izvrši određeni dio posla i onda pravi sistemski poziv. Ovdje se očigledno akcija dijeli na dva dijela: djelimično u korisničkom i djelimično u kernel modu.

Postoje i situacije kada Enviroment subsystem (Win32 podsistem) odradi čitav posao. To dakle odrađuje fajl (proces) csrss.exe. Važno je napomenuti da se, zbog bolje efikasnosti komunikacije između korisničkih procesa i Win32 podsistema, koristi se specijalni mehanizam lokalnih poziva procedura (lokalno se misli na user prostor) koji se naziva LPC a prikazan je na slici 11-7.

U Windowsu 2000 najveći broj poziva preskače Win32 podsistem i svoje pozive pravi direktno. Pozivanje kernel mode-funkcija sa korisničkog moda radi se preko zaštićenih mehanizama. U trenutku poziva inicira se instrukcija “change mode to kernel” a System Service pravi interrupt. Povratak iz kernela se obavlja otpuštanjem tog interrupt-a. Windows 2000 ima preko 800 DLL-ova smještenih u \winnt\system32 i zauzimaju oko 130MB memorije. Neki važniji fajlovi sistema i prostor u kojem su implementirani, dati u sljedećoj tabeli.

File Mod Sadržina fajlahal.dll Kernel Rukovođenje hardverom, komunikacija sa drajverimantoskrnl.exe Kernel Kernel, executive i funkcije koje su isturene prema korisničkom

prostoru (preko ntdll.dll)win32k.sys Kernel Sistemski pozivi, većina grafikentdll.dll User Prebacaji sa user moda u kernel modcsrss.exe User Proces podsistema Win32 okruženjakernel32.dll User Većina sistemskih poziva (inicira kreiranje procesa, itd.)gdi32.dll User Tekst, fontovi, boje, bitmape, palete, crtanja itd.user32.dll User Prozori, ikone, meniji, kursori, dijalozi, klipbord, itd.advapi32.dll User Sigurnost, kriptografija, registri, pozivi menadzmenta

U zavisnosti od konfiguracije sistema, fajl u kojem su smešteni executive i kernel može biti:

ntoskrnl-za uniprocesorski sistem ntkrnlmp-za multiprocesorski sistem ntkrnlpa-za uniprocesorski sistem sa PAE ntkrpamp-za multiprocesorski sa PAE

________________________________________________________________________14