Linux (ydin)

Kohteesta Wikipedia
Loikkaa: valikkoon, 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


Kehittäjä Linus Torvalds ja tuhansia kehittäjiä
Kehityshistoria
Julkaistu 0.0.1, 17. syyskuuta 1991[1]
Vakaa versio 4.14 / 12.11.2017 [2][3][4]
Kehitystilanne Aktiivinen
Tiedot
Ohjelmistotyyppi Käyttöjärjestelmän ydin
Alusta Luettelo Linuxissa tuetuista tietokonearkkitehtuureista
Ohjelmointikielet C, Assembly
Lisenssi GPLv2
Verkkosivu www.kernel.org
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ä]

Helsingin yliopistossa tietojenkäsittelytiedettä opiskellut Linus Torvalds aloitti Linuxin kehittämisen 21-vuotiaana vuonna 1990. 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.

Torvalds oli tyytymätön MS-DOS-käyttöjärjestelmään, joka hyödynsi huonosti hänen vasta hankkimansa Intel 80386 -koneen ominaisuuksia. Häntä kiinnosti Unix, sillä se oli vakaa ja siinä oli sellaisia ominaisuuksia, joita hän halusi. 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.

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, joilla oli kopio Tanenbaumin kirjasta. Ohjelmoijat pystyivät näin opiskelemaan olemassa olevaa käyttöjärjestelmää ensimmäisen kerran sitten Unixin alkuaikojen.

Minixkään ei ollut sitä, mitä Torvalds oli hakemassa. Se kuitenkin mahdollisti ja inspiroi Linuxin ohjelmoinnin aloittamisen. Torvalds asensi Minixin koneeseensa ja kirjoitti uutta ydintä koko kesän. Vähitellen hän kokosi konekielellä ja C-ohjelmointikielellä käyttöjärjestelmän ytimen. 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ä.[5][1] Versio 0.01 valmistui 17. syyskuuta samana vuotena, joka oli ensimmäinen lähdekoodijulkaisu.[6][1] Torvalds oli itse tehnyt käännökset bash-komentorivitulkista ja GCC-kääntäjästä.[5][6]

Lokakuussa 1991 versio 0.02 oli valmis ja Torvalds päätti laittaa sen vapaasti kaikkien saataville. 5. lokakuuta Internetin keskusteluryhmää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.[7] 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 Linus Torvalds oli suunnitellut antavansa ohjelmansa nimeksi Freax, 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.

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ä.[8] 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.[9] 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.[10] Nykyinen lisenssi on GPL versio 2 ja Torvalds on sanonut vastustavansa siirtymistä versioon 3 sen lisäämien käyttörajoituksien vuoksi.[11]

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

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.

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.[13] Versioon 4.11 otettiin mukaan 12 546 muutosjoukkoa ja ydin kasvoi lähes 300 000 rivillä ohjelmakoodia.[14]

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

Kesällä 2015 ytimen versiossa 4.1 oli yli 19,5 miljoonaa lähdekoodiriviä.[17]

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).[18] Nykyisin seuraavaan versioon tulevat muutokset ovat linux-next nimisessä kehityshaarassa ja versionumeroinnin erityismerkityksestä on luovuttu.[19] Longterm support (LTS) versioihin julkaistaan päivityksiä vielä uuden version jälkeen muutaman vuoden ajan.[20][21]

Linux-ytimen uudelleenkehittämisen arvosta on esitetty useita arvioita: maaliskuussa 2011 sen arvioitiin olevan 3 miljardia Yhdysvaltain dollaria ja kasvavan.[22][23]

Linux Foundationin julkaiseman raportin mukaan kehitykseen on osallistunut yli 13 500 kehittäjää yli 1 300 yrityksestä.[24]

Ydin on toteutettu pääasiassa C-kielellä.[25] Torvaldsin mukaan haastavat ongelmat ytimen kehityksessä eivät ratkea ohjelmointikieltä vaihtamalla.[26] Haastavat ongelmat ovat tyypillisesti laitteistotuessa kuten laiteajurit ja alustakohtaiset erot.[26]

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.[27] Ladattavien moduulien tuki on ollut ytimessä versiosta 1.2 (1995) lähtien.[27]

Suorittimet tukevat ytimen kernel-mode suoritustilassa erityiskomentoja ja sallii kaiken muistiavaruuden käytön.[28] Käyttäjän user-mode tilassa muistialueet käskyt ovat rajatumpia.[28] Suorituksen siirto käyttäjän ja ytimen tilojen välillä järjestelmäkutsujen yhteydessä kuluttaa huomattavasti aikaa.[28] Ytimet, joissa kaikki ajurit ovat kiinteästi osana ydintä ilman ladattavia moduuleja, ovat monoliittisiä ytimiä.[28]

Linux tukee moduulien kryptografista allekirjoittamista.[29] 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).[30] 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.[31][32]

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

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

Muita ladattavia moduuleja tukevia käyttöjärjestelmiä ovat esimerkiksi Solaris.[36]

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

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

#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ä.[38][39] Vastaava rakenne on toteutettu esimerkiksi SunOS-käyttöjärjestelmässä.

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

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

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

VFS:n avulla ydin tukee lohkopohjaisia tiedostojärjestelmiä (Btrfs, ext2/3/4, JFS, XFS, ISO 9660, UDF)[41][42][43], 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.[44][45][46]

Ydin tukee useita menetelmiä ja algoritmeja tehtävien ajoituksen hallintaan.[47][48] Ytimen versiossa 2.6.23 lisätty CFS korvasi O(1) skedulerin.[49][50] Ytimeen on kehitetty tuki ladattaville skedulereille eri käyttötarpeita varten.[51][52]

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

Ytimen sisäinen moniajo tunnistaa mm. spinlock-lukituksen käytön ytimen sisäisessä moniajossa.[55] 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ä.[56][57]

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

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

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.[61][62]

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.[63][64][65]

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.[66] Linuxissa on mahdollista käyttää myös useita muita menetelmiä.[67]

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.[68][69]

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).[70]

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

Lisäksi ydin tukee suorituksen seurantaan muita menetelmiä kuten strace[71], ptrace()[72] ja kprobe.[73]

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

Alustat[muokkaa | muokkaa wikitekstiä]

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

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

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

Linux-aikajana[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Linux-ytimen aikajana

Linux-ytimen versioita:[80][81]

  • Linux 0.01 julkaistiin 17. syyskuuta 1991.
  • Linux 0.02 julkaistiin 5. lokakuuta 1991.
  • Linux 0.03 julkaistiin lokakuussa 1991.
  • Linux 0.10 julkaistiin marraskuussa 1991.
  • Linux 0.11 julkaistiin 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[82]
  • 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[80][83]
  • 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[84][85]
  • Linux 2.6.24 tammikuussa 2008 lisäsi Cgroup-tuen[86]
  • 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[87]
  • 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[88][89][90]
  • Linux 3.0 heinäkuussa 2011. Torvalds ilmoitti muuttavansa versionumeroa Linuxin 20-vuotispäivien kunniaksi.[91]
  • Linux 3.1 lokakuussa 2011 lisäsi tuen OpenRISC-suorittimelle ja NFC-siruille.[92]
  • Linux 3.7 vuonna 2012 yhtenäisti tuen ARM-pohjaisille järjestelmäpiireille[93][94]
  • Linux 3.8 vuonna 2013 lisäsi tuen käyttäjien nimiavaruuksille[95]
  • 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.[96]
  • Linux 4.11 huhtikuussa 2017 lisäsi tuen muun muassa liitännäisille IO-skedulereille.[97]
  • Linux 4.14 marraskuussa 2017: uudistuksia ovat muun muassa viisitasoinen muistisivujen käsittely, joka nostaa maksimimuistimäärän teratavuista petatavuihin.[98][99] Muita uudistuksia ovat heterogeeninen muistikäsittely (HMM), ORC pinonkäsittely, AMD:n muistisalaus, nolla-kopion verkkokäsittely ja säikeistystuki cgroup-ryhmille.[100][101][102]

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 4.14 Viitattu 13.11.2017.
  4. Torvalds, Linus: Linux 4.14 Viitattu 13.11.2017.
  5. a b Torvalds, Linus: What would you like to see most in minix? Viitattu 5.8.2017.
  6. a b Torvalds, Linus: Notes for linux release 0.01 Viitattu 5.8.2017.
  7. Torvalds, Linus: Free minix-like kernel sources for 386-AT Viitattu 5.8.2017.
  8. Torvalds, Linus: RELEASE NOTES FOR LINUX v0.12 Viitattu 5.8.2017.
  9. The Daemon, the GNU and the Penguin, by Dr. Peter H. Salus - Ch. 20 Groklaw. Viitattu 25.11.2017.
  10. http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.12
  11. Linus Torvalds says GPL v3 violates everything that GPLv2 stood for Viitattu 3.7.2017.
  12. Hiroo Yamagata: The Pragmatist of Free Software, Linus Torvalds Interview, 30 September 1997
  13. Kernel Summit: Development process 21.7.2004. LWN.net. Viitattu 27.11.2017.
  14. Corbet, Jonathan: 4.11 Kernel development statistics 19.4.2017. LWN.net. Viitattu 30.11.2017.
  15. Kroah-Hartman, Greg: HOWTO do Linux kernel development Viitattu 27.11.2017.
  16. Morton, Andrew: The perfect patch. 4.3.2006. Viitattu 27.11.2017.
  17. Larabel, Michael: Linux Kernel At 19.5 Million Lines Of Code, Continues Rising Phoronix. Viitattu 6.8.2017.
  18. Linux Kernel Version Numbering 29.5.2006. The Linux Information Project.
  19. Frequently asked questions Viitattu 30.11.2017.
  20. Long-term Linux support future clarified 27.11.2017. ZDNet. Viitattu 30.11.2017.
  21. Larabel, Michael: Linux To Get "Extended LTS" Releases, Kernel Support For Six Years 29.9.2017. Phoronix. Viitattu 30.11.2017.
  22. Wheeler, David A.: The Linux Kernel: It’s Worth More! Viitattu 6.8.2017. (englanniksi)
  23. The Cost of Linux Viitattu 6.8.2017. (englanniksi)
  24. Linux Kernel Development Report 2016 Linux Foundation. Viitattu 6.8.2017. (englanniksi)
  25. Barry, Paul: Which Programming Language? 7.2.2001. Linux Journal. Viitattu 2.12.2017.
  26. a b Venezia, Paul: Linux at 25: Linus Torvalds on the evolution and future of Linux 25.8.2016. InfoWorld. Viitattu 2.12.2017.
  27. a b Introduction to Linux Loadable Kernel Modules Viitattu 22.11.2017.
  28. 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.
  29. Kernel module signing facility Viitattu 22.11.2017.
  30. Day, Rob: The Kernel Newbie Corner: Kernel Symbols: What's Available to Your Module, What Isn't 29.7.2009. Viitattu 22.11.2017.
  31. Tainting from user space 24.5.2006. LWN.net. Viitattu 22.11.2017.
  32. Tainted kernels Viitattu 22.11.2017.
  33. Derek Molloy: Writing a Linux Kernel Module — Part 1: Introduction Viitattu 22.11.2017.
  34. Day, Rob: The Kernel Newbie Corner: Loadable Kernel Modules, Coming and Going 8.7.2009. Viitattu 22.11.2017.
  35. Debugging a loadable kernel module Viitattu 22.11.2017.
  36. Silberschatz & Galvin & Gagne: Operating System Concepts Essentials (PDF) Viitattu 10.11.2017.
  37. 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.
  38. A tour of the Linux VFS Viitattu 23.11.2017.
  39. M. Jones: Anatomy of the Linux virtual file system switch 31.8.2009. IBM. Viitattu 23.11.2017.
  40. a b Gooch, Richard: Overview of the Linux Virtual File System 24.6.2007. Viitattu 23.11.2017.
  41. Lanyue Lu & Andrea C. Arpaci-Dusseau & Remzi H. Arpaci-Dusseau & Shan Lu: A Study of Linux File System Evolution doi:10.1145/2560012. Viitattu 28.11.2017.
  42. isofs Viitattu 28.11.2017.
  43. Documentation/filesystems/udf.txt Viitattu 28.11.2017.
  44. FAQ/Preemption Kernelnewbies. Viitattu 25.11.2017.
  45. Corbet, Jonathan: Optimizing preemption 14.8.2013. LWN.net. Viitattu 25.11.2017.
  46. Addressing latency problems in 2.6 14.7.2017. Viitattu 25.11.2017.
  47. sched - overview of CPU scheduling Linux man-pages project. Viitattu 2.12.2017.
  48. Ankita Garg: Real-Time Linux Kernel Scheduler 1.8.2009. Linux Journal. Viitattu 2.12.2017.
  49. M.Jones: Inside the Linux 2.6 Completely Fair Scheduler 15.12.2009. IBM. Viitattu 2.12.2017.
  50. Robert Love: The Linux Process Scheduler 13.11.2003. Informit. Viitattu 2.12.2017.
  51. Scott Rhine: Plug-In Scheduler Policies for Linux (PDF) Viitattu 2.12.2017.
  52. Con Kolivas: Pluggable cpu scheduler framework LWN.net. Viitattu 2.12.2017.
  53. M. Jones: Anatomy of Linux synchronization methods IBM. Viitattu 25.11.2017.
  54. kthreads (PDF) Viitattu 25.11.2017.
  55. Driver porting: the preemptible kernel 24.2.2003. Viitattu 23.11.2017.
  56. Proper Locking Under a Preemptible Kernel: Keeping Kernel Code Preempt-Safe Viitattu 1.12.2017.
  57. Driver porting: per-CPU variables LWN.net. Viitattu 1.12.2017.
  58. a b Understanding Linux Kernel Preemption 23.11.2017. Viitattu 29.11.2017.
  59. NO_HZ: Reducing Scheduling-Clock Ticks Viitattu 1.12.2017.
  60. Corbet, Jonathan: (Nearly) full tickless operation in 3.10 8.5.2013. LWN.net. Viitattu 1.12.2017.
  61. Corbet, Jonathan: BPF: the universal in-kernel virtual machine 21.5.2014. LWN.net. Viitattu 27.11.2017.
  62. Linux Socket Filtering aka Berkeley Packet Filter (BPF) Viitattu 27.11.2017.
  63. TOMOYO Linux and pathname-based security 14.4.2008. LWN.net. Viitattu 28.11.2017.
  64. AppArmor Viitattu 28.11.2017.
  65. Edge, Jake: Smack for simplified access control 8.8.2007. LWN.net. Viitattu 28.11.2017.
  66. 6 Linux Interprocess Communications The Linux Documentation Project. Viitattu 30.11.2017.
  67. Chandrashekar Babu: IPC mechanisms on Linux - Introduction 1.8.2012. Viitattu 30.11.2017.
  68. Brown, Neil: Bus1: a new Linux interprocess communication proposal 17.8.2016. LWN.net. Viitattu 4.12.2017.
  69. Brown, Neil: Fast interprocess communication revisited 9.11.2011. LWN.net. Viitattu 4.12.2017.
  70. a b Chapter 1. Introduction Viitattu 25.11.2017.
  71. strace(1) - Linux man page Viitattu 25.11.2017.
  72. PTRACE(2) Viitattu 25.11.2017.
  73. Kernel Probes (Kprobes) Viitattu 25.11.2017.
  74. Vince Weaver: Linux perf event Features and Overhead 21.4.2013. Viitattu 25.11.2017.
  75. Levine, Barry: Linux' 22th Birthday Is Commemorated - Subtly - by Creator CMS Wire. Viitattu 30.8.2017.
  76. NUMA(7) Linux man-pages project. Viitattu 30.11.2017.
  77. Linux Support for NUMA Hardware Viitattu 30.11.2017.
  78. Corbet, Jonathan: NUMA in a hurry 14.11.2002. LWN.net. Viitattu 30.11.2017.
  79. uClinux on the Blackfin DSP Architecture: Part 1 12.4.2006. embedded. Viitattu 23.11.2017.
  80. a b LinuxVersions KernelNewbies. Viitattu 6.8.2017.
  81. D. P. Bovet & M. Cesati: Linux Evolution (PDF) 26.3.2008. Viitattu 22.11.2017.
  82. Linux/390 - Notes and Observations Viitattu 6.8.2017. (englanniksi)
  83. McKenney, Paul: What is RCU, Fundamentally? LWN.net. Viitattu 6.8.2017.
  84. Linux 2 6 20 Viitattu 25.11.2017.
  85. Kernel Virtual Machine Viitattu 25.11.2017.
  86. Linux 2 6 24 Kernelnewbies. Viitattu 25.11.2017.
  87. Linux 2 6 29 Kernelnewbies. Viitattu 25.11.2017.
  88. Corbet, Jonathan: Transparent huge pages in 2.6.38 19.1.2011. Viitattu 16.11.2017.
  89. Linux 2 6 38 Kernelnewbies. Viitattu 16.11.2017.
  90. Gorman, Mel: Huge pages part 1 (Introduction) 16.2.2010. Viitattu 16.11.2017.
  91. Torvalds, Linus: Linux 3.0 release LWN.net. Viitattu 6.8.2017.
  92. Linux 3.1 Released With Support for the OpenRISC CPU Slashdot. Viitattu 6.8.2017.
  93. One Linux for all ARM systems ZDNet. Viitattu 6.8.2017.
  94. Linux 3.7 released, bringing generic ARM support with it 12.12.2012. Ars Technica. Viitattu 22.11.2017.
  95. Namespaces in operation, part 5: User namespaces Viitattu 14.2.2017.
  96. Linux 4.0 released Viitattu 6.8.2017. (englanniksi)
  97. Linux 4.11 Kernelnewbies. Viitattu 6.8.2017. (englanniksi)
  98. Sharwood, Simon: Linux 4.14 'getting very core new functionality' says Linus Torvalds The Register. Viitattu 19.9.2017.
  99. Larabel, Michael: Intel Working On 5-Level Paging To Increase Linux Virtual/Physical Address Space Phoronix. Viitattu 19.9.2017.
  100. The 4.14 kernel has been released 12.11.2017. Viitattu 13.11.2017.
  101. Corbet, Jonathan: Zero-copy networking 3.7.2017. Viitattu 13.11.2017.
  102. Linux 4.14 Kernelnewbies. Viitattu 13.11.2017.

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)