Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy
počítačové znalosti >> Systémy >> linux >> .

Aké sú rôzne typy jadier.C dostupné pre operačné systémy?

Súbor `kernel.c` je vo všeobecnosti východiskovým bodom alebo centrálnou časťou jadra operačného systému. Jeho presná úloha a obsah sa veľmi líšia v závislosti od OS a jeho dizajnu. Nie je to štandardizovaný súbor vo všetkých operačných systémoch. Môžeme však kategorizovať typy jadier koncepčne a ako by sa do týchto kategórií zmestilo `jadro.c`.

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.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené