Ydin

Linux.fista
Versio hetkellä 25. toukokuuta 2010 kello 19.14 – tehnyt Fri13 (keskustelu | muokkaukset) (Historia, toiminta lyhyesti monoliittisesta ytimestä.)
Siirry navigaatioon Siirry hakuun
Linux.fi-wikissä artikkelit käsittelevät yleensä aihettaan siltä osin, kuin se koskee Linuxia ja avoimia/vapaita ohjelmistoja. Yleisluontoisemman artikkelin tästä aiheesta löydät tietosanakirja Wikipediasta.

Monoliittinen Ydin eli monoliittinen kernel on kokonainen käyttöjärjestelmä yhdessä osoiteavaruudessa ja joka tarjoaa tietokoneen osat sekä oheislaitteet erilaisten ohjelmien käyttöön ja huolehtii käyttöoikeuksista ja resurssien jaosta prosessien ja eri käyttäjien kesken. Monoliittisen käyttöjärjestelmän, kuten Linuxin, tapauksessa käyttöjärjestelmä toimii kokonaan yksin ydintilassa (ring 0) ja suojatussa tilassa (supervisor mode). Sen tarjotessa muille ohjelmistoille rajapinnat laitteiston käyttämiseksi ja halliten kaikkia muita ohjelmistoja. Monoliittista käyttöjärjestelmää ei pidä sekoittaa Asiakas-Palvelin (Server-Client) -käyttöjärjestelmäarkkitehtuuriin jossa ydin (mikroydin) on vain osa käyttöjärjestelmästä [1][2] [3].

Monoliittinen arkkitehtuuri eroaa muista käyttöjärjestelmäarkkitehtuureista merkittävästi. Se on alkuperäinen 60-luvulla kehitetty käyttöjärjestelmäarkkitehtuuri, millä ensimmäiset Unixit suunniteltiin. Tuolloin ohjelmisto joka tunnetaan nykyisin käyttöjärjestelmänä, tunnettiin paremmin muilla nimilä kuten Supervisor, Master Program, Kernel, Core ja Operating System. Myöhemmin monoliittinen rakenne alkoi tuottamaan ongelmia kun käyttöjärjestelmän koko kasvoi miljooniin riveihin eivätkä mahtuneet enää tietokoneen keskusmuistiin. Pahimpia ongelmia olivat kuitenkin bugit. Käyttöjärjestelmän toimiessa yhdessä osoiteavaruudessa tuotti ongelmia, kun käyttöjärjestelmän tietyn osan virheittä ei voitu eristää muista osista. Esimerkiksi virhettä verkkoprotokollassa ei voitu eristää vaan se vaikutti myös kaikkiin muihin käyttöjärjestelmän toimintoihin ja kaatoi käyttöjärjestelmän, jolloin koko ohjelmistojärjestelmä kaatui. Käyttäjä sai vain virheilmoituksen käyttöjärjestelmän kaatumisesta ruudulle, jota kutsuttiin tuolloinkin Kernel Panic:ksi. Myös lähdekoodin ylläpidettävyys muodostoi hyvin hankalaksi, jos ei mahdottomaksi. Hyvin harva pysyi selvillä käyttöjärjestelmän toiminnoista mikä hidasti ja vaikeutti kehitystyötä vielä lisää.[4]

Rinnalle kehittyi uudenlainen käyttöjärjestelmän arkkitehtuuri, niin kutsuttu Palvelin-Asiakas (Server-Client). Palvelin-Asiakas -arkkitehtuurissa monoliittinen käyttöjärjestelmä jaoteltiin moduuleiksi joita kutsuttiin palvelimiksi. Jokainen palvelin suoritti käyttöjärjestelmän eri tehtävät itsenäisesti ja tarjosi palvelunsa niitä tarvitseville prosesseille. Jokaista palvelinta hallitsi mikroydin, hyvin yksinkertaiseksi suunniteltu ydin joka toteutti vain tärkeimmät käyttöjärjestelmän tehtävät. Jokainen palvelin toimi suojattuina prosesseina mikroytimeen ja ne olivat suojattu vielä jokaiselta toiselta palvelimelta, jolloin yhden palvelimen kaatuminen ei teoriassa vaikuttanut muihin mikroytimeen ja muihin palvelimiin [5].

Monoliittisen ja Asiakas-Palvelin -käyttöjärjestelmäarkkitehtuurien välillä on käyty useita kiistoja. 80- ja 90-luvulla suosiota saaneen Asiakas-Palvelin -arkkitehtuurin ennustettiin hävittävän monoliittisen-arkkitehtuurin. Tuolloin jo yli 90% käyttöjärjestelmistä olivat arkkitehtuuriltaan Asiakas-Palvelin -mallin mukaisia, vain muutamien Unixien säilyessä monoliittisina. Kuuluisin Asiakas-Palvelin -käyttöjärjestelmäarkkitehtuuria toteuttava käyttöjärjestelmä on alkuperäinen Mach 3.0. Myös aikoinaan vain koulutuskäyttöön suunniteltu Minix-käyttöjärjestelmä Professori Andrew S.Tanenbaumilta, on arkkitehtuuriltaan alkuperäisen Asiakas-Palvelin -mallin mukainen. Kuuluisimpia Palvelin-Asiakas / Monoliittinen -väittelyitä käytiin juurikin Linus Torvaldsin ja Andrew S.Tanenbaumin välillä uutisryhmissä. Linus aloitti Linux-käyttöjärjestelmän kehittämisen mm. sen vuoksi että hän ei ollut tyytyväinen Minixiin eikä Microsoftin MS-DOS -käyttöjärjestelmään.[6]

Andrew S.Tanenbaum väitti Linus Torvaldsin tehneen vakavan virheen kun valitsi käyttöjärjestelmänsä (Linux) arkkitehtuuriksi Monoliittisen eikä modernimpaa Palvelin-Asiakas -mallia. Väittelyssä mm. Minixin ja Machin eduiksi nostettiin vakaus, kehittämisen helppous että tietoturva. Linuxin eduiksi Andrew S.Tanenbaum kertoi vain nopeuden, joka oli eräs Monoliittisen käyttöjärjestelmän merkittäviä etuja. Mutta lopulta kaikki teoriassa kerrotut edut on kumottu teknisesti Monoliittisissa toteutuksissa kuten Linuxissa ja monissa muissa monoliittisissa käyttöjärjestelmissä.

GNU-projektin oma HURD-käyttöjärjestelmäkin käyttää Asiakas-Palvelin -käyttöjärjestelmäarkkitehtuuria. GNU-projektin oman käyttöjärjestelmälle muodostui ongelma kun Linux kaappasi käyttöjärjestelmäkehittäjät HURD:n parista. HURD:ssa oli valmiina useat käyttöjärjestelmän palvelimet, mutta siitä puuttui mikroydin, jota HURD-kehittäjät ovat vaihtaneet useampaan kertaan. Tällä kertaa vielä HURD:ssa mikroytimenä toimii GNU projektin oma versio Machista, nimeltä GNU Mach. Myöhemmin Richard Stallman on myöntänyt että on ollut virhe valita GNU Mach -ytimeksi ja se on hidastanut HURD-käyttöjärjestelmän kehitystä. Vieläkään ei ole HURD-käyttöjärjestelmälle valittu vakinaista mikroydintä. HURD-käyttöjärjestelmän epäonnisten vuosien aikana Richard Stallman on yrittänyt saada GNU-projektille mainetta väittäen Linuxin olevan oikeasti olevan GNU/Linux koska sen kehittämiseen on käytetty GNU-kehitystyökaluja ja koska käyttäjä ei tee pelkästään Linuxilla mitään vaan tarvitsee kehitystyökalut.

Linux-järjestelmien (Linux-jakeluiden) käyttöjärjestelmänä toimii Linux, jonka kehityksen aloitti Linus Torvalds vuonna 1991 opiskellessaan Helsingin yliopistossa. Linus Torvalds johtaa edelleen Linux-käyttöjärjestelmän kehitystä. Mikäli kehitystyön seuraaminen kiinnostaa, KernelNewbies-sivustolta löytyy paljon dokumentaatiota asiasta, mm. uusimpien versioiden keskeiset muutokset selväkielisenä (sivulla LinuxChanges).

Katso myös

Aiheesta muualla