5Aug

Mi a Linux kernel és mit csinál?


Több mint 13 millió kódsorral a Linux kernel a világ egyik legnagyobb nyílt forráskódú projektje, de mi a rendszermag és miért használják?

Szóval mi a kernel?

A rendszermag a legkönnyebben cserélhető szoftver legalacsonyabb szintje, amely összekapcsolódik a számítógép hardverével. 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ót kapjanak egymástól az interakciós kommunikáció( IPC) segítségével.

A különböző rendszermagok

Természetesen különböző módszerek léteznek arra, hogy egy rendszermagot és építészeti szempontokat építsenek ki, 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 fel a három kategóriát, hogy később részletesebben megismerhessük.


Kép felhágott pattogatott kukorica

Microkernel
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 ugyanúgy megpróbálja hozzáférni a hardverhez. A mikrokernelek szintén nagyon kicsi helyet foglalnak el mind a memória, mind a helyek telepítéséhez, é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 mérete
  • Biztonság

Hátrányok

  • A hardver elvontjai az illesztőprogramokon keresztül
  • 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 kapjanak
  • A folyamatok nemmás folyamatokhoz való hozzáférés várakozás nélkül

Monolit 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 hozzáférés a hardverekhez a programokhoz
  • Egyszerűbb a folyamatok egymás közötti kommunikációjára
  • Ha a készülék támogatott, akkor további munkák nélkül kell dolgoznia.
  • A folyamatok gyorsabban reagálnak, mert nincs várakozási idő a processzor idejére.

Hátrányok

  • Nagytelepítsen lábnyomot
  • Nagy memória lábnyom
  • Kevesebb biztonság, mert mindent felügyeleti módban futtat


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

Hibrid kernel
A hibrid rendszermagok kiválaszthatják és kiválaszthatják, hogy mit szeretnének futtatni felhasználói módban, és mit akarnak futni a felügyelőbenmód. 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.

Pro

  • A fejlesztő választhatja ki, 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

  • Lehet szenvedni ugyanazt az eljárási késést, mint a mikrokernel
  • Az illesztőprogramokat a felhasználónak kell kezelnie( tipikusan)

Hol vannak a Linux Kernel fájlok?

Az Ubuntu kernelfájlja a / boot mappában található, és 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.

Ha a virtuális memóriát a könnyebb multitasking képességekhez fejlesztettük, a "vm" -et a fájl elejére helyeztük, hogy megmutassuk, 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 a BZIP2 helyett, és néhány rendszermag egyszerűen zImage.

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.

A / boot mappában más nagyon fontos fájlok is lesznek, az initrd.img-verzió, a system.map-version és a config-verzió.Az initrd fájlt kis RAM lemezként használják, amely kivonja és végrehajtja az aktuális rendszermag fájlt. A system.map fájl a memóriakezeléshez kerül alkalmazásra, mielőtt a rendszermag teljesen betöltődik, és a konfigurációs fájl megmondja a rendszermagnak, hogy milyen opciókat és modulokat tölt be a rendszermagba, amikor összeállítják.

Linux kernel architektúra

Mivel a Linux kernel monolitikus, a legnagyobb lábnyom és a legösszetettebb a többi kernelhez képest. 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, amelyeket a monolitikus magok inherensnek tartanak.

Az egyik dolog, amit a Linux kernelfejlesztõi azért tettek, hogy megkerüljék ezeket a hibákat, az volt, hogy kernel modulokat töltsön be és töltsön ki futás közben, vagyis a rendszermag sajátosságait hozzáadhatja vagy távolíthatja el. 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 az egész rendszermag cseréjét is anélkül, hogy bizonyos esetekben újraindítaná a számítógépet.

Képzelje el, hogy frissítené a Windows szervizcsomagot anélkül, hogy újraindítaná. ..

kernel modulok Mi lett volna, ha a Windows minden illesztőprogramja már rendelkezésre állt, és csak be kellett kapcsolnia a szükséges illesztőprogramokat? Ez lényegében a Linux kernel modulja. A rendszermag modulok, amelyek betáplálható rendszermag modulként( LKM) is ismeretesek, elengedhetetlenek ahhoz, hogy a rendszermag minden hardverével megőrizhető legyen, anélkül, hogy az összes rendelkezésre álló memóriát felhasználná.

A modul tipikusan az alapkernek funkcionalitását adja hozzá olyan dolgokhoz, mint például eszközök, fájlrendszerek és rendszerhívások. Az LKM-k rendelkeznek a. ko kiterjesztéssel és tipikusan az /lib/ modulok könyvtárában vannak tárolva. Moduláris jellegük miatt egyszerűen testreszabhatja a rendszermagot azáltal, hogy olyan modulokat állít be, amelyek a menuconfig paranccsal vagy az /boot/ konfigurációs fájl szerkesztésével indulnak be, vagy a modprobe parancs segítségével be tudják tölteni és eltávolítani a modulokat.

A külső és zárt forrásmodulok bizonyos terjesztésekben elérhetők, 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ázslatos, de teljesen elengedhetetlen ahhoz, hogy minden számítógép megfelelően működjön. 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