Linuxkjernen er en fri og åpen, monolittisk og Unix-liknende operativsystemkjerne som benyttes verden over i operativsystemet Linux. Den anvendes i personlige datamaskiner, arbeidsstasjoner, tjenere og superdatamaskiner, vanligvis i form av Linuxdistribusjoner.
Linuxkjernen ble skapt av finnen Linus Torvalds, som lanserte den første utviklingsversjonen 17. september 1991. Første stabile versjon ble sluppet 14. mars 1994.
Kjernen brukes også i robotikk, tingenes internett, smarthus (varme-, ventilasjons- og sanitærteknikk, Smart Grid, smarte strømmålere, lyskontroll etc.), og i innebygde systemer som carputere, nettoper, rutere, trådløse basestasjoner, hustelefonsentraler, TV-mottakere, smart-TVer, digitale videopptakere og nettverkstilsluttede datalagre. Diverse operativsystemer for mobilt internettutstyr, notatblokk-PCer, Nett-PCer, nettbrett, lesebrett, smarttelefoner og smartur benytter modifiserte Linuxkjerner.
Den blir vedlikeholdt av et nettverk av brukere, hvor det inngår en rekke multinasjonale selskaper. I 2015 hadde nesten programmerere fra omkring selskaper bidratt til kjernens utvikling, mens gruppen «amatører» i 2007 stod for 3,9 % av endringene. Siden 1996 har utviklingsdiskusjoner foregått daglig på Linuxkjernens e-postliste.
Linuxkjernen er skrevet nesten utelukkende i programmeringsspråket C (med noen GNU C syntaksutvidelser) og AT&T assembler. Kildekoden er fri og åpen programvare, som er lisensiert under GNU General Public License versjon 2 (GPLv2), men ikke versjon 3 (GPLv3).
Arkitektur Oversikt
thumb|450px|Stamtreet til Unix og Linux. Linuxkjernen benyttes verden over i operativsystemet Linux. Den er fri og åpen programvare, og er således både fri programvare og åpen kildekode. Den blir lansert under en fri programvarelisens: Alle kan fritt bruke, kopiere, studere og forandre den og kildekoden er åpen slik at folk oppmuntres til å frivillig forbedre den. Dette står i kontrast til proprietær programvare, som er begrenset av opphavsrett og hvor kildekoden vanligvis er skjult for brukerne. Linuxkjernen er lisensiert under GNU General Public License versjon 2 (GPLv2), men ikke versjon 3 (GPLv3). Den er ikke en del av GNU-prosjektet og er heller ikke dette prosjektets offisielle operativsystemkjerne.
Linuxkjernen er en Unix-lignende operativsystemkjerne. Den har arvet mye fra UNIX, men den følger ikke offisielt Single UNIX Specification og derfor har Open Group heller ikke sertifisert den og gitt den varemerket «UNIX». Enkelte Linuxdistribusjoner har imidlertid blitt sertifisert med dette varemerke. Litt forenklet kan vi si at FreeBSD og beslektede Unix-lignende operativsystemer er etterfølgere av Berkeley Software Distribution (BSD), mens Linuxkjernen også har hentet mye fra UNIX System V.
Linuxkjernen har i dag et stort anvendelsesområde. Den anvendes i personlige datamaskiner, arbeidsstasjoner, tjenere og superdatamaskiner, vanligvis i form av Linuxdistribusjoner. Linuxkjernen brukes også i robotikk, tingenes internett, smarthus (varme-, ventilasjons- og sanitærteknikk, Smart Grid, smarte strømmålere, lyskontroll etc.) og i innebygde systemer som carputere, nettoper, rutere, trådløse basestasjoner, hustelefonsentraler, TV-mottakere, smart-TVer,Linux TV, linuxtv.org, 26. mai 2016, besøkt 3. august 2016 digitale videopptakerePVR recording software, Kodi, 4. februar 2016 og nettverkstilsluttede datalagre. Diverse operativsystemer for mobilt internettutstyr, notatblokk-PCer, Nett-PCer, nettbrett, lesebrett, smarttelefoner og smartur benytter modifiserte Linuxkjerner.
Linuxkjernen ble skapt av finnen Linus Torvalds (1969–), som lanserte første utviklingsversjon den 17. september 1991.Linux , history-computer.com, 2007 Første stabile versjon kom 14. mars 1994. I dag vedlikeholdes den av et nettverk med brukere, hvor det inngår en rekke multinasjonale selskaper. I 2015 hadde nesten 12 000 programmerere fra omkring 1 200 selskaper bidratt til kjernens utvikling, mens gruppen «amatører» i 2007 stod for 3,9 % av endringene.Don Marti: Linux contributor base broadens, Computerworld, 2. juli 2007 Siden 1996 har utviklingsdiskusjoner foregått daglig på Linuxkjernens e-postliste.
Historien om Linuxkjernen er et viktig kapittel i operativsystemets historie. Denne artikkelen nevner også andre operativsystemer av betydning: Windows 3.0, Windows 3.1, Windows 95, Windows 98, Windows NT, OS/2, Klassisk MacOS, Mac OS X, NeXTSTEP og Novell NetWare. De blir sammenlignet med Linuxkjernen på flere områder, for å skape en større kontekst.
Etterhvert har Linuxkjernen blitt endret fra å støtte kooperativ fleroppgavekjøring til å støtte fleroppgavekjøringen med «forkjøpsrett». Den har også blitt utvidet med symmetrisk flerprosessering, multitråder, delte biblioteker, virtuell hukommelse og behovsbetinget sideveksling, dynamisk lastbare moduler, støtte for et tyvetalls ulike filsystemer, avansert støtte for datanett og kommunikasjon med nettverksoperativsystemer (deriblant Network File System (NFS) og Netware), internett, og støtte for ulike busser for periferienheter etter hvert som disse har utviklet seg.
Opprinnelig ble den utviklet for Intels 32-biter mikroprosessor 80386. I årenes løp har den blitt portert til de fleste datamaskinarkitekturer, deriblant x86-64, Motorola 68000, SPARC, PowerPC, IBM POWER, MIPS, PA-RISC, DEC Alpha, SuperH, IBM System z9, Intel Itanium, ARM og RISC-V.
Linuxkjernen er skrevet nesten utelukkende i programmeringsspråket C (med noen GNU C syntaksutvidelser)Linux kernel coding style, kernel.org, Documentation, 28. juli 2016 og AT&T assembler.
Linuxkjernen har vokst fra 8 413 linjer med C-kode i første utviklingsversjon, som ble lansert 17. september 1991, til å omfatte 26 552 127 linjer med C-kode i versjon 5.2.0 som ble lansert 7. juli 2019.
Den 23. desember 2018 var det 104 258 registrerte brukere på 62 446 registrerte datamaskiner ifølge nettstedet Linux Counter.LinuxCounter , besøkt 21. september 2018
Monolittisk kjerne
thumb|450px|Strukturen til operativsystemer som benytter henholdsvis monolittiske kjerner og mikrokjerner. Linuxkjernen er en monolittisk kjerne. Dette betyr at hele operativsystemet kjører i operativsystemkjernen. I mikrokjerner opererer derimot det absolutt minste antall tjenester innenfor kjernen, og andre tjenester bygges lag på lag omkring den. Unix og Unix-lignende operativsystemer benytter stort sett monolittiske kjerner, som er den tradisjonelle arkitekturen. Mikrokjerner oppstod i 1980-årene som en reaksjon på utfordringer som tradisjonelle kjerner hadde i møtet med den teknologiske utvikling. Stadige teknologiske forandringer gjorde at det stadig måtte utvikles nye utstyrsdrivere, nye nettverksprotokoller og nye filsystemer, såvel som andre deler av operativsystemene. I distribuerte operativsystemer var dette spesielt følbart, fordi datanett kunne bestå av mange ulike datamaskinarkitekturer, som hver enkelt hadde sin egenarter og gjennomgikk sin egen særegne utvikling, noe som igjen førte til enda mer arbeid for utviklere. Mikrokjerner er implementert ved hjelp av modulær programmering: Utstyrsdrivere, nettverksprotokoller, filsystemer og flere ting er fjernet fra kjernen. De er isolert i moduler utenfor kjernen, hvor de er lettere å håndtere og modifisere.
Forløperen til Linuxkjernen var MINIX, og i begynnelsen var Linuxkjernen avhengig av MINIX under oppstart. MINIX ble opprinnelig utviklet av Andrew S. Tanenbaum ved Vrije Universiteit Amsterdam, og første versjon ble lansert i 1987. MINIX er et POSIX-kompatibelt Unix-lignende operativsystem med en mikrokjerne. Den 29. januar 1992 startet Tanenbaum en debatt på Usenets diskusjonsgruppe comp.os.minix. Der hevdet han at mikrokjerner var overlegen i forhold til monolittiske kjerner, og at Linuxkjernen allerede før lanseringen i 1992 var foreldet. Debatten startet saklig, men utviklet seg etterhvert til en «flame war». Emnet ble tatt opp igjen den 9. mai 2006, og den 12. mai 2006 forklarte Tanenbaum på nytt sin holdning til monolittiske kjerner.
Eksempler på mikrokjerner i distribuerte operativsystemer er Amoeba 809, Eden, Mach og V system. De prosessbaserte distribuerte og Unix-lignende operativsystemene LOCUS 845, Accent og QNX hadde derimot en monolittisk kjerne. Windows NT var implementert rundt en mikrokjerne i versjonene 3.1, 3.5 og 3.51. I versjon 4.0 og senere har kjernen vært monolittisk. OS/2, NeXTSTEP, Novell NetWare og det distribuerte operativsystemet Plan 9 benyttet hybridkjerner; det samme gjelder Mac OS X. Klassisk MacOS hadde en monolittisk kjerne på Motorola 68000-serien, men benyttet en såkalt nanokjerne (eller «picokjerne») på PowerPC.
Mikrokjernen GNU Mach er GNU-prosjektets offisielle operativsystemkjerne. Den har sin forløper i mikrokjernen Mach fra Carnegie Mellon University, og er kjernen i GNU Hurd. Selv om Debian offisielt er en Linuxdistribusjon, finnes det en uoffisiell avart (Debian GNU/Hurd) som kjører GNU Hurd i stedet for Linuxkjernen. Det samme gjelder Arch Hurd (som er basert på Arch Linux), Guix System Distribution, tidligere avarter av Bee og Gentoo, og den tidligere distribusjon NixOS.
Linuxkjernen er ikke en del av GNU-prosjektet, men er blitt utviklet ved hjelp av GNU C og andre utviklingsverktøy fra GNU. Som allerede nevnt, er den også lisensiert under GNU General Public License versjon 2 (GPLv2), men ikke versjon 3 (GPLv3).
Beskyttelsesringer
300px|thumb|right|Beskyttelsesringer for x86 i beskyttet modus. thumb|300px|Kart over Linuxkjernen. thumb|300px|Linuxkjernen støtter ulike datamaskinarkitekturer, og gir en felles plattform for å kjøre fri og åpen så vel som proprietær programvare. Moderne mikroprosessorer har beskyttelsesringer, som beskytter data og funksjonalitet fra feil. I Linux gjenspeiles de i skillet mellom brukermodus og kjernemodus. Eksempler på programmer som kjører i brukermodus er applikasjonsprogramvare, vindussystemene X, Wayland, Mir og en rekke skrivebordsmiljøer. De har ikke lov til å utføre maskinvarerelaterte kommandoer direkte, men sender systemkall til Linuxkjernen som utfører disse kommandoene. Linuxkjernen er således den betrodde delen av Linux, som utfører maskinvarerelaterte kommandoer direkte. En slik beskyttelse sørger for feiltoleranse, og hindrer at programvarefeil i en nettleser eller et annet brukerprogram krasjer hele operativsystemet. Windows 95 og Windows 98 manglet til sammenligning slik feiltoleranse. Der kunne for eksempel programvarefeil i et videospill havarere hele datasystemet. OS/2 og Windows NT på den andre siden, utnyttet i likhet med Linux den beskyttede modus i x86-arkitekturen hvor disse beskyttelsesringene blir tatt i bruk.
Beskyttelsesringene gir ulike prioritetsnivåer, hvor operativsystemkjernen har større prioritet enn brukerprogrammer, dersom de to kommer i konflikt. Linuxkjernen kjører i prioritetsring 0 (høyest prioritet), mens de øvrige prosesser kjører i prioritetsring 3.
Den monolittiske kjernen gjør at hele Linuxkjernen kjører i ring 0. En mikrokjerne ville ha ført til at kun det absolutt minste antall tjenester hadde kjørt i ring 0, og at de resterende delene av operativsystemkjernen kjørte i ring 3. Dette ville igjen ha svekket ytelsen, fordi ring 3 er tregere enn ring 0, og fordi ulike deler av kjernen hadde vært nødt til å sende systemkall til hverandre i stedet for å utføre kommandoer direkte. Mikrokjerner er enklere å modifisere, men prisen for modulariteten er en svekket ytelse.
Figuren nedenfor viser de ulike lagene i Linux. Den viser også skillet mellom brukermodus og kjernemodus.