Jádro operačního systému: Porovnání verzí

Smazaný obsah Přidaný obsah
kernel
hybridní kernel není všelék, harmonizace
Řádek 6:
Pro zajištění bezpečnosti [[operační systém|operačního systému]] je nutné, aby procesor podporoval dva módy činnosti: omezený pro aplikace a privilegovaný (se speciálními [[Strojová instrukce|strojovými instrukcemi]]) pro jádro. Privilegovanému módu se proto někdy říká ''kernel mód''.
 
Podle architektury operačního systému se typicky rozlišuje [[Mikrojádro|''mikrojádro'']] (jádro je velice jednoduché a obsahuje pouze zcela základní funkce, zbytek operačního systému se nachází mimo toto jádro v aplikacích (ev. serverech), např Symbian OS) a ''makrojádro'' ([[monolitické jádro]], jádro je rozsáhlé, obsahuje velké množství funkcí pro všechny aspekty činnosti operačního systému včetně například [[Souborový systém|souborového systému]]). Toto jádro je typické pro operační systém [[Unix]]. Jakýmsi [[kompromis]]em je ''[[hybridní jádro]]'', které kombinujese snaží kombinovat výhody oboumikrojádra i předchozíchmonolitického jaderjádra, např [[Windows NT]], [[OS X]].
 
== Základní povinnosti jádra ==
Řádek 27:
V preemptivním multitaskingovém systému jádro dává každému programu procesor na určitý časový úsek a přepíná z procesu na proces tak rychle, že to uživateli připadá jako by procesy běžely zároveň. Jádro používá plánovací [[algoritmus]] k výběru, který proces poběží další a kolik času mu bude přiděleno. Vybraný algoritmus může dovolit některým procesům, aby měly vyšší prioritu než ostatní. Jádro obvykle také poskytuje procesům prostředky pro komunikaci (již zmíněné IPC), například [[Sdílená paměť|sdílenou paměť]], předávání zpráv nebo vzdálené pouštění procedur.
 
Ostatní systémy (většinou na méně výkonných počítačích) můžou poskytovat kooperativní [[multitasking]], kde každému procesu je dovoleno běžet nepřerušeně dokud nevyšle speciální žádost, která ohlásí jádru, že může přepnout na jiný proces. Tyto dotazy jsou známy pod jménem „[[yielding]]“ a typicky se vyskytují v souvislosti s meziprocesovou komunikací nebo čekáním na událost. Starší verze operačních systémů [[Microsoft Windows|Windows]] a [[Mac OS|MAC]] používaly kooperativní multitasking, ale přešly na preemptivníhopreemptivní, jakmile výkon počítačům, pro které byly určeny, vzrostl.
 
Operační systém může také podporovat multiprocesing (symetrický - SMP - nebo s neuniformním přístupem k paměti - [[Non-Uniform Memory Access|NUMA]]); v tom případě různé programy a [[Vlákno (program)|vlákna]] mohou běžet na různých procesorech. Jádro musí být pro takový systém navrženo: musí být [[reentrantní]], což znamená že mohou bezpečně běžet dvě různé části jednoho kódu zároveň. To obvykle vyžaduje použití synchronizačního mechanizmu (jako je [[spinlock]]) k zajištění že žádné dva procesy nemohou měnit jedna data ve stejný čas.
Řádek 62:
[[Soubor:Kernel-microkernel.svg|thumb|260px|Mikrojádra]]
{{Podrobně|Mikrojádro}}
U mikrojádra samotné jádro poskytuje jen základní funkčnost nezbytnou pro vykonávání služeb. Přístupem mikrojádra je definování jednoduché abstrakce hardware se soupravou primitivních funkcí nebo systémových volání implementujících minimální služby OS jako je správa paměti nebo [[multitasking]] ([[Meziprocesová komunikace|IPC]]). Ostatní služby včetně těch, které běžně poskytuje jádro, jsou realizovány v uživatelském prostoru. Mikrojádra jsou jednodušší než monolitická jádra, avšak systémová volání způsobují řetězové [[Změna kontextu|změny kontextu]], které mohou ve velkém množství zvýšit režii systému tak, že budou pomalejší, než jednoduchá volání u monolitických jader.
 
=== Hybridní jádra ===
Řádek 74:
S rostoucí velikostí jádra se objevuje množství problémů koncepce monolotického jádra. Jeden z nejvýraznějších je zvětšování „paměťového otisku“, tedy množství paměti zabrané přímo jádrem. [[Virtuální paměť]] tento problém do určité míry odstraňuje, ale ne všechny počítačové architektury mají podporu virtuální paměti. Ke snížení velikosti jádra se musí vykonávat rozsáhlé úpravy k opatrnému odstranění nepotřebného kódu, které mohou být velmi složité vzhledem k nejasné vzájemné závislostí mezi částmi jádra s miliony řádků zdrojového kódu.
 
Některé nevýhody monolitického jádra je možné odstranit používáním modulů: ovladače zařízení stále běží v prostoru jádra se vší efektivitou kterou to přináší, ale jsou do značné míry nezávislé a je možné nahrávat jen ty, které jsou pro daný počítač zapotřebí. Příkladem takového systému je například [[Linux]], [[FreeBSD]]. Přesto, debata mezi [[Linus Torvalds|Linusem Torvaldsem]] a [[Andrew S. Tanenbaum|Andrewem Tanenbaumem]] na téma, že Linux by měl být raději mikrojádro, se rozrostla na slavnou [[flame war|vášnivou diskusi]].
 
=== Nano jádraNanojádra ===
V nanojádru jsou téměř všechny služby - dokonce i ty nejzákladnější jako správce přerušení nebo časovač - řešeny ovladači zařízení. Tím má vlastní jádro ještě menší požadavky na paměť než mikrokernel.