Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Tu sú rôzne typy jadier, s tým, ako by sa s nimi mohlo vzťahovať `jadro.c`:
1. Monolitické jadrá:
* Popis: V jadrovom priestore sa prevádzkuje celá funkčnosť OS (ovládače zariadení, správa pamäte, systém súborov atď.). To vedie k jedinému veľkému, komplexnému programu.
* `kernel.c` rolu: V monolitickom jadre `kernel.c` * môže obsahovať jadrové inicializačné rutiny, hlavnú slučku (alebo slučku plánovača), manipuláciu s prerušením a potenciálne dokonca počiatočné implementácie kľúčových subsystémov. Je to bežný východiskový bod. Mohlo by to byť tiež relatívne menší súbor obsahujúci inicializáciu a odoslanie, pričom ďalšie zdrojové súbory sa zaoberajú konkrétnymi subsystémami. Monolitické jadro má však zvyčajne veľa zdrojových súborov a „kernel.c` je iba jeden kus. Môže zorganizovať zaťaženie a inicializáciu ovládačov a iných základných komponentov.
Príklady:
* skorý Linux: Prvé verzie Linuxu boli bližšie k monolitu, hoci sa významne vyvinula.
* BSD Family (FreeBSD, OpenBSD, NetBSD): Aj keď sú modulárne, stále majú veľkú kódovú základňu jadra.
* ms-DOS: Jednoduchý príklad.
2. Mikrokernely:
* Popis: Microkernel poskytuje minimálnu sadu základných služieb:Interprocess Communication (IPC), správa základnej pamäte a plánovanie CPU. Ovládače zariadení, súborové systémy a ďalšie služby OS sa prevádzkujú v používateľskom priestore.
* `kernel.c` rolu: V mikrokerne je „jadro.c` zvyčajne menší a zameriava sa výlučne na jadro funkcie mikrokernelov. Obsahoval by kód pre:
* Manipulácia s IPC (odovzdávanie správ)
* Správa úloh (vlákna/procesy) a ich plánovanie
* Implementácia rozhrania základnej jednotky správy pamäte (MMU).
* Riešenie systémových hovorov a ich odoslanie do správnej služby.
* Prerušenie manipulácie a nasmerovanie ich príslušným službám.
Príklady:
* minix 3: Výslovne navrhnuté ako mikrokernel.
* qnx: OS Microkernel v reálnom čase.
* L4/fiasco: Rodina vysokovýkonných mikrokernelov.
3. Hybridné jadrá:
* Popis: Hybridné jadro sa pokúša skombinovať výhody monolitického a mikrokernelov. Zvyčajne majú viac služieb v jadrovom priestore ako mikrokernel, ale menej ako monolitické jadro. Toto často zahŕňa ovládače zariadení.
* `kernel.c` rolu: V hybridnom jadre by bolo „jadro“ väčšie ako v mikrokernere, ale menšie ako v čisto monolitickom jadre. Môže obsahovať:
* Kolovanie a odosielanie základného systému
* Počiatočné načítavanie a správa ovládača zariadenia (aj keď niektoré ovládače môžu byť moduly)
* Správa pamäte a implementácia virtuálnej pamäte
* Plánovanie CPU
* Interprocess komunikácia (potenciálne optimalizovaná v porovnaní s mikrokernelmi)
* Inicializácia jadra a jeho subsystémov.
Príklady:
* Windows nt jadro (používané v systéme Windows 2000, XP, Vista, 7, 8, 10, 11): Aj keď sa často opisuje ako hybrid, prikláňa sa viac k monolitickému prístupu, pokiaľ ide o množstvo kódu bežiaceho v priestore jadra.
* macos (xnu): Používa hybridný prístup, ktorý kombinuje časti Mach Microkernel s komponentmi BSD UNIX.
4. Exokernel:
* Popis: Exokernels vezme koncept mikrokernelu do extrému. Poskytujú minimálnu abstrakciu nad hardvérom, čo umožňuje aplikáciám priamo spravovať zdroje. Aplikácie požadujú zdroje a exokernel jednoducho zaisťuje izoláciu a ochranu.
* `kernel.c` rolu: V exokernele by `kernel.c` bol * extrémne * malý. Zamerala by sa hlavne na:
* Sledovanie a izolácia zdrojov
* Autorizácia a kontrola prístupu
* Poskytovanie rozhrania s nízkou úrovňou hardvéru (napr. Pridelenie fyzických stránok, nastavovanie tabuliek stránok).
* Veľmi minimálne plánovanie.
Príklady:
* exos: Výskumný operačný systém, ktorý propagoval koncept Exokernel.
5. Nanokernely/picokernels:
* Popis: Dokonca aj menšie ako mikrokernely, často používané v zabudovaných systémoch a operačných systémoch v reálnom čase (RTO). Zvyčajne spracúvajú iba hardvérovú abstrakciu, prerušenia a základné plánovanie úloh.
* `kernel.c` rolu: V nanokernele by `jadro.c` bolo mimoriadne minimálne. Zaujímalo by sa to predovšetkým:
* Prerušenie manipulácie
* Plánovanie úloh a prepínanie kontextu
* Pravdepodobne základná ochrana pamäte
* Najmenšia možná vrstva abstrakcie hardvéru (HAL).
Príklady:
* Konkrétne implementácie RTO.
6. Unikernels:
* Popis: Unikernel je špecializovaný obraz stroja s jednou adresou, ktorý obsahuje iba komponenty OS, ktoré sú potrebné na spustenie konkrétnej aplikácie. Je zostavený priamo z kódu aplikácie a špecializovanej knižnice jadra.
* `kernel.c` rolu: Koncept súboru `kernel.c` je menej priamo použiteľný. Jadro je často zostavené z knižníc a konfigurácií špecifických pre aplikáciu. Môže existovať súbor „lepidla“ alebo vstupný bod, ktorý by sa dal nazvať `jadro.c`, ale jeho úloha je viac o prepojení komponentov, ako reprezentovať tradičnú štruktúru jadra. Mohlo by sa podieľať na nastavení počiatočného prostredia a volaní hlavnej funkcie aplikácie.
Príklady:
* OSV: Unikernel navrhnutý pre cloudové prostredie.
* Include: Ďalšia platforma Unikernel.
Dôležité úvahy:
* Organizácia súborov: Moderné operačné systémy, dokonca aj tie, ktoré majú monolitické jadrá, sú usporiadané do mnohých zdrojových súborov. „Kernel.C` je iba jedna a úloha, ktorú hrá, sa môže líšiť v závislosti od architektúry a dizajnu OS.
* Boot proces: „Kernel.c` sa často zapája do predčasného zavádzacieho procesu a nastaví systém pred odovzdaním ovládacieho prvku do iných častí jadra alebo do aplikácie.
* Podrobnosti o implementácii: Špecifické funkcie a štruktúry nájdené v `jadre.c` budú úplne závisieť od OS.
* Modulárne jadrá: Mnoho moderných jadier podporuje moduly (napr. Moduly zaťaženého jadra v Linuxe). Tieto moduly môžu do istej miery rozširovať funkčnosť jadra, rozmazáva čiary medzi „priestorom jadra“ a „používateľským priestorom“ a potenciálne znižuje počiatočnú veľkosť a zložitosť základného kódu jadra (vrátane toho, čo by sa dalo nájsť v „jadre).
Stručne povedané, zatiaľ čo názov „kernel.c` znamená základnú komponent, jeho skutočná úloha a obsah sa dramaticky líšia na základe typu jadra (monolitické, mikrokernel, hybrid atď.) A špecifický návrh operačného systému. Je to často inicializačný a vstupný súbor bodu, ale nie vždy centrálny súbor obsahujúci väčšinu kódu operačného systému.