5Aug

Č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?

Čo je to jadro?

Kernel 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 interprocesnej komunikácie( IPC).

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ť do troch kategórií, aby sme mohli prejsť podrobnejšie neskôr.


Obrázok uptown popcorn

Microkernel
Mikrokernel sa zaoberá iba riadením toho, čo má: procesor, pamäť a IPC.Takmer všetko ostatné v počítači môže byť považované za príslušenstvo a môže byť spracované v užívateľskom režime. Microkernely majú výhodu prenosnosti, pretože nemusia mať obavy, ak zmeníte grafickú kartu alebo dokonca operačný systém, pokiaľ sa operačný systém stále pokúša prístup k hardvéru rovnakým spôsobom. Mikrokernuly 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é oprávnenia ako režim supervízor.

Pros

  • Prenosnosť
  • Malá inštalácia footprint
  • Malá pamäťová stopa
  • Bezpečnosť

Nevýhody

  • Hardware je viac abstracted prostredníctvom ovládačov
  • Hardware 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ôžuzískať prístup k iným procesom bez čakania

Monolitické jadro
Monolitické jadrá sú opačné voči mikrokernám, pretože zahŕňajú nielen CPU, pamäť a IPC, ale zahŕňajú aj veci ako ovládače zariadení, správu súborových systémov 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 nemusia č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 supervizora, tým viac vecí, ktoré môžu znížiť váš systém, ak sa človek správa nesprávne.

Pros

  • Viac priamy prístup k hardvéru pre programy
  • Jednoduchšie pre komunikáciu medzi procesmi
  • Ak je vaše zariadenie podporované, malo by pracovať bez ďalších inštalácií
  • Procesy reagujú rýchlejšie, pretože nie je fronta pre čas procesora

Konzola

  • Veľkánainštalujte stopu
  • veľká pamäťová stopa
  • menej zabezpečená, pretože všetko beží v režime supervisora ​​


obrázok cez schoschie na Flickr

Hybridné jadro
Hybridné jadrá majú schopnosť vybrať si, čo chcú spustiť v užívateľskom režime a čo chcú spustiť v supervízoremode.Č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 budú uchované 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ôžu mať aj niektoré z problémov latencie, ktoré sú spojené s mikroekernami.

Pros

  • Vývojár si môže vybrať a vybrať, čo beží v režime používateľa a čo beží v režime supervisora ​​
  • Menšia inštalácia stopy ako monolitické jadro
  • Flexibilnejšia ako ostatné modely

Nevýhody

  • Môžu trpieť rovnakým oneskorením procesu ako mikrokernel
  • Ovládače zariadení musia byť spravované používateľom( 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 sa v 60-tych rokoch nazývali jadra jednoducho "unix", takže Linux začal vo svojom jadre "linux" po prvýkrát vyvinutý v 90-tych rokoch.

Keď bola vyvinutá virtuálna pamäť 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 rástlo 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 bude označovať vaše opravy alebo opravy.

V priečinku / boot sa nachádzajú aj ďalšie veľmi dôležité súbory nazývané 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 konfiguračný súbor uvádza jadru, 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 ostatným typom jadra. Ide o dizajnovú funkciu, ktorá bola v skorých dňoch Linuxu dosť diskutovaná a stále nesie niektoré rovnaké chyby v návrhu, ktoré majú monolitické jadrá.

Jedna vec, ktorú vyvinuli vývojári jadra Linuxu na odstránenie týchto chýb, 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í do jadra zahrnutím modulov, 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 nutnosti reštartovania počítača v niektorých prípadoch.

Predstavte si, že by ste mohli inovovať na balík Service Pack systému Windows bez toho, aby ste museli reštartovať. ..

Moduly jadra

Čo ak by Windows mal mať už k dispozícii každý ovládač a už ste mali 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čítavanie jadra( LKM), sú nevyhnutné pre udržanie fungovania jadra so všetkým hardvérom, bez toho, aby ste museli vyčerpať všetku dostupnou pamäť.

Modul zvyčajne pridáva do základného jadra funkčnosť pre zariadenia, systémy súborov a systémové volania. LKM majú príponu. ko a sú zvyčajne uložené v adresári modulov /lib/.Vzhľadom na ich modulárnu povahu môžete jednoducho prispôsobiť svoje jadro nastavením modulov, ktoré sa načítajú alebo nenahrávajú počas spúšťania pomocou príkazu menuconfig alebo úpravou konfiguračného súboru /boot/, alebo môžete načítať a vyložiť moduly za behu s príkazom modprobe.

Moduly tretej strany a uzavreté zdroje sú k dispozícii v niektorých distribúciá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.

Kernel nie je kúzelný, 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 sú podporované "mimo krabice".Dúfajme, že budete vedieť trochu viac o tom, ako váš softvér a hardvér spolupracuje a aké súbory potrebujete na zavedenie počítača.

Kernel.org
Obrázok podľa ingridtaylar