Ero sivun ”Käyttöjärjestelmä” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Ipr1 (keskustelu | muokkaukset)
Iojr (keskustelu | muokkaukset)
Rivi 8: Rivi 8:
Tällaisia perustavanlaatuisia käyttöongelmia ratkaisemaan kehitettiin käyttöjärjestelmä, joka sijoittuu laitteiston ja suoritettavan sovelluksen väliin. Käyttöjärjestelmään ohjelmoitiin käytettävien laitteistojen monimutkaiset ohjauskäskyt, ja nämä tarjottiin selkeinä järjestelmäkutsuina ohjelmistojen kehittäjille.
Tällaisia perustavanlaatuisia käyttöongelmia ratkaisemaan kehitettiin käyttöjärjestelmä, joka sijoittuu laitteiston ja suoritettavan sovelluksen väliin. Käyttöjärjestelmään ohjelmoitiin käytettävien laitteistojen monimutkaiset ohjauskäskyt, ja nämä tarjottiin selkeinä järjestelmäkutsuina ohjelmistojen kehittäjille.


Ensimmäiset käyttöjärjestelmät suunniteltiin 1950– ja 1960–luvuilla. Ne laadittiin prosessien suoritusnopeutta ajatellen monoliittisiksi, yhtenä binääritiedostona toimiviksi ydintilassa.<ref name=Herder>http://www.usenix.org/publications/login/2006-04/openpdfs/herder.pdf</ref> Ensimmäisten käyttöjärjestelmien muistirajoitus oli vain 32 tuhatta sanaa, mikä esti monimutkaisten käyttöjärjestelmien ohjelmoimisen. Niinpä käyttöjärjestelmät pysyivät helposti ohjelmoitavina. Teknisen kehityksen myötä käyttöjärjestelmien kokorajoitukset poistuivat. Tämä johti käyttöjärjestelmiin, jotka sisälsivät miljoonia rivejä koodia. Ohjelmakoodin monimutkaistumisen vuoksi harva ohjelmoija tunsi enää käyttöjärjestelmän toiminnan kokonaisuudessaan.<ref name=Herder />
Ensimmäiset käyttöjärjestelmät suunniteltiin 1950- ja 1960-luvuilla. Ne laadittiin prosessien suoritusnopeutta ajatellen monoliittisiksi, yhtenä binääritiedostona toimiviksi ydintilassa.<ref name=Herder>http://www.usenix.org/publications/login/2006-04/openpdfs/herder.pdf</ref> Ensimmäisten käyttöjärjestelmien muistirajoitus oli vain 32 tuhatta sanaa, mikä esti monimutkaisten käyttöjärjestelmien ohjelmoimisen. Niinpä käyttöjärjestelmät pysyivät helposti ohjelmoitavina. Teknisen kehityksen myötä käyttöjärjestelmien kokorajoitukset poistuivat. Tämä johti käyttöjärjestelmiin, jotka sisälsivät miljoonia rivejä koodia. Ohjelmakoodin monimutkaistumisen vuoksi harva ohjelmoija tunsi enää käyttöjärjestelmän toiminnan kokonaisuudessaan.<ref name=Herder />


== Käyttöjärjestelmärakenteet ==
== Käyttöjärjestelmärakenteet ==

Versio 5. helmikuuta 2017 kello 16.45

Käyttöjärjestelmä on keskeinen tietokoneen ohjelmisto. Se mahdollistaa muiden ohjelmien toiminnan. Se hallinnoi tietokoneen resursseja, luo laitteiston yksityiskohdista riippumattoman operointialustan ja järjestelmäkutsut. Järjestelmäkutsuihin kuuluu korkeamman tason käsitteitä, kuten tiedostojärjestelmä, virtuaalimuisti, muistinhallinta ja verkkoprotokollat sekä niihin liittyviä operaatioita ja erinäisiä käytäntöjä. Myös erilaiset standardit, kuten POSIX tai sitä laajentava LSB, määrittelevät käyttöjärjestelmän useita satoja järjestelmäkutsuja.

Historia

Ensimmäisissä tietokoneissa ei vielä ollut käyttöjärjestelmää. Ohjelmat kirjoitettiin reikäkorteille, paperi- tai magneettinauhoille, ja niille annettiin tietty suoritusaika tietokoneella. Jokainen suoritettava ohjelma piti ohjelmoida yksilöllisesti tietylle tietokoneelle, ja ohjelman tuli hallita kaikkia tietokoneen komponentteja ja oheislaitteita. Useiden ohjelmien samanaikainen käyttäminen oli hankalaa ja aikaa vievää, koska moniajoa ei ollut. Jos halusi suorittaa ohjelman uudelleen toisella syötteellä (input, lähtöarvo), piti ensin toinen ohjelma ladata koneeseen ja suorittaa se, ja sen jälkeen vaihtaa jälleen takaisin alkuperäiseen ohjelmaan, kelata se oikeaan kohtaan nauhaa tai levyä ja antaa itse toisen ohjelman syöte (input, lähtöarvo) kyseisen ohjelman lähteenä (output, lopputuloksena). Ohjelman suorittaminen toisenlaisella tietokoneella vaati ohjelman ohjauskäskyjen kirjoittamista uudelleen toisen tietokoneen laitekäskyjen mukaiseksi. Tämä hidasti ohjelmien käyttämistä muussa kuin samantyyppisessä tietokoneessa.[1]

Tällaisia perustavanlaatuisia käyttöongelmia ratkaisemaan kehitettiin käyttöjärjestelmä, joka sijoittuu laitteiston ja suoritettavan sovelluksen väliin. Käyttöjärjestelmään ohjelmoitiin käytettävien laitteistojen monimutkaiset ohjauskäskyt, ja nämä tarjottiin selkeinä järjestelmäkutsuina ohjelmistojen kehittäjille.

Ensimmäiset käyttöjärjestelmät suunniteltiin 1950- ja 1960-luvuilla. Ne laadittiin prosessien suoritusnopeutta ajatellen monoliittisiksi, yhtenä binääritiedostona toimiviksi ydintilassa.[2] Ensimmäisten käyttöjärjestelmien muistirajoitus oli vain 32 tuhatta sanaa, mikä esti monimutkaisten käyttöjärjestelmien ohjelmoimisen. Niinpä käyttöjärjestelmät pysyivät helposti ohjelmoitavina. Teknisen kehityksen myötä käyttöjärjestelmien kokorajoitukset poistuivat. Tämä johti käyttöjärjestelmiin, jotka sisälsivät miljoonia rivejä koodia. Ohjelmakoodin monimutkaistumisen vuoksi harva ohjelmoija tunsi enää käyttöjärjestelmän toiminnan kokonaisuudessaan.[2]

Käyttöjärjestelmärakenteet

Käyttöjärjestelmä-rakenteet
Kaksi Käyttöjärjestelmä-rakenteiden pääluokkaa

Käyttöjärjestelmään voi kuulua mikroytimen lisäksi useita käyttöjärjestelmämoduuleita sijoitettuina joko ydin- tai käyttäjätilaan kaikkien toimiessa supervisor-tilassa mutta kahdessa osoiteavaruudessa (ydin- sekä käyttäjätilassa). Toisaalta käyttöjärjestelmä voi muodostua pelkästään monoliittisesta ytimestä, mikä on alkuperäinen käyttöjärjestelmän toteutustapa. Tuolloin käyttöjärjestelmä toimii yksinään ydin- ja supervisor-tilassa.

Komentorivisovellukset, järjestelmäsovellukset, sovellusohjelmat sekä niillä toteutettavat erilaiset käyttöliittymät, eivät kuulu käyttöjärjestelmään.

Toiminnallisuuksia listaamalla ei voida yksiselitteisesti määritellä, mitä käyttöjärjestelmään kuuluu, vaan se voidaan määritellä vain rakennekaaviosta ja toteutustavasta tapauskohtaisesti. Ohjelmiston on täytettävä tietyt määreet, jotta sitä voidaan kutsua käyttöjärjestelmäksi, mutta enemmänkin ominaisuuksia se saa sisältää. [3]

Käyttöjärjestelmän kahdella päärakenteella on erilaisia hyötyjä ja haittoja, joihin liittyen on aikoinaan käyty kiihkeitä väittelyitä uutisryhmissä [4].

Käyttöjärjestelmien erilaisia rakenteita on kehitetty aikojen saatossa, yleensä sovitellen kahta päärakennetta (monoliittinen – mikroydin), mutta myös toteuttaen erityisiä teknisiä rakenteita soveltavia, kuten eksoydin- tai nanoydinpohjaisia järjestelmiä. Lisäksi on toteutettu sekavia ratkaisuja toteuttavia käyttöjärjestelmiä, kuten niin kutsuttu hybridiydin. Hybridiytimen monet asiantuntijat ovat leimanneet pelkästään markkinoinniksi, sillä sen mikroydin on rakenteellinen.

Linus Torvalds, Linux-käyttöjärjestelmän luoja, on sanonut:
Mitä koko hybrid kernel -juttuun tulee, siinä on kyse vain markkinoinnista. Se on mennyt jotenkin näin, että "mikrokerneleillä oli niin hyvä PR-arvo... Miten saadaan PR:ää meidän kernelillemme? Taisin keksiä, annetaan sille jokin hauska nimi ja yritetään saada sille kaikki se PR-etu, mitä tuolla toisella järjestelmällä oli..."[5]

Erilaiset käyttöjärjestelmärakenteet ovat pääpiirteittäin selkeitä, mutta ne voivat sisältää tiettyjä ideoita toisista rakenteista. Esimerkiksi monoliittinen käyttöjärjestelmä voi olla modulaarinen siten, ettei käyttöjärjestelmä ole yksi binääritiedosto, vaan osa järjestelmän toiminnoista, kuten laiteajurit, ovat erillisiä tiedostoja. Näiden tiedostojen liitos itse ytimeen on tiukka: kun moduuli ladataan kiintolevyltä muistiin, se toimii kuin käyttöjärjestelmä olisi yksi binääritiedosto eli käyttöjärjestelmä toimii ilman lapsiprosesseja. Modulaarisuus voi olla myös suoritustavassa, missä muut käyttöjärjestelmän moduulit toimivat omina suojattuina prosesseina, joita mikroydin hallitsee.

Mikrorakenne

Uudempi ja nykyään suosituin käyttöjärjestelmärakenne on mikroydin, jossa käyttöjärjestelmä on pilkottu pelkistetyksi ytimeksi sekä käyttöjärjestelmämoduuleihin, jotka toteuttavat esimerkiksi muistinhallinnan, tiedostojärjestelmät ja verkkoprotokollat. Koska pelkistetty ydin toimii yksinään ydintilassa ja muut käyttöjärjestelmän osat käyttäjätilassa, joudutaan järjestelmäkutsun tullessa tietoa siirtämään tarvittaessa eri moduulien välillä että ydintilan kautta kierrätettynä vaihtaen tieto ydintilan ja käyttäjätilan osoiteavaruuden rajalla, joka johtaa viiveisiin käskyjen suorituksessa. Pahimmillaan käyttöjärjestelmä toimii 50 % hitaammin kuin monoliittinen, parhaimmillaan taas vain 10 % hitaammin. Nykyisillä tietokoneilla suorituskyvyn ero jää melkein mitättömäksi.

Mikroytimisen käyttöjärjestelmän suosioon on useita teoreettisia syitä: tietoturva ja helppo ohjelmoitavuus. Erilaiset tutkimukset ovat näyttäneet toteen, että tavallisessa ohjelmassa on 1–20 virhettä jokaista 1 000 riviä koodia kohden. Käyttöjärjestelmät ovat paljon monimutkaisempia kuin tavalliset ohjelmat tai laitteistoajurit, joissa tyypillisesti on enemmän virheitä tuhannella rivillä koodia kuin muussa osassa käyttöjärjestelmää [2].

Rakenteeltaan mikroytiminen käyttöjärjestelmä on modulaarinen, ja jokainen moduuli on suojattu vielä toisista moduuleista. Tällöin yhden moduulin kaatuessa vain kyseinen käyttöjärjestelmäpalvelu kaatuu, mutta muut jäävät toimintaan. Jokainen laiteajuri on myös suojattu, ja tällöin yhden laiteajurin kaatuessa vain kyseinen laite katoaa pois käytöstä siksi aikaa kun moduuli ladataan uudelleen käyttöön.

Monoliittinen rakenne

Monoliittisen käyttöjärjestelmän kohdalla virhe ajurissa tai käyttöjärjestelmän toiminnoissa johtaa käyttöjärjestelmän kaatumiseen. Tästä on useimmiten merkkinä "Kernel panic!" -ilmoitus. Monoliittinen käyttöjärjestelmä voi olla myös modulaarinen. Tällöin käyttöjärjestelmä ei ole vain yksi binääritiedosto. Osa toiminnoista ja ajureista on omina tiedostoina, jotka ladataan tarvittaessa RAM-muistiin. Modulaarisuudella saadaan käyttöjärjestelmän kokoa pienennettyä sekä vakautta lisättyä, kun vain tarvittaessa tietyt toiminnot ovat käynnissä. Tämä myös vähentää tarvetta asentaa levylle useita versioita käyttöjärjestelmästä aina erilaisilla asetuksilla eri tilanteisiin, sillä modulaarisuuden ansiosta käyttöjärjestelmän ominaisuuksia voidaan vaihdella lataamalla tai poistamalla lennossa moduuleja.

Perinteinen monoliittinen käyttöjärjestelmä on nopea. Se ei kuluta turhaan prosessorin kellojaksoja suorittaakseen sanomavälitystä (overhead) käyttöjärjestelmäpalveluiden välillä vaan suorittaa kaikki käyttöjärjestelmän toiminnot yhdessä osoiteavaruudessa. Tällöin yhden järjestelmäkutsun antaminen toimii nopeammin kuin sanomavälitys (IPC).

Ottaen huomioon monoliittisen käyttöjärjestelmän miljoonat rivit koodia yhdessä osoiteavaruudessa, joiden toimintoa kukaan ei kunnolla ymmärrä kokonaisuudessaan, se johtaa useisiin käyttöjärjestelmätason virheisiin ja tietoturvaongelmiin [2].

Monoliittisen ja mikroytimen käyttöjärjestelmämoduuleita ei pidä sekoittaa toisiinsa. Monoliittisessa käyttöjärjestelmässä moduuli on aina käännetty tiettyä ytimen versiota vasten. Tämä tuo ongelman. Jos ydin muuttuu, täytyy kaikki moduulit kääntää uudelleen. Moduulien liitos ytimeen on hyvin tiukka, eikä niiden toimintaa pystytä tarkkaan havainnoimaan kuin vain käyttöjärjestelmän lähdekoodista. Mikroytimen käyttöjärjestelmämoduulit puolestaan ovat itsenäisiä. Tämä helpottaa käyttöjärjestelmän ohjelmoitavuutta, kun jokainen moduuli voidaan kääntää yksinään tai pelkkä ydin yksinään, tarvitsematta kääntää kaikkia moduuleja samalla. Moduulit on myös linkitetty ytimeen löyhästi, joten moduuleja voidaan helposti siirtää järjestelmästä toiseen, ongelmitta jopa käyttöjärjestelmän pienten eroavaisuuksien osalta. Tämä helpottaa käyttöjärjestelmän ohjelmoitavuutta.[1]

Käyttöjärjestelmän tehtävät

Laitteiston hallinta

Tietokoneen komponenttien ja oheislaitteiden puolesta muille ohjelmistoille tarjotaan yhteneväinen rajapinta, esimerkiksi kiintolevyä käytetään yleensä tiedostojärjestelmän kautta ja verkkokorttia välittämättä tietoliikenneprotokollien yksityiskohdista. Tärkeimmät tehtävät laitteiston osalta suorittavat käyttöjärjestelmän laiteajurit, jotka toimivat ytimen ja laitteen välissä "tulkkeina".

Tiedostojärjestelmä (FS)

Pääartikkeli: Tiedostojärjestelmä

Käyttöjärjestelmissä on tuki useille tiedostojärjestelmille, jolloin tallennuslaitteilla olevat tiedostot näytetään hakemistoina ja tiedostoina niiden merkityksen kannalta. Tiedostojärjestelmästä riippuen tiedostot merkitään eri tavoin osion kirjanpitoon erilaisten tarpeiden mukaisesti. Käyttöjärjestelmä hoitaa tallennuslaitteiden, kuten kiintolevyjen kirjoituksen ja lukemisen sekä se huolehtii myös tukemistaan erilaisista tiedostojen käyttöoikeuksista. Käyttöjärjestelmä hallitsee lähes aina useampia erilaisia tiedostojärjestelmiä, muutamasta useisiin kymmeniin. Tiedostojärjestelmän tuki voi olla myös käyttöjärjestelmään kuulumattoman ohjelmiston kuten FUSE:n (Filesystem in Userspace) [6] avulla toteutettu, mutta sekin tarvitsee käyttöjärjestelmältä tuen toimiakseen. Tiedostojärjestelmä voidaan myös luoda yksittäiseen tiedostoon, joita käytetään erilaisissa salausjärjestelmissä.

Muistinhallinta

Jotta huonosti käyttäytyvä prosessi ei sekoittaisi muiden prosessien toimintaa, käyttöjärjestelmä hallitsee sitä, ja käyttöjärjestelmän välityksellä prosesseilla on yleensä pääsy vain tarvitsemaansa muistialueeseen. Käyttöjärjestelmä huolehtii muistinsuojauksesta sekä siitä, että prosessit saavat tarvitsemansa määrän muistia, keskusmuistista tai mahdollisesta näennäismuistista. Ohjelmaa kirjoittaessa/kääntäessä sen sijaintia muistissa ei vielä tiedetä, sillä muistialue varataan vasta, kun ohjelman suorittava prosessi luodaan. Prosesseja voidaan myös suorituksen aikana siirtää muistialueelta toiselle, mahdollisesti jopa keskus- ja näennäismuistin välillä. Ohjelman käyttämä "looginen" osoiteavaruus voi olla suurempi kuin koneessa oleva fyysinen keskusmuistin määrä. Prosessin päättyessä käyttöjärjestelmä vapauttaa prosessin käyttämän osoiteavaruuden ja tarvittaessa myös silloin kun muu prosessit vaativat lisää muistia.

Virtuaalimuisti

Ohjelman osoiteavaruus ja fyysinen muistiavaruus erotetaan toisistaan. Loogiset osoitteet ja fyysiset muistipaikat yhdistetään toisiinsa prosessikohtaisilla sivutauluilla (engl. page tables) [7]. Tiedot voivat sijaita näennäismuistissa, josta ne ladataan keskusmuistiin, ja keskusmuistin tilan loppuessa sillä hetkellä tarpeettomat muistit kirjoitetaan näennäismuistiin.

Prosessienhallinta

Ohjelman käynnistyessä käyttöjärjestelmä luo sille tarvittavan prosessin, muistiavaruuden ja tarvittavat tietorakenteet. Vastaavasti se vapauttaa nuo resurssit ohjelman lopetuksen yhteydessä. Käyttöjärjestelmä myös tarjoaa työkalut prosessien tarkkailuun, prosessien lopettamiseen ja prosessien väliseen kommunikointiin.

Moniajon ansiosta tietokoneessa voi samanaikaisesti olla ajossa useampia ohjelmia. Suoritin annetaan vuorotellen vähäksi aikaa eri prosessien (tai niiden säikeiden) käyttöön. Aika pidetään niin lyhyenä, että interaktiiviset ohjelmat näyttävät olevan ajossa koko ajan. Käyttöjärjestelmän vuorottaja pyrkii jakamaan suoritinaikaa tarkoituksenmukaisesti, huomioiden eri prosessien prioriteetin ja luonteen.

Verkkoprotokollat

Käyttöjärjestelmä toteuttaa OSI-mallin 3. tason (verkkokerros) sekä 4. tason (kuljetuskerroksen) toteutukset toimiessaan muiden tietokoneiden/laitteiden kanssa verkossa ja tarjoaa nämä tasot sovellusohjelmien käyttöön. Ylemmät tasot toteutetaan muilla ohjelmistoilla kuten HTTP- tai FTP-palvelinohjelmistolla, P2P- tai Windows Live Messengerin asiakasohjelmilla. Käyttöjärjestelmän tehtävä on ainoastaan tarjota verkko- ja kuljetuskerros muille ohjelmille.

Käyttäjät

Monen käyttäjän käyttöjärjestelmissä käyttäjien oikeuksien rajoittaminen kuuluu käyttöjärjestelmän tehtäviin. Käyttäjän käynnistämien prosessien oikeudet riippuvat käyttäjän oikeuksista ja mahdollisesti muista seikoista. Jotkin käyttöjärjestelmät kuten MS-DOS oli suunniteltu yhdelle käyttäjälle, jolloin järjestelmään ei voinut olla kerralla kirjautuneina useampia käyttäjiä. Kyseinen käyttöjärjestelmä ei myöskään erotellut käyttäjäoikeuksia, vaan kaikki ohjelmat suoritettiin samoilla oikeuksilla.

Käyttöjärjestelmien luokittelu

Käyttöjärjestelmiä voidaan luokitella monin perustein:

Luokittelu moniajon mukaan

On sellaisia, jotka sallivat ainoastaan yhden käyttäjän kerrallaan, kun taas monipuoliset voivat samanaikaisesti palvella useita käyttäjiä ja luoda illuusion siitä, että kukin heistä olisi yksin konetta käyttämässä. Nykyisin useimmat käyttöjärjestelmät mahdollistavat jonkinasteisen moniajon: käyttäjällä voi olla samanaikaisesti useampia kuin yksi prosessi (ohjelma) suoritettavana – vaikkapa tekstinkäsittelyohjelma ja mp3-tiedostosta musiikkia soittava ohjelma.

Moniajoa tukevat käyttöjärjestelmät voivat siis suorittaa useita prosesseja samanaikaisesti. Nykyiset käyttöjärjestelmät tukevat moniajoa lähes poikkeuksetta.

Luokittelu moniprosessoinnin mukaan

Jos käytettävissä on useita suorittimia tai yhdessä suorittimessa useita ytimiä, voidaan saavuttaa myös todellinen moniajo, jos käyttöjärjestelmä osaa hyödyntää niitä. Yhdellä suorittimella (suorittimella missä on yksi ydin) on mahdollista saavuttaa näennäinen moniajo suorittamalla prosesseja vuorotellen lyhyissä pätkissä. Moniajo on välttämätön ominaisuus monen käyttäjän interaktiivisissa järjestelmissä. Käyttöjärjestelmän kyky moniajoon mahdollistaa ohjelman skaalautumisen useaksi prosessiksi, jotka käyttöjärjestelmä suorittaa mahdollisesti suorittimilla tai suorittimen ytimillä, joilla on prosessointiaikaa tarjolla. Käyttöjärjestelmän täytyy osata kunnollinen moniprosessointi, jos sitä halutaan käyttää supertietokoneissa.

Luokittelu käyttöliittymän mukaan

Käyttöjärjestelmiä voidaan jaotella myös niille saatavilla olevien käyttöliittymien perusteella. Komento- tai komentopohjaisissa käyttöliittymissä käskyt kirjoitetaan näppäimistöllä komentotulkin tulkittaviksi, kun taas graafisissa käyttöliittymissä käytetään usein hiirellä ja näppäimistöllä ikkunoita, valikkoja, kuvakkeita ja muita graafisia elementtejä, jolloin käyttöliittymän toteuttavat ohjelmat välittävät tämän perusteella käskyjä käyttöjärjestelmälle, joka välittää ne edelleen suoritettavilla ohjelmille.

Luokittelua monimutkaistaa, että yhdelle käyttöjärjestelmälle voi olla tarjolla useampia – sekä merkkipohjaisia että graafisia – käyttöliittymiä, jotka voivat myös olla käytössä yhtä aikaa. Esimerkiksi vanhalle merkkipohjaiselle MS-DOS-käyttöjärjestelmälle tehtiin aikoinaan graafinen ikkunointiympäristö nimeltä Windows, johon myöhemmin Windows 95 -version myötä siirrettiin osa käyttöjärjestelmän toiminnoista. Vastaavasti alkujaan komentorivillä käytettävä UNIX-käyttöjärjestelmä sai ikkunointijärjestelmä X Window Systemin, jonka avulla suoritetaan erilaisia graafisia käyttöliittymiä, kuten ikkunamanagereja sekä työpöytäympäristöjä, esimerkiksi Common Desktop Environment, KDE, GNOME, XFCE ja LXDE. Useimpia nykyisiä järjestelmiä voi ohjata myös pelkästään komentoriviltä, esimerkiksi Microsoftin Windowsia ja Applen OS X:ää. Unixeissa (mukaan luettuna Linux) komentorivin käyttö on yleistä tietynlaisissa tehtävissä, vaikka työpöytäsovellukset ovatkin graafisia.

Jonkinlainen käyttöliittymä on kuitenkin tarpeen käyttäjälle. Tämä on useimmiten komentotulkki tai graafinen käyttöliittymä, joita ei pidetä käyttöjärjestelmän osina, ellei niitä ole varta vasten ohjelmoitu käyttöjärjestelmään, vaan ne ovat useimmiten toimivia ohjelmistoja ja vaativat käyttöjärjestelmän toimiakseen. Käyttöliittymä voi myös koostua sovellusohjelmasta muun muassa sulautetuissa järjestelmissä tai järjestelmissä, joissa suoritetaan vain yhtä sovellusohjelmaa eikä tällöin ole tarvetta ohjelmistoille, jotka tarjoaisivat monimutkaisempia käyttöliittymiä.

Luokittelu käyttötarkoituksen mukaan

Käyttöjärjestelmiä voidaan luokitella niiden käyttötarkoituksen mukaan.

Keskustietokone- ja palvelinkäyttöjärjestelmiä käytetään koneissa, joissa on monia samanaikaisia käyttäjiä tai joita käytetään palvelinten alustana. Usein nämä käyttöjärjestelmät voivat käyttää valtavaa määrää muistia, massamuistivälineitä, prosessoreita ja muita resursseja. Tavoitteena tällaisissa järjestelmissä on yleensä luotettavuuden ohella hyödyntää resursseja mahdollisimman täydellisesti ja suorittaa mahdollisimman suuri määrä tehtäviä aikayksikköä kohden.

Työpöytäkäyttöjärjestelmiä käytetään yksittäisissä henkilökohtaisissa tietokoneissa, joita käyttää yleensä kerralla yksi käyttäjä. Tärkeimpiä ominaisuuksia ovat käyttöliittymän helppokäyttöisyys ja hyvä vaste, yhteensopivuus heterogeenisen laitteiston kanssa sekä laajennettavuus.

Reaaliaikaiset käyttöjärjestelmät tähtäävät mahdollisimman pieniin ja ennakoitaviin viiveisiin käyttöjärjestelmän toiminnassa sekä äärimmäiseen toimintavarmuuteen. Useat sulautetut järjestelmät kuuluvat yleensä samaan kategoriaan. Sulautettuja ja reaaliaikaisia käyttöjärjestelmiä käytetään yleensä laitteissa, jotka on suunniteltu suorittamaan jokin tietty tehtävä mahdollisimman tehokkaasti. Tästä syystä myös energiankulutus ja laitteistoresurssien mahdollisimman säästeliäs ja tehokas käyttö ovat tärkeitä ominaisuuksia. Sulautettuja järjestelmiä hyödynnetään aina teollisuusroboteissa, DVD-soittimissa, mikroaaltouuneissa ja monissa muissa pienissä laitteissa. Kaikki sulautetut järjestelmät eivät kuitenkaan sisällä käyttöjärjestelmää vaan ohjauksesta voi huolehtia vain yksinkertainen firmware. Realiaikaisia käyttöjärjestelmiä ovat muun muassa: ChronOS, VxWorks, QNX, pSOS ja OS-9.

Luokittelu sukupolven mukaan

Käyttöjärjestelmät voidaan myös mielivaltaisesti luokitella eri sukupolvien (0-4) mukaan, MS-DOSin kaltaisen "nollannen sukupolven" käyttöjärjestelmästä aina nykyaikaisiin kolmannen sukupolven käyttöjärjestelmiin sekä tuleviin neljännen sukupolven käyttöjärjestelmiin, jotka toimivat osittain tai kokonaan verkossa.[8]

Luokittelu orientoitumisen mukaan

"Käyttöjärjestelmät voidaan luokitella proseduuriorientoituneisiin tai prosessiorientoituneisiin. Prosessiorientoituneella käyttöjärjestelmällä on monia etuja proseduuriorientoituneihin käyttöjärjestelmiin verrattuna. Prosessirakenne antaa käyttöjärjestelmälle selkeän modulaarisen rakenteen, jossa yksittäinen palvelun toteutusta voidaan suhteellisen helposti muuttaa. Palveluprosessin oikeudet voidaan rajoittaa siten, että siinä olevan virheen vaikutukset minimoituvat. Myös käyttöjärjestelmäpalveluiden priorisointi yksinkertaistuu – proseduuriorientoituneessa käyttöjärjestelmässä prosessin prioriteettia joudutaan usein muuttamaan käyttöjärjestelmäpalvelun ajaksi. Myös laiteajureiden toteutus yksinkertaistuu. Pisimmälle vietyjä prosessiorientoituneita käyttöjärjestelmiä sanotaan rakenteensa takia myös mikroytimisiksi." [8]

Yleisiä käyttöjärjestelmiä

Yleisimmät tietokoneiden työpöytäkäyttöjärjestelmät ovat Microsoftin Windows NT, jota käytetään Windows 2000-, XP-, Vista-, 7-, 8- ja 10 -järjestelmissä, Applen kehittämä Darwin, jota käytetään sekä OS X:ssä, Tigerissa, Leopardissa ja Snow Leopardissa että avoimen lähdekoodin järjestelmissä, ja avoimen lähdekoodin periaatteella yhteistyössä useiden vapaaehtoisten ja yrityksien kesken kehitetty Linux-käyttöjärjestelmäydin, jota käytetään eri jakeluissa.

Normaalissa käytössä ovat myös esimerkiksi avoimen lähdekoodin BSD, SunOS sekä monet suljetut Unixit ja erityiset palvelinkäyttöjärjestelmät kuten z/OS.

Matkapuhelinten käyttöjärjestelmiä ovat muiden muassa Android, Symbian OS, Windows Mobile, RIM BlackBerry, iOS, Sailfish OS, Ubuntu Phone ja Firefox OS. Useimmista näistä on eri versioita, joille halutut sovellukset on mukautettava.

Katso myös

Lähteet

  • Haikala, Ilkka & Järvinen, Hannu-Matti: Käyttöjärjestelmät. Helsinki: Talentum, 2003. ISBN 951-762-837-4.

Viitteet