Ugrás a tartalomhoz

Operációs rendszerek mérnöki megközelítésben

Benyó Balázs, Fék Márk, Kiss István, Kóczy Annamária, Kondorosi Károly, Mészáros Tamás, Román Gyula, Szeberényi Imre, Sziray József

Panem Kiadó

8. fejezet - 6. A Windows NT operációs rendszer

8. fejezet - 6. A Windows NT operációs rendszer

6.1. A Windows NT kialakulása

A Windows NT a Microsoft cég új generációs operációs rendszere. A Windows NT operációs rendszerrel a Microsoft a DOS-, illetve Windows-rendszereket kívánta felváltani. Eredetileg az OS/2-es rendszerek nyomdokán akarták az NT-s fejlesztéseiket folytatni, időközben azonban, alkalmazkodva a piaci igényekhez, a 32 bites Windows-rendszerekhez közelítettek.

A más Windows-rendszerektől struktúrájában is különböző operációs rendszer a New Technology (NT) szavak rövidítéséből kapta a nevét. Az elnevezés annyiban jogos, hogy az NT, elődeitől örökölt gyermek­betegségeitől eltekintve, ténylegesen új és korszerű megoldásokat alkalmaz.

Az NT rövid történetének fő állomásait a 6.1. ábra foglalja össze.

6.1. ábra. ábra - Az NT történetének fő állomásai

Az NT történetének fő állomásai


6.1.1. Az NT-vel szemben támasztott követelmények

A Windows NT tervezésekor a leendő rendszerrel szemben támasztott követelményeket két csoportra lehet osztani. Az első csoportban azok a tulajdonságok kerültek követelmények formájában megfogalmazásra, amely tulajdonságokkal a rendszernek feltétlenül rendelkeznie kell a rendszer piaci sikere érdekében. A követelmények második csoportját inkább tervezői célkitűzéseknek lehetne nevezni, mert olyan tervezési elveket és tulajdonságokat tartalmaznak, amik a rendszer átláthatóságát, karbantarthatóságát, valamint későbbi továbbfejleszthetőségét biztosítják.

6.1.1.1. Elvárások

A Windows NT-vel szemben a támasztott követelmények a következők:

  • Valós 32 bites, preemptív (kiszorításos, vagyis bármikor megszakítható), újrahívható (reentrant), virtuális memóriakezelést megvalósító operációs rendszer legyen.

  • Fusson különböző hardver platformokon.

  • Fusson szimmetrikus multiprocesszoros környezetben, és skálázható tulajdonságával tegye lehetővé az adott környezetben rendelkezésre álló erőforrások hatékony kihasználását.

  • Fusson elosztott hardver környezetben, és tegye lehetővé elosztott számítási környezet létrehozását.

  • A „legtöbb” 16 bites MS-DOS és Windows 3.1-es alkalmazás (applikáció) futtatását tegye lehetővé.

  • Teljesítse a POSIX 1003.1 szabványt (legyen POSIX-kompatíbilis).

  • Teljesítse az amerikai biztonsági szabványokat.

  • Használjon UNICODE-ot a karakterek és stringek ábrázolására.

A felsorolt kritériumok önmagukért beszélnek, csak az utolsóhoz szükséges némi magyarázat.

A UNICODE a karakterek gépi ábrázolásának szabványa. Előnye, hogy minden karaktert 16 biten ábrázol, így szinte minden nyelv ábécéjének karakterkészletét lehetséges azonos kódolást használva ábrázolni. A UNICODE-ot alkalmazva lehetőség nyílik az alkalmazások nyelvterülettől független változatának elkészítésére. Az első olyan, Microsoft által gyártott operációs rendszer, amely binárisan is egységes lesz az egész világon, a következő bejelentett verzió, a Windows 2000 (Windows NT 5.0) lesz.

Az NT 4.0 a belső karakterábrázolásában már UNICODE-ot használ. Mivel az NT-s alkalmazások nagy része még nem használ UNICODE-ot, így a string változókat paraméterként átadó programozói interfészben (Win32 API) definiált függvényeknek két változata létezik:

  • „széles” UNICODE-os változat ami 16 bites karaktereket kezel

  • „keskeny” ANSI változat ami 8 bites karaktereket kezel.

A keskeny változatú függvények megvalósítása egyszerű: először átkódolják a string paramétereket UNICODE-ba (a 8 bites karaktereket 16 bites karakterekre cserélik), majd meghívják az adott függvény UNICODE-os változatát.

6.1.1.2. Tervezői célkitűzések

Az NT tervezői az operációs rendszer minőségének, illetve korszerűségének biztosítása érdekében a fenti követelmények teljesítésén felül a következő célokat tűzték ki:

  • Legyen az NT kódja „kiterjeszthető”, vagyis könnyen továbbfejleszt­hető. (A lehetőségeket figyelembe véve legyen nyílt rendszer.)

  • Legyen hordozható a kód, vagyis legyen lehetőség a későbbiekben új hardver platformokra átvinni.

  • A rendszer legyen megbízható és robusztus (teherbíró). Ennek három vonatkozását különböztették meg:

    • két applikáció futása ne befolyásolja egymást

    • egy applikáció ne dönthesse össze az operációs rendszert

    • az operációs rendszer belső komponensei „megférjenek” egymás mellett.

  • A lehetőségekhez mérten maximálisan legyen kompatíbilis a meglévő rendszerekkel. Itt mind a felhasználói interfészre, mind pedig a programozói interfészre (API-ra) gondoltak. A kompatíbilis rendszereknek két csoportját különböztették meg:

    • a Microsoft korábbi operációs rendszerei: MS-DOS, Windows 3.2

    • nem a Microsoft által készített, azonban széles körben elterjedt rendszerek: UNIX, OS/2, NetWare.

  • A rendszer a hardverkörnyezettől függetlenül legyen hatékony, vagyis a teljesítménye legyen maximális bármelyik hardver platformon.

6.1.2. A Windows NT, a Windows 95 és a Windows 98 összehasonlítása

A ’80-as évek végére a hardver eszközök fejlődése révén a Microsoft-termékek célpiacának tekintett személyi számítógépek teljesítményben annyira megerősödtek, hogy már felvehették a versenyt a tradicionálisan UNIX-rendszerek által uralt munkaállomásokkal (workstation).

A Microsoft cég első grafikus interfészt biztosító operációs rendszerei, a 16 bites Windows család tagjai, mind a DOS rendszerre alapulva, annak továbbfejlesztéséből alakultak ki. Ez erősen rányomta bélyegét a Windows-rendszerek felépítésére és működésére.

Az új, nagyteljesítményű PC-k felhasználói olyan igényeket támasztottak az operációs rendszerrel szemben, amit már nem lehetett a Windows-rendszerek továbbfejlesztésével kielégíteni. Ezért döntött a Microsoft egy új, struktúrájában is modern elveket követő operációs rendszer fejlesztése mellett. Ez az operációs rendszer a Windows NT.

Természetesen továbbra sem hagyhatta cserben régi vásárlóit a Microsoft, így folytatta a Windows-rendszerek fejlesztését is. Ennek a fejlesztőmunkának a terméke a Windows 95 és a Windows 98. Ezeknek az operációs rendszereknek a jellemzője, hogy bár szinte teljesen kompatíbilisek a korábbi Windows-rendszerekkel, funkcionalitásban fokozatosan közelítenek az NT felé. Ennek a folyamatnak a befejezése a rövidesen megjelenő Windows 2000, ami már publikáltan NT-alapú rendszer lesz, vagyis a két fejlesztési szál össze fog futni.

A közelítés egyik legfontosabb területe a felhasználói felület: a Windows NT, a Windows 95, és a Windows 98 felhasználói felületei szinte teljesen azonosak.

A másik fontos területe a rendszerek kompatibilitásának a programozói felület (API: Application Programming Interface). A Win32 API közös programozói interfésze a fenti operációs rendszereknek. A felsorolt rendszerek API-ja persze nem teljesen azonos. A bennük szereplő hívások döntő többsége közös, azonban vannak olyan függvények, amelyek az egyik rendszer API-jában megtalálhatók, míg a másikban nem. Ilyen szempontból az NT 5.0 közeljövőben várható megjelenése nagy jelentőségű lesz, mivel az NT 5.0 API-ja tartalmazni fogja az összes többi rendszer API-jának hívásait. Bővebb információt az API-król a http://msdn.microsoft.com/default.asp Internet-címen olvashatunk.

Hasonlóan az NT 5.0-ban kerül alkalmazásra a Windows 98-ban kifejlesztett új készülékkezelő (device driver) modell, az ún. WDM.

A gyártó közös volta, illetve a fejlesztés párhuzamossága miatt nem meglepő, hogy a felsorolt rendszerek kódja részben közös.

A 6.2. ábrán látható táblázatban összehasonlítjuk az NT, illetve a Windows 95, és a Windows 98 tulajdonságait. (A szimbólumok jelentése: *: teljesen megvalósított, +: részben megvalósított, –: nem megvalósított.)

Látható, hogy az NT 5.0 az összes, az ábrában felsorolt kedvező tulajdonsággal rendelkezni fog, egyet kivéve: Az NT nem lesz képes az összes Windows 3.1-es és DOS alkalmazást futtatni. Ezt a tulajdonságot nem is szándékoztak megvalósítani a fejlesztők, hiszen az NT struktúrájában is különbö­zik a régi rendszerektől, ami lehetetlenné teszi számos alkalmazás futtatását.

6.2. ábra. ábra - Operációs rendszerek összehasonlítása

Operációs rendszerek összehasonlítása


A Microsoft operációs rendszerekről szólva a felsorolást a teljesség kedvéért még ki kell egészíteni a Windows CE operációs rendszerrel. A Windows CE a korábban említett rendszerekhez nagyon hasonló felhasználói felülettel, és részben közös programozói felülettel rendelkezik. A legfontosabb különbség, hogy a Windows CE valósidejű (on-line) rendszerekhez készült, vagyis garantálja a limitált válaszidőt. Ez természetesen a többi rendszertől lényegesen eltérő belső felépítést eredményez. A Windows CE rendszerek felépítéséről, működéséről a továbbiakban csak utalások szintjén lesz szó.

6.1.3. Az NT felépítésének fő jellemzői

A Windows NT felépítése rétegszerkezetű, számos alrendszerének működése a kliens-szerver architektúrára alapul.

Az NT jól definiált rétegekre bomlik, mely rétegek szigorúan interfészeken keresztül érintkeznek. A szolgáltatások java részénél kliens-szerver architektúrát találunk.

Nem tartották viszont szigorúan be az NT fejlesztői azt az elvet, hogy amennyiben mód van rá, a szolgáltató folyamatok felhasználói (user) módban fussanak és a rendszer a mikrokernelen keresztül érje el a hardvert.

Ez azért van így, mert bizonyos szolgáltatásokat nem hatékony felhasználói módban megvalósítani. Így kernel módba azok a szolgáltatások kerültek, amelyek intenzíven használják a hardvert és futásuk gyorsaságára az egész rendszer teljesítménye érzékeny, vagyis a user módban történő megvalósításuk a rendszert nagyon lelassítaná a gyakori környezetváltás miatt. (Ilyen például a cache manager, a memóriakezelő, az objektumkezelő és biztonsági alrendszer, vagy a WIN32-es alrendszer grafikus szolgáltatásokat nyújtó részei stb.)

6.1.4. Az NT objektumorientált szemlélete

A Windows NT fejlesztésénél fontos szempont volt az objektumorientált szemlélet használata. A fejlesztők igyekeztek a rendszert jól meghatározható funkcionalitású objektumokból felépíteni, mely objektumok egymással az előre definiált interfészükön keresztül érintkeznek. A határozott törekvés ellenére, a hardverközeli programozás szüksége miatt azonban, csak az alábbi két objektumorientált tulajdonságot valósítja meg:

  • adatrejtés, az operációs rendszer objektumai csak saját adataikat érhetik el.

  • interfész-használat, az objektumok formális interfészt használnak egymás elérésére.

Ugyanakkor azonban a Windows NT nem valósítja meg a következő objektumorientált tulajdonságokat:

  • Polimorfizmus. Azonos néven különböző objektumokat érhetünk el. Attól függ, hogy milyen objektumra hivatkozunk az adott azonosítóval, hogy mi az azonosító használatának környezete. Például polimorfizmus, amikor azonos névvel, de különböző paraméterlistával definiálunk függvényeket egy objektumon belül. Ekkor az aktuálisan használt paraméterek típusától függ, hogy melyik funkciót érjünk el.

  • Öröklődés. Az objektumoknak hierarchikus származási rendszere létezik. A származtatott objektum örökli, és így használhatja a szülő megfelelően definiált adatelemeit illetve függvényeit.

  • Dinamikus adattípus kötés. Definiálhatóak adattípussal paraméterezett objektumok.