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