5Aug
Med över 13 miljoner kodkod är Linux-kärnan ett av de största open source-projekten i världen, men vad är en kärna och vad används det för?
Så vad är kärnan?
En kärna är den lägsta nivån på lätt utbytbar programvara som gränsar till hårdvaran i din dator. Det är ansvaret för att koppla alla dina program som körs i "användarläge" ner till den fysiska hårdvaran och tillåter processer, som kallas servrar, att få information från varandra med hjälp av interprocess kommunikation( IPC).
Olika typer av kärnor
Det finns naturligtvis olika sätt att bygga en kärna och arkitektoniska överväganden när man bygger en från början. I allmänhet faller de flesta kärnorna i en av tre typer: monolitiska, mikrokärnor och hybrid. Linux är en monolitisk kärna medan OS X( XNU) och Windows 7 använder hybridkärnor. Låt oss ta en snabb rundtur i de tre kategorierna, så vi kan gå in i mer detalj senare.
Bild av uptown popcorn
mikrokärnan
En mikrokärna tar tillvägagångssättet endast hantera vad den har att: CPU, minne och IPC.Nästan allt annat i en dator kan ses som ett tillbehör och kan hanteras i användarläge. Mikrokärnor har en fördel av bärbarhet eftersom de inte behöver oroa dig om du ändrar ditt grafikkort eller till och med operativsystemet så länge som operativsystemet fortfarande försöker komma åt maskinvaran på samma sätt. Mikrokärnor har också ett mycket litet fotavtryck, både för minnes- och installationsutrymme, och de tenderar att vara säkraare eftersom endast specifika processer körs i användarläge som inte har de höga tillstånden som tillsynsmodus.
Pros
- portabilitet
- Small installera fotavtryck
- liten minnesanvändning
- Security
Cons
- Hardware är mer abstraheras genom förare
- Hardware kan reagera långsammare på grund av förarna är i användarläge
- Processer har att vänta i en kö för att få information
- Processer kan intefå tillgång till andra processer utan att vänta
Monolithic Kernel
monolitisk kärna är motsatsen till Mikrokärna eftersom de omfattar inte bara CPU, minne och IPC, men inkluderar även saker som drivrutiner, filsystem ledning, och systemserver samtal. Monolitiska kärnor tenderar att vara bättre att komma åt maskinvara och multitasking eftersom om ett program behöver hämta information från minnet eller en annan process som körs har den en mer direktlinje för åtkomst till den och behöver inte vänta i en kö för att få saker gjorda. Detta kan dock orsaka problem eftersom de fler saker som körs i tillvägagångssätt, desto fler saker kan ta ner ditt system om man inte beter sig ordentligt.
Pros
- Mer direkt tillgång till hårdvara för program
- Lättare för processer för att kommunicera mellan varandra
- Om enheten stöds, bör det fungera utan ytterligare installationer
- processer reagerar snabbare eftersom det inte finns en kö för processor tid
Cons
- Largeinstallera fotavtryck
- Stort minnes
- mindre säker eftersom allt körs i övervakningsläge
Bild via schoschie på Flickr
hybridkärna
hybridkärna har möjlighet att välja och välja vad de vill köra i användarläge och vad de vill köra in handledareläge. Ofta kommer saker som drivrutiner och filsystem I / O att köras i användarläge medan IPC- och serverns samtal hålls i handledarmodus. Detta ger bäst av båda världarna men ofta kommer det att krävas mer arbete från hårdvarufabrikanten eftersom alla drivrutinsansvar är upp till dem. Det kan också ha några av de latensproblem som är inneboende med mikrokärnor.
Pros
- utvecklare kan välja vad körs i användarläge och vad som körs i övervakningsläge
- Mindre installera fotavtryck än monolitisk kärna
- mer flexibla än andra modeller
Cons
- Kan drabbas av samma processlagring som mikrokärnan
- Enhetsdrivrutiner måste hanteras av användaren( vanligtvis)
Var är Linux Kernel-filer?
Kärnfilen i Ubuntu lagras i din / boot-mappen och kallas vmlinuz- version .Namnet vmlinuz kommer från unixvärlden där de brukade kalla sina kärnor helt enkelt "unix" tillbaka på 60-talet, så Linux började kalla sin kärna "Linux" när den först utvecklades på 90-talet.
När virtuellt minne utvecklades för enklare multitasking förmågor, sattes "vm" längst upp i filen för att visa att kärnan stöder virtuellt minne. Under en tid kallades Linux-kärnan vmlinux, men kärnan växte för stor för att passa i det tillgängliga startminnet, så kärnbilden komprimerades och slutet x ändrades till en z för att visa att den komprimerades med zlib-komprimering. Samma kompression används inte alltid, ofta ersatt med LZMA eller BZIP2, och vissa kärnor kallas helt enkelt zImage.
Versionsnumreringen kommer att vara i formatet A.B.C.D där A.B antagligen kommer att vara 2,6, C kommer att vara din version och D anger dina korrigeringar eller korrigeringar.
I / boot-mappen kommer det också att finnas andra väldigt viktiga filer som heter initrd.img-versionen, system.map-versionen och config-versionen. Initrd-filen används som en liten RAM-skiva som extraherar och exekverar den faktiska kärnfilen. System.map-filen används för minneshantering innan kärnan laddas fullständigt, och config-filen berättar kärnan vilka alternativ och moduler som ska laddas in i kärnbilden när den sammanställs.
Linux Kärnarkitektur
Eftersom Linux-kärnan är monolitisk har den det största fotavtrycket och den mest komplexa över de andra typerna av kärnor. Detta var en designfunktion som var under ganska lite debatt i början av Linux och har fortfarande några av samma designfel som monolitiska kärnor är inneboende att ha.
En sak som Linux-kärnutvecklare gjorde för att komma runt dessa brister var att göra kärnmoduler som kan laddas och lossas vid körning, vilket betyder att du kan lägga till eller ta bort funktioner i din kärna i flygningen. Detta kan gå utöver att bara lägga till maskinvarufunktionalitet i kärnan, genom att inkludera moduler som kör serverprocesser, som virtualisering på låg nivå, men det kan också låta hela kärnan ersättas utan att behöva starta om datorn i vissa fall.
Tänk om du kan uppgradera till ett Windows-servicepaket utan att behöva starta om. ..
Kärneledningar
Vad händer om Windows hade alla förare tillgängliga redan installerade och du var tvungen att starta drivrutinerna du behövde? Det är i huvudsak vilka kärnmoduler som gör för Linux. Kärnemoduler, även kända som en laddbar kärnmodul( LKM), är viktiga för att hålla kärnan fungerande med all din hårdvara utan att förbruka allt tillgängligt minne.
En modul lägger vanligtvis funktionalitet till baskärnan för saker som enheter, filsystem och systemsamtal. LKMs har filtillägget. ko och lagras vanligtvis i /lib/-modulkatalogen. På grund av deras modulära natur kan du enkelt anpassa din kärna genom att ställa in moduler för att ladda eller inte ladda vid start med menuconfig-kommandot eller genom att redigera /boot/-konfigurationsfilen, eller du kan ladda och lossa moduler i farten med modprobe-kommandot.
Tredje parts och slutna källmoduler finns tillgängliga i vissa utdelningar, som Ubuntu, och kan inte installeras som standard eftersom källkoden för modulerna inte är tillgänglig. Utvecklaren av mjukvaran( dvs. nVidia, ATI, bland andra) tillhandahåller inte källkoden utan snarare bygger de egna moduler och sammanställer de nödvändiga. ko-filerna för distribution. Medan dessa moduler är fria som i öl är de inte fria som i tal och är därför inte inkluderade av vissa distributioner eftersom underhållarna anser att det "taints" kärnan genom att tillhandahålla icke-fri programvara.
En kärna är inte magisk, men det är helt nödvändigt att någon dator körs ordentligt. Linux-kärnan är annorlunda än OS X och Windows eftersom den innehåller drivrutiner på kärnnivå och gör att många saker stöds "ur lådan".Förhoppningsvis kommer du att veta lite mer om hur din programvara och maskinvara fungerar tillsammans och vilka filer du behöver för att starta datorn.
Kernel.org
Bild av ingridtaylar