5Aug

Kaj je kernel Linux in kaj počne?


Z več kot 13 milijoni vrstic kode je jedro Linuxa eden največjih odprtokodnih projektov na svetu, toda kaj je jedro in za kaj se uporablja?

Torej, kaj je jedro?

jedro je najnižja stopnja enostavno zamenljive programske opreme, ki je vmesnik s strojno opremo v vašem računalniku. Odgovoren je za povezovanje vseh vaših aplikacij, ki se izvajajo v "uporabniškem načinu" navzdol do fizične strojne opreme, in omogočajo procese, znane kot strežniki, da bi dobili informacije drug od drugega z uporabo medprocesne komunikacije( IPC).

Različne vrste jedra

Obstajajo seveda različni načini za izgradnjo jedra in arhitekturnih premislekov pri gradnji enega od začetka. Na splošno večina jeder spada v eno od treh vrst: monolitna, mikrosklinska in hibridna. Linux je monolitno jedro, medtem ko OS X( XNU) in Windows 7 uporabljata hibridna jedra. Vzemimo hiter ogled treh kategorij, da bomo lahko podrobneje preučili pozneje.


Image by pokvarnik uptown

Microkernel
Mikrokrmilni pogon uporablja samo upravljanje s tem, kar ima za: CPU, pomnilnik in IPC.Precej vsega drugega v računalniku je mogoče videti kot dodatno opremo in ga je mogoče obravnavati v uporabniškem načinu. Mikrokerneli imajo prednost prenosa, ker jim ni treba skrbeti, če spremenite svojo grafično kartico ali celo operacijski sistem, dokler operacijski sistem še vedno poskuša dostopati do strojne opreme na enak način. Mikrokerneli imajo tudi zelo majhen odtis, tako za pomnilnik kot tudi za namestitev prostora, zato so bolj varni, saj se v uporabniškem načinu izvajajo le specifični procesi, ki nimajo visokih dovoljenj kot nadzorni način.

Pros

  • Prenosljivost
  • Majhna namestitev odtisa
  • Majhni pomnilnik
  • Varnost

Konj

  • Strojna oprema je bolj abstraktirana z gonilniki
  • Strojna oprema se lahko odzove počasneje, ker so gonilniki v uporabniškem načinu
  • Procesi morajo počakati v čakalni vrsti, da dobijo informacije
  • Procesi ne morejodostop do drugih procesov brez čakanja

Monolitna jedra
Monolitna jedra so v nasprotju z mikrokrmili, ker ne zajemajo samo CPU-ja, pomnilnika in IPC-ja, ampak vključujejo tudi stvari, kot so gonilniki naprav, upravljanje datotečnega sistema in klici sistemskega strežnika. Monolitna jedra so ponavadi boljša pri dostopu do strojne opreme in večopravilnostnih naprav, ker če program potrebuje podatke iz pomnilnika ali drugega procesa, ki ga teče, ima bolj neposreden dostop do nje in ni treba čakati v čakalni vrsti, da bi se stvari končale. Vendar to lahko povzroči težave, ker več stvari, ki se izvajajo v nadzornem načinu, več stvari, ki lahko zmanjšajo vaš sistem, če se ne obnaša pravilno.

Pros

  • Več neposrednega dostopa do strojne opreme za programe
  • Lažje za procese komunikacije med vsakim drugim
  • Če je vaša naprava podprta, mora delovati brez dodatnih namestitev
  • Postopki se odzivajo hitreje, ker ni čakalne vrste za čas procesorja

Cons

  • Largenamestite odtis
  • Veliki pomnilnik
  • Manj varen, ker se vse izvaja v nadzornem načinu


Slikanje prek šasije na Flickr

Hybrid Kernel
Hibridna jedra imajo možnost izbrati, kaj želijo zagnati v uporabniškem načinu in kaj želijo zagnati v nadzornikunačin. Pogosto se bodo stvari, kot so gonilniki naprav in sistemski I / O, izvajale v uporabniškem načinu, medtem ko bodo IPC in strežniški klici ostali v nadzornem načinu. To daje najboljše iz obeh svetov, vendar pogosto zahteva več dela proizvajalca strojne opreme, ker je vsa odgovornost gonilnika odvisna od njih. Prav tako ima lahko nekaj težav pri zakasnitvi, ki so neločljivo povezani z mikrokerneli.

Pros

  • Razvijalec lahko izbere, kaj se izvaja v uporabniškem načinu in kaj se izvaja v nadzornem načinu
  • Manjši namestitveni odtis od monolitnega jedra
  • Prožnejši od ostalih modelov

Cons

  • Lahko trpi enak zamik procesa kot mikrokernel
  • Gonilnike naprave mora upravljati uporabnik( ponavadi)

Kje so datoteke jedra Linuxa?

Datoteka jedra v Ubuntu je shranjena v vaši / boot mapi in se imenuje vmlinuz- različica .Ime vmlinuz prihaja iz unix-jevega sveta, kjer so v 60-ih letih prejšnjega stoletja klicali svoje jedro preprosto "unix", zato je Linux začel klicati svoje jedro "linux", ko je bil prvič razvit v 90-ih letih.

Ko je bil virtualni pomnilnik razvit za lažje večopravilnostne možnosti, je bila na sprednji strani datoteke postavljena "vm", ki kaže, da jedro podpira navidezni pomnilnik. Nekoliko časa je bilo jedro Linuxa imenovan vmlinux, vendar se je jedro povečalo preveliko, da bi se prilegalo razpoložljivemu zagonskemu pomnilniku, tako da je bila slika jedra stisnjena in da je bil konec x spremenjen v z, da bi se pokazal, da je stisnjen z zlibovim stiskanjem. Enako stiskanje ni vedno uporabljeno, pogosto nadomeščeno z LZMA ali BZIP2, nekatera jedra pa preprosto imenujemo zImage.

Številčenje različic bo v formatu A.B.C.D, kjer je A.B verjetno 2,6, C pa vaša različica in D označuje vaše popravke ali popravke.

V mapi / boot bodo na voljo tudi druge zelo pomembne datoteke, imenovane initrd.img-version, system.map-version in config-version. Datoteka initrd se uporablja kot majhna disketa RAM, ki izloči in izvrši dejansko datoteko jedra. Datoteka system.map se uporablja za upravljanje pomnilnika, preden se jedro popolnoma naloži, konfiguracijska datoteka pa ukazu jedru pove, katere možnosti in module naložite v ikono jedra, ko jo sestavljate.

Linux jedra Arhitektura

Ker jedro Linuxa je monolitna, ima največji odtis in je najbolj zapletena nad drugimi vrstami jeder. To je bila značilnost zasnove, ki je bila v precej razpravi v zgodnjih dneh Linuxa in še vedno nosi nekatere iste konstrukcijske pomanjkljivosti, ki jih imajo monolitna jedra.

Ena stvar, ki so jo razvijalci jedra Linuxa dobili, da bi prišli do teh pomanjkljivosti, je bil izdelati module jedra, ki bi jih bilo mogoče naložiti in razlagati ob zagonu, kar pomeni, da lahko dodate ali odstranite lastnosti jedra na letenju. To lahko presega zgolj dodajanje strojne opreme jedru, tako da vključuje module, ki vodijo strežniške procese, na primer virtualizacijo na nizki ravni, lahko pa tudi dovoljuje zamenjavo celotnega jedra, ne da bi morali v nekaterih primerih znova zagnati računalnik.

Predstavljajte si, ali lahko nadgradite na servisni paket Windows, ne da bi vam bilo treba znova zagnati. ..

jedro modula

Kaj, če bi Windows imel vsak voznik že nameščen in ste morali samo vklopiti gonilnike, ki so vam potrebni? To je v bistvu, kaj storijo jedrni moduli za Linux. Moduli jedra, znani tudi kot modul za nalaganje jedra( LKM), so bistveni za ohranjanje delovanja jedra z vso svojo strojno opremo, ne da bi porabili ves razpoložljiv pomnilnik.

Modul navadno dodaja funkcionalnost osnovnemu jedru za stvari, kot so naprave, datotečni sistemi in sistemski klici. LKM-ji imajo razširitev datoteke. ko in so običajno shranjeni v imeniku modulov /lib/.Zaradi svoje modularne narave lahko enostavno prilagodite svoje jedro z nastavljanjem modulov za nalaganje ali brez obremenitve med zagonom z ukazom menuconfig ali z urejanjem vaše konfiguracijske datoteke /boot/ ali pa z ukazom modprobe lahko naložite in raztovarjate module.

Moduli za tretje stranke in zaprte vire so na voljo v nekaterih distribucijah, na primer Ubuntu, in jih ni mogoče privzeto namestiti, ker izvorna koda modulov ni na voljo. Razvijalec programske opreme( npr. NVidia, ATI, med drugim) ne zagotavljajo izvorne kode, temveč gradijo svoje lastne module in zbirajo potrebne datoteke. ko za distribucijo. Medtem ko so ti moduli brezplačni kot v pivu, niso brezplačni, kot v govoru, zato jih nekatere distribucije ne vključujejo, ker vzdrževalci menijo, da "jedrca" jedro z zagotavljanjem neproste programske opreme.

Jedro ni čarobno, vendar je popolnoma pomembno, da vsak računalnik deluje pravilno. Jedro Linuxa je drugačno kot OS X in Windows, ker vključuje gonilnike na ravni jedra in veliko stvari podpira "iz škatle".Upajmo, da boste znali malo več o tem, kako vaša programska in strojna oprema delujejo skupaj in katere datoteke potrebujete za zagon računalnika.

Kernel.org
Slika ingridtaylar