Tehát mi a kernel?
A kernel a legolcsóbb, könnyen cserélhető szoftver, amely a számítógép hardverével csatlakozik. Felelős a "felhasználói mód" -on futó összes alkalmazás összekapcsolása a fizikai hardverrel, és lehetővé teszi a folyamatok (szerverek néven) számára, hogy információkat kapjanak egymástól az interakciós kommunikáció (IPC) segítségével.
Különböző típusú kernelek
Természetesen léteznek különböző módszerek a rendszermag és az építészeti megfontolások kialakítására, amikor az egyiket a semmiből készítik. Általánosságban elmondható, hogy a legtöbb rendszernek három típusa van: monolitikus, mikrokerneles és hibrid. A Linux monolitikus rendszermag, míg az OS X (XNU) és a Windows 7 a hibrid rendszermagokat használja. Gyorsan keressük a három kategóriát, hogy később részletesebben megismerhessük.
Kép: szalag pattogatott kukorica
mikrokernel A mikrokernel csak úgy kezeli, hogy mit kezel: CPU, memória és IPC. A számítógépen nagyon sok mindent meg lehet tekinteni kiegészítőként, és felhasználói módban kezelhetők. A mikrokernelek előnye a hordozhatóság, mivel nem kell aggódniuk, ha módosítja a videokártyáját vagy akár az operációs rendszert, amennyiben az operációs rendszer ugyanolyan módon próbál hozzáférni a hardverhez. A mikrokerneleknek is nagyon kicsi a lábnyomuk mind a memória, mind a helyek telepítésére, és általában biztonságosabbak, mivel csak bizonyos folyamatok futnak felhasználói módban, amelyek nem rendelkeznek magas szintű jogosultságokkal mint felügyeleti mód.
Előnyök
- Hordozhatóság
- Kis telepítési lábnyom
- Kis memória lábnyom
- Biztonság
Hátrányok
- A hardver elvonóbb a vezetők által
- A hardver lassabban reagálhat, mert a meghajtók felhasználói módban vannak
- A folyamatoknak várniuk kell egy sorban, hogy információt szerezzenek
- A folyamatok nem érhetők el más folyamatokhoz várakozás nélkül
Monolitikus kernel A monolitikus rendszermagok ellentétesek a mikrokernelekkel, mivel nemcsak a CPU-t, a memóriát és az IPC-t foglalják magukba, hanem olyan eszközöket is tartalmaznak, mint az eszközvezérlők, a fájlrendszer-kezelés és a rendszer szerver hívások. A monolitikus rendszermagok általában jobbak a hardverek és a többfeladatos feladatok elérésében, mert ha egy programnak szüksége van a memóriából vagy más folyamatokból származó információk beszerzésére, közvetlen hozzáférési vonal van ahhoz, hogy hozzáférjen hozzá, és nem kell várnia a sorban, hogy a dolgok készen álljanak. Ez azonban problémákat okozhat, mivel több felügyeleti módban futó dolog, annál több olyan dolog van, amely le tudja hozni a rendszert, ha nem viselkedik megfelelően.
Előnyök
- Közvetlenül hozzáférhet a hardverhez a programokhoz
- Könnyebb a folyamatok egymás közötti kommunikációjára
- Ha a készülék támogatott, akkor további telepítések nélkül kell működnie
- A folyamatok gyorsabban reagálnak, mert nincs várakozási idő a processzor idejére
Hátrányok
- Nagy telepítési lábnyom
- Nagy memória lábnyom
- Kevésbé biztonságos, mert minden felügyeleti módban fut
Hibrid Kernel A hibrid rendszermagok képesek kiválaszthatók és kiválaszthatók, hogy mit akarnak futtatni felhasználói módban, és azt, amit felügyeleti módban akarnak futtatni. Gyakran előfordul, hogy olyan dolgokat, mint az eszközillesztők és a fájlrendszer I / O futtatása felhasználói üzemmódban fut, míg az IPC és a szerver hívások felügyeleti módban maradnak. Ez mindkét világ legjobbjait nyújtja, de gyakran a hardvergyártó több munkáját igényli, mert a vezető felelőssége mindegyikükre támaszkodik. Lehetséges néhány késleltetési probléma is, amely a mikrokernelben rejlik.
Előnyök
- A fejlesztő kiválaszthatja és kiválaszthatja, hogy mi működik felhasználói módban és mi működik felügyeleti módban
- Kisebb telepítési lábnyom, mint a monolit kernel
- Rugalmasabb, mint más modellek
Hátrányok
- Ugyanaz a folyamat késleltetheti a mikrokernelt
- Az illesztőprogramokat a felhasználónak kell kezelnie (jellemzően)
Hol vannak a Linux kernel fájlok?
Az Ubuntuban a kernelfájl a / boot mappában található, és a vmlinuz-változat. A vmlinuz név az unix világból származik, ahol a 60-as években egyszerűen "unix" -nak hívták a rendszermagukat, így a Linux a 90-es években először fejlesztette ki a "linux" rendszermagot.
Amikor a virtuális memóriát a könnyebb multitasking képességek fejlesztésére fejlesztették ki, a "vm" -et a fájl elé helyezték annak megmutatására, hogy a kernel támogatja a virtuális memóriát. Egy ideig a Linux kernelt vmlinuxnak nevezték, de a rendszermag túl nagy ahhoz, hogy illeszkedjen a rendelkezésre álló indítómemóriába, így a rendszermag képét összepréselték, és az x végét z-re változtatták, hogy megmutassák, hogy tömörítették az zlib tömörítést. Ugyanezt a tömörítést nem mindig használják, gyakran az LZMA vagy BZIP2 helyett, és néhány rendszermagot egyszerűen zImage-nek hívnak.
A verziószámozás A.B.C.D formátumban lesz, ahol A.B valószínűleg 2.6, C lesz a verziója, és D jelzi a javításokat vagy javításokat.
Linux kernel architektúra
Mivel a Linux kernel monolitikus, a legnagyobb lábnyom és a legösszetettebb a más típusú rendszermagoknál. Ez egy olyan tervezési jellemző volt, amely a Linux korai napjaiban meglehetősen keveset folytatott, és még mindig ugyanazokat a tervezési hibákat hordozza, mint a monolitikus magok.
Az egyik dolog, amit a Linux rendszermag-fejlesztők azért tettek, hogy megkerüljék ezeket a hibákat, az volt, hogy olyan rendszermag modulokat készítsenek, amelyeket futás közben betölthet és betölthet, vagyis a rendszermag sajátosságait hozzáadhatja vagy eltávolíthatja. Ez túlmutathat a hardver funkciók hozzáadásával a rendszermaghoz, ideértve a kiszolgálófolyamatokat futtató modulokat is, például az alacsony szintű virtualizációt, de lehetővé teszi, hogy az egész rendszermag cserélhető legyen anélkül, hogy bizonyos esetekben újraindítaná a számítógépet.
Képzeld el, hogy frissítheted a Windows szervizcsomagot anélkül, hogy újraindítanod kellene …
Kernel modulok
A modul jellemzően hozzáadja az alapkernél a funkciókat, például eszközöket, fájlrendszereket és rendszerhívásokat. Az LKM-k a.ko kiterjesztéssel rendelkeznek, és általában a / lib / modules könyvtárban tárolódnak. Moduláris jellegük miatt egyszerűen testreszabhatja a rendszermagot azáltal, hogy olyan modulokat állít be, amelyek a menuconfig paranccsal vagy a / boot / config fájl szerkesztésével indulnak be, vagy ha a modprobe parancs.
A harmadik fél és a zárt forrásmodulok bizonyos terjesztésekben elérhetőek, például az Ubuntu, és alapértelmezés szerint nem telepíthetők, mert a modulok forráskódja nem elérhető. A szoftver fejlesztője (pl. Az nVidia, az ATI, többek között) nem adja meg a forráskódot, hanem saját modulokat készít, és összeállítja a szükséges.ko fájlokat az elosztásra. Bár ezek a modulok ingyenesek, mint a sörök, ezek nem szabadok, mint a beszéd, ezért nem szerepelnek egyes terjesztésekben, mert a fenntartók úgy érzik, hogy a nem rendszertelen szoftvereket "megfertőzi" a rendszermag.
A rendszermag nem varázslat, de teljesen elengedhetetlen a számítógép megfelelő működéséhez. A Linux kernel különbözik az OS X és a Windows operációs rendszertől, mert magában foglalja a kernel szintű illesztőprogramokat, és sok mindent támogat "a dobozból". Remélhetőleg tudni fogsz egy kicsit többet arról, hogy a szoftver és a hardver együtt dolgozik, és milyen fájlokat kell indítani a számítógépet.
Kernel.org Kép: ingridtaylar