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

    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 to jádro a co se používá?

    Takže co je to jádro?

    Jádro je nejnižší úrovní snadno vyměnitelného softwaru, který je propojen s hardwarem v počítači. Je odpovědný za propojení všech vašich aplikací, které běží v "uživatelském režimu", až k fyzickému hardwaru a umožňuje procesům známým jako servery získat informace od sebe navzájem pomocí komunikace mezi procesy (IPC).

    Různé typy jader

    Existují samozřejmě různé způsoby, jak budovat 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ý, mikrokernel a hybrid. 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 o uptown popcorn

    Microkernel
    Mikrokernel se zabývá pouze řízením toho, co má: CPU, paměť a IPC. Docela hodně všeho jiného v počítači lze považovat za příslušenství a lze jej zpracovat 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 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, jak pro paměť, tak 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.

    Klady

    • Přenosnost
    • Malá instalace stopy
    • Malá paměťová stopa
    • Bezpečnostní

    Nevýhody

    • Hardware je díky ovladačům více vyčerpán
    • Hardware může reagovat pomaleji, protože ovladače jsou v uživatelském režimu
    • Procesy musí čekat ve frontě, aby získaly informace
    • Procesy nemohou získat přístup k jiným procesům bez čekání

    Monolitické jádro
    Monolitická jádra jsou opakem mikrokern, protože zahrnují nejen procesor, paměť a IPC, ale také obsahují například 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ého procesu, má k němu přístup přímý přístup a nemusí čekat ve frontě, aby se dělal. To však může způsobit problémy, protože čím více věcí, které běží v režimu supervizora, tím víc věcí, které mohou způsobit, že systém nebude fungovat správně.

    Klady

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

    Nevýhody

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


    Obrázek přes schoschie na Flickru

    Hybridní jádro
    Hybridní jádra mají možnost vybrat a vybrat, co chtějí spustit v uživatelském režimu a co chtějí spustit v režimu supervizora. Č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 uchovává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 latentních problémů, které jsou spojené s mikrokernely.

    Klady

    • Vývojář si může vybrat, co běží v uživatelském režimu a co běží v režimu supervizora
    • Menší instalační stopa než monolitické jádro
    • Flexibilnější než jiné 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 (obvykle)

    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ěť vyvinuta 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 koncovka x byla změněna na z, aby se ukázalo, že byla komprimována kompresí zlib. Stejná komprese se ne vždy používá, často nahrazuje 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 označuje 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ě načtením jádra a konfigurační soubor řekne jádru, jaké možnosti a moduly se načtou do obrazu jádra při jeho kompilaci.

    Architektura jádra Linuxu

    Protože jádro Linuxu je monolitické, má největší stopu a nejsložitější než ostatní typy jader. Jedná 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 vlastní.

    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řidat nebo odstranit 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 počítač ...

    Moduly jádra

    Co kdyby systém Windows měl k dispozici všechny ovladače již nainstalované a stačí 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í modulu jádra (LKM), jsou nezbytné pro zachování fungování jádra se vším hardwarem, aniž by byla spotřebována veškerá dostupná paměť.

    Modul typicky přidává funkci základního jádra pro věci, jako jsou zařízení, systémy souborů a systémová volání. LKM mají příponu .ko a jsou obvykle uloženy v adresáři / lib / modules. Vzhledem k jejich modulární povaze je možné snadno přizpůsobit vaše jádro nastavením modulů, které se načtou nebo nenahládají během spouštění pomocí příkazu menuconfig nebo úpravou souboru / boot / config, nebo můžete moduly načítat a uvolňovat za běhu pomocí modprobe příkaz.

    Moduly třetí strany 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 fungují společně a jaké soubory potřebujete pro spuštění počítače.

    Kernel.org
    Obrázek o ingridtaylar