Homepage » hogyan kell » Mi a Linux kernel és mit csinál?

    Mi a Linux kernel és mit csinál?


    A több mint 13 millió sor kóddal a Linux rendszermag az egyik legnagyobb nyílt forráskódú projekt a világon, de mi az a kernel és mihez használják?

    Tehát Mi a Kernel?

    A kernel a legkevésbé könnyen cserélhető szoftver, amely a számítógép hardveréhez csatlakozik. Felelős az összes olyan alkalmazás összekapcsolásáért, amelyek a „felhasználói módban” futnak a fizikai hardverig, és lehetővé teszik a folyamatok, az úgynevezett szerverek, hogy egymás között információt kapjanak a folyamatok közötti kommunikáció (IPC) segítségével.

    Különböző típusú kernelek

    Természetesen különböző módszerek állnak rendelkezésre a kernel és az építészeti megfontolások megalkotásához, amikor az egyiket a semmiből építjük. Általában a legtöbb mag három típusba sorolható: monolit, mikrokernel és hibrid. A Linux monolitikus kernel, míg az OS X (XNU) és a Windows 7 hibrid magokat használ. Vegyünk egy gyors körutazást a három kategóriába, hogy később részletesebben tudjunk megnézni.


    Kép: popcorn belvárosában

    mikrokernel
    A mikrokernel csak azt a megközelítést alkalmazza, amire szüksége van: CPU, memória és IPC. Elég sok mindent egy számítógépben tartozéknak tekinthetünk, és felhasználói módban is kezelhető. A mikrokernelek előnye a hordozhatóság, mert nem kell aggódniuk, ha megváltoztatják a videokártyáját vagy akár az operációs rendszert, amíg az operációs rendszer ugyanúgy próbál hozzáférni a hardverhez. A mikrokernelek nagyon kicsi a lábnyomuk mind a memória, mind a telepítési hely számára, és inkább biztonságosabbak, mert csak bizonyos folyamatok futnak a felhasználói módban, amelyek nem rendelkeznek a felügyeleti módban magas engedélyekkel..

    Előnyök

    • Hordozhatóság
    • Kis telepítési lábnyom
    • Kis memóriaminták
    • Biztonság

    Hátrányok

    • A hardver a vezetőkön keresztül történik
    • A hardver lassabban reagálhat, mert az illesztőprogramok felhasználói módban vannak
    • A folyamatoknak várakozni kell egy sorban, hogy információt kapjanak
    • A folyamatok nem várhatnak más folyamatokat

    Monolit kernel
    A monolitikus magok a mikrokernelek ellentétei, mert nem csak a CPU-t, a memóriát és az IPC-t foglalják magukban, hanem olyan eszközöket is tartalmaznak, mint az eszközillesztők, a fájlrendszer-kezelés és a rendszerszerver-hívások. A monolit kernelek általában jobbak a hardver és a többfeladatos feladat elérésében, mert ha egy programnak információt kell kapnia a memóriából vagy egy másik folyamatból, akkor közvetlenebb vonala van ahhoz, hogy hozzáférjen hozzá, és nem kell várni egy sorban a dolgok megszerzéséhez. Ez azonban problémákat okozhat, mert minél több dolog fut felügyeleti módban, annál több dolgot hozhat le, ha nem működik megfelelően.

    Előnyök

    • Közvetlenebb hozzáférés a hardverhez a programokhoz
    • Könnyebb a folyamatok közötti kommunikáció egymás között
    • Ha a készüléket támogatjuk, akkor további telepítések nélkül kell működnie
    • A folyamatok gyorsabban reagálnak, mert nincs sor a processzor idejére

    Hátrányok

    • Nagy telepítési lábnyom
    • Nagy memóriaterület
    • Kevésbé biztonságos, mert minden felügyelő módban fut


    Kép a schoschie-n keresztül a Flickr-en

    Hybrid Kernel
    A hibrid rendszernek lehetősége van arra, hogy kiválasszák és kiválaszthassák, hogy mit akarnak futtatni a felhasználói módban, és mit akarnak futtatni felügyeleti módban. Gyakran előfordul, hogy az eszközillesztők és a fájlrendszer I / O a felhasználói módban fognak futni, míg az IPC és a szerver hívások felügyeleti módban maradnak. Ez mindkét világ legjobbjait adja, de gyakran több hardvergyártó munkát igényel, mert az összes vezető felelősséggel tartozik. Az is lehet, hogy a mikrokernelekkel járó késleltetési problémák egyike.

    Előnyök

    • A fejlesztő kiválaszthatja és kiválaszthatja, hogy mi működik a felhasználói módban és a felügyeleti módban
    • Kisebb telepítési lábnyom, mint a monolitikus kernel
    • Rugalmasabb, mint más modellek

    Hátrányok

    • Ugyanaz a folyamat késleltethető, mint a mikrokernel
    • Az eszközillesztőket a felhasználónak kell kezelnie (általában)

    Hol vannak a Linux kernel fájlok?

    A kernel fájl az Ubuntu-ban tárolódik a / boot mappában, és ezt vmlinuz néven hívják-változat. A vmlinuz név az unix világból származik, ahol a kerneleket egyszerűen a „60-as években visszavonják”, így a Linux elkezdte hívni a „linux” rendszermagot, amikor a 90-es években először fejlesztették.

    Amikor virtuális memóriát fejlesztettek ki a könnyebb multitasking képességek érdekében, a „vm” a fájl elejére került, hogy megmutassa, hogy a rendszermag támogatja a virtuális memóriát. Egy ideig a Linux rendszermagot vmlinuxnak hívták, de a rendszermag túl nagy lett ahhoz, hogy illeszkedjen a rendelkezésre álló rendszerindító memóriába, így a kernel képét tömörítették, és az x véget z-ra változtattuk, hogy azt zlib tömörítéssel tömörítsék. Ezt az azonos tömörítést nem mindig használják, gyakran LZMA-val vagy BZIP2-vel helyettesítik, és néhány magot egyszerűen zImage-nek hívnak..

    A verziószámozás A.B.C.D formátumban lesz, ahol az A.B valószínűleg 2,6, C lesz a verziója, és D a javításokat vagy javításokat jelöli.

    A / boot mappában más nagyon fontos fájlok is szerepelnek: initrd.img-version, system.map-version és config-version. Az initrd fájlt kis RAM lemezként használják, amely kivonja és végrehajtja a tényleges kernel fájlt. A system.map fájlt a memóriakezeléshez használják, mielőtt a rendszermag teljesen betöltődik, és a konfigurációs fájl megmondja a rendszermagnak, hogy milyen lehetőségeket és modulokat töltsön be a kernel képbe, amikor az összeáll..

    Linux Kernel Architecture

    Mivel a Linux rendszermag monolitikus, a legmagasabb lábnyom és a legbonyolultabb a többi típusú rendszernek. Ez egy olyan tervezési jellemző, amely a Linux korai napjaiban eléggé vita tárgyát képezte, és még mindig ugyanazokat a tervezési hibákat hordozza, hogy a monolitikus magok magukban hordozzák.

    Az egyik dolog, amit a Linux kernelfejlesztők tettek ezeknek a hibáknak az eléréséhez, az volt, hogy kernel modulokat töltsenek be és töltsenek ki futás közben, ami azt jelenti, hogy a rendszermag funkcióit hozzáadhatja vagy eltávolíthatja a repülés közben. Ez túlmutat a hardver funkcionalitásának a rendszermaghoz történő hozzáadásával, beleértve a szerverfolyamatokat futtató modulokat, például az alacsony szintű virtualizációt, de lehetővé teszi a teljes rendszermag cseréjét anélkül, hogy bizonyos esetekben újra kellene indítania a számítógépet.

    Képzeld el, ha frissíthetsz egy Windows szervizcsomagra anélkül, hogy újra kell indítanod ...

    Kernel modulok

    Mi van, ha a Windows minden meghajtó már telepítve van, és csak be kellett kapcsolnia a szükséges illesztőprogramokat? Ez lényegében a kernel modulok a Linux számára. A kernel modulok, más néven betölthető kernelmodul (LKM), elengedhetetlenek ahhoz, hogy a rendszermag teljes hardver nélkül működjön anélkül, hogy az összes rendelkezésre álló memóriát fogyasztaná.

    A modul jellemzően funkcionalitást ad az alap kernelhez, mint például az eszközök, fájlrendszerek és rendszerhívások. Az LKM-eknek a .ko fájlkiterjesztése van, és általában a / lib / modules könyvtárban vannak tárolva. Moduláris jellege miatt könnyen testreszabhatja a rendszermagot úgy, hogy a menuconfig parancs használatával vagy a / boot / config fájl szerkesztésével modulokat tölthet be, vagy nem tölti be, vagy a modprobe-vel a modulok betölthet és eltávolíthat. parancs.

    Harmadik fél és zárt forrásmodulok állnak rendelkezésre bizonyos elosztásokban, mint például az Ubuntu, és alapértelmezés szerint nem telepíthetőek, mert a modulok forráskódja nem áll rendelkezésre. A szoftver fejlesztője (azaz többek között az nVidia, az ATI) nem adja meg a forráskódot, hanem inkább saját modulokat épít, és a szükséges .ko fájlokat terjeszti terjesztésre. Míg ezek a modulok szabadon használhatók, mint a sörben, nem szabadok a beszédben, és ezért nem tartoznak néhány terjesztéshez, mivel a karbantartók úgy érzik, hogy „szabad” szoftvert nyújtanak a kernelnek.

    A rendszermag nem varázslat, de teljesen elengedhetetlen minden megfelelő számítógéphez. A Linux rendszermag különbözik az OS X és a Windows operációs rendszerektől, mert magában foglalja a rendszermag szintjét, és sok dolgot támogat a „dobozon kívül”. Remélhetőleg egy kicsit többet fog tudni arról, hogyan működik együtt a szoftver és a hardver, és milyen fájlokat kell a számítógép indításához.

    Kernel.org
    Kép: ingridtaylar