Hva er Linux Kernel og hva gjør det?

Innholdsfortegnelse:

Hva er Linux Kernel og hva gjør det?
Hva er Linux Kernel og hva gjør det?
Anonim
 Linuxkjernen er med over 13 millioner kodelinjer en av de største åpen kildekodeprosjektene i verden, men hva er en kjerne og hva brukes den til?
Linuxkjernen er med over 13 millioner kodelinjer en av de største åpen kildekodeprosjektene i verden, men hva er en kjerne og hva brukes den til?

Så Hva er kjernen?

En kjerne er det laveste nivået av lett utskiftbare programvare som grensesnittet til maskinvaren i datamaskinen. Det er ansvarlig for grensesnittet til alle programmene dine som kjører i "brukermodus" ned til den fysiske maskinvaren, og tillater prosesser, kjent som servere, for å få informasjon fra hverandre ved hjelp av inter-prosesskommunikasjon (IPC).

Ulike typer kjerner

Det er selvfølgelig forskjellige måter å bygge en kjerne og arkitektoniske hensyn når man bygger en fra bunnen av. Generelt faller de fleste kjerner inn i en av tre typer: monolitisk, mikrokjernen og hybrid. Linux er en monolitisk kjerne mens OS X (XNU) og Windows 7 bruker hybridkjerner. La oss ta en rask gjennomgang av de tre kategoriene, slik at vi senere kan komme nærmere inn.

Image
Image

Bilde av uptown popcorn

mikrokjerne En mikrokjernen tar tilnærmingen til å bare administrere hva den har til: CPU, minne og IPC. Nesten alt annet i en datamaskin kan ses som et tilbehør og kan håndteres i brukermodus. Mikrokjerner har en fordel av bærbarhet fordi de ikke trenger å bekymre deg hvis du endrer skjermkortet eller til og med operativsystemet ditt så lenge operativsystemet fortsatt prøver å få tilgang til maskinvaren på samme måte. Mikrokjerner har også et veldig lite fotavtrykk, både for minne og installasjonsplass, og de pleier å være sikrere fordi bare bestemte prosesser går i brukermodus som ikke har høye tillatelser som veiledermodus.

Pros

  • portabilitet
  • Små installasjonsfotavtrykk
  • Liten minnefotavtrykk
  • Sikkerhet

Ulemper

  • Maskinvare er mer abstrahert gjennom drivere
  • Maskinvare kan reagere sakte fordi drivere er i brukermodus
  • Prosesser må vente i kø for å få informasjon
  • Prosesser kan ikke få tilgang til andre prosesser uten å vente

Monolitisk kjerne Monolitiske kjerner er motsatt av mikrokjerner fordi de ikke bare omfatter CPU, minne og IPC, men de inkluderer også ting som enhetsdrivere, filsystemadministrasjon og systemserveranrop. Monolitiske kjerne pleier å være bedre å få tilgang til maskinvare og multitasking fordi hvis et program trenger å få informasjon fra minnet eller en annen prosess som kjører, har den en mer direkte linje for å få tilgang til den og trenger ikke å vente i kø for å få ting gjort. Dette kan imidlertid forårsake problemer fordi de flere tingene som går i veiledermodus, jo flere ting som kan bringe systemet ned hvis man ikke oppfører seg riktig.

Pros

  • Mer direkte tilgang til maskinvare for programmer
  • Lettere for prosesser for å kommunisere mellom hverandre
  • Hvis enheten støttes, bør den fungere uten ekstra installasjoner
  • Prosesser reagerer raskere fordi det ikke er en kø for prosessor tid

Ulemper

  • Stort installasjonsfotavtrykk
  • Stort minnefotavtrykk
  • Mindre sikker fordi alt går i veiledermodus
 Bilde via schoschie på Flickr
Bilde via schoschie på Flickr

Hybrid Kernel Hybridkjerner har muligheten til å velge og velge hva de vil kjøre i brukermodus og hva de vil kjøre i veiledermodus. Ofte vil ting som enhetsdrivere og filsystem I / O bli kjørt i brukermodus mens IPC og serveranrop vil bli beholdt i veiledermodus. Dette gir det beste fra begge verdener, men vil ofte kreve mer arbeid av maskinvareprodusenten fordi alle driverens ansvar er opp til dem. Det kan også ha noen av latensproblemer som er iboende med mikrokjerner.

Pros

  • Utvikler kan velge og velge hva som kjører i brukermodus og hva som går i veiledermodus
  • Mindre installere fotavtrykk enn monolitisk kjernen
  • Mer fleksibel enn andre modeller

Ulemper

  • Kan lide av samme prosesslag som mikrokjernen
  • Enhetsdrivere må administreres av brukeren (typisk)

Hvor er Linux Kernel-filer?

Image
Image

Kjernen filen, i Ubuntu, er lagret i din / boot-mappen og kalles vmlinuz-versjon. Navnet vmlinuz kommer fra Unix verden hvor de pleide å kalle sine kjerner rett og slett "unix" tilbake på 60-tallet, så Linux begynte å kalle sin kjernelinux når den ble utviklet på 90-tallet.

Når virtuelt minne ble utviklet for enklere multitasking evner, ble "vm" satt på forsiden av filen for å vise at kjernen støtter virtuelt minne. For en stund ble Linux-kjernen kalt vmlinux, men kjernen vokste for stor til å passe i det tilgjengelige oppstartshukommelsen, slik at kjernebildet ble komprimert og slutten x ble endret til en z for å vise at den var komprimert med zlib-komprimering. Den samme komprimeringen brukes ikke alltid, ofte erstattet med LZMA eller BZIP2, og noen kjerne kalles ganske enkelt zImage.

Versjonsnummereringen vil være i formatet A.B.C.D hvor A.B vil trolig være 2.6, C vil være din versjon, og D indikerer dine oppdateringer eller reparasjoner.

I / boot-mappen vil det også være andre svært viktige filer kalt initrd.img-versjon, system.map-versjon og config-versjon. Initrd-filen brukes som en liten RAM-disk som trekker ut og kjører den faktiske kjernefilen.System.map-filen brukes til minnehåndtering før kjernen er fullt lastet, og config-filen forteller kjernen hvilke alternativer og moduler som skal lastes inn i kjernenes bildet når det blir kompilert.
I / boot-mappen vil det også være andre svært viktige filer kalt initrd.img-versjon, system.map-versjon og config-versjon. Initrd-filen brukes som en liten RAM-disk som trekker ut og kjører den faktiske kjernefilen.System.map-filen brukes til minnehåndtering før kjernen er fullt lastet, og config-filen forteller kjernen hvilke alternativer og moduler som skal lastes inn i kjernenes bildet når det blir kompilert.

Linux Kernel Architecture

Fordi Linux-kjernen er monolitisk, har den det største fotavtrykket og den mest komplekse over de andre typer kjerner. Dette var en designfunksjon som var under ganske debatt i de tidlige dagene av Linux og har fortsatt noen av de samme designfeilene som monolitiske kjerner er iboende å ha.

En ting som Linux-kjerneutviklerne gjorde for å komme seg rundt disse feilene, var å lage kjernemoduler som kunne lastes og lastes ut i løpet av kjøretiden, noe som betyr at du kan legge til eller fjerne funksjoner i kjernen din i fly. Dette kan gå utover bare å legge til maskinvarefunksjonalitet i kjernen, ved å inkludere moduler som kjører serverprosesser, som lavnivå virtualisering, men det kan også tillate at hele kjernen erstattes uten å måtte starte datamaskinen på nytt i noen tilfeller.

Tenk deg om du kan oppgradere til en Windows-servicepakke uten å måtte starte på nytt …

Kernelmoduler

Hva om Windows hadde alle drivere tilgjengelig allerede installert, og du måtte bare slå på driverne du trengte? Det er i hovedsak hvilke kjernemoduler som gjør for Linux. Kjernemoduler, også kjent som en lastbar kjernemodul (LKM), er essensielle for at kjernen skal kunne fungere med all maskinvare uten å bruke alt tilgjengelig minne.
Hva om Windows hadde alle drivere tilgjengelig allerede installert, og du måtte bare slå på driverne du trengte? Det er i hovedsak hvilke kjernemoduler som gjør for Linux. Kjernemoduler, også kjent som en lastbar kjernemodul (LKM), er essensielle for at kjernen skal kunne fungere med all maskinvare uten å bruke alt tilgjengelig minne.

En modul legger vanligvis funksjonalitet til grunnkjernen for ting som enheter, filsystemer og systemanrop. LKMs har filtypen.ko og lagres vanligvis i katalogen / lib / moduler. På grunn av deres modulære natur kan du enkelt tilpasse kjernen din ved å sette moduler for å laste eller ikke laste under oppstart med menuconfig-kommandoen eller ved å redigere din / boot / config-filen, eller du kan laste og losse moduler på fluen med modprobe kommando.

Tredjeparts og lukket kildemoduler er tilgjengelige i enkelte distribusjoner, som Ubuntu, og kan ikke installeres som standard fordi kildekoden for modulene ikke er tilgjengelig. Utvikleren av programvaren (dvs. nVidia, ATI, blant andre) gir ikke kildekoden, men heller bygger de sine egne moduler og kompilerer de nødvendige.ko-filene for distribusjon. Selv om disse modulene er gratis som i øl, er de ikke gratis som i tale og er derfor ikke inkludert i noen distribusjoner fordi vedlikeholdsmenn føler at det "taints" kjernen ved å tilby ikke-fri programvare.

En kjerne er ikke magisk, men det er helt viktig at en hvilken som helst datamaskin kjører riktig. Linux-kjernen er forskjellig fra OS X og Windows fordi den inkluderer drivere på kjernenivå og gjør at mange ting støttes "ut av boksen". Forhåpentligvis vil du vite litt mer om hvordan din programvare og maskinvare fungerer sammen, og hvilke filer du trenger for å starte datamaskinen.

Kernel.org Bilde av ingridtaylar

Anbefalt: