Domača » kako » Kaj je jedro Linuxa in kaj počne?

    Kaj je jedro Linuxa 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 raven preprosto zamenljive programske opreme, ki je vmesnik s strojno opremo v računalniku. Odgovoren je za povezovanje vseh vaših aplikacij, ki se izvajajo v »uporabniškem načinu« do fizične strojne opreme, in omogoča, da procesi, znani kot strežniki, dobijo podatke drug od drugega z uporabo medprocesne komunikacije (IPC).

    Različne vrste jeder

    Obstajajo, seveda, različni načini za izgradnjo jedra in arhitekturnih premislekov pri gradnji iz nič. Na splošno večina jedrc spada v tri vrste: monolitna, mikrokernela in hibridna. Linux je monolitno jedro, medtem ko OS X (XNU) in Windows 7 uporabljata hibridna jedra. Vzemimo si kratek ogled treh kategorij, da bomo kasneje lahko podrobneje prebrali.


    Slika po kokice v zgornjem delu mesta

    Mikrokernel
    Mikro-jedro se ukvarja samo s tem, kar upravlja: CPU, pomnilnik in IPC. Precej vsega drugega v računalniku je mogoče obravnavati kot dodatno opremo in ga lahko upravljate v uporabniškem načinu. Mikro-jedra imajo prednost prenosljivosti, 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. Mikro-jedra imajo tudi zelo majhen odtis, tako za pomnilniški kot za namestitveni prostor, in so bolj varna, ker v uporabniškem načinu potekajo samo specifični procesi, ki nimajo visokih dovoljenj kot način nadzora..

    Prednosti

    • Prenosljivost
    • Majhen namestitveni odtis
    • Majhen pomnilniški odtis
    • Varnost

    Slabosti

    • Strojna oprema je bolj potegnjena skozi gonilnike
    • Strojna oprema lahko reagira počasneje, ker so vozniki v uporabniškem načinu
    • Procesi morajo čakati v čakalni vrsti, da dobijo informacije
    • Procesi ne morejo dostopati do drugih procesov brez čakanja

    Monolitno jedro
    Monolitna jedra so nasprotna mikrokernelom, ker ne zajemajo le CPU-ja, pomnilnika in IPC-ja, temveč vključujejo tudi gonilnike naprav, upravljanje z datotečnimi sistemi in klice sistemskega strežnika. Monolitna jedra so ponavadi boljša pri dostopanju do strojne opreme in večopravilnost, ker če program potrebuje podatke iz pomnilnika ali drugega procesa, ki ga izvaja, ima bolj neposredno linijo za dostop do nje in ni treba čakati v čakalni vrsti, da se stvari opravijo. To pa lahko povzroči težave, ker več stvari, ki se izvajajo v načinu nadzornika, več stvari, ki lahko zmanjšajo vaš sistem, če se ne obnašate pravilno.

    Prednosti

    • Bolj neposreden dostop do strojne opreme za programe
    • Lažje je za komunikacijo med procesi
    • Če je vaša naprava podprta, mora delovati brez dodatnih namestitev
    • Procesi se hitreje odzivajo, ker ni čakalne vrste za procesorski čas

    Slabosti

    • Veliki namestitveni odtis
    • Velik odtis pomnilnika
    • Manj varna, ker vse deluje v načinu nadzora


    Slika preko schoschie na Flickr

    Hibridno jedro
    Hibridna jedra lahko izberejo in izberejo, kaj želijo izvajati v uporabniškem načinu in kaj želijo izvajati v nadzorniškem načinu. Pogosto se v uporabniškem načinu izvajajo stvari, kot so gonilniki naprav in I / O datotečnega sistema, medtem ko bodo klice IPC in strežnika shranjene v načinu nadzora. To daje najboljše iz obeh svetov, vendar pogosto zahteva več dela proizvajalca strojne opreme, ker je vsa odgovornost voznika odvisna od njih. Imajo lahko tudi nekatere težave z latenco, ki so povezane z mikrokerneli.

    Prednosti

    • Razvijalec lahko izbere, kaj se izvaja v uporabniškem načinu in kaj se izvaja v načinu nadzora
    • Manjši namestitveni odtis kot monolitno jedro
    • Bolj prilagodljiv kot drugi modeli

    Slabosti

    • Lahko trpi zaradi istega procesa zaostajanja kot mikrokernel
    • Gonilnike naprav mora upravljati uporabnik (običajno)

    Kje so datoteke jedra Linuxa?

    Datoteka jedra v Ubuntuju je shranjena v mapi / boot in se imenuje vmlinuz-različica. Ime vmlinuz prihaja iz unix sveta, v katerem so kerneli imenovali »unix« že v 60-ih letih, tako da je Linux začel klicati svoje jedro »linux«, ko je bil prvič razvit v 90-ih..

    Ko je bil virtualni pomnilnik razvit za lažje večopravilne zmožnosti, je bil »vm« postavljen na sprednji del datoteke, da bi pokazal, da jedro podpira navidezni pomnilnik. Jedro Linuxa se je nekoč imenovalo vmlinux, vendar je jedro postajalo preveliko, da bi se ujemalo z razpoložljivim zagonskim pomnilnikom, tako da je bila slika jedra stisnjena, konec x pa je bil spremenjen v z, da se pokaže, da je bil stisnjen z zlib stiskanjem. Ta ista stiskanja ni vedno uporabljena, pogosto zamenjana z LZMA ali BZIP2, nekatera jedra pa se preprosto imenujejo zImage.

    Oštevilčevanje različic bo v formatu A.B.C.D, kjer bo A.B verjetno 2.6, C pa vaša različica, D pa vaše popravke ali popravke..

    V mapi / boot bodo tudi druge zelo pomembne datoteke, imenovane initrd.img-version, system.map-version in config-version. Datoteka initrd se uporablja kot majhen disk RAM, ki izvleče in izvrši dejansko datoteko jedra. Datoteka system.map se uporablja za upravljanje pomnilnika, preden se jedro v celoti naloži, in konfiguracijska datoteka pove jedru, katere možnosti in moduli se naložijo v sliko jedra, ko se prevede..

    Arhitektura jedra Linuxa

    Ker je jedro Linuxa monolitno, ima največji odtis in najbolj kompleksnost v primerjavi z drugimi vrstami jeder. To je bila oblikovna značilnost, ki se je v prvih dneh Linuxa precej razpravljala in še vedno nosi nekatere enake pomanjkljivosti oblikovanja, ki so neločljivo povezane z monolitnimi jedri..

    Ena stvar, ki so jo razvijalci jedra Linuxa naredili, da bi zaobšli te pomanjkljivosti, je bila izdelava jedrnih modulov, ki bi jih bilo mogoče naložiti in razložiti med izvajanjem, kar pomeni, da lahko dodajate ali odstranjujete funkcije jedra. To lahko preseže samo dodajanje funkcionalnosti strojne opreme jedru, z vključitvijo modulov, ki izvajajo strežniške procese, kot je virtualizacija na nizki ravni, lahko pa tudi omogoči zamenjavo celotnega jedra, ne da bi bilo treba v nekaterih primerih ponovno zagnati računalnik..

    Predstavljajte si, če bi lahko nadgradili na servisni paket Windows, ne da bi vam bilo treba znova zagnati računalnik ...

    Moduli jedra

    Kaj pa, če bi imel Windows že nameščen vsak gonilnik in ste morali vklopiti gonilnike, ki ste jih potrebovali? To je v bistvu tisto, kar moduli jedra delajo za Linux. Moduli jedra, znani tudi kot nalagalni modul jedra (LKM), so bistveni za ohranjanje delovanja jedra z vso vašo strojno opremo brez porabe vsega razpoložljivega pomnilnika.

    Modul običajno dodaja funkcionalnost osnovnemu jedru za stvari, kot so naprave, datotečni sistemi in sistemski klici. LKM-ji imajo končnico datoteke .ko in so običajno shranjeni v imeniku / lib / modules. Zaradi svoje modularne narave lahko jedro preprosto prilagodite z nastavitvijo modulov za nalaganje ali ne nalaganje, med zagonom z ukazom menuconfig ali z urejanjem vaše / boot / config datoteke ali pa v modulu prenesete in odstranite module. ukaz.

    Moduli za tretje osebe in zaprte vire so na voljo v nekaterih distribucijah, kot je Ubuntu, in morda niso privzeto nameščeni, ker izvorna koda za module ni na voljo. Razvijalec programske opreme (npr. NVidia, ATI, med drugim) ne zagotavlja izvorne kode, temveč gradijo lastne module in pripravijo potrebne datoteke .ko za distribucijo. Medtem ko so ti moduli brezplačni kot v pivu, niso svobodni kot v govoru in zato niso vključeni v nekatere distribucije, ker vzdrževalci menijo, da „obarva“ jedro z zagotavljanjem ne-proste programske opreme..

    Jedro ni čarobno, vendar je popolnoma nujno za vsak računalnik, ki se pravilno izvaja. Jedro Linuxa se razlikuje od OS X in Windows, ker vključuje gonilnike na ravni jedra in omogoča, da se mnoge stvari podpirajo "izven polja". Upajmo, da boste vedeli malo več o tem, kako programska in strojna oprema deluje skupaj in katere datoteke morate zagnati.

    Kernel.org
    Slika po ingridtaylar