Kernel je centrálna súčasť operačného systému, ktorá riadi operácie počítača a hardvéru. V podstate spravuje operácie pamäte a času CPU. Je základnou súčasťou operačného systému. Kernel funguje ako most medzi aplikáciami a spracovaním údajov vykonávaným na hardvérovej úrovni pomocou medziprocesovej komunikácie a systémových volaní.
Jadro sa najprv načíta do pamäte pri načítaní operačného systému a zostane v pamäti, kým sa operačný systém opäť nevypne. Je zodpovedný za rôzne úlohy, ako je správa diskov, správa úloh a správa pamäte.
Kernel má tabuľku procesov, ktorá sleduje všetky aktívne procesy
• Tabuľka procesov obsahuje tabuľku regiónov podľa procesu, ktorej vstup ukazuje na záznamy v tabuľke regiónov.
Jadro načíta spustiteľný súbor do pamäte počas systémového volania „exec“.
Rozhoduje, ktorý proces by mal byť pridelený procesoru na vykonanie a ktorý proces by mal byť uložený v hlavnej pamäti na vykonanie. V podstate funguje ako rozhranie medzi používateľskými aplikáciami a hardvérom. Hlavným cieľom jadra je riadiť komunikáciu medzi softvérom, t.j. aplikáciami na úrovni používateľa, a hardvérom, t.j. CPU a diskovou pamäťou.
Ciele jadra:
- Na nadviazanie komunikácie medzi aplikáciou na úrovni používateľa a hardvérom.
- Rozhodovať o stave prichádzajúcich procesov.
- Na ovládanie správy diskov.
- Na ovládanie správy pamäte.
- Na ovládanie správy úloh.
Typy jadra:
1. Monolitické jadro –
Je to jeden z typov jadra, kde všetky služby operačného systému fungujú v priestore jadra. Má závislosti medzi komponentmi systému. Má obrovské riadky kódu, ktorý je zložitý.
Príklad:
Unix, Linux, Open VMS, XTS-400 etc.>
Výhoda:
1. Účinnosť: Monolitické jadrá sú vo všeobecnosti rýchlejšie ako iné typy jadier, pretože nemusia prepínať medzi užívateľským a kernelovým režimom pre každé systémové volanie, čo môže spôsobiť réžiu.
2. Úzka integrácia: Keďže všetky služby operačného systému bežia v priestore jadra, môžu medzi sebou efektívnejšie komunikovať, čo uľahčuje implementáciu zložitých funkcií a optimalizácií.
3. Jednoduchosť: Monolitické jadrá sa jednoduchšie navrhujú, implementujú a ladia ako iné typy jadier, pretože majú jednotnú štruktúru, ktorá uľahčuje správu kódu.
4. Nižšia latencia: Monolitické jadrá majú nižšiu latenciu ako iné typy jadier, pretože systémové volania a prerušenia môže spracovať priamo jadro.
Nevýhoda:
1. Problémy so stabilitou: Monolitické jadrá môžu byť menej stabilné ako iné typy jadier, pretože akákoľvek chyba alebo bezpečnostná zraniteľnosť v službe jadra môže ovplyvniť celý systém.
2. Chyby zabezpečenia: Keďže všetky služby operačného systému bežia v priestore jadra, akákoľvek bezpečnostná chyba v jednej zo služieb môže ohroziť celý systém.
3. Ťažkosti s údržbou: Monolitické jadrá môžu byť náročnejšie na údržbu ako iné typy jadier, pretože akákoľvek zmena v jednej zo služieb môže ovplyvniť celý systém.
4. Obmedzená modularita: Monolitické jadrá sú menej modulárne ako iné typy jadier, pretože všetky služby operačného systému sú tesne integrované do priestoru jadra. To sťažuje pridávanie alebo odstraňovanie funkcií bez ovplyvnenia celého systému.
2. Mikro jadro –
Ide o typy jadier, ktoré majú minimalistický prístup. Má virtuálnu pamäť a plánovanie vlákien. Je stabilnejší s menším počtom služieb v priestore jadra. Odpočíva v užívateľskom priestore.
podčiarknutie značky
Používa sa v malých os.
Príklad:
Mach, L4, AmigaOS, Minix, K42 etc.>
Výhody:
1. Spoľahlivosť: Architektúra mikrojadier je navrhnutá tak, aby bola spoľahlivejšia ako monolitické jadrá. Keďže väčšina služieb operačného systému beží mimo priestoru jadra, žiadna chyba alebo bezpečnostná chyba v službe neovplyvní celý systém.
2. Flexibilita : Architektúra mikrojadra je flexibilnejšia ako monolitické jadrá, pretože umožňuje pridávanie alebo odstraňovanie rôznych služieb operačného systému bez ovplyvnenia celého systému.
3. Modularita: Architektúra mikrojadra je modulárnejšia ako monolitické jadrá, pretože každá služba operačného systému beží nezávisle od ostatných. To uľahčuje údržbu a ladenie systému.
4. Prenosnosť: Architektúra mikrojadra je prenosnejšia ako monolitické jadrá, pretože väčšina služieb operačného systému beží mimo priestoru jadra. To uľahčuje portovanie operačného systému na rôzne hardvérové architektúry.
Nevýhody:
1. Výkon: Architektúra mikrojadra môže byť pomalšia ako monolitické jadrá, pretože vyžaduje viac kontextových prepínačov medzi užívateľským priestorom a priestorom jadra.
2. Zložitosť: Architektúra mikrojadra môže byť zložitejšia ako monolitické jadrá, pretože vyžaduje viac komunikačných a synchronizačných mechanizmov medzi rôznymi službami operačného systému.
3. Ťažkosti s vývojom: Vývoj operačných systémov založených na architektúre mikrojadier môže byť náročnejší ako vývoj monolitických jadier, pretože si vyžaduje väčšiu pozornosť venovanú detailom pri navrhovaní komunikačných a synchronizačných mechanizmov medzi rôznymi službami.
4. Vyššia spotreba zdrojov: Architektúra mikrojadra môže využívať viac systémových prostriedkov, ako je pamäť a CPU, ako monolitické jadrá, pretože si vyžaduje viac komunikačných a synchronizačných mechanizmov medzi rôznymi službami operačného systému.
3. Hybridné jadro –
Ide o kombináciu monolitického jadra a mikrojadra. Má rýchlosť a dizajn monolitického jadra a modularitu a stabilitu mikrojadra.
Príklad:
Windows NT, Netware, BeOS etc.>
Výhody:
1. Výkon: Hybridné jadrá môžu ponúknuť lepší výkon ako mikrokernely, pretože znižujú počet potrebných prepínačov kontextu medzi užívateľským priestorom a priestorom jadra.
2. Spoľahlivosť: Hybridné jadrá môžu ponúknuť lepšiu spoľahlivosť ako monolitické jadrá, pretože izolujú ovládače a ďalšie komponenty jadra v samostatných doménach ochrany.
3. Flexibilita: Hybridné jadrá môžu ponúknuť lepšiu flexibilitu ako monolitické jadrá, pretože umožňujú pridávanie alebo odstraňovanie rôznych služieb operačného systému bez ovplyvnenia celého systému.
4. Kompatibilita: Hybridné jadrá môžu byť kompatibilnejšie ako mikrokernely, pretože môžu podporovať širšiu škálu ovládačov zariadení.
Nevýhody:
1. Zložitosť: Hybridné jadrá môžu byť zložitejšie ako monolitické jadrá, pretože obsahujú monolitické aj mikrojadrá, čo môže sťažiť návrh a implementáciu.
2. Zabezpečenie: Hybridné jadrá môžu byť menej bezpečné ako mikrojadrá, pretože majú väčšiu útočnú plochu v dôsledku zahrnutia monolitických komponentov.
3. Údržba: Hybridné jadrá môžu byť náročnejšie na údržbu ako mikrojadrá, pretože majú zložitejší dizajn a implementáciu.
4. Použitie zdrojov: Hybridné jadrá môžu využívať viac systémových prostriedkov ako mikrokernely, pretože obsahujú monolitické aj mikrojadrá.
4. Exo jadro –
Je to typ jadra, ktorý sa riadi princípom end-to-end. Má čo najmenej hardvérových abstrakcií. Aplikáciám prideľuje fyzické zdroje.
Príklad:
Nemesis, ExOS etc.>
Výhody:
1. Flexibilita: Exokernely ponúkajú najvyššiu úroveň flexibility a umožňujú vývojárom prispôsobiť a optimalizovať operačný systém pre ich špecifické potreby aplikácií.
2. Výkon: Exokernely sú navrhnuté tak, aby poskytovali lepší výkon ako tradičné jadrá, pretože eliminujú zbytočné abstrakcie a umožňujú aplikáciám priamy prístup k hardvérovým zdrojom.
3. Zabezpečenie: Exokernely poskytujú lepšiu bezpečnosť ako tradičné jadrá, pretože umožňujú jemnú kontrolu nad alokáciou systémových zdrojov, ako je pamäť a čas CPU.
4. Modularita: Exokernely sú vysoko modulárne, čo umožňuje jednoduché pridávanie alebo odstraňovanie služieb operačného systému.
Nevýhody:
1. Zložitosť: Exokernely môžu byť zložitejšie na vývoj ako tradičné jadrá, pretože vyžadujú väčšiu pozornosť na detaily a starostlivé zváženie alokácie systémových zdrojov.
2. Obtiažnosť vývoja: Vývoj aplikácií pre exokernely môže byť náročnejší ako pre tradičné jadrá, pretože aplikácie musia byť napísané tak, aby mali priamy prístup k hardvérovým zdrojom.
3. Obmedzená podpora: Exokernely sú stále novou technológiou a nemusia mať rovnakú úroveň podpory a zdrojov ako tradičné jadrá.
4. Náročnosť ladenia: Ladenie aplikácií a služieb operačného systému na exokerneloch môže byť náročnejšie ako na tradičných jadrách kvôli priamemu prístupu k hardvérovým zdrojom.
5. Nano jadro –
Je to typ jadra, ktorý ponúka hardvérovú abstrakciu, ale bez systémových služieb. Micro Kernel tiež nemá systémové služby, preto sa Micro Kernel a Nano Kernel stali analogickými.
Príklad:
EROS etc.>
Výhody:
1. Malá veľkosť: Nanokernely sú navrhnuté tak, aby boli extrémne malé a poskytovali len tie najpodstatnejšie funkcie potrebné na chod systému. Vďaka tomu môžu byť efektívnejšie a rýchlejšie ako iné typy jadier.
2. Vysoká modularita: Nanokernely sú vysoko modulárne, čo umožňuje jednoduché pridávanie alebo odstraňovanie služieb operačného systému, vďaka čomu sú flexibilnejšie a prispôsobiteľnejšie ako tradičné monolitické jadrá.
3. Zabezpečenie: Nanojadrá poskytujú lepšiu bezpečnosť ako tradičné jadrá, pretože majú menšiu útočnú plochu a nižšie riziko chýb alebo chýb v kóde.
32-bitová architektúra vs 64-bitová
4. Prenosnosť: Nanokernely sú navrhnuté tak, aby boli vysoko prenosné, čo im umožňuje bežať na širokej škále hardvérových architektúr.
Nevýhody:
1. Obmedzená funkčnosť: Nanokernely poskytujú len tie najpodstatnejšie funkcie, vďaka čomu nie sú vhodné pre zložitejšie aplikácie, ktoré vyžadujú širší rozsah služieb.
2. Zložitosť: Pretože nanojadrá poskytujú iba základné funkcie, ich vývoj a údržba môžu byť zložitejšie ako iné typy jadier.
3. Výkon: Zatiaľ čo nanojadrá sú navrhnuté s ohľadom na efektivitu, ich minimalistický prístup nemusí byť v určitých situáciách schopný poskytnúť rovnakú úroveň výkonu ako iné typy jadier.
4. Kompatibilita: Kvôli svojmu minimalistickému dizajnu nemusia byť nanojadrá kompatibilné so všetkými hardvérovými a softvérovými konfiguráciami, čo obmedzuje ich praktické využitie v určitých kontextoch.