Úvodná » ako » Čo je Linuxové jadro a čo robí?

    Čo je Linuxové jadro a čo robí?


    S viac ako 13 miliónmi riadkov kódu je jadro Linux jedným z najväčších open source projektov na svete, ale čo je jadro a na čo sa používa?

    Takže Čo je jadro?

    Jadro je najnižšia úroveň ľahko vymeniteľného softvéru, ktorý je prepojený s hardvérom vo vašom počítači. Je zodpovedný za prepojenie všetkých vašich aplikácií, ktoré sú spustené v "užívateľskom režime", až po fyzický hardvér, a umožňuje procesom, známym ako servery, získavať informácie od seba navzájom pomocou IPC (interprocess communication).

    Rôzne typy jadier

    Existujú samozrejme rôzne spôsoby, ako vytvoriť jadro a architektonické hľadiská pri budovaní jedného od nuly. Všeobecne platí, že väčšina jadier spadá do jedného z troch typov: monolitický, mikrokernelový a hybridný. Linux je monolitické jadro, zatiaľ čo OS X (XNU) a Windows 7 používajú hybridné jadrá. Poďme sa rýchlo prehliadnuť v troch kategóriách, aby sme mohli prejsť podrobnejšie neskôr.


    Obrázok podľa uptown popcorn

    Microkernel
    Mikrokernel využíva prístup len na riadenie toho, čo má: CPU, pamäť a IPC. Docela veľa všetkého ostatného v počítači je možné považovať za príslušenstvo a dá sa s ním zaobchádzať v užívateľskom režime. Microkernely majú výhodu prenosnosti, pretože sa nemusia báť, ak zmeníte grafickú kartu alebo dokonca váš operačný systém, pokiaľ sa operačný systém stále pokúša prístup k hardvéru rovnakým spôsobom. Mikropôlky majú tiež veľmi malú stopu pre pamäť aj inštaláciu priestoru a majú tendenciu byť bezpečnejší, pretože iba špecifické procesy bežia v užívateľskom režime, ktorý nemá vysoké povolenia ako režim supervízor.

    Pros

    • prenosnosť
    • Malá inštalácia footprint
    • Malá pamäťová stopa
    • zabezpečenia

    Zápory

    • Hardvér je viac vyčerpaný prostredníctvom ovládačov
    • Hardvér môže reagovať pomalšie, pretože ovládače sú v užívateľskom režime
    • Procesy musia čakať vo fronte na získanie informácií
    • Procesy nemôžu získať prístup k iným procesom bez čakania

    Monolitické jadro
    Monolitické jadrá sú opačným aspektom jadra, pretože zahŕňajú nielen CPU, pamäť a IPC, ale obsahujú aj veci ako ovládače zariadení, správu súborového systému a volania systémových serverov. Monolitické jadrá majú tendenciu byť lepšie pri prístupe k hardvéru a multitaskingu, pretože ak program potrebuje získať informácie z pamäte alebo z iného procesu behu, má priamu linku na prístup k nemu a nemusí čakať vo fronte na to, aby sa veci urobili. To však môže spôsobiť problémy, pretože čím viac vecí, ktoré bežia v režime supervisora, tým viac vecí, ktoré môžu zničiť váš systém, ak sa neporadíte správne.

    Pros

    • Priamy prístup k hardvéru pre programy
    • Jednoduchšie pre procesy komunikovať medzi sebou
    • Ak je vaše zariadenie podporované, malo by fungovať bez ďalších inštalácií
    • Procesy reagujú rýchlejšie, pretože nie je k dispozícii čas pre procesor

    Zápory

    • Veľká montážna stopa
    • Veľká pamäťová stopa
    • Menej bezpečné, pretože všetko beží v režime supervisora


    Obrázok cez schoschie na Flickr

    Hybridné jadro
    Hybridné jadrá majú možnosť vybrať a zvoliť to, čo chcú spustiť v režime používateľa a čo chcú spustiť v režime supervizora. Často sa veci ako ovládače zariadení a vstupy a výstupy súborového systému spúšťajú v užívateľskom režime, zatiaľ čo IPC a serverové volania sa budú udržiavať v režime supervizora. To dáva to najlepšie z oboch svetov, ale často bude vyžadovať viac práce výrobcu hardvéru, pretože všetka zodpovednosť vodiča je na nich. Môže tiež mať niektoré z problémov latencie, ktoré sú spojené s mikrokapsami.

    Pros

    • Vývojár si môže vybrať, čo sa spustí v režime používateľa a čo sa spustí v režime supervízora
    • Menšia inštalácia stopy ako monolitického jadra
    • Flexibilnejšie ako iné modely

    Zápory

    • Môžu trpieť rovnakým procesným oneskorením ako mikrokernel
    • Ovládače zariadení musia spravovať používatelia (typicky)

    Kde sú súbory Linuxového jadra?

    Súbor jadra v Ubuntu je uložený v priečinku / boot a nazýva sa vmlinuz-verzia. Názov vmlinuz pochádza zo sveta UNIX, kde nazývali jadrá jednoducho "unix" späť v 60-tych rokoch, takže Linux začal nazývať ich "linux" jadro, keď bol prvýkrát vyvinutý v 90-tych rokoch.

    Keď bola virtuálna pamäť vyvinutá pre jednoduchšie multitaskingové schopnosti, "vm" bol umiestnený v prednej časti súboru, aby ukázal, že jadro podporuje virtuálnu pamäť. Chvíľu sa jadro Linuxu nazývalo vmlinux, ale jadro sa zdalo príliš veľké, aby sa zmestili do dostupnej pamäte zavádzania, takže obraz jadra bol komprimovaný a koniec x bol zmenený na z, aby sa ukázalo, že bol komprimovaný pomocou kompresie zlib. Rovnaká kompresia sa nie vždy používa, často sa nahradí LZMA alebo BZIP2 a niektoré jadrá sa jednoducho nazývajú zImage.

    Číslovanie verzie bude vo formáte A.B.C.D, kde bude A.B pravdepodobne 2,6, C bude vaša verzia a D označuje vaše opravy alebo opravy.

    V / boot priečinku budú tiež ďalšie veľmi dôležité súbory s názvom initrd.img-version, system.map-version a config-version. Initrd súbor sa používa ako malý disk RAM, ktorý extrahuje a spúšťa aktuálny súbor jadra. Súbor system.map sa používa na správu pamäte pred naplnením jadra a konfiguracný súbor informuje jadro o tom, aké možnosti a moduly sa načítajú do obrázka jadra pri jeho zostavovaní.

    Architektúra jadra Linuxu

    Pretože jadro Linuxu je monolitické, má najväčšiu stopu a najväčšiu zložitosť oproti iným typom jadra. Ide o dizajnovú funkciu, ktorá bola v skorých dňoch Linuxu pod značnou debatou a naďalej nesie niektoré rovnaké chyby dizajnu, ktoré monolitické jadrá sú neodmysliteľné.

    Jedna vec, ktorú vyvinuli vývojári jadra Linuxu na odstránenie týchto nedostatkov, bolo vytvoriť moduly jadra, ktoré by mohli byť načítané a vyložené za behu, čo znamená, že môžete pridať alebo odstrániť funkcie jadra za behu. To môže presahovať len pridaním hardvérových funkcií k jadru tým, že zahrnie moduly, ktoré spúšťajú serverové procesy, napríklad virtualizáciu na nízkej úrovni, ale môže tiež umožniť výmenu celého jadra bez potreby reštartovania počítača v niektorých prípadoch.

    Predstavte si, či môžete inovovať na balík Service Pack systému Windows bez toho, aby ste museli reštartovať ...

    Moduly jadra

    Čo ak by Windows mal k dispozícii každý už nainštalovaný ovládač a stačilo zapnúť ovládače, ktoré potrebujete? To je v podstate to, čo robia moduly jadra pre Linux. Moduly jadra, známe aj ako modul na načítanie jadra (LKM), sú nevyhnutné pre udržanie fungovania jadra so všetkým hardvérom, bez toho, aby ste spotrebovali všetku dostupnou pamäť.

    Modul zvyčajne pridáva funkcie základného jadra pre veci ako zariadenia, systémy súborov a systémové volania. LKM majú príponu .ko a sú zvyčajne uložené v adresári / lib / modules. Vzhľadom na ich modulárnu povahu môžete ľahko prispôsobiť svoje jadro nastavením modulov na načítanie alebo nezaťaženie pri spustení pomocou príkazu menuconfig alebo úpravou vášho / boot / config súboru alebo môžete načítať a vyložiť moduly za behu s modprobe príkaz.

    Moduly tretej strany a uzatvorené zdroje sú k dispozícii v niektorých distribuciách, napríklad Ubuntu, a nemusia byť štandardne nainštalované, pretože zdrojový kód pre moduly nie je k dispozícii. Vývojár softvéru (tzn. NVidia, ATI, okrem iných) neposkytuje zdrojový kód, ale skôr vytvorí vlastné moduly a zostaví potrebné súbory .ko na distribúciu. Zatiaľ čo tieto moduly sú voľné ako v prípade piva, nie sú voľné, ako v reči, a preto nie sú zahrnuté v niektorých distribúciách, pretože správcovia sa domnievajú, že "poškodzuje" jadro poskytovaním neslobodného softvéru.

    Jadro nie je kúzlo, ale je úplne nevyhnutné pre správne fungovanie každého počítača. Linuxové jadro je iné ako OS X a Windows, pretože obsahuje ovládače na úrovni jadra a mnohé veci podporujú "mimo krabice". Dúfajme, že budete vedieť trochu viac o tom, ako váš softvér a hardvér pracuje spoločne a aké súbory potrebujete na zavedenie počítača.

    Kernel.org
    Obrázok podľa ingridtaylar