Hvad er Linux-kernen og hvad gør det?

Indholdsfortegnelse:

Video: Hvad er Linux-kernen og hvad gør det?

Video: Hvad er Linux-kernen og hvad gør det?
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Marts
Hvad er Linux-kernen og hvad gør det?
Hvad er Linux-kernen og hvad gør det?
Anonim
 Linux kerne er med over 13 millioner kodeord en af de største open source-projekter i verden, men hvad er en kernel og hvad bruges den til?
Linux kerne er med over 13 millioner kodeord en af de største open source-projekter i verden, men hvad er en kernel og hvad bruges den til?

Så hvad er kernen?

En kerne er det laveste niveau af let udskiftelig software, der interfacer med hardwaren på din computer. Det er ansvarligt for at interfacere alle dine applikationer, der kører i "brugertilstand" ned til den fysiske hardware, og tillader processer, der kaldes servere, at få information fra hinanden ved hjælp af interprocess kommunikation (IPC).

Forskellige typer af kerner

Der er selvfølgelig forskellige måder at opbygge en kerne og arkitektoniske overvejelser, når man bygger en fra bunden. Generelt falder de fleste kerner i en af tre typer: monolitisk, mikrokernel og hybrid. Linux er en monolitisk kerne, mens OS X (XNU) og Windows 7 bruger hybridkerner. Lad os tage en hurtig rundvisning i de tre kategorier, så vi kan komme nærmere ind i det senere.

Image
Image

Billede af uptown popcorn

mikrokernen En mikrokernel tager tilgangen til kun at styre hvad den har til: CPU, hukommelse og IPC. Næsten meget alt andet i en computer kan ses som et tilbehør og kan håndteres i brugertilstand. Mikrokerner har en fordel af bærbarhed, fordi de ikke behøver at bekymre dig, hvis du ændrer dit grafikkort eller endda dit operativsystem, så længe operativsystemet stadig forsøger at få adgang til hardwareen på samme måde. Mikrokerner har også et meget lille fodspor til både hukommelse og installeringsplads, og de har tendens til at være mere sikre, fordi kun bestemte processer kører i brugertilstand, som ikke har de høje tilladelser som supervisormodus.

Fordele

  • overførselsret
  • Lille installation fodaftryk
  • Lille hukommelsesfodaftryk
  • Sikkerhed

Ulemper

  • Hardware er mere abstraheret gennem chauffører
  • Hardware kan reagere langsommere, fordi drivere er i brugertilstand
  • Processer skal vente i kø for at få oplysninger
  • Processer kan ikke få adgang til andre processer uden at vente

Monolitisk kerne Monolitiske kerner er modsatte af mikrokerner, fordi de ikke kun omfatter CPU, hukommelse og IPC, men de omfatter også ting som enhedsdrivere, filsystemstyring og systemserveropkald. Monolitiske kerner har tendens til at være bedre til at få adgang til hardware og multitasking, fordi hvis et program skal hente oplysninger fra hukommelse eller en anden proces, der kører, har den en mere direkte linje for at få adgang til den og behøver ikke at vente i kø for at få tingene færdige. Dette kan dog forårsage problemer, fordi de flere ting, der løber i vejleder tilstand, jo flere ting der kan bringe dit system ned, hvis man ikke opfører sig korrekt.

Fordele

  • Mere direkte adgang til hardware til programmer
  • Lettere for processer at kommunikere mellem hinanden
  • Hvis din enhed understøttes, skal den fungere uden yderligere installationer
  • Processer reagerer hurtigere, fordi der ikke er en kø til processortiden

Ulemper

  • Stort installationsfodaftryk
  • Stort hukommelsesfodaftryk
  • Mindre sikker, fordi alt løber i vejleder
 Billede via schoschie på Flickr
Billede via schoschie på Flickr

Hybridkernel Hybridkerner har mulighed for at vælge og vælge, hvad de vil køre i brugertilstand og hvad de vil køre i supervisor-tilstand. Ofte vil ting som enhedsdrivere og filsystem I / O blive kørt i brugertilstand, mens IPC og serveropkald vil blive bevaret i vejlederfunktionen. Dette giver det bedste fra begge verdener, men det vil ofte kræve mere arbejde hos hardwareproducenten, fordi alt ansvar for førerens ansvar er op til dem. Det kan også have nogle af de latensproblemer, der er forbundet med mikrokerner.

Fordele

  • Udvikler kan vælge og vælge, hvad der kører i brugertilstand og hvad der kører i supervisor tilstand
  • Mindre installere fodaftryk end monolitisk kerne
  • Fleksibelt end andre modeller

Ulemper

  • Kan lide af samme proceslag som mikrokernel
  • Enhedsdrivere skal administreres af brugeren (typisk)

Hvor er Linux Kernel-filer?

Image
Image

Kernel-filen, i Ubuntu, gemmes i din / boot-mappen og kaldes vmlinuz-version. Navnet vmlinuz kommer fra unix verden, hvor de plejede at kalde deres kerner simpelthen "unix" tilbage på 60'erne, så Linux begyndte at kalde deres kerne "linux", da den blev udviklet i 90'erne.

Når virtuel hukommelse blev udviklet til lettere multitasking evner, blev "vm" sat på forsiden af filen for at vise, at kernen understøtter virtuel hukommelse. Linuxkernen blev i et stykke kaldt vmlinux, men kernen voksede for stor til at passe i den tilgængelige boothukommelse, så kernekilden blev komprimeret, og slutningen x blev ændret til en z for at vise, at den var komprimeret med zlib-komprimering. Den samme kompression anvendes ikke altid, ofte erstattet med LZMA eller BZIP2, og nogle kerner kaldes simpelthen zImage.

Version nummereringen vil være i formatet A.B.C.D, hvor A.B sandsynligvis vil være 2,6, C vil være din version, og D angiver dine patches eller rettelser.

I / boot-mappen er der også andre meget vigtige filer, der hedder initrd.img-version, system.map-version og config-version. Initrd filen bruges som en lille RAM disk, der uddrag og udfører den faktiske kernel fil.System.map-filen bruges til hukommelsesadministration, før kernen er fuldt lastet, og config-filen fortæller kernen hvilke muligheder og moduler der skal indlæses i kernelbilledet, når det kompileres.
I / boot-mappen er der også andre meget vigtige filer, der hedder initrd.img-version, system.map-version og config-version. Initrd filen bruges som en lille RAM disk, der uddrag og udfører den faktiske kernel fil.System.map-filen bruges til hukommelsesadministration, før kernen er fuldt lastet, og config-filen fortæller kernen hvilke muligheder og moduler der skal indlæses i kernelbilledet, når det kompileres.

Linux Kernel Architecture

Fordi Linux-kernen er monolitisk, har den det største fodaftryk og den mest komplekse over de andre typer kerner. Dette var en designfunktion, der var under ganske lidt debat i de tidlige dage af Linux og bærer stadig nogle af de samme designfejl, som monolitiske kerner er iboende at have.

En ting, som Linux-kerneudviklerne gjorde for at omgå disse fejl, var at lave kernemoduler, som kunne læses og losses ved kørsel, hvilket betyder at du kan tilføje eller fjerne funktioner i din kerne på flugt. Dette kan gå ud over at blot tilføje hardwarefunktionalitet til kernen ved at inkludere moduler, der kører serverprocesser, som lavniveau virtualisering, men det kan også tillade hele kernen at blive udskiftet uden at skulle genstarte computeren i nogle tilfælde.

Forestil dig, om du kunne opgradere til en Windows service pack uden at skulle genstarte …

Kernelmoduler

Hvad hvis Windows havde alle tilgængelige drivere allerede installeret, og du var nødt til at tænde for de drivere, du havde brug for? Det er i det væsentlige hvilke kernemoduler der gør for Linux. Kernelmoduler, også kendt som et ladbart kernemodul (LKM), er vigtige for at holde kernen i funktion med al din hardware uden at forbruge al din ledige hukommelse.
Hvad hvis Windows havde alle tilgængelige drivere allerede installeret, og du var nødt til at tænde for de drivere, du havde brug for? Det er i det væsentlige hvilke kernemoduler der gør for Linux. Kernelmoduler, også kendt som et ladbart kernemodul (LKM), er vigtige for at holde kernen i funktion med al din hardware uden at forbruge al din ledige hukommelse.

Et modul tilføjer typisk funktionalitet til basekernen for ting som enheder, filsystemer og systemopkald. LKM'er har filtypenavn.ko og gemmes typisk i / lib / moduler biblioteket. På grund af deres modulære karakter kan du nemt tilpasse din kerne ved at indstille moduler til at indlæse eller ikke indlæse under opstart med menuconfig-kommandoen eller ved at redigere din / boot / config-filen eller du kan indlæse og aflæse moduler på flugten med modprobe kommando.

Tredjeparts- og lukkekildemoduler er tilgængelige i nogle distributioner, som Ubuntu, og kan ikke installeres som standard, fordi kildekoden til modulerne ikke er tilgængelig. Udvikleren af softwaren (dvs. nVidia, ATI, blandt andre) giver ikke kildekoden, men de bygger deres egne moduler og kompiler de nødvendige.ko filer til distribution. Selvom disse moduler er gratis som i øl, er de ikke gratis som i tale og er derfor ikke inkluderet i nogle distributioner, fordi de vedligeholder, at det "taints" kernen ved at levere ikke-fri software.

En kerne er ikke magisk, men det er helt vigtigt, at enhver computer kører korrekt. Linux-kerne er anderledes end OS X og Windows, fordi det indeholder drivere på kerneliveau og gør mange ting understøttet "ude af kassen". Forhåbentlig vil du vide lidt mere om, hvordan din software og hardware fungerer sammen, og hvilke filer du har brug for til at starte din computer.

Kernel.org Billede af ingridtaylar

Anbefalede: