Linux (ydin)

Kohteesta Wikipedia
(Ohjattu sivulta Linux-ydin)
Siirry navigaatioon Siirry hakuun
Tämä artikkeli käsittelee käyttöjärjestelmän ydintä. Artikkeli Linux käsittelee kokonaisia käyttöjärjestelmiä.
Linux ydin
Tux.svg
KNOPPIX booting.png
Kehittäjä Linus Torvalds ja tuhansia kehittäjiä
Kehityshistoria
Ensijulkaisu 0.0.1, 17. syyskuuta 1991[1]
Vakaa versio 5.2 / 7.7.2019 [2][3][4]
Kehitystilanne Aktiivinen
Tiedot
Ohjelmistotyyppi Käyttöjärjestelmän ydin
Alusta Luettelo Linuxissa tuetuista tietokonearkkitehtuureista
Ohjelmointikielet C, Assembly
Lisenssi GPLv2
Aiheesta muualla
Kotisivu
Linux ydin on tuettu useilla alustoilla.

Linux on alun perin suomalaisen Linus Torvaldsin kehittämä käyttöjärjestelmäydin, joka on lisensoitu GPLv2-lisenssillä. Ydin eli kerneli (engl. kernel) on tietokoneen käyttöjärjestelmän alin osa, joka mahdollistaa kaikkien muiden tietokoneen ohjelmien toiminnan. Torvalds julkaisi ensimmäisen Linuxin version vuonna 1991.

Arkikielessä Linuxilla tarkoitetaan usein kokonaista käyttöjärjestelmää, jonka ytimenä Linux toimii, eli Linux-jakelua, joka sisältää ytimen lisäksi muun muassa erilaisia kirjastoja, apuohjelmia, käyttöliittymiä ja sovelluksia valmiiksi paketoituna loppukäyttäjää varten.

Historiaa[muokkaa | muokkaa wikitekstiä]

Linus Torvalds aloitti Linuxin kehittämisen opiskellessaan Helsingin yliopistossa tietojenkäsittelytiedettä.[5] Torvalds osti ensimmäisen PC:nsä vuonna 1991, mutta oli tyytymätön sen MS-DOS -käyttöjärjestelmään.[5] Torvaldsia itseään kiinnosti enemmän Unix, jota hän oli käyttänyt yliopiston tietokoneilla.[5]

Torvaldsin alkuperäinen tavoite ei ollut käyttöjärjestelmän ytimen kirjoittaminen vaan tutustuminen ostamansa tietokoneen ominaisuuksiin.[6] Muistinhallinnan, prosessien vuorontamisen ja laite-I/O:n kokeilujen myötä Torvalds kehitti käyttöjärjestelmän ytimen.[6]

Linux lähti liikkeelle töiden jakamisen (engl. scheduler) harjoitustyöstä, jota Torvalds kehitteli tehtävänantoa monipuolisemmaksi. Työstä kehkeytyi kokonaisen käyttöjärjestelmän toimintoja sisältävä ohjelma.

Unix oli suosittu ja sitä pidettiin hakkerien keskuudessa ainoana oikeana käyttöjärjestelmänä. Se oli kuitenkin liian vaativa ja kallis PC-käyttöön. Unixin lähdekoodi ei myöskään ollut enää vapaasti saatavilla. Helsingin Yliopistolla Unix oli tuolloin otettu hiljattain käyttöön ja Torvalds oli käynyt C:tä ja Unixia käsittelevän kurssin.

Torvalds sai yliopistosta käsiinsä Andrew Tanenbaumin ohjelmoiman Minixin. Se oli PC:lle tarkoitettu, Unixia muistuttava käyttöjärjestelmä, joka oli suunniteltu opetuskäyttöön. Minixin lähdekoodi oli vapaasti kaikkien niiden saatavilla, jotka olivat ostaneet Tanenbaumin kirjan. Ohjelmoijat pystyivät näin opiskelemaan olemassa olevaa käyttöjärjestelmää ensimmäisen kerran sitten Unixin alkuaikojen.

Asennettuaan koneeseensa Minixin sekä Bruce Evansin siihen tekemät laajennokset, Torvalds totesi, että siinäkin oli paljon puutteita. Se kuitenkin mahdollisti ja inspiroi Linuxin ohjelmoinnin aloittamisen. Aluksi Torvalds lähti tekemään vain pääte-emulaattoria, joka toimi suoraan laitteistolla ohittaen käyttöjärjestelmän. Projektit kuitenkin laajenivat koko käyttöjärjestelmän ytimen luomiseen tähtääväksi.

Kesän 1991 Torvalds vietti pääasiassa huoneeseensa sulkeutuneena, verhot ikkunoiden edessä ja kirjoittaen järjestelmäkutsuja (hänellä vieraili kuitenkin melkein viikottain jokin opiskelukavereistaan teellä). Torvalds ei ollut saanut käsiinsä varsinaisia POSIX-määritelmiä sisältäviä kirjoja, mutta oli löytänyt materiaalit, joissa oli Sun OS:n (joka oli esim. Suomen armeijan koneissa usein käytetty Unixin versio) järjestelmäkutsut. Hän kirjoitti omaa kerneliään katsoen, mitä Sun OS:n järjestelmäkutsut tekivät ja ohjelmoi vastaavat tehtävät suorittavat kutsut omaan kerneliinsä. Työ alkoi muuttua mukavammaksi siinä vaiheessa, kun komento-shelli alkoi toimia kernelissä ja Torvalds alkoi saada järjestelmältään selkeämmin palautetta siitä, mitä siitä puuttui. Tätä ennen hän joutui testaamaan laatimiaan kutsuja ikään kuin tyhjiössä. Myöhemmin Torvalds sai avukseen myös varsinaiset POSIX-materiaalit, joita hän oli huhuillut uutisryhmissä.

Torvalds toteutti assemblylla ja C-ohjelmointikielellä käyttöjärjestelmän ytimen, joka hänen omien sanojensa mukaan käytti laajalti GCC-kääntäjän ominaisuuksia.[7] Työ eteni hitaasti eikä hän kertonut hankkeestaan vielä muille. Torvaldsin alkuperäisenä tarkoituksena ei ollut luoda käyttöjärjestelmää koko maailmalle, vaan ainoastaan omiin tarpeisiinsa. Jos hän olisi jatkanut yksin, Linuxia olisi tuskin julkaistu, sillä sen kehittäminen olisi pysähtynyt Torvaldsin omien tarpeiden täytyttyä. Torvalds julkisti projektinsa 25. elokuuta 1991 kirjoittamalla comp.os.minix-uutisryhmään, jota pidetään Linuxin syntymäpäivänä.[8][1] Versio 0.01 valmistui 17. syyskuuta samana vuotena, joka oli ensimmäinen lähdekoodijulkaisu.[9][1] Torvalds oli itse tehnyt käännökset bash-komentorivitulkista ja GCC-kääntäjästä.[8][9]

Lokakuussa 1991 versio 0.02 oli valmis ja Torvalds päätti laittaa sen vapaasti kaikkien saataville. 5. lokakuuta uutisryhmään lähettämässään viestissä Torvalds kertoi lähdekoodin löytyvän FTP-palvelimen nic.funet.fi hakemistosta /pub/OS/Linux ja antoi ohjeita kääntämistä varten.[10] Hän varoitti, että ohjelma oli hakkerilta hakkereille. Sen toimintakuntoon saattaminen saattoi siis vaatia hakkerin taitoja. Lisäksi hän rohkaisi muuttamaan ohjelmaa vapaasti ja toivoi kommentteja mahdollisista muiden Minixille kirjoittamista apuohjelmista ja funktioista. Toimiakseen Linux vaati vielä Minixin siinä koneessa, jossa sitä haluttiin käyttää. Myöhemmin samassa kuussa julkaistiin versio 0.03.

Alun perin Torvalds oli suunnitellut antavansa ohjelmansa nimeksi "Freax"[6], joka olisi johdettu sanoista free Unix (vapaa Unix) tai freaks (omituiset, intoilijat, friikit). FTP-palvelimen ylläpitäjä Ari Lemmke ei kuitenkaan ollut pitänyt nimestä. Hän oli perustanut omalle xgw:n palvelimelleen Linux -nimisen käyttöalueen Torvaldsia varten. "Linux" -nimi oli ollut Torvaldsin aiempi nimiehdotus, jonka hän oli hylännyt, muttei enää vastustellut Lemmken päätöstä ottaa se käyttöön.

Palautetta ja virheraportteja tuli valtavasti. Internetin ja avoimesti saatavilla olleen lähdekoodin ansiosta ihmiset eri puolilla maailmaa pääsivät kehittämään Linuxia. Ytimen versio 0.10 julkaistiin marraskuun alussa 1991, jolloin käyttäjiä oli 10–20. 0.10 oli ensimmäinen versio, joka oli käyttökelpoinen ilman Minixiä, jolloin Linus päätti nostaa versionumeron suoraan 0.03:sta 0.10:iin. 8. joulukuuta 1991 julkaistu versio 0.11 oli jo täysin itsenäisesti käytettävissä: ydin voitiin kääntää Linuxissa itsessään. Version 0.12 yhteydessä Linus kertoi aikomuksesta käyttää GPL-lisenssiä.[11]

Marraskuussa 1991 Torvalds tuhosi vahingossa tietokoneensa Minix-osion, joka osaltaan vaikutti kehittämään Linuxia eteenpäin.[6]

Torvaldsin motivaatio työhön alkoi horjua vuoden 1991 lopussa, kun ydin oli saatu pyörimään ja edessä näytti olevan vain ikävämpää debuggausta. Lisää motivaatiota kuitenkin tuli kahdelta suunnalta. Ensinnäkin, ihmiset Internetin uutisryhmissä eivät jättäneet häntä rauhaan, vaan kysyivät innokaasti jatkokehittelyn perään. Toisekseen Torvalds tuhosi vahingossa koneensa kovalevyn Minix-osion, jolloin hänelle nousi mielenkiinto pyrkiä käyttämään sitä pelkän Linux-osionsa turvin. Ensimmäinen ulkopuolisen ihmisen pyynnöstä Linuxiin luotu toiminto oli vuoden 1991 joulupäivänä valmistunut mahdollisuus jatkaa keskusmuistia levymuistilla (näennäismuisti). Torvaldsin oma 386-kone (joka oli osista kasattu, merkitön) omasi neljä megaa muistia, mutta pienemmällä määrällä varustetut käyttäjät (erityisesti eräs saksalainen käyttäjä, joka alun perin teki asiasta pyynnön) olivat ongelmissa keskusmuistin vähyyden kanssa. Tämä ominaisuus oli vuoden 1992 alussa merkittävä ja toi osaltaan Linux-kernelille huomiota.

Kun versio 0.12 julkaistiin tammikuussa 1992, Linuxin parissa työskenteli aktiivisesti lähes kaksisataa ihmistä. Tuolloin ydin oli jo vakaa ja toimiva. Yhdessä GNU-hankkeen luomien työkalujen kanssa siitä oli rakennettavissa kokonainen käyttöjärjestelmä. Linux alkoi levitä nopeasti. Vuonna 1992 saatiin valmiiksi ensimmäinen graafisella käyttöliittymällä varustettu jakelu.[12] Näihin aikoihin Linuxista kiinnostuttiin myös yliopistomaailman ulkopuolella.

Linuxin varhaiset versiot oli julkaistu Torvaldsin itse kirjoittamalla lisenssillä, joka ei sallinut ytimen levitystä rahaa vastaan. Linus ilmoitti version 0.12 julkistuksen yhteydessä siirtyvänsä käyttämään GNU GPL -lisenssiä 1. helmikuuta 1992 lähtien.[13] Nykyinen lisenssi on GPL versio 2 ja Torvalds on sanonut vastustavansa siirtymistä versioon 3 sen lisäämien käyttörajoituksien vuoksi.[14]

Torvalds on kuvaillut päätöstään julkaista Linux-ydin GPL-lisenssillä parhaaksi tekemäkseen asiaksi.[15]

Ytimen julkaisun yhteydessä Torvalds ja Tanenbaum kävivät laajalti tunnetun debatin ytimen rakenteesta.[16][17] Microsoftin palkkaama Ken Brown ajoi väitettä, jossa Torvalds olisi kopioinut Minixiä, mutta Tanenbaum on tyrmännyt tämän väitteen.[18]

Vuonna 1992 ytimeen tuli ulkopuolista kehitystä muun muassa verkkoprotokollapinon, SCSI- ja äänilaiteajureiden, Ext2-tiedostojärjestelmän ja ELF-binäärimuodon osalle.[6]

Kehitysprosessi[muokkaa | muokkaa wikitekstiä]

Linux-ytimen toiminnot tasoittain.

Torvalds johtaa edelleen Linuxin ohjelmointityötä. Linux on avoimen lähdekoodin ohjelmisto ja siihen voi kuka tahansa tehdä muutoksia. Mikäli haluaa omat muutoksensa Linuxin viralliseen versioon, ne tulee toimittaa Linux Kernel -postituslistalle, jolloin ohjelmakoodi kulkee Torvaldsin tai hänen luottohenkilöidensä kautta. Muutoksella on oltava sen tekijän allekirjoitus (Signed-off-by) ja se on toimitettava katselmoitavaksi asiaan liittyville henkilöille, joiden hyväksyntä tarvitaan muutoksen etenemiseksi ytimeen liittämiseen.[19]

Kehitysprosessin ohjeet seuraavat ytimen lähdekoodien mukana ja sisältävät joukon esimerkkejä hyvistä ja huonoista kehitystavoista.[20][21]

Ytimen kehitysprosessia käsitellään laajalti Eric S. Raymondin esseessä The Cathedral and the Bazaar.

Ytimen version 2.6 kehityksen aikana Torvalds ja Andrew Morton yhdistivät ytimeen muutoksia 10 MB kuukaudessa.[22] Versioon 4.11 otettiin mukaan 12 546 muutosjoukkoa ja ydin kasvoi lähes 300 000 rivillä ohjelmakoodia.[23] Vuosien 2011 – 2012 aikana (ytimen versiot 3.1.0 – 3.5.0) ytimeen tehtiin päivittäin 10 600 uutta riviä, 8 100 riviä poistettiin ja 2 250 riviä muutettiin.[24] Muutoksia tuli 6,03 per tunti.[24]

Kesällä 2015 ytimen versiossa 4.1 oli yli 19,5 miljoonaa lähdekoodiriviä.[25] Linux-ytimen uudelleenkehittämisen arvosta on esitetty useita arvioita: maaliskuussa 2011 sen arvioitiin olevan 3 miljardia Yhdysvaltain dollaria ja kasvavan.[26][27] Linux Foundationin julkaiseman raportin mukaan kehitykseen on osallistunut yli 13 500 kehittäjää yli 1 300 yrityksestä.[28]

Ydin on toteutettu pääasiassa C-kielellä.[29] Torvaldsin mukaan haastavat ongelmat ytimen kehityksessä eivät ratkea ohjelmointikieltä vaihtamalla.[30] Haastavat ongelmat ovat tyypillisesti laitteistotuessa kuten laiteajurit ja alustakohtaiset erot.[30] Eräät henkilöt ja projektit ovat pyrkineet kehittämään tukea C++:lla toteutetuille moduuleille mukaan lukien ajonaikaisen kirjaston, poikkeuskäsittelyn ja RTTI-tyyppimekanismin lisäämisen sekä pinon käsittelyn muutoksia.[31][32][33] C++:n käytössä käyttöjärjestelmän ytimessä on ongelmakohtia, joita neuvotaan välttämään.[34][35]

Ytimen testaamisessa käytetään apuna useita tarkoitukseen kehitettyjä ohjelmia.[36] Ydintä testataan usein eri tavoin eri tavoitteiden kannalta kuten kehittäjätestaus, integraatiotestaus, regressiotestaus ja stressitestaus.[36]

Versiointi[muokkaa | muokkaa wikitekstiä]

Ydintä on aiemmin kehitetty parittomalla numerolla merkityssä versiohaarassa parillisten ollessa vakaita tuotantokäyttöön tarkoitettuja versioita (vrt. 2.2.x, 2.3.x, 2.4.x ja 2.5.x).[37] Nykyisin seuraavaan versioon tulevat muutokset ovat linux-next nimisessä kehityshaarassa ja versionumeroinnin erityismerkityksestä on luovuttu.[38] Monimutkaisten versionumeroiden kuten 2.6.39.4 sijaan pääversionumeroa muutetaan useammin kuten 4.0 3.20:n sijaan.[39][40] Longterm support (LTS) versioihin julkaistaan päivityksiä vielä uuden version jälkeen muutaman vuoden ajan.[41][42]

Linux-next[muokkaa | muokkaa wikitekstiä]

Ytimen seuraavaan versioon tulevat muutokset sijoitetaan linux-next -nimiseen kehityshaaraan.[38] Muutoksien kehitys tapahtuu linux-next -haaran mukaiseen tilanteeseen.[43] Kehityshaarassa kypsyneet muutokset liitetään tulevaan julkaisuversioon ja konflikteja tai käännösongelmia aiheuttavat muutokset jätetään liittämättä.[44] Kehityshaarasta suoritetaan myös automaattista testausta ja havaituista ongelmista ilmoitetaan kehittäjille.[45] Eri konfiguraatioilla käännetyt ytimet käynnistetään ja ajetaan KVM-instansseissa.[45] Automaattinen testaus suorittaa myös sparse- ja coccinelle-ohjelmia.[45]

Moduulit[muokkaa | muokkaa wikitekstiä]

Linux-ydin tukee ladattavia moduuleja, joita käytetään muun muassa laiteajureille, tiedostojärjestelmätuelle, verkkoprotokollille, uusille järjestelmäkutsuille ja niin edelleen.[46] Ladattavien moduulien tuki on ollut ytimessä versiosta 1.2 (1995) lähtien.[46]

Suorittimet tukevat ytimen kernel-mode suoritustilassa erityiskomentoja ja sallii kaiken muistiavaruuden käytön.[47] Käyttäjän user-mode tilassa muistialueet käskyt ovat rajatumpia.[47] Suorituksen siirto käyttäjän ja ytimen tilojen välillä järjestelmäkutsujen yhteydessä kuluttaa huomattavasti aikaa.[47] Ytimet, joissa kaikki ajurit ovat kiinteästi osana ydintä ilman ladattavia moduuleja, ovat monoliittisia ytimiä, kun taas ladattavia moduuleja tukevia kuvataan toisinaan hybridiytimiksi.[47][48] Muita ladattavia moduuleja tukevia käyttöjärjestelmiä ovat esimerkiksi Solaris.[48] Linuxiin liittyvässä dokumentaatiossa monoliittisellä ytimellä on viitattu ytimeen, josta ladattavien moduulien tuki on kytketty pois käännösvaiheessa.[49]

Linux tukee moduulien kryptografista allekirjoittamista.[50] Linux-ytimessä toiminnot voidaan jakaa kaikille moduuleille tai vain GPL-lisenssiä käyttäville moduuleille, jota voidaan käyttää tunnistamaan ytimestä riippuvan toiminnon käyttö (derivative).[51] Suljetun lähdekoodin (ei-GPL) moduulien lataaminen lisää taint-merkinnän, joka kertoo kehittäjille että mahdollisen vian tapahtuessa ongelman syy voi olla tuntemattomassa lähdekoodissa.[52][53]

Koska ytimeen ladattavat moduulit toimivat ilman rajoituksia ytimen suoritustilassa niiden toteutuksessa on otettava huomioon samat seikat kuin muussa itse ytimessä olevaa ohjelmakoodiakin koskee.[54][55]

Moduuleja voidaan debugata etänä toiselta koneelta muun muassa Eclipse-kehitysympäristössä.[56]

Käyttäjät voivat ladata ja poistaa moduuleja ajon aikana muun muassa modprobe -komennolla.[57] Moduulit voidaan kääntää ja ladata ytimeen ajonaikana ilman uudelleenkäynnistystä.[57]

Esimerkki minimaalisesta moduulista, joka tulostaa viestin ytimen logiin:[57]

#include <linux/module.h>
#include <linux/kernel.h>

int init_module(void)
{
    printk(KERN_INFO "Welcome.....\n");
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "Bye....\n");
}

Moduuli ei toteuta main()-funktiota, vaan ytimen koodi kutsuu ladatun moduulin toimintoja.

Virtuaalinen tiedostojärjestelmä[muokkaa | muokkaa wikitekstiä]

Linux-ytimen IO-pino

Linux-ydin tukee virtuaalista tiedostojärjestelmää (VFS), joka sallii ytimen tukea useita konkreettisia tiedostojärjestelmiä.[58][59] Vastaava rakenne on toteutettu esimerkiksi SunOS-käyttöjärjestelmässä.

Keskeisiä olioita VFS:n toteutuksessa ovat:[60]

  • inode ("indeksinoodi")
  • dentry ("hakemistomerkintä")
  • file (tiedosto)
  • superblock ("päälohko")

VFS tarjoaa toiminnot käyttäjäsovelluksille sekä ytimen sisäisen abstraktiorajapinnan ytimen toiminnoille.[60]

VFS:n avulla ydin tukee lohkopohjaisia tiedostojärjestelmiä (Btrfs, ext2/3/4, JFS, XFS, ISO 9660, UDF)[61][62][63], verkkopohjaisia (NFS, coda, AFS, SMB, 9P), yhdistelmäjärjestelmiä (overlayfs, unionfs) ja eritystarkoituksiin suunniteltuja (tmpfs, ramfs, sysfs).

Laiteajurit[muokkaa | muokkaa wikitekstiä]

Linux ydin tukee usean prosessorin järjestelmiä, ytimen sisäistä moniajoa, asynkronisia keskeytyksiä ja yksittäistä laitetta voi yrittää käyttää useampi prosessi samaan aikaan: laiteajureja on voitava käyttää useita yhtä aikaa (reentrant). Laiteajurit voidaan kääntää kiinteästi osaksi ydintä tai ajonaikana ladattaviin moduuleihin.

Yksinkertaisimmillaan ajurit käyttävät vain IO-muistialueita, mutta useimmat laitteet vaativat monimutkaisempaa käsittelyä. Laiteajurit ovat tapahtumapohjaisia, jotka reagoivat järjestelmäkutsuihin, laitteistokeskeytyksiin ja niin edelleen.

Moniajo ja rinnakkaisuus[muokkaa | muokkaa wikitekstiä]

Linux-ydin tukee ulkoista moniajoa (preempt), sekä ytimen sisäinen moniajo on mukana 2.6-sarjassa, jota on myöhemmin laajennettu nk. vapaaehtoiseen moniajoon.[64][65][66]

Ydin tukee useita menetelmiä ja algoritmeja tehtävien ajoituksen hallintaan.[67][68] Ytimen versiossa 2.6.23 lisätty CFS korvasi O(1) vuorontajan.[69][70] Ytimeen on kehitetty tuki ladattaville skedulereille eri käyttötarpeita varten.[71][72]

Ydintä voidaan suorittaa moniajossa yhdellä suorittimella sekä rinnakkain moniprosessoinnilla.[73] Ydin tukee ulkoisien NPTL-säikeiden lisäksi ytimen sisäisiä säikeitä.[74]

Ytimen sisäinen moniajo tunnistaa mm. spinlock-lukituksen käytön ytimen sisäisessä moniajossa.[75] Ydin käyttää runsaasti suoritinkohtaisia per-CPU tietorakenteita, jotka parantavat muun muassa välimuistin käytön tehokkuutta, mutta joiden käytössä sisäinen moniajo voidaan kytkeä hetkellisesti pois käytöstä.[76][77]

Sisäistä moniajoa voi konfiguroida eri käyttötarkoituksiin soveltuvaksi.[78] Reaaliaikakäyttöön tarkoitettu Real-Time Linux lisää omia vaihtoehtoja ytimen sisäiseen moniajoon.[78]

Ytimen NO_HZ -optio vähentää ajoituksen vaatimia herätteitä tehostaen virrankäyttöä ja suorituskykyä tietyissä tilanteissa.[79][80]

Muistinhallinta[muokkaa | muokkaa wikitekstiä]

Linux tukee useita muistinhallintaan liittyviä ominaisuuksia:

Verkkotoiminnot[muokkaa | muokkaa wikitekstiä]

Ytimeen on kehitetty useita menetelmä suodattaa (engl. filtering) ja reitittää (engl. routing) verkkoprotokollien paketteja. Eräitä ratkaisuja Linuxissa ovat ipchains, netfilter ja Berkeley Packet Filter (BPF), joka on saatavilla myös useille muille Unixin kaltaisille käyttöjärjestelmille.[87][88] Ydin tukee VPN-verkkoja muun muassa IPsec-protokollan kanssa.[89]

Käyttäjäoikeuksienhallinta[muokkaa | muokkaa wikitekstiä]

Linux-ydin tukee perinteisten Unix-tyylisten oikeuksienhallinnan lisäksi Access Control List (ACL) ja Mandatory Access Control (MAC) -tyyppisiä mekanismeja kuten SELinux, AppArmor, TOMOYO ja SMACK.[90][91][92]

Prosessien välinen kommunikointi[muokkaa | muokkaa wikitekstiä]

Linux-ydin tukee useimpia tyypillisiä menetelmiä prosessien väliseen kommunikaatioon kuten anonyymit putket, nimetyt putket, viestijonot ja jaettu muisti.[93] Linuxissa on mahdollista käyttää myös useita muita menetelmiä.[94]

Lisäksi on mahdollista käyttää useita käyttäjäavaruudessa toimivia menetelmiä kuten D-Bus, jotka perustuvat daemon-prosessien palveluihin.

Muita ratkaisuja ovat muun muassa kehityksen alla oleva bus1 ja Androidin käyttämä binder.[95][96]

Virheenjäljitys[muokkaa | muokkaa wikitekstiä]

Linux-ydin tukee kahdenlaisia debuggeriohjelmia ytimen virheenjäljitykseen: kdb (komentorivillä, ei lähdekooditason debuggausta) ja kgdb (etänä, lähdekooditason debuggaus).[97]

kdb tukee mm. muistin ja rekisterien tilojen tutkimista ja pysäytyskohtien asettamista. kgdb käytetään GNU Debuggerin kanssa.[97]

Lisäksi ydin tukee suorituksen seurantaan muita menetelmiä kuten strace[98], ptrace()[99] ja kprobe.[100]

Suorituskyvyn profilointiin on olemassa muun muassa perf laskurit, jota ovat edeltäneet oprofile, perfctr ja perfmon2.[101]

Virtualisointi ja säiliöinti[muokkaa | muokkaa wikitekstiä]

Ydin tukee hypervisor-virtualisointia kuten KVM sekä säiliöintiä.[102][103][104] Xen-tuki sekä isäntänä (Dom0) että vieraana (DomU) on ollut ytimessä versiosta 3.0 lähtien.[105][106] Lisäksi User-mode Linux mahdollistaa ytimen ajamisen käyttöjärjestelmän prosessina (Linux-on-Linux, Linux-on-Windows).[107] Cooperative Linux (CoLinux) on virtualisointiin perustuva projekti, jolla Linux-ydintä voidaan pienen virtuaalikoneen avulla suorittaa Windowsin rinnalla.[108] Jailhouse on turvakriittisiin järjestelmiin tarkoitettu virtualisointi Linuxille.[109]

Alustat[muokkaa | muokkaa wikitekstiä]

Linux on historian eniten eri laitteistoalustoja tukeva käyttöjärjestelmä.[110]

Linux tukee NUMA-muistiarkkitehtuurin tietokoneita ja toteuttaa järjestelmäkutsuja järjestelmien hallintaan.[111] Tuki on ollut ytimessä versiosta 2.5 lähtien ja on parannettu jälkeenpäin.[112][113]

UClinux-projektin myötä Linux tukee myös digitaalisia signaaliprosessoreita sekä mikrokontrollereita sulautetuissa järjestelmissä ja reitittimissä.[114]

Linux on myös sovitettu toimimaan Mach- ja L4-mikroytimien päällä MkLinux ja L4Linux -projekteissa.[115]

Linux-aikajana[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Linux-ytimen aikajana
Linux-ytimen merkittäviä versioita[116][117]
Versio Ajankohta Huomioita
Linux 0.01 17. syyskuuta 1991 ensimmäinen versio; käynnistäminen levykkeeltä, Intel 80386-prosessorin tuki ja suomalainen näppäimistötuki[6]
Linux 0.02 5. lokakuuta 1991
Linux 0.03 lokakuussa 1991
Linux 0.10 marraskuussa 1991
Linux 0.11 8. joulukuuta 1991 itsenäisesti toimiva versio, jossa kerneli voitiin kääntää ajamalla samaa versiota Linuxista.
Linux 0.12 tammikuussa 1992 lisäsi muistin levylle sivuttamisen ja lisenssi vaihtui GNU GPL -lisenssiin
Linux 1.0 julkaistiin maaliskuussa 1994
Linux 1.2 maaliskuussa 1995 lisäsi tuen Alpha-, SPARC- ja MIPS-suorittimille ja ELF-binääritiedostomuodolle.
Linux 2.0 kesäkuussa 1996 mahdollisti käytön usealla suorittimella yhtä aikaa (monisuoritintuki) sekä tuen m68k- ja PowerPC-arkkitehtuureille.
Linux 2.2 tammikuussa 1999 lisäsi televisiokorttien tuen, bittikarttagrafiikkaa tukevan konsolin ja IPv6-tuen.
Linux 2.2.13 joulukuussa 1999 lisäsi tuen IBM:n S/390 suurtietokoneille[118]
Linux 2.4 tammikuussa 2001 lisäsi ISA-PnP-, USB- ja PCMCIA-tuen, sekä tuen yli 2 GiB tiedostoille (LFS) ja ext3- ja ReiserFS-tiedostojärjestelmät (ReiserFS versiossa 2.4.1). Versio 2.4.6 lisäsi Bluetooth-tuen.
Linux 2.5.43 lokakuussa 2002 lisäsi Read-Copy-Update (RCU) mekanismin tuen[116][119]
Linux 2.6 joulukuussa 2003 lisäsi XFS- ja JFS-tiedostojärjestelmät, sisälsi uudet ALSA-ääni- ja syöttölaitteiden ajurit, InfiniBand-tuen, NPTL-säikeistyksen tuen ja tehosti käyttöä suurissa järjestelmissä. Lisäksi SELinux on integroitu pääversioon.
Linux 2.6.20 helmikuussa 2007 lisäsi tuen Kernel-based Virtual Machine (KVM) virtualisointituen[102][120]
Linux 2.6.24 tammikuussa 2008 lisäsi Cgroup-tuen[121]
Linux 2.6.29 maaliskuussa 2009 lisäsi ytimeen Kernel Modesetting (KMS) tuen näytönohjaimille, joka yksinkertaistaa X Window Systemin ajureita; suorittimien tukea tehostettiin 4096:n suorittimen laitteiden tukemiseksi[122]
Linux 2.6.38 maaliskuussa 2011 lisäsi läpinäkyvän tuen suurille muistisivuille (engl. transparent huge pages, THP), joka aiemmin oli hugetlbfs-kirjastoon sidottu[123][124][125]
Linux 3.0 heinäkuussa 2011 Torvalds ilmoitti muuttavansa versionumeroa Linuxin 20-vuotispäivien kunniaksi.[126]
Linux 3.1 lokakuussa 2011 lisäsi tuen OpenRISC-suorittimelle ja NFC-siruille.[127]
Linux 3.7 vuonna 2012 yhtenäisti tuen ARM-pohjaisille järjestelmäpiireille[128][129]
Linux 3.8 vuonna 2013 lisäsi tuen käyttäjien nimiavaruuksille[130]
Linux 4.0 huhtikuussa 2015 lisäsi tuen ytimen korjauspäivityksille ilman tarvetta koko järjestelmän uudelleenkäynnistykselle (live patching), tuki Intelin Skylake-alustalle, tuki Intelin Quark-piireille, tuki PlayStation 3 -konsolille, tuki äänelle DisplayPort-väylän kautta AMD:n Radeon-ohjainten avoimissa ajureissa.[131]
Linux 4.11 huhtikuussa 2017 lisäsi tuen muun muassa liitännäisille IO-skedulereille.[132]
Linux 4.14 marraskuussa 2017 uudistuksia ovat muun muassa viisitasoinen muistisivujen käsittely, joka nostaa maksimimuistimäärän teratavuista petatavuihin.[133][134] Muita uudistuksia ovat heterogeeninen muistikäsittely (HMM), ORC pinonkäsittely, AMD:n muistisalaus, nolla-kopion verkkokäsittely ja säikeistystuki cgroup-ryhmille.[135][136][137]
Linux 5.1 toukokuussa 2019 uusi asynkronisen IO:n rajapinta io_uring, pidfd-rajapinta signaalien käsittelyyn[138]
Linux 5.2 heinäkuussa 2019 Sound Open Firmware (SOF) -tuki, uusi mount -rajapinta[139][140]

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. a b c Larabel, Michael: Linux Turns 26 Years Old Phoronix. Viitattu 25.8.2017.
  2. https://www.kernel.org
  3. Torvalds, Linus: Linux 5.2 lkml.org. Viitattu 8.7.2019. (englanniksi)
  4. Torvalds, Linus: Linux 5.2 lkml.iu.edu. Viitattu 8.7.2019. (englanniksi)
  5. a b c Linus Torvalds Encyclopaedia Britannica. Viitattu 5.8.2019. (englanniksi)
  6. a b c d e f Dr. Oliver Diedrich: The history of Linux h-online.com. 25.8.2011. Viitattu 16.8.2019. (englanniksi)
  7. LINUX's History cs.cmu.edu. Viitattu 5.8.2019. (englanniksi)
  8. a b Torvalds, Linus: What would you like to see most in minix? groups.google.com. Viitattu 5.8.2017.
  9. a b Torvalds, Linus: Notes for linux release 0.01 ftp.funet.fi. Viitattu 5.8.2017.
  10. Torvalds, Linus: Free minix-like kernel sources for 386-AT groups.google.com. Viitattu 5.8.2017.
  11. Torvalds, Linus: RELEASE NOTES FOR LINUX v0.12 kernel.org. Viitattu 5.8.2017.
  12. The Daemon, the GNU and the Penguin, by Dr. Peter H. Salus – Ch. 20 Groklaw. Viitattu 25.11.2017.
  13. http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.12
  14. Linus Torvalds says GPL v3 violates everything that GPLv2 stood for youtube.com. Viitattu 3.7.2017.
  15. Hiroo Yamagata: The Pragmatist of Free Software, Linus Torvalds Interview, 30 September 1997
  16. Linux is obsolete – A must read debate between Andrew S. Tanenbaum and Linus Torvalds 24.11.2012. IBM. Viitattu 20.12.2017.
  17. [1-25 LINUX is obsolete] groups.google.com. 29.1.1992. Viitattu 20.12.2017.
  18. Tanenbaum, Andy: Tanenbaum-Torvalds Debate Part II cs.vu.nl. 12.5.2006. Viitattu 20.12.2017.
  19. Submitting patches: the essential guide to getting your code into the kernel kernel.org. Viitattu 7.8.2019. (englanniksi)
  20. Kroah-Hartman, Greg: HOWTO do Linux kernel development kernel.org. Viitattu 27.11.2017.
  21. Morton, Andrew: The perfect patch. ozlabs.org. 4.3.2006. Viitattu 27.11.2017.
  22. Kernel Summit: Development process 21.7.2004. LWN.net. Viitattu 27.11.2017.
  23. Corbet, Jonathan: 4.11 Kernel development statistics 19.4.2017. LWN.net. Viitattu 30.11.2017.
  24. a b Greg Kroah-Hartman: Linux Kernel Development (PDF) events.static.linuxfound.org. Viitattu 9.8.2019. (englanniksi)
  25. Larabel, Michael: Linux Kernel At 19.5 Million Lines Of Code, Continues Rising Phoronix. Viitattu 6.8.2017.
  26. Wheeler, David A.: The Linux Kernel: It’s Worth More! dwheeler.com. Viitattu 6.8.2017. (englanniksi)
  27. The Cost of Linux linuxcost.blogspot.fi. Viitattu 6.8.2017. (englanniksi)
  28. Linux Kernel Development Report 2016 Linux Foundation. Viitattu 6.8.2017. (englanniksi)
  29. Barry, Paul: Which Programming Language? 7.2.2001. Linux Journal. Viitattu 2.12.2017.
  30. a b Venezia, Paul: Linux at 25: Linus Torvalds on the evolution and future of Linux 25.8.2016. InfoWorld. Viitattu 2.12.2017.
  31. Halldor Isak Gylfason: C++ Exceptions & the Linux Kernel 1.9.2005. Dr Dobb's. Viitattu 3.4.2018.
  32. Vegard Nossum: Re: [PATCH 00/45 C++: Convert the kernel to C++] lkml.org. 2.4.2018. Viitattu 3.4.2018.
  33. Nathan Cooprider: C++ in the Linux kernel threatstack.com. 28.10.2016. Viitattu 3.4.2018.
  34. C++ OSDev.org. Viitattu 3.4.2018.
  35. Porting C++ code to Linux kernel pograph.wordpress.com. 5.4.2009. Viitattu 3.4.2018.
  36. a b Shuah Khan: Linux Kernel Testing and Debugging 10. heinäkuuta 2014. Linux Journal. Viitattu 9.8.2019. (englanniksi)
  37. Linux Kernel Version Numbering 29.5.2006. The Linux Information Project.
  38. a b Frequently asked questions kernel.org. Viitattu 30.11.2017.
  39. Michael Larabel: Linux 4.0-RC1 Tagged, Linux 4.0 Will Bring Many Notable Improvements 22.2.2015. Phoronix. Viitattu 7.8.2019. (englanniksi) 
  40. Sebastian Anthony: Linux version dilemma: Linus Torvalds is “running out of fingers and toes” 17.2.2015. Ars Technica. Viitattu 7.8.2019. (englanniksi) 
  41. Long-term Linux support future clarified 27.11.2017. ZDNet. Viitattu 30.11.2017.
  42. Larabel, Michael: Linux To Get "Extended LTS" Releases, Kernel Support For Six Years 29.9.2017. Phoronix. Viitattu 30.11.2017.
  43. Jonathan Corbet: The current development kernel is...linux-next? 8.6.2008. Lwn.net. Viitattu 7.8.2019. (englanniksi)
  44. Jonathan Corbet: A day in the life of linux-next 23.6.2008. Lwn.net. Viitattu 7.8.2019. (englanniksi)
  45. a b c Michael Kerrisk: KS2012: Kernel build/boot testing 5.9.2012. Lwn.net. Viitattu 7.8.2019. (englanniksi)
  46. a b Introduction to Linux Loadable Kernel Modules tldp.org. Viitattu 22.11.2017.
  47. a b c d Nitesh Dhanjani & Gustavo Rodriguez: Loadable Kernel Module Programming and System Call Interception 1.2.2001. Linux Journal. Viitattu 22.11.2017.
  48. a b Silberschatz & Galvin & Gagne: Operating System Concepts Essentials (PDF) cs.columbia.edu. Arkistoitu 28.6.2016. Viitattu 10.11.2017.
  49. Building a Monolithic Kernel Red Hat. Viitattu 12.8.2019. (englanniksi)
  50. Kernel module signing facility static.lwn.net. Viitattu 22.11.2017.
  51. Day, Rob: The Kernel Newbie Corner: Kernel Symbols: What's Available to Your Module, What Isn't linux.com. 29.7.2009. Viitattu 22.11.2017.
  52. Tainting from user space 24.5.2006. LWN.net. Viitattu 22.11.2017.
  53. Tainted kernels kernel.org. Viitattu 22.11.2017.
  54. Derek Molloy: Writing a Linux Kernel Module — Part 1: Introduction derekmolloy.ie. Viitattu 22.11.2017.
  55. Day, Rob: The Kernel Newbie Corner: Loadable Kernel Modules, Coming and Going linux.com. 8.7.2009. Viitattu 22.11.2017.
  56. Debugging a loadable kernel module infocenter.arm.com. Viitattu 22.11.2017.
  57. a b c Himanshu Arora: How to Create, Compile, Load Linux LKM Loadable Kernel Modules 2.4.2012. The Geek Stuff. Viitattu 22.11.2017.
  58. A tour of the Linux VFS tldp.org. Viitattu 23.11.2017.
  59. M. Jones: Anatomy of the Linux virtual file system switch 31.8.2009. IBM. Viitattu 23.11.2017.
  60. a b Gooch, Richard: Overview of the Linux Virtual File System kernel.org. 24.6.2007. Viitattu 23.11.2017.
  61. Lanyue Lu & Andrea C. Arpaci-Dusseau & Remzi H. Arpaci-Dusseau & Shan Lu: A Study of Linux File System Evolution pages.cs.wisc.edu. doi:10.1145/2560012. Viitattu 28.11.2017.
  62. isofs kernel.org. Viitattu 28.11.2017.
  63. Documentation/filesystems/udf.txt kernel.org. Viitattu 28.11.2017.
  64. FAQ/Preemption Kernelnewbies. Viitattu 25.11.2017.
  65. Corbet, Jonathan: Optimizing preemption 14.8.2013. LWN.net. Viitattu 25.11.2017.
  66. Addressing latency problems in 2.6 lwn.net. 14.7.2017. Viitattu 25.11.2017.
  67. sched – overview of CPU scheduling Linux man-pages project. Viitattu 2.12.2017.
  68. Ankita Garg: Real-Time Linux Kernel Scheduler 1.8.2009. Linux Journal. Viitattu 2.12.2017.
  69. M.Jones: Inside the Linux 2.6 Completely Fair Scheduler 15.12.2009. IBM. Viitattu 2.12.2017.
  70. Robert Love: The Linux Process Scheduler 13.11.2003. Informit. Viitattu 2.12.2017.
  71. Scott Rhine: Plug-In Scheduler Policies for Linux (PDF) classiccmp.org. Viitattu 2.12.2017.
  72. Con Kolivas: Pluggable cpu scheduler framework LWN.net. Viitattu 2.12.2017.
  73. M. Jones: Anatomy of Linux synchronization methods IBM. Viitattu 25.11.2017.
  74. kthreads (PDF) cs.fsu.edu. Viitattu 25.11.2017.
  75. Driver porting: the preemptible kernel lwn.net. 24.2.2003. Viitattu 23.11.2017.
  76. Proper Locking Under a Preemptible Kernel: Keeping Kernel Code Preempt-Safe kernel.org. Viitattu 1.12.2017.
  77. Driver porting: per-CPU variables LWN.net. Viitattu 1.12.2017.
  78. a b Understanding Linux Kernel Preemption devarea.com. 23.11.2017. Viitattu 29.11.2017.
  79. NO_HZ: Reducing Scheduling-Clock Ticks kernel.org. Viitattu 1.12.2017.
  80. Corbet, Jonathan: (Nearly) full tickless operation in 3.10 8.5.2013. LWN.net. Viitattu 1.12.2017.
  81. Overcommit kernel.org. Viitattu 16.8.2019.
  82. Andreas Scherbaum: Virtual memory settings in Linux - The Problem with Overcommit engineering.pivotal.io. 2.7.2016. Viitattu 16.8.2019. (englanniksi)
  83. CGROUPS(7) man7.org. Viitattu 25.11.2017.
  84. Jonathan Corbet: Heterogeneous memory management lwn.net. 27.4.2016. Viitattu 16.8.2019. (englanniksi)
  85. Rob Clark & Sumit Semwal: DMA Buffer Sharing Framework:An Introduction (PDF) elinux.org. 2012. Viitattu 16.8.2019. (englanniksi)
  86. Jonathan Corbet: DMA buffer sharing in 3.3 11.1.2012. Lwn.net. Viitattu 16.8.2019. (englanniksi)
  87. Corbet, Jonathan: BPF: the universal in-kernel virtual machine 21.5.2014. LWN.net. Viitattu 27.11.2017.
  88. Linux Socket Filtering aka Berkeley Packet Filter (BPF) kernel.org. Viitattu 27.11.2017.
  89. Jonathan Corbet: Virtual private networks with WireGuard 6.3.2018. LWN.net. Viitattu 4.3.2019.
  90. TOMOYO Linux and pathname-based security 14.4.2008. LWN.net. Viitattu 28.11.2017.
  91. AppArmor kernel.org. Viitattu 28.11.2017.
  92. Edge, Jake: Smack for simplified access control 8.8.2007. LWN.net. Viitattu 28.11.2017.
  93. 6 Linux Interprocess Communications The Linux Documentation Project. Viitattu 30.11.2017.
  94. Chandrashekar Babu: IPC mechanisms on Linux – Introduction chandrashekar.info. 1.8.2012. Viitattu 30.11.2017.
  95. Brown, Neil: Bus1: a new Linux interprocess communication proposal 17.8.2016. LWN.net. Viitattu 4.12.2017.
  96. Brown, Neil: Fast interprocess communication revisited 9.11.2011. LWN.net. Viitattu 4.12.2017.
  97. a b Chapter 1. Introduction kernel.org. Viitattu 25.11.2017.
  98. strace(1) – Linux man page linux.die.net. Viitattu 25.11.2017.
  99. PTRACE(2) man7.org. Viitattu 25.11.2017.
  100. Kernel Probes (Kprobes) kernel.org. Viitattu 25.11.2017.
  101. Vince Weaver: Linux perf event Features and Overhead web.eece.maine.edu. 21.4.2013. Viitattu 25.11.2017.
  102. a b Linux 2 6 20 kernelnewbies.org. Viitattu 25.11.2017.
  103. Connecting Linux to hypervisors Lwn.net. Viitattu 9.8.2019. (englanniksi)
  104. Chenxi Wang: What is Docker? Linux containers explained 29.6.2017. InfoWorld. Viitattu 4.12.2017.
  105. Michael Reed: Xen Enters Mainline Kernel 20.6.2011. Linux Journal. Viitattu 11.8.2019. (englanniksi) 
  106. Wim Coekaerts: Linux mainline contains all the Xen code bits for Dom0 and DomU support blogs.oracle.com. 26.5.2011. Viitattu 11.8.2019. (englanniksi) 
  107. UserModeLinux HOWTO user-mode-linux.sourceforge.net. Viitattu 9.8.2019. (englanniksi)
  108. Cooperative Linux 0.51 lwn.net. Viitattu 9.8.2019. (englanniksi)
  109. Corbet, Jonathan: Safety-critical realtime with Linux LWN.net. Viitattu 5.10.2017.
  110. Levine, Barry: Linux' 22th Birthday Is Commemorated – Subtly – by Creator CMS Wire. Viitattu 30.8.2017.
  111. NUMA(7) Linux man-pages project. Viitattu 30.11.2017.
  112. Linux Support for NUMA Hardware lse.sourceforge.net. Viitattu 30.11.2017.
  113. Corbet, Jonathan: NUMA in a hurry 14.11.2002. LWN.net. Viitattu 30.11.2017.
  114. uClinux on the Blackfin DSP Architecture: Part 1 12.4.2006. embedded. Viitattu 23.11.2017.
  115. Hermann Härtig & Michael Hohmuth & Jochen Liedtke & Sebastian Schönberg & Jean Wolter: The Performance of µ-Kernel-Based Systems os.inf.tu-dresden.de. Viitattu 9.8.2019. (englanniksi)
  116. a b LinuxVersions KernelNewbies. Viitattu 6.8.2017.
  117. D. P. Bovet & M. Cesati: Linux Evolution (PDF) sprg.uniroma2.it. 26.3.2008. Viitattu 22.11.2017.
  118. Linux/390 – Notes and Observations linuxvm.org. Viitattu 6.8.2017. (englanniksi)
  119. McKenney, Paul: What is RCU, Fundamentally? LWN.net. Viitattu 6.8.2017.
  120. Kernel Virtual Machine linux-kvm.org. Viitattu 25.11.2017.
  121. Linux 2 6 24 Kernelnewbies. Viitattu 25.11.2017.
  122. Linux 2 6 29 Kernelnewbies. Viitattu 25.11.2017.
  123. Corbet, Jonathan: Transparent huge pages in 2.6.38 lwn.net. 19.1.2011. Viitattu 16.11.2017.
  124. Linux 2 6 38 Kernelnewbies. Viitattu 16.11.2017.
  125. Gorman, Mel: Huge pages part 1 (Introduction) lwn.net. 16.2.2010. Viitattu 16.11.2017.
  126. Torvalds, Linus: Linux 3.0 release LWN.net. Viitattu 6.8.2017.
  127. Linux 3.1 Released With Support for the OpenRISC CPU Slashdot. Viitattu 6.8.2017.
  128. One Linux for all ARM systems ZDNet. Viitattu 6.8.2017.
  129. Linux 3.7 released, bringing generic ARM support with it 12.12.2012. Ars Technica. Viitattu 22.11.2017.
  130. Namespaces in operation, part 5: User namespaces lwn.net. Viitattu 14.2.2017.
  131. Linux 4.0 released lkml.org. Viitattu 6.8.2017. (englanniksi)
  132. Linux 4.11 Kernelnewbies. Viitattu 6.8.2017. (englanniksi)
  133. Sharwood, Simon: Linux 4.14 'getting very core new functionality' says Linus Torvalds The Register. Viitattu 19.9.2017.
  134. Larabel, Michael: Intel Working On 5-Level Paging To Increase Linux Virtual/Physical Address Space Phoronix. Viitattu 19.9.2017.
  135. The 4.14 kernel has been released lwn.net. 12.11.2017. Viitattu 13.11.2017.
  136. Corbet, Jonathan: Zero-copy networking lwn.net. 3.7.2017. Viitattu 13.11.2017.
  137. Linux 4.14 Kernelnewbies. Viitattu 13.11.2017.
  138. Linux 5.1 KernelNewbies. Viitattu 5.8.2019. (englanniksi)
  139. Linux 5.2 KernelNewbies. Viitattu 11.7.2019. (englanniksi)
  140. Jonathan Corbet: Six (or seven) new system calls for filesystem mounting 12.7.2018. Lwn.net. Viitattu 11.7.2019. (englanniksi)

Kirjallisuutta[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]

Commons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta Linux (ydin).
  • [1] Torvaldsin ilmoitus Linuxin versiosta 0.02 Internetin postituslistalla vuonna 1991 (englanniksi)
  • kernel.org Linux-ydin (englanniksi)
  • Ytimen dokumentaatiota – viittaa viimeisimpään versioon (englanniksi)
  • Linux.fi – suomenkielinen Linux-aiheinen wiki, joka sisältää tietoa ja vinkkejä Linuxiin käyttöön
  • [2] Helsingin yliopiston 4.9.2006 järjestämän Linuxin 15-vuotisseminaarin sivu
  • The Linux man-pages project (englanniksi)