Käyttöjärjestelmän ydin

Wikipediasta
(Ohjattu sivultaMikroydin)
Siirry navigaatioon Siirry hakuun
Erilaiset käyttöjärjestelmäarkkitehtuurit kuvattuna monoliittisen, mikro- sekä” hybridi-ytimen” avulla.

Ydinelikerneli(engl.kernel) onkäyttöjärjestelmänosa, jolla on täysi kontrolli kaikesta järjestelmässä tapahtuvasta.[1]

Käyttöjärjestelmän ytimiä on kahta päätyyppiä: monoliittisia ja mikroytimiä.Monoliittinen ydin(makroydin) sisällyttää ytimen toiminnot samaan ytimenosoiteavaruuteen(engl.address space).Mikroydinulkoistaa valtaosan ytimen toiminnoista käyttäjäavaruuteen. Nykyaikaiset käyttöjärjestelmät eivät ole rakenteeltaan puhtaasti monoliittisia tai mikroytimeen perustuvia, vaikka edelleen selviä esimerkkejä näistä kahdesta mallista on olemassa. Sen sijaan modernit käyttöjärjestelmät soveltavat monillakin tavoilla toistensa ideoita. Vain harvat ytimet ovat puhtaasti monoliittisia ytimiä tai mikroytimiä.[2]

Käyttöjärjestelmän ytimen sanotaan tarjoavan toimintonsapalveluina(engl.services), jotka voivat olla toteutettu erillisinäkomponentteina(engl.components), jotka kommunikoivat erilaistenrajapintojen(engl.interfaces) avulla.[3]

Käyttöjärjestelmän ydin toimii suojatussa (engl.protected) ytimen muistiavaruudessa (engl.kernel space), joka estää muita ohjelmia ylikirjoittamasta sitä.[1]Ydin käsitteleeprosessejasekäkeskeytyksiä,kun taas kaikki normaalisti tietokoneen käyttäjän tekemä kuten tekstieditorit ovat käyttäjäavaruudessa (engl.user space).[1] Käyttöjärjestelmän ydin on etuoikeutettu (engl.privileged): ytimellä on suora pääsy kaikkeen laitteiston toimintoihin ja se asettaa käsittelijät keskeytyksille ja poikkeuksille.[4]Keskeytys tulee ulkoisesta tapahtumasta (ajoitus, laite tarvitsee huomiota) ja poikkeukset suoritettavasta käskystä (faulttaitrap).[4] Suorittimessavoi olla ydintila, joka kertoo suorittaako se käyttäjäohjelmaa vai ydintä: tietytkäskyttai tietohaut ovat sallittuja vain kun suoritin on ydintilassa.[4]

Moniohjelmointiatukevat järjestelmät rakentuvat prosessin käsitteelle, jossa käyttöjärjestelmä lomittaa prosessien suorituksen (vuoronnus), jakaa resurssit käytäntöjen mukaan (esimerkiksi prosessien prioriteetin mukaan) ja käyttöjärjestelmän voi tarvita tukeaprosessien välistä kommunikaatiota.[5] Yksinkertaisessa järjestelmässä muisti on jaettu kahteen osaan: käyttöjärjestelmälle (monitori,ydin) ja suoritettavalle ohjelmalle. Moniohjelmointijärjestelmässä käyttäjäavaruus jaetaan edelleen useiden prosessien käyttöön. Muistin jakaminen dynaamisesti onmuistinhallinnantehtävä.[5] IO-laitteiden hallinta on yksi käyttöjärjestelmien ominaisuus, jota vaikeuttaa laitteiden suuri vaihtelevuus.[5]

Yksittäisen ohjelman kaatuminen ei ole järjestelmän kannalta yhtä kriittistä kuin ytimen kaatuminen, jonka myötä koko tietokoneen sanotaan kaatuneen.[1]

Sovellusohjelmat kommunikoivat ytimen kanssajärjestelmäkutsujenavulla.[6]Järjestelmäkutsu ei ole suorafunktiokutsukuten sovelluksissa, vaan kutsun on ylitettävä ytimen ja käyttäjäavaruuden välinen jako.[7]Järjestelmäkutsu on rajapinta sovellusohjelman ja ytimen tarjoaman palvelun välillä.[7]

Ydin käyttää laitteiston fyysisiä osoitteita ja käyttäjäavaruudessa olevat prosessit käyttävätvirtuaaliosoitteitaniille varattuihin muistipaikkoihin.

Ytimen omat toiminnot sijaitsevat ytimen muistiavaruudessa tai ne on ulkoistettu käyttäjäavaruuteen (mikroytimet).

Katso myös:Näennäismuisti

Tyypillisesti käyttöjärjestelmän ydin on suojattu omaan suoritustilaan (engl.privileged mode, kernel mode) ja käyttäjäsovellukset ovat käyttäjätilassa (engl.user mode): ydin voi käyttää suorittimen toimintoja, joita käyttäjätilassa olevat prosessit eivät voi käyttää.

Ytimen suoritustila voidaan toteuttaasuorittimenominaisuuksista riippuen korkeammalla suoritustasolla (supervisor-tila,Motorola 68000 -sarja) tai käyttämällä ohjelmasegmentin tilaa (x86).[8]

On myös ytimiä, jotka eivät toteuta muistisuojausta, kutenAmiga OS,jonka piti toimia myös suorittimilla ilmanmuistinhallintayksikköä.[9]

Ydin voi olla kooltaan muutaman tuhannen tai jopa miljoonien koodirivien pituinen.

Ydinten kehityshistoriaa

[muokkaa|muokkaa wikitekstiä]

FerrantinvalmistamaAtlasoli luultavasti ensimmäinen tietokone, jonkakontrolliohjelmaavoitiin kutsua käyttöjärjestelmäksi.[10] Tietokoneessa oli myös tukivirtuaalimuistille.[11]

Varhaiset käyttöjärjestelmät kehitettiin 1960-luvun alussa ja kirjoitettiinassemblyllä.Sovellusohjelmointiin oli korkeamman tasonohjelmointikieliäkutenFortranjaALGOL.Järjestelmäohjelmointikielet kutenC-kielilisäsivät ylemmän tason kielien käyttöä käyttöjärjestelmien toteutuksessa. Tietokoneet olivat vielä rajatussa käytössä, jossa niiden käyttö oli operaattoreiden vastuulla. Varhaisissa käyttöjärjestelmissä koko käyttöjärjestelmä toimi yhtenä suoritettavana binäärinä.

Varhaiset käyttöjärjestelmät kutenMIT-yliopistonCompatible Time-Sharing Systemeivät voineet kasvaa suuriksi rajoitettujen tietokoneresurssien kuten muistimäärän ja suoritintehon vuoksi. THE-käyttöjärjestelmä vaikutti myöhempien käyttöjärjestelmien kehitykseen esittelemällä useita suunnitteluperiaatteita.[12] Kun saatavilla olevat resurssit kasvoivat samalla kasvoivat myös käyttöjärjestelmät.

1960-luvun puoliväliin mennessä käyttöjärjestelmät olivat kasvaneet ihmisen käsityskyvyn yli:Exec II-käyttöjärjestelmään tuli ongelmia, joita piti ratkoaad hoc-ratkaisuilla.[13] Suuret käyttöjärjestelmäprojektit kutenMulticsolivat ongelmissa niiden suorituskyvyn kanssa.[14]Multics:in jälkeenGeneral ElectrickehittiGeneral Comprehensive Operating System(GECOS) käyttöjärjestelmän jaBell LabskehittiUnix-käyttöjärjestelmän.[15]Unixin ytimen kehittäjäKen Thompsonjätti ytimestä pois paljon ominaisuuksia ja jätti ne käyttäjäavaruuteen, jolloin ydin oli Thompsonin omien sanojen mukaan vain "IO-multiplekseri".[16][17]Unixin ydin oli vain noin 10 000 riviäC-kielellätehtyä koodia ja noin 1 000 riviä assemblyä.[17]

1970-luvulla esitettiin ajatus mikroytimestä, jossa varsinainen luotettu ydin olisi pienempi.[18]Mikroytimiä toteutettiin useita 1980-luvulla ja osasta suunnittelutavoitteista luovuttiin käytännön ongelmien vuoksi, joista yksi on prosessien välisen kommunikaation aiheuttama lisäkuorma.[18]Mikroytimissä ei ollut myöskään joustavuutta tukea useampaa kuin yhtä toteutusta järjestelmän peruspalvelusta.[18]Mikroytimessä esiintyi myös enemmän moduulien välistä kopiointia ja moduulien välistä häirintäävälimuistinkäyttötavasta.[18]

1990-luvulla esitettiin ajatus eksoytimestä.[18][19]Vaikuttava ajatus oli että sovellukset tietävät enemmän resurssitarpeistaan ja niille annettaisiin mahdollisimman paljon kontrollia päätöksistä.[18]Osa toiminnoista sijoitettaisiin kirjastoihin, joihin ydin ei luottaisi.[18]

IBMpyrki kehittämäänWorkplace OSkäyttöjärjestelmääOSF Research Instituten kanssa perustuenCarnegie Mellon -yliopiston(CMU)Mach-mikrokerneliin, josta tuli yksi kalleimmista epäonnistumisista.[20]

Ydinrakenteiden pääluokat

[muokkaa|muokkaa wikitekstiä]

Monoliittinen ydin

[muokkaa|muokkaa wikitekstiä]
Monoliittisen ytimen ja sovellusohjelmien suhde.

Monoliittinen ydin (makroydin) sisältää kaikki ytimen toiminnot samassa ytimen osoiteavaruudessa (engl.kernel space). Monoliittisen rakenteen etuja ovat käyttöjärjestelmän nopeus sekä helppo kehitysmalli. Toisaalta ylläpitäminen monimutkaistuu ominaisuuksien lisääntyessä, sillä yksittäinen ohjelmoija ei voi tuntea kaikkia toimintoja ja niiden vaikutuksia toisiinsa. Huonoista puolista vakavin on, että yksikin virhe jossain ytimen toiminnossa, kuten muistinhallinnassa, verkkoprotokollassa, levyjärjestelmässä tai laiteajurissa, vaikuttaa ytimen muihinkin osiin. Tästä seuraa koko järjestelmän kaatuminen.

Monoliittinen ydin toimii yksin suojatussa tilassa omassa osoiteavaruudessa ja tarjoaa muille ohjelmistoillejärjestelmäkutsutytimen toimintojen kutsumiseen.

Monoliittisessä ytimessä kaikki ajurit ovat kiinteästi osana ydintä ilmanladattavia moduuleja,kun taas ladattavia moduuleja tukevia kuvataan toisinaan hybridiytimiksi.[21][2]Toisaalta moduuleiden katsotaan olevan vain laajennusta helpottavia tekijöitä monoliittiselle ytimelle.[1]

Esimerkkinä monoliittista rakennetta käyttävistä moderneista käyttöjärjestelmistä onOpenBSD,joka poisti tuen ladattaville ytimen moduuleille.[22] SekäNetBSDettäFreeBSDtukevat ladattavia ytimen moduuleja.[23][24] Linuxiinliittyvässä dokumentaatiossa monoliittisellä ytimellä on viitattu ytimeen, josta ladattavien moduulien tuki on kytketty pois käännösvaiheessa.[25]

MyösVMSon monoliittiseen ytimeen perustuva (tosinDigitalkokeili myös mikroydintä).[26]VAX-alustalle kehitetyn VMS:n kehittäjiin kuulunutDavid Cutlersiirtyi myöhemminMicrosoftille.[27]

Mikroytimen, sen palveluiden ja sovellusohjelmien suhde.

Mikroydinrakenteella pyritään parantamaan ytimen tietoturvaa ja vakautta, mutta tämä tapahtuu nopeuden kustannuksella. Mikroydinrakenteessa ydin pilkotaan useisiin palasiin: pieneksi pelkistetyksi mikroytimeksi sekä ytimen moduuleiksi. Mikroydin sijoittaa ytimen osat toiseen osoiteavaruuteen eli käyttäjäavaruuteen (engl.userspace, user mode, userland), jotka käyttävätprosessien välistä kommunikointiavarsinaisen ytimen kanssa toimintaan.[28]Jokainen ytimen moduuli suojataan eristämällä moduulit toisistaan, ja ne ovat yhteydessä ytimeen ja toisiinsa suojattuina prosesseina. Yhden ytimen moduulin kaatuminen ei vaikuta muihin moduulehin tai ytimeen, vaan ainoastaan sitä tarvitseviin prosesseihin. Vikaantunut ytimen moduuli voidaan käynnistää uudelleen. Jokainen ytimen moduuli tai jopa mikroydin voidaan päivittää muista osista riippumatta. Ydin on tällöin modulaarinen rakenteeltaan ja teoriassa hyvinvikasietoinen.Ytimen jakaminen erillisiin muistiavaruuksiin tekee siitä kuitenkin hitaan, koska tiedon siirtäminen ytimen moduulien ja mikroytimen välillä vaatii huomattavasti enemmän prosessorin kellojaksoja kuin monoliittiseen rakenteeseen perustuva ydin.

Ensimmäisen sukupolven mikroytimiä ovatMachjaChorus.[29]Toisen sukupolven mikroytimiin kuuluuL4jaQNX.[29]

Symbianja QNX ovat esimerkkejä mikroytimeen perustuvista menestyksekkäistä käyttöjärjestelmistä. Muita mikroytimeen perustuvia käyttöjärjestelmiä ovatBeOSjaNextstep.GNU HurdperustuuGNU Mach-ytimeen.

Mikroytimen keskeinen toimintaperiaate on viestien välittäminen moduulien välillä.[2]Kommunikaation aiheuttama kuormitus on myös merkittävä haittatekijä.[2][20]

Puhtaasti mikroydin-ajatteluun perustuva tutkimus on lähes täysin hylätty huonon suorituskyvyn johdosta.[29]Näissä ydin tarjoaa vain osoiteavaruuden,säikeistyksenjaprosessien välisen kommunikaationtai muun joukon vastaavia primitiivejä.[29]

Mikroytimen ajatuksen sanotaan olevan lähtöisinPer Brinch HanseninkirjoituksestaThe Nucleus of a Multiprogramming System(1970).[18][30]Mikroytimeen perustuvissa järjestelmissä on joitakin yhtäläisyyksiähajautettujen käyttöjärjestelmienkanssa.[3]

Terminanoydin(japikoydin) viittaa mikroytimeen, jossa moduulit rajataan pienempiin osiin vainkykyjen(engl.capabilities) perusteella.[31][32]Termiä on käytetty lähinnä mikroytimien alkuvaiheessa.[32]

Lisäksi on ainakin yksi tapaus jossa nanoydin viittaananosekuntientarkkuudella toimivaan ytimeen[33],sekä tapaus jossa nanoydin viittaa laitteiston abstraktiokerrokseen (Adeos)[34].

Symbianintapauksessa nanoydin viittaa ytimen osaan, joka toteuttaa ytimen säikeet, vuoronnuksen ja synkronointitoiminnot.[35]Symbianin nanoydin on alkukäsittelijä kaikille keskeytyksille ja välittää niistä useimmat toiselle kerrokselle.[35]Synkronointitoiminnot sisältävät mutexin (NFastMutex) ja semaforin (NFastSemaphore).[35]Symbianin käyttöjärjestelmäydin viittaa osaan, joka rakentuu nanoytimen palveluille ja toteuttaa asioita kuten käyttäjäavaruuden säikeet.[35]

Eksoytimen kuvaus.

1990-luvullaMIT:ssäesiteltiin eksoydin, joka on myös siinä käytetyn konseptin nimitys.[36][18][19]Vaikuttava ajatus oli että sovellukset tietävät enemmän resurssitarpeistaan ja niille annettaisiin mahdollisimman paljon kontrollia päätöksistä.[18]Osa toiminnoista sijoitettaisiinkirjastoihin,joihin ydin ei luottaisi.[18]Eksoytimeen viitataan myöskirjastokäyttöjärjestelmänä(library operating system, libOS).[37]

Eksoydin eriyttää hallinnan ja suojauksen siten, että ytimessä on suojaus mutta laitteiston hallinta tapahtuu sovelluksien käyttämien kirjastojen avulla.[38]

Hybridiytimen yksinkertaistettu rakenne.

Hybridiytimessä tarkoitetaan monoliittisen ja mikroytimen yhdistelmää: ydin on pilkottu vaihtelevin tavoin moduuleiksi, jotka sijaitsevat ydinavaruudessa. Hybridiytimen on tarkoitus olla vakaudeltaan ja tietoturvaltaan yhtä hyvä kuin mikroytimeen perustuva ydin, mutta samalla yhtä nopea kuin monoliittinen ydin.

Vain harvat ytimet ovat puhtaasti monoliittisia ytimiä tai mikroytimiä.[2]LinuxjaSolaristoteuttavatladattavia moduulejaytimen osoiteavaruuteen.[2][21]Mac OS XyhdistääMach-ytimeenBSD-ytimen ominaisuuksia (XNU).[2]MyösWindows NTon suurelta osin monoliittinen: NT:ssälaiteajuritovat kaikki samassa ytimen osoiteavaruudessa.[2][39]

Moni käyttöjärjestelmäasiantuntija kuitenkin katsoo, että hybridiydin-termi ei oikeastaan tarkoita mitään. EsimerkiksiLinus Torvaldson sanonut, että puhe hybridiytimistä on pelkkää markkinointia:

»As to the whole ‘hybrid kernel’ thing — it’s just marketing. It’s ‘oh, those microkernels had good PR, how can we try to get good PR for our working kernel? Oh, I know, let’s use a cool name and try to imply that it has all the PR advantages that that other system has’.[40]»

Samoilla linjoilla onIBM:n Sonny Rao:

»It’s wrong... I think this talk... was born from some kind of half-assed marketing game to try and make XXX kernel seem ‘more advanced.’ ‘Micro’ and ‘hybrid’ are always better, more advanced than ‘Monolithic’ right??[41]»

Unikernelviittaa käyttöjärjestelmän rakenteeseen, jossa käyttöjärjestelmän ydin ja suoritettava sovellusohjelma käyttävät yhtä osoiteavaruutta.[42]Tyypillisestiunikernelsuorittaa vain yhtä prosessia, mutta teknisesti on mahdollista tukea useampia, jotka jakavat saman osoiteavaruuden.[43]Ratkaisu on suunnattupilvipalveluissakäytettäväänhypervisor-virtualisointiin tavoitteena parempi suorituskyky.[44][45]Eräs sovelluskohde ovatIoT-laitteet, joissa ei ole laitteistoresursseja perinteisen käyttöjärjestelmän suorittamiseen.[43]

Multikernelon tutkimuskäyttöön tarkoitettu rakenne, jossa on useita käyttöjärjestelmän ytimiä tietokoneessa, jossa on monta suoritinydintä. Rakenteessa tietokonetta käsitelläänhajautetun järjestelmäntapaan, jossa ytimet käyttävät viestien välitystä keskenään ja tietokonetta käsitellään verkkona itsenäisinä ytimiä ilman jaettuja resursseja ytimien välillä.[46]

Makro- ja mikroytimien puolesta puhujilla on väitteensä näiden eduista, jotka myös on usein tyrmätty:[1]

  • mikroytimen eduksi on mainittu vakaus, mutta myös makroytimet ovat osoittautuneet vakaiksi
  • siirrettävyys eri alustoille on mainittu mikroytimen eduksi, mutta makroytimien siirtäminen on myös onnistunut
  • moduulien latauksella käännetyn makroytimen koko voi olla pieni, kun taas mikroytimen vaatima lisäkoodi voi tehdä siitä suuremman

Tunnettu debatti ytimien ratkaisuista on käytyLinus TorvaldsinjaAndrew Tanenbauminkeskenusenetinvälityksellä.[47][48]

  1. abcdefKernel Definitionlinfo.org.Viitattu 10.8.2019.(englanniksi)
  2. abcdefghSilberschatz & Galvin & Gagne:Operating System Concepts Essentials(PDF)cs.columbia.edu.Arkistoitu28.6.2016. Viitattu 10.11.2017.
  3. abRonald Aigner:Communication in Microkernel-Based Operating Systems(PDF)pdfs.semanticscholar.org.heinäkuu 2010. Viitattu 11.8.2019.(englanniksi)
  4. abcProtection and the Kernel: Mode, Space, and Context Mode, Space, and Context(PDF)courses.cs.duke.edu.Viitattu 4.10.2022.(englanniksi)
  5. abcWilliam Stallings:Operating System Internals and Design Principles,s. 107,306,475. Seventh edition. Prentice Hall, 2012.ISBN 978-0-13-230998-1.(englanniksi)
  6. Architecting Containers Part 1: Why Understanding User Space vs. Kernel Space MattersRed Hat. Viitattu 15.8.2019.(englanniksi)
  7. abM. Jones:Kernel command using Linux system calls21.3.2007. IBM developerWorks.Arkistoitu11.2.2017. Viitattu 5.11.2017.
  8. John Gulbrandsen:How Do Windows NT System Calls REALLY Work?codeguru.com.26.8.2004. Viitattu 6.11.2017.
  9. It’s alive!: Ars reviews AmigaOS 4.123.9.2008. Ars Technica. Viitattu 10.11.2017.
  10. Atlas Architecturechilton-computing.org.uk.Viitattu 14.8.2019.(englanniksi)
  11. Peter J. Denning:Before Memory Was Virtual(PDF)denninginstitute.com.1.11.1996. Viitattu 14.7.2021.(englanniksi)
  12. Edsger Wybe DijkstraACM. Viitattu 11.8.2019.(englanniksi)
  13. Per Brinch Hansen:Classic Operating Systems: From Batch Processing To Distributed Systems,s. 16. Springer, 2001.ISBN 978-1-4757-3510-9.doi:10.1007/978-1-4757-3510-9.(englanniksi)
  14. John W Gintell:Thoughts about the early days of Multics with rusty analysis on the subject of Performance Improvement(PDF)multicians.org.Viitattu 22.11.2017.
  15. Dvorak, John C.:IBM and the Seven Dwarfs — Dwarf Five: GEdvorak.org.Viitattu 15.9.2017.
  16. Part Ituhs.org.Viitattu 8.9.2019.(englanniksi)
  17. abK. Thompson:UNIX Implementation(PDF)users.soe.ucsc.edu.Viitattu 8.9.2019.(englanniksi)
  18. abcdefghijkÚlfar Erlingsson & Athanasios Kyparlis:Microkernelscs.cornell.edu.Viitattu 10.8.2019.(englanniksi)
  19. abDawson R. Engler & M. Frans Kaashoek & James O’Toole Jr.:Exokernel: An Operating System Architecture for Application-Level Resource Management(PDF)pdos.csail.mit.edu.Viitattu 11.8.2019.(englanniksi)
  20. abWorkplace Microkernel and OS: A Case StudyUniversity of California. Viitattu 20.1.2017.
  21. abNitesh Dhanjani & Gustavo Rodriguez:Loadable Kernel Module Programming and System Call Interception1.2.2001. Linux Journal. Viitattu 22.11.2017.
  22. Michael Larabel:OpenBSD Drops Support For Loadable Kernel Modules28.10.2014. Phoronix. Viitattu 12.8.2019.(englanniksi)
  23. Writing a kernel module for FreeBSDfreesoftwaremagazine.com.Viitattu 12.8.2019.(englanniksi)
  24. Benedikt Meurer:Introduction to NetBSD loadable kernel moduleshome.unix-ag.org.Viitattu 12.8.2019.(englanniksi)
  25. Building a Monolithic KernelRed Hat. Viitattu 12.8.2019.(englanniksi)
  26. A Model and Prototype of VMS Using the Mach 3.0 KernelDigital Equipment Corporation.Arkistoitu31.1.2017. Viitattu 22. kesäkuuta 2007.
  27. Mark Russinovich:Windows NT and VMS: The Rest of the Story30.11.1998. ITPro Today. Viitattu 11.8.2019.(englanniksi)
  28. Rafika Ida Mutia:Inter-Process Communication Mechanism in Monolithic Kernel and Microkernel(PDF)pdfs.semanticscholar.org.Viitattu 14.8.2019.(englanniksi)
  29. abcdHermann Härtig & Michael Hohmuth & Jochen Liedtke & Sebastian Schönberg & Jean Wolter:The Performance of µ-Kernel-Based Systemsos.inf.tu-dresden.de.Viitattu 9.8.2019.(englanniksi)
  30. Per Brinch Hansen:The Nucleus of a Multiprogramming System(PDF)classes.cs.uchicago.edu.Viitattu 10.8.2019.(englanniksi)
  31. The KeyKOS Nanokernel Architecture(PDF)pdfs.semanticscholar.org.Viitattu 11.8.2019.(englanniksi)
  32. abTrusted Real Time Operating System: Identifying its characteristicsresearchgate.net.joulukuu 2012.doi:10.1109/ISCAIE.2012.6482074.Viitattu 11.8.2019.(englanniksi)
  33. David L. Mills & Poul-Henning Kamp:The Nanokernel(PDF)papers.freebsd.org.Viitattu 11.8.2019.(englanniksi)
  34. [ANNOUNCEAdeos nanokernel for Linux kernel] 3.6.2002. Lwn.net. Viitattu 11.8.2019.(englanniksi)
  35. abcdSales, Jane:Symbian OS Internals,s. 6–7. John Wiley & Sons, 2005.ISBN 978-0-470-02524-6.(englanniksi)
  36. MIT Exokernel Operating Systempdos.csail.mit.edu.Viitattu 11.8.2019.(englanniksi)
  37. Dawson R. Engler:The Exokernel Operating System Architecture(PostScript)pdos.csail.mit.edu.18.5.1998. Viitattu 11.8.2019.(englanniksi)
  38. Application Performance and Flexibility on Exokernel Systemspdos.csail.mit.edu.Viitattu 11.8.2019.(englanniksi)
  39. User mode and kernel mode20.4.2017. Microsoft. Viitattu 11.8.2019.(englanniksi)
  40. Linus Torvalds, Real World Technologies Discussion Forumrealworldtech.com.Viitattu 9.5.2006.
  41. Sonny Rao, Real World Technologies Discussion Forumrealworldtech.com.Viitattu 8.5.2006.
  42. Unikernelsunikernel.org.Viitattu 4.10.2022.(englanniksi)
  43. abChristopher Tozzi:What Are Unikernels? A Guide to the Emerging Unikernel Landscapeitprotoday.com.4.1.2021. Viitattu 4.10.2022.(englanniksi)
  44. Anil Madhavapeddy & David J. Scott:Unikernels: Rise of the Virtual Library Operating Systemqueue.acm.org.Viitattu 4.10.2022.(englanniksi)
  45. Integrating Unikernel Optimizations in a General Purpose OS(PDF)arxiv.org.Viitattu 4.10.2022.(englanniksi)
  46. The Multikernel: A new OS architecture for scalable multicore systems(PDF)microsoft.com.Viitattu 25.11.2022.(englanniksi)
  47. Linux is obsolete – A must read debate between Andrew S. Tanenbaum and Linus Torvalds24.11.2012. IBM.Arkistoitu10.7.2017. Viitattu 20.12.2017.
  48. [1-25LINUX is obsolete]groups.google.com.29.1.1992. Viitattu 20.12.2017.

Aiheesta muualla

[muokkaa|muokkaa wikitekstiä]