5Aug

Co je jádro Linuxu a co to dělá?


S více než 13 miliony řádků kódu je jádro Linux jedním z největších open source projektů na světě, ale co je jádro a na co se používá?

Takže co je to jádro?

Kernel je nejnižší úroveň snadně vyměnitelného softwaru, který je kompatibilní s hardwarem v počítači. Je odpovědný za propojení všech vašich aplikací, které jsou spuštěny v uživatelském režimu, s fyzickým hardwarem a umožňuje procesům známým jako servery získat vzájemné informace pomocí komunikace mezi procesy( IPC).

Různé typy jader

Existují samozřejmě různé způsoby, jak stavět jádro a architektonické úvahy při budování jednoho od začátku. Obecně platí, že většina jader spadá do jednoho ze tří typů: monolitický, mikroklíčový a hybridní.Linux je monolitické jádro, zatímco OS X( XNU) a Windows 7 používají hybridní jádra. Podívejme se rychle na tyto tři kategorie, abychom se mohli později seznámit.


Obrázek uptown popcorn

Microkernel
Mikrokernel využívá pouze řízení toho, co má: CPU, paměť a IPC.Docela hodně všechno ostatní v počítači může být viděno jako příslušenství a může být řešeno v uživatelském režimu. Microkernely mají výhodu přenositelnosti, protože se nemusíte bát, pokud změníte grafickou kartu nebo dokonce i váš operační systém, pokud se operační systém stále pokusí o přístup k hardwaru stejným způsobem. Mikrokernely mají také velmi malou stopu, a to jak pro paměť, tak i pro instalaci místa, a mají tendenci být bezpečnější, protože pouze specifické procesy běží v uživatelském režimu, který nemá vysoké oprávnění jako režim supervizora.

Pros

  • Přenosnost
  • Malá instalovaná stopa
  • Malá paměťová stopa
  • Zabezpečení

Nevýhody

  • Hardware je více abstracted prostřednictvím ovladačů
  • Hardware může reagovat pomaleji, protože ovladače jsou v uživatelském režimu
  • Procesy musí počkat ve frontě získat informace
  • Procesy nemohouzískat přístup k jiným procesům bez čekání

Monolitické jádro
Monolitické jádro jsou opakem mikrokern, protože zahrnují nejen CPU, paměť a IPC, ale zahrnují také ovladače zařízení, správu souborů a volání systémových serverů.Monolitické jádra mají tendenci být lepší při přístupu k hardwaru a multitaskingu, protože pokud program potřebuje získat informace z paměti nebo jiný proces běží, má k němu přímější přímku a nemusí čekat ve frontě, aby mohl udělat věci. To však může způsobit problémy, protože čím více věcí běží v režimu supervizora, tím víc věcí, které mohou způsobit potlačení vašeho systému, pokud se člověk nechová správně.

Pros

  • Přímý přístup k hardwaru pro programy
  • Jednodušší pro komunikaci mezi procesy
  • Pokud je vaše zařízení podporováno, mělo by pracovat bez dalších instalací
  • Procesy reagují rychleji, protože neexistuje fronta pro čas procesoru

Proti

  • Velkéinstalace footprint
  • Velká paměťová stopa
  • Méně bezpečná, protože vše běží v režimu supervizor


Obrázek přes schoschie na Flickr

Hybridní jádro
Hybridní jádra mají schopnost vybrat si, co chtějí spustit v uživatelském režimu a co chtějí spustit v nadřízenérežimu.Často se věci jako ovladače zařízení a souborový systém I / O spustí v uživatelském režimu, zatímco IPC a serverové volání budou udržovány v režimu supervizora. To dává to nejlepší z obou světů, ale často bude vyžadovat více práce výrobce hardwaru, protože veškerá odpovědnost řidiče je na nich. Může také mít některé z problémů latence, které jsou spojené s mikrokernely.

Pros

  • Vývojář si může vybrat a vybrat to, co běží v uživatelském režimu a co běží v režimu supervizor
  • Menší instalační stopa než monolitické jádro
  • Více flexibilní než ostatní modely

Nevýhody

  • Mohou trpět stejným zpožděním procesu jako mikrokernel
  • Ovladače zařízení musí být spravovány uživatelem( typicky)

Kde jsou soubory jádra Linuxu?

Soubor jádra v Ubuntu je uložen ve složce / boot a nazývá se vmlinuz verze .Jméno vmlinuz pochází z světa Unixu, kde volali jádra jednoduše "unix" zpět v 60. letech, takže Linux začal volat své jádro "linux", když byl poprvé vyvinut v 90. letech.

Když byla virtuální paměť vyvinutá pro snazší multitaskingové schopnosti, "vm" byl umístěn v přední části souboru a ukázal, že jádro podporuje virtuální paměť.Na chvíli se jádro Linuxu nazývalo vmlinux, ale jádro rostlo příliš velké, aby se vešlo do dostupné bootovací paměti, takže obraz jádra byl komprimován a konec x byl změněn na z, aby se ukázalo, že byl komprimován kompresí zlib. Stejná komprese není vždy použita, často nahrazena LZMA nebo BZIP2 a některé jádra se jednoduše nazývají zImage.

Číslování verze bude ve formátu A.B.C.D, kde bude pravděpodobně číslo 2.6, C bude vaší verzí a D bude označovat vaše opravy nebo opravy.

Ve složce / boot budou také další velmi důležité soubory nazývané initrd.img-version, system.map-version a config-version. Initrd soubor se používá jako malý disk RAM, který extrahuje a spustí vlastní soubor jádra. Soubor system.map se používá pro správu paměti před úplným načtením jádra a konfigurační soubor řekne jádru o tom, jaké možnosti a moduly se načtou do obrazu jádra při jeho kompilaci.

Architektura jádra Linuxu

Vzhledem k tomu, že jádro Linuxu je monolitické, má největší stopu a největší složitost oproti ostatním typům jader. Jednalo se o konstrukční prvek, který byl v debatách v prvních dnech Linuxu a přesto nese některé stejné chyby v návrhu, které mají monolitické jádro.

Jedna věc, kterou vývojáři jádra Linuxu udělali, aby se dostali k těmto nedostatkům, bylo vytvořit moduly jádra, které by mohly být načteny a vyloženy za běhu, což znamená, že můžete přidávat nebo odstraňovat funkce jádra za běhu. To může přesahovat pouze přidání hardwarové funkce do jádra tím, že zahrnuje moduly, které spouštějí serverové procesy, například virtualizaci na nízké úrovni, ale může také umožnit výměnu celého jádra, aniž by bylo nutné v některých případech restartovat počítač.

Představte si, že pokud byste mohli upgradovat na balíček Windows, aniž byste museli restartovat. ..

Moduly jádra

Co když by Windows měl k dispozici již nainstalovaný ovladač a stačilo zapnout ovladače, které potřebujete? To je v podstatě to, co dělá moduly jádra pro Linux. Moduly jádra, známé také jako modul pro načtení jádra( LKM), jsou nezbytné pro udržení fungování jádra se vším hardwarem, aniž by byla spotřebována veškerá dostupná paměť.

Modul obvykle přidává funkci základního jádra pro věci, jako jsou zařízení, souborové systémy a systémová volání.LKM mají příponu. ko a jsou obvykle uloženy v adresáři modulů /lib/.Vzhledem k jejich modulární povaze je možné snadno přizpůsobit vaše jádro nastavením modulů, které se budou načíst nebo ne načíst při spuštění pomocí příkazu menuconfig nebo úpravou konfiguračního souboru /boot/, nebo můžete moduly načítat a uvolnit za běhu pomocí příkazu modprobe.

Moduly třetích stran a uzavřené zdroje jsou k dispozici v některých distribucích, jako je Ubuntu, a nemusejí být ve výchozím nastavení nainstalovány, protože zdrojový kód pro moduly není k dispozici. Vývojář softwaru( tj. NVidia, ATI, mimo jiné) neposkytuje zdrojový kód, ale spíše buduje vlastní moduly a sestaví potřebné soubory. ko pro distribuci. Zatímco tyto moduly jsou volné jako v pivu, nejsou volné, jako v řeči, a proto nejsou zahrnuty v některých distribucích, protože správci se domnívají, že "kazí" jádro poskytováním nesvobodného softwaru.

Jádro není kouzlo, ale je naprosto nezbytné pro správný provoz každého počítače. Linuxové jádro se liší od operačních systémů OS X a Windows, protože obsahuje ovladače na úrovni jádra a mnoho věcí podporuje "mimo krabici".Doufejme, že budete znát trochu víc o tom, jak váš software a hardware pracují společně a jaké soubory potřebujete pro spuštění počítače.

Kernel.org
Obrázek ingridtaylar