Windows-arkkitehtuuri

Wikiopistosta
Eräs tapa esittää nykyisin käytössä oleva Windows-arkkitehtuuri.

Windowsin historia[muokkaa]

Microsoft Corporation[1] on yhdysvaltalainen ohjelmistoalan yritys, jonka perustivat Bill Gates ja Paul Allen. Microsoft perustettiin vuonna 1975 ja siitä on kasvanut vuosien saatossa maailman suurin ohjelmistoalan yritys. Microsoft kehittää, valmistaa, lisensoi ja tukee palveluita tietotekniikkaan liittyen. Windows-käyttöjärjestelmä on Microsoftin tunnetuin tuote muiden ohjelmistojen, muun muassa Officen ohessa.

Vuonna[2] 1985 Microsoft esitteli ensimmäisen Microsoft Windows -version, joka oli graafinen laajennus DOS-käyttöjärjestelmään. Tällä pyrittiin helpottamaan IBM:n valmistamien tietokoneiden käyttöä. Windows mahdollisti myös tietokoneiden koko muistin hyödyntämisen MS-DOSin 640 kiB:n rajoituksen sijasta. Windows 1.0 sisälsi muutaman ohjelman muun muassa laskimen, kellon, kalenterin, muistion ja ohjauspaneelin. Vuonna 1987 julkaistiin Windows 2.0, joka oli paranneltu versio edeltäjästään esimerkiksi muistin hallinnassa.

Vuonna 1989 marraskuussa Microsoft aloitti Windows NT:n kehityksen. Tähän aikaan Microsoft oli IBM:n alihankkijana OS/2 käyttöjärjestelmän kehityksessä, mutta erosi IBM:stä Windowsin saaman suosion vuoksi. Tämän seurauksena Microsoft nimesi IBM:n kanssa kehitetyn käyttöjärjestelmän Windows NT:ksi.

Windows NT kehityskulku ja esittely[muokkaa]

Windows NT:n eri versiot
Versio Myyntinimike Julkaisupäivä
3.1 Windows NT 3.1 27.7.1993
3.5 Windows NT 3.5 21.9.1994
3.51 Windows NT 3.51 30.5.1995
4.0 Windows NT 4.0 24.8.1996
5.0 Windows 2000 17.2.2000, 26.9.2000
5.1 Windows XP 25.10.2001
5.2 Windows XP (2003 versio) 28.3.2003
6.0 Windows Vista 30.11.2006, 30.1.2007
6.1 Windows 7 22.10.2009
6.2 Windows 8 26.10.2011
6.3 Windows 8.1 18.10.2012
10.0 Windows 10 29.7.2015

Windows NT[3] on käyttöjärjestelmäperhe Microsoftilta. Ensimmäinen Windows NT versio oli 3.1. Se julkaistiin 1993 ja oli myös ensimmäinen 32-bittinen Windows. Lyhenne NT tulee sanoista ”New Technology”. Windows NT on korkeantason ohjelmointikieliin pohjautuva usean käyttäjän käyttöjärjestelmä ja hyvin samantapainen kuin UNIX. Windows NT on koodattu käyttäen C ja C++ kieltä. C:tä käytettiin kerneliin ja C++ user-modeen. Versiossa 3.1:ssa oli myös alkuperäisistä DOS pohjaisista käyttöjärjestelmistä poiketen kunnollinen muistin suojaus vaativia moniajosovelluksia varten, minkä ansiosta se oli huomattavasti luotettavampi kuin DOS-pohjaiset versiot. NT oli myös yksi ensimmäisistä käyttöjärjestelmistä, joka käytti sisäisesti Unicode-merkistöä. Useaa arkkitehtuuria tukeva NT tuki muun muassa IA-31, MIPS ja DEC Alphaa. Lisäksi myöhemmin lisättiin PowerPC, Itanium x64 sekä ARM. NT:n versiointi aloitettiin suoraan 3.1:sta, koska IBM julkaisi OS/2:sta seuraavaksi version 3.

Vuonna 1994 julkaistiin 3.1 päivitetty versio Windows NT 3.5[4]. Tämän version tavoitteina oli parantaa käyttöjärjestelmän suorituskykyä. Projekti sai nimekseen ”Daytona” viitaten Daytonan valtatiehen Floridassa. Kyseinen versio käytti edeltäjäänsä verrattuna vähemmän muistia. Graafinen käyttöjärjestelmä päivitettiin vastaamaan Windows for Workgroups 3.11:sta ja Winsock sekä TCP/IP tuki integroitiin.

Vuonna 1995 julkaistiin Windows NT 3.51[5], joka oli hieman paranneltu versio 3.5:sta. Tähän versioon kuului muun muassa 3D-tuki OpenGL:ään sekä PCMCIA ja Windows 95 yleiset toiminnot. 3.51 pystyi helposti käynnistämään suuren osan Win32 ohjelmista.

Seuraava versio 4.0[6][7] toi mukanaan Windows 95 tyylisen käyttöliittymän NT perheeseen. Uuden version mukana tulivat esimerkiksi Windows Shell, File Explorer sekä termistö ”My”, johon kuului esimerkiksi ”My Computer”. Suurin parannus oli Windows 95:n shellin lisääminen. Muita parannuksia olivat GDI:n (Graphics Device Interface) siirtäminen ydintilaan CSRSS-prosessista, jossa se aiemmissa versioissa on ollut. Tämä paransi huomattavasti 4.0:n suorituskykyä. Lisäksi skaalautuvuutta ja arkkitehtuuria paranneltiin.

Vaikka Windows NT 4.0 tarjosi vakaamman käyttöjärjestelmän verrattuna Windows 95:een, oli se myös vähemmän joustava työpöytäperspektiivissä. Windows 95 oli myös paljon käyttäjäystävällisempi käyttöjärjestelmä tietyissä huolto- ja hallintatehtävissä. Windows NT 4.0:sta puutui myös USB-tuki, joka lisättiin Windows 95:n OEM-versioihin OSR 2.1 -julkaisussa.

Vaikka 4.0:ssa oli puutteita oli se silti ainoa suosiota saanut Windows NT versio. Windows NT 3.0 sekä myöhemmät versiot 3.5 ja 3.51 eivät menestyneet hyvin suurista keskusmuisti vaatimuksista johtuen. 4.0 oli viimeinen NT nimikkeellä myyty Windows. Nimi vaihtui Windows 2000:een, vaikka 2000 pohjautuukin 4.0:aan.

Käyttäjätila[muokkaa]

Käyttäjätila rakentuu prosesseista ja DLL-tiedostoista (dynamic-link library, rutiinkikirjastosta). Kernelin ja käyttäjätilan välistä rajapintaa kutsutaan ympäristön alijärjestelmäksi, jolla ei ole kuitenkaan suoraa pääsyä laitteistoon. Jokainen alijärjestelmä toteuttaa eri API-sarjan ja näitä alijärjestelmiä voi olla useita. Tällä on tarkoitus tukea sovelluksia, jotka ovat kirjoitettu eri tyyppisille käyttöjärjestelmille.

Windows NT: n käyttäjämoodikerros koostuu "ympäristöalijärjestelmistä" (environment subsystem), jotka ylläpitävät monille käyttöjärjestelmille kirjoitettuja sovelluksia, ja "integroivasta alijärjestelmästä", joka käyttää järjestelmäspesifisiä toimintoja ympäristön osajärjestelmien puolesta. [8]

Pääasiallisia osa-alajärjestelmiä [9]

  • Win32-osajärjestelmä voi käyttää 32-bittisiä Windows-sovelluksia. Se sisältää konsolin eli käyttöliittymän(win32 konsoli on tekstipohjainen, eli sillä ei ole graafisia ominaisuuksia) sekä tuen teksti-ikkunalle, sammuttamiseen ja laitevirheiden käsittelyn kaikille muille ympäristöalijärjestelmille. Win32-ympäristön osajärjestelmäprosessi (csrss.exe) sisältää myös ikkunanhallintatoiminnon. Se käsittelee syötteitä (esimerkiksi näppäimistöstä ja hiirestä) ja välittää sitten viestejä sovelluksille, jotka tarvitsevat tämän syötteen vastaanottamista. Jokainen sovellus vastaa omien ikkunoiden ja valikoiden piirtämisestä tai virkistämisestä vastauksena näihin viesteihin.
  • OS/2-osajärjestelmä tukee 16 bittistä OS/2 sovelluksia ja jäljittelee OS/2 1.x, mutta ei tue 32- bittisiä tai graafisia OS/2 sovelluksia.  Windows NT Add-On Subsystem for Presentation Manager -järjestelmän lataaminen vaaditan graafisten ohjelmien toimimiseksi. Viimeisen kerran OS/2-osajärjestelmää käytettiin Windows 2000:ssa.

Integroiva alijärjestelmä koostuu työasema palveluista, palvelin palveluista sekä turvallisuus osasta.

  • Turva-alijärjestelmä käsittelee suojaustunnuksia, myöntää tai estää käyttöoikeuksien käyttöoikeudet käyttöoikeuksien perusteella, käsittelee sisäänkirjautumispyynnöt ja käynnistää sisäänkirjautumisen todennuksen ja määrittää, mitä Windows NT: n on tarkastettava, mitä järjestelmäresursseja on tarkastettava.
  • Työasema-palvelu toteuttaa verkon uudelleenohjaajan, joka on Windows-tiedoston ja tulostuksen jakamisen asiakasohjelma, joka toteuttaa paikallisia pyyntöjä etätiedostoihin ja tulostimiin "uudelleenohjaamalla" ne asianmukaisiin verkon palvelimiin.
  • Palvelinpalvelun avulla muut verkossa olevat tietokoneet voivat käyttää paikallisen järjestelmän tarjoamia tiedostoja ja jaettuja tulostimia.

Useat ajurit toimivat ytimen tilassa, jotkut ohjaimet voivat toimia käyttäjätilassa.

Käyttäjätilasovellusta käynnistettäessä Windows luo sovelluksen prosessin. Tällä tavoin sovellukselle tarjotaan yksityinen virtuaalinen osoitetila ja käsittelytaulukko. Virtuaalisen osoiteavaruuden yksityisyydestä johtuen yksittäinen sovellus ei voi muuttaa toiseen sovellukseen kuuluvaa tietoa. Satunnaisen sovelluksen kaatuminen ei vaikuta muihin sovelluksiin tai käyttöjärjestelmään niiden erillisestä toiminnasta johtuen. Yksityisyyden lisäksi käyttäjätilan sovelluksen virtuaalinen osoiteavaruus on rajoitettu. Käyttäjätilassa toimiva keskusyksikkö ei pysty hyväksymään käyttöjärjestelmälle varattuja virtuaalisia osoitteita. Rajattu osoitetila rajoittaa sovellusta muuttamasta tai vahingoittamasta käyttöjärjestelmälle kriittisiä tietoja. [8]

Kernel-tila[muokkaa]

Executive[muokkaa]

Executive-kerros[10] on osa käyttöjärjestelmän matalinta tasoa, niin sanottua kernel-tilaa (Kernel mode). Kerros on jaettu useaan alijärjestelmään, jotka hallinnoivat siirräntää, järjestelmäresursseja, turvallisuutta ja prosesseja. Yhdessä näitä alijärjestelmäkomponentteja voidaan kutsua termillä Executive Services.

Object Managerin ymmärtämät objektityypit
Process Kokoelma suoritettavia säikeitä tietoineen.
Thread Suoritettavan koodin sisältävä säie.
Job Prosesseista muodostettu ryhmä.
File Tiedosto tai siirräntälaite.
File mapping object Kuvaa tiedoston virtuaalimuistiin.
Access token Sisältää tiedot objektin käyttöoikeuksista.
Event Tapahtumatieto, jonka avulla prosessit ovat tietoisia tapahtumista.
Semaphore/Mutex Mahdollistaa pääsyn resursseihin sarjallistamisen avulla.
Timer Ilmoittaa prosesseille aikaintervallien kulumisesta.
Key Windowsin rekisterin yksittäinen rekisteriavain.
Desktop Graafiset käyttöliittymäelementit sisältävä näyttönäkymä.
Clipboard Väliaikainen säilö muille objektityypeille.
WindowStation Kokonaisuus, joka sisältää joukon Desktop-objekteja,
yksittäisen Clipboard-objektin ja muita käyttäjäkohtaisia objekteja.
Symbolic link Viittaus toiseen objektiin, jonka kautta viittauksen
kohteena olevaa objektia voidaan käyttää.
Object Manager[8][11]
Object Manager -alijärjestelmä vastaa järjestelmäresurssien hallinnoimisesta ja jakamisesta muille Executive-kerroksen alijärjestelmille. Järjestelmäresurssien hallinnointi on keskitetty Object Managerille, jotta alijärjestelmissä olisi mahdollisimman vähän päällekkäisiä toimintoja. Näin menettelemällä vähennetään myös päällekkäisyyksien mukanaan tuomien ristiriitatilanteiden todennäköisyyttä.
Object Manager käsittelee kaikkia resursseja erityyppisinä objekteina, olipa kyse sitten tiedostojärjestelmästä tiedostoineen tai oheislaitteista. Objektin luonti on kaksivaiheinen prosessi. Prosessin ensimmäisessä vaiheessa objektille varataan tilaa ja muut tarvittavat resurssit. Toisessa vaiheessa Object Manager luovuttaa luodun objektin käytettäväksi alijärjestelmille. Alijärjestelmät hyödyntävät objektia tarvitsemiinsa toimiin, jonka jälkeen Object Manager tuhoaa objektin sen käydessä tarpeettomaksi.
Objektin tyyppi määrittää objektin toiminnot ja rakenteen. Tällainen objektipohjainen rakenne tekee Windowsista monessa mielessä oliopohjaisen käyttöjärjestelmän, vaikka se ei täytäkään kaikkia oliopohjaisuuden määritelmän vaatimuksia. Tyyppimääritelmien voidaankin ajatella koostuvan erilaisista monimuotoisista luokista, joiden avulla pystytään muodostamaan halutunlainen objekti kulloiseenkin tarpeeseen.
Jokainen luotu objektin ilmentymä sisältää nimen, parametrit, turvallisuuteen liittyvät määritteet sekä tiedot objektin tyypistä. Ilmentymä sisältää myös toiminnon ilmentymän lopettamiseksi sekä tiedon ilmentymään kohdistuvista viittauksista, joiden perusteella Object Manager määrittää, voidaanko ilmentymä tuhota.
Cache Manager[8]
Toimii läheisessä yhteistyössä kahden muun alijärjestelmän, Memory Managerin ja I/O Managerin, sekä siirräntäajurien kanssa. Cache Managerin tehtävänä on mahdollistaa välimuisti tavanomaisille tiedosto-/muistioperaatioille. Toiminta perustuu levylohkojen sijaan tiedostolohkojen käsittelyyn. Näin voidaan varmistaa luotettavat operaatiot niin paikallisten kuin verkkolevyillä sijaitsevienkin tiedostojen kanssa, hyödyntäen virtuaalimuistin tarjoamia mahdollisuuksia tiedostonkäsittelyn välimuistiratkaisuissa.
Configuration Manager[8]
Vastaa Windowsin rekisterin käsittelystä. Configuration Managerin kautta muut järjestelmät ja palvelut pystyvät käyttämään Windowsin rekisteriä, joka sisältää esimerkiksi järjestelmäkokoonpanon, sovellusten ja laitteiden määritystietoja.
I/O Manager[8]
Mahdollistaa siirrännän laitteiden ja käyttäjätilan välillä. I/O Manager muodostaa käyttäjätilan luku- ja kirjoituspyynnöistä niin sanottuja IRP-paketteja (I/O Request Packets), jotka sisältävät siirräntäpyyntöön liittyvät määritteet ja tiedot. Muodostetut paketit puolestaan välitetään eteenpäin laitteistoajureille, jotka käsittelevät varsinaisia laitteita.
Local Procedure Call (LPC)[8]
Määrittää ja tarjoaa kommunikaatiomenetelmät järjestelmän prosessien keskinäiseen viestintään. Menetelmiä käytetään käyttäjä- ja kernel-tilan sisäiseen viestintään sekä tilojen väliseen viestintään.
Memory Manager[8]
Hallinnoi virtuaalimuistia ja vastaa muistin suojaamisesta sekä sivuttamisesta keskusmuistin ja massamuistin välillä. Memory Manager antaa kaikille prosesseille käytettäväksi oman erillisen virtuaalimuistiavaruuden, johon muut prosessit eivät pääse käsiksi. Näin suojataan prosessien muistiavaruutta mahdolliselta muiden prosessien aiheuttamalta korruptoitumiselta.
Process Manager[8]
Hallinnoi prosesseja ja säikeitä sekä niiden luomista ja tuhoamista. Process Manager määrittää myös Job-käsitteen, jonka avulla useammasta samaan työhön liittyvästä prosessista voidaan muodostaa ryhmä. Yksittäisen ryhmän käsitteleminen on helpompaa kuin useamman yksittäisen prosessin, esimerkiksi silloin, kun haluttu työ on suoritettu ja kaikki työhön liittyvät prosessit voidaan lopettaa.
PnP Manager[8]
Tunnistaa järjestelmään liitetyt oheislaitteet ja vastaa oheislaitteiden tarvitsemien ajureiden asentamisesta ja reagoi tarvittaessa esimerkiksi oheislaitteiden irtikytkemiseen. PnP Manager toimii tiiviissä yhteistyössä käyttäjätilassa toimivan Plug and Play Servicen kanssa, joka vastaa esimerkiksi oheislaitteisiin liittyvien ilmoitusten ja käyttöliittymien välittämisestä käyttäjälle.
Power Manager[8]
Käsittelee virranhallintaan liittyviä tapahtumia, kuten sammuttaminen, lepotila ja horrostila. Tarvittaessa Power Manager välittää ajureille tiedon tapahtumista erityisinä IRP-paketteina (Power IRP).
Security Reference Monitor (SRM)[8]
Vastaa turvallisuuteen liittyvien asetusten ja palveluiden valvonnasta ja hallinnasta. Pääsylistojen (Access Control List, ACL) avulla määritetään ja säädellään pääsyä resursseihin.
Graphic Device Interface (GDI)[8]
Mahdollistaa vektorien piirtämisen ja väripalettien hyödyntämisen. Graphic Device Interface ei ole suoraan vastuussa ikkunoiden, valikoiden ja muiden käyttöliittymäkomponenttien piirtämisestä, vaan nämä tehtävät toteuttaa käyttäjätilassa toimiva Window Manager.

Kerneli[muokkaa]

Kerneli (Käyttöjärjestelmän ydin) on tietokoneohjelma käyttöjärjestelmän ytimessä. Se ohjaa tietokoneen toimintaa ja mahdollistaa ohjelmistojen sekä laitteiston välisen viestinnän. Sen toiminta tapahtuu kernel mode-ympäristössä [12], eli se on tehokas ja vahvasti suojattu ja sillä on vapaa pääsy tietokoneen resursseihin, kuten fyysiseen laitteistoon (CPU) ja muistipaikkoihin. Kerneli avautuu käyttöjärjestelmän käynnistyksen yhteydessä (alkulatausohjelman jälkeen) muodostaen virtuaalista muistia sekä prosesseja, joiden avulla koko muu käyttöjärjestelmä saadaan käyntiin [13].

Windows NT:n kerneli on tyypiltään hybridi, eli se yhdistää ja soveltaa kahden kernelin pääluokan (monoliittinen ydin ja mikroydin) ominaisuuksia. Rakenteeltaan Windows NT:n kerneli muistuttaa enemmän monoliittista käyttöjärjestelmää, sillä suurin osa sen systeemin komponenteista toimii samassa osoiteympäristössä kernelin kanssa [14]. Sillä on kuitenkin useita mikrokernelille ominaisia piirteitä, kuten emulointialijärjestelmien toiminta käyttäjätilan palvelinprosesseissa. Hybridi-luokan käyttö on hieman kiistanalainen, sillä tavalliset monoliittiset ytimet sekä hybridiytimet ovat hyvin samankaltaisia keskenään. Linus Torvalds onkin väheksynyt termiä ja pitää sitä vain markkinointina. [15]

Käyttöjärjestelmän arkkitehtuurissa kerneli sijoittuu Executive-palveluiden ja HAL-moduulin (Hardware Abstraction Layer) väliin. Tarkemmin kerneli koostuu joukosta funktioita NTOSKRNL.EXE:n sisällä, jotka suorittavat ja välittävät käyttöjärjestelmän kaikkein perustavimpia palveluita, kuten säikeiden ja keskeytysten aikataulutusta, poikkeusten ja paikannusten hoitamista ja myöhästyneitä menettelypyyntöjä. Kerneli on myös vastuussa laiteajureiden alustamisesta käyttöjärjestelmän käynnistyksen yhteydessä.

Kernel-tilan ajurit[muokkaa]

Windows NT käyttää laiteohjaimia vuorovaikuttaakseen käyttöjärjestelmään liitettävien laitteistojen kanssa [16]. Tämä vuorovaikutus ei tapahdu suoraan, vaan se suoritetaan kutsumalla HAL:in (Hardware Abstraction Layer) toimintoja, jotka sitten viestivät laitteiden kanssa. Lähes kaikki fyysiset komponentit tarvitsevat laiteohjaimia; näitä komponentteja ovat esimerkiksi oheislaitteet, kuten näytöt, hiiret, näppäimistöt, tulostimet, näytönohjaimet, jne.

Jokaisella laiteohjaimella on hyvin määritellyt järjestelmä- ja sisäiset rutiinit, joita se toimittaa muualle käyttöjärjestelmään. Ohjaimet voivat, tyypistään riippuen, toimia joko käyttäjä- tai kernel ympäristössä, ja niiden toiminta perustuu käyttöjärjestelmän syöttö- ja tulostusohjeiden (I/O-pyyntöpaketit) muuntamiseen sellaiseen muotoon, joita laite voi ymmärtää. Laiteajurit siis lisäävät abstraktiota, eli yksinkertaistavat viestintää, käyttöjärjestelmän ja laitteiden välillä.

I/O-pyyntöpaketit (I/O request packets - IRP) ovat kernel tilan rakenteita, joiden avulla Windows Driver Model (WDM) ja Windows NT:n laiteohjaimet voivat kommunikoida keskenään ja käyttöjärjestelmän kanssa. IRP:t sisältävät kaiken sen informaation, jonka ohjain tarvitsee suorittaakseen sille annetun pyynnön, sekä palauttaakseen saadun tuloksen. WDM mahdollistaa ainutlaatuisen lähestymistavan kernel tilassa toimiviin laiteohjaimiin. Se toteuttaa laiteohjaimille kerroksittaisen arkkitehtuurin, jossa jokaista laitetta ohjaa pino ajureita. Näiden ajureiden ei kuitenkaan tarvitse vaikuttaa toisiinsa, vaan ne voivat eristää ja kommunikoida vain tietyn laitteiston osan kanssa.

WDM määrittelee ajurit kolmeen luokkaan: toiminta- eli funktioajurit, suodatinajurit ja väyläajurit. Funktioajuri [17] on laitteen pääohjain, joka on koodattu laitteeseen valmistajan toimesta. Se hallitsee viestintää käyttöjärjestelmän kanssa ja tarjoaa rajapinnan, jossa muut ajurit voivat toimia. Väyläajurit [18] tunnistavat emolevyn väylille liittyvät laitteet ja mahdollistavat pääsyn niihin. Suodatinajurit [19] ovat valinnaisia, ja toteuttavat erikoispalveluita kuten salausta tai salauksen purkua.

Windows Driver Model (WDM) on vanha viitekehys Windowsin laiteohjaimille, joka esiteltiin Windows 98:n ja 2000:n kanssa. Se korvasi aiemmin käytetyn VxD:n sekä Windows NT Driver Model:in ja yhtenäisti eri Windows-versioille kirjoitettavien laiteohjainten malleja, helpottaen laiteohjainten koodaamista Windowsille. Tätä täydentää uudempi malli - Windows Driver Frameworks (WDF) – jota on helpompi käyttää, ja joka tuo mukanaan kaksi eri toteutusmuotoa, Kernel-Mode Driver Framework (KMDF) ja User-Mode Driver Framework (UMDF). Nämä mallit pyrkivät lisäämään järjestelmän vakautta ja mahdollistavat olio-keskeisen ohjelmointimallin laiteajureiden kehittämiseen.

Uudemmat Windows-versiot käyttävät Plug and Play-ohjainmallia, mikä tukee laitteiden dynaamista liittämistä tietokoneeseen. Käyttöjärjestelmä havaitsee, kun uusi laite liitetään koneeseen ja asentaa siihen vaadittavat ajurit automaattisesti.

Laiteohjaimet käyttävät usein oikosiirtoa (Direct Memory Access – DMA), joka mahdollistaa tiedon kirjoittamisen mielivaltaisesti tietokoneen fyysiseen muistiin. Ne siis voivat toimia kernel tilassa [20], ja niillä on siten pääsy koko käyttöjärjestelmään. Laiteohjaimet täytyykin suunnitella ja rakentaa huolellisesti, sillä virheet kernel tilassa aiheuttavat usein koko järjestelmän kaatumisen; myös käyttäjätilan virheet laiteohjaimissa ovat usein vaikeasti korjattavia. Laiteohjaimissa on myös aiemmin havaittu useita haavoittuvuuksia, jotka mahdollistavat koodin etäsuorittamisen ja jonka avulla käyttöjärjestelmään voidaan päästä käsiksi. [21]

Hardware Abstraction Layer (HAL)[muokkaa]

Mikä HAL on?

HAL eli vapaasti suomennettuna laiteabstraktiokerros, tarkoittaa abstraktiokerrosta tietokoneen ulkoisten fyysisten laitteiden (esimerkiksi kovalevy, äänikortti, näppäimistö, hiiri jne.) ja tietokoneen käyttöjärjestelmällä toimivien ohjelmistojen välillä. HAL operoi Kernelin alla (tai tarkemmin sanottuna yhteistyössä sen kanssa) ja sen tarkoitus on ’piilottaa’ kaikki ulkoisten laitteiden erilaisuudet ja siten luoda tasainen pohja ohjelmien ja ohjelmistojen käytölle riippumatta siitä mitä ulkoista fyysistä laitetta yksittäinen käyttöjärjestelmän ohjelma tarvitsee käyttää. Se on erittäin olennainen, mutta käyttäjälle täysin huomaamaton osa Windows-käyttöjärjestelmän toimintaa. HAL:sta on olemassa useita mahdollisia eri versioita, ja oikea versio valitaan aina Windowsia asennettaessa. [10]

HAL:n tuoma muutos:

Ennen HAL:n olemassaoloa, jokaisen ohjelmiston ja ohjelman täytyi olla yhteydessä suoraan ulkoiseen laitteistoon erillisten ajureiden avulla itse, mikä rajoitti ja hidasti tekemistä valtavan paljon. HAL:n tulon myötä, tapahtuu kaikki laitteiston ja ohjelmiston välinen viestintä HAL:n kautta. Tämä mahdollistaa myös yhtäaikaisen saman laitteiston käytön eri ohjelmistoille. Sen myötä ohjelmistojen tekijöiden ei tarvinnut enää miettiä kuinka erilaiset laitteistot toimivat, ja tehdä aina erillistä ratkaisua jokaiseen ohjelmistoon sen mukaan, vaan yksinkertaisesti tehdä ohjelmisto, joka toimii yhteistyössä HAL:n kanssa. Tämän jälkeen HAL ajureiden avulla on ensin yhteydessä laitteistoon ja sitten takaisin käyttöjärjestelmään.

HAL:n tuomia etuja lyhyesti:

  • Sallii ohjelmien ottaa niin paljon suorituskykyä irti laitteistosta kuin mahdollista.
  • Mahdollistaa käyttöjärjestelmän toimimisen riippumatta laitteiston arkkitehtuurin sopivuudesta.
  • Mahdollistaa ohjelmistojen kommunikoinnin laitteiston välillä yleisellä tasolla.
  • Helpottaa siirrettävyyttä eli saman ohjelman käytettävyyttä erilaisissa ympäristöissä.[22]

Katso myös[muokkaa]

Lähteet[muokkaa]

  1. Seilonen, Jaakko 2012, 8-9. "Windows-käyttöjärjestelmien kehitys" Viitattu 18.11.2018.
  2. Computer Hope."Microsoft Windows history". Viitattu 18.11.2018.
  3. Old Computer Museum."Windows NT 3.1" Viitattu 18.11.2018.
  4. Old Computer Museum."Windows NT 3.5" Viitattu 18.11.2018.
  5. Old COmputer Museum."Windows NT 3.51" Viitattu 18.11.2018.
  6. Wash, Redmond."Microsoft Announces the Release of Windows NT Workstation 4.0"Microsoft News. Viitattu 18.11.2018.
  7. Old Computer Museum."Windows NT 4.0" Viitattu 18.11.2018.
  8. 8,00 8,01 8,02 8,03 8,04 8,05 8,06 8,07 8,08 8,09 8,10 8,11 8,12 Ionescu, Alex; Russinovich, Mark E.; Solomon, David A.; Yosifovich, Pavel (2017). Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th Edition). Microsoft Press. ISBN 978-0735684188.
  9. Eliot Graff, Nathan Bazan. "User mode and kernel mode". Microsoft Docs. Viitattu 20.11.2018.
  10. 10,0 10,1 Roman, Steven. "Windows Architecture". Microsoft Docs. Viitattu 17.11.2018.
  11. Russinovich, Mark. "Inside NT's Object Manager". Windows IT Pro. Viitattu 17.11.2018.
  12. "Understanding User and Kernel Mode" Viitattu 19.11.2018.
  13. "What happens when you switch on a computer?" Viitattu 19.11.2018.
  14. Grove, Mick."Does Windows have a Microkernel or Monolithic kernel?" Viitattu 19.11.2018.
  15. Torvalds, Linus. "Hybrid kernel, not NT" Viitattu 19.11.2018.
  16. Rouse, Margaret."Device Driver" Viitattu 19.11.2018.
  17. Hudek, Ted; Sherer,Tim. "Function Drivers" Microsoft Docs. Viitattu 19.11.2018.
  18. Hudek, Ted; Sherer, Tim."Bus Drivers" Microsoft Docs. Viitattu 19.11.2018.
  19. Hudek, Ted; Sherer, Tim. "Filter Drivers" Microsoft Docs. Viitattu 19.11.2018.
  20. "What is Kernel Mode Driver?" Viitattu 19.11.2018.
  21. Marshall, Don. "Driver security checklist" Microsoft Docs. Viitattu 19.11.2018.
  22. "Hardware Abstraction Layer (HAL)" Viitattu 20.11.2018.