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

Smazaný obsah Přidaný obsah
m oprava chyby při nahrazování odkazů na rozcestníky za použití AWB
oprava (CPU)
Řá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, [[GNU Hurd]]) 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é se snaží kombinovat výhody mikrojádra i monolitického jádra, např [[Windows NT]], [[OS X]].
 
== Základní povinnosti jádra ==
Základní účel jádra spočívá v ovládání prostředků [[počítač]]e a umožnění ostatním [[Počítačový program|programům]] běžet a používat je. Typicky se prostředky skládají z:
* [[mikroprocesorCentrální procesorová jednotka|ProcesorCPU]] (centrální procesorová jednotka nebo jednotky neboli procesor[[mikroprocesor]]). Jde o základní část počítače. Ta má za zodpovědnost běh nebo vykonávání programů. Jádro má za úkol rozhodování o tom, který z programů bude přidělen procesoru nebo procesorůmCPU (na každém procesoru - vve modernějších[[vícejádrových]] procesorech na každém jádře - může v jednom okamžiku běžet právě jeden program).
* [[Elektronická paměť|Paměť]] počítače. Paměť je používána k ukládání jak [[Strojová instrukce|strojových instrukcí]] programů tak i dat. Obvykle musí být v paměti přítomno obojí, aby se mohl provést program. Často chce paměť používat mnoho programů, dohromady požadujících více paměti než má počítač k dispozici. Jádro má za povinnost rozhodování, kterou část paměti může každý proces použít a rozhodnout co dělat, když je nedostatek volné paměti. (viz také [[virtuální paměť]]).
* Jakékoliv vstupně/výstupní (I/O) zařízení přítomné v počítači, jako jsou [[Pevný disk|diskové jednotky]], [[Počítačová tiskárna|tiskárny]], [[displej]]e a další. Jádro přidělí žádostem aplikací příslušná I/O zařízení (nebo podčást ze zařízení, v případě [[soubor]]ů na disku nebo oken na displeji) a pečuje vhodným způsobem o užívání zařízení (typicky do bodu kde aplikace nepotřebuje znát implementační detaily zařízení)
 
Jádro také obvykle poskytuje metody pro [[Synchronizační primitiva|synchronizaci]] a komunikaci mezi [[proces]]y (nazývané meziprocesová komunikace neboli [[IPC]]).
 
Jádro může realizovat tyto prvky samo, nebo se spolehnout na některý z procesů, který běží aby poskytoval prostředky ostatním procesům, také v tomto případě musí poskytovat některé způsoby IPC aby umožnil ostatním procesům přistupovat k tomuto zařízení.
Řádek 23:
Hlavním úkolem jádra je umožnit vykonávání aplikací a podporovat je metodami jako je abstrakce [[hardware]]. K běhu aplikace jádro typicky nastavuje adresní prostor pro aplikaci, nahrává soubory obsahující aplikační kód do paměti (třeba pomocí [[stránkování paměti]]), nastavuje [[Zásobník (datová struktura)|zásobník]] pro program a poté předává řízení na pozici uvnitř programu, kde začíná jeho vykonávání.
 
[[Multitasking]] jádra umožňuje poskytovat uživateli [[Iluze|iluzi]] současného běhu libovolného počtu procesů na počítači. Typicky počet procesů které mohou na systému běžet zároveň je rovný počtu nainstalovaných procesorů (nicméněnebo tojich nemusímůže takmít být,více kdyžpokud procesor[[CPU]] podporuje zároveň simultánní [[multithreading]]).
 
V preemptivním multitaskingovém systému CPU (jádro procesoru) dává každému programu procesorstrojový načas. určitýDěje časovýse úsek a přepíná z procesu na procesto 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íspouš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í, 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 procesorechCPU. Jádro operačního systému 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í žetoho, aby žádné dva procesy nemohounemohly měnit jedna data ve stejný čas.
 
=== Správa paměti ===
Jádro má úplný přístup do paměti systému a musí umožnit procesům přistupovat k této paměti bezpečně jak potřebují. Často prvním krokem bývá [[virtuální paměť|virtuální adresování]], obvykle dosažené [[Stránkování paměti|stránkováním]] nebo [[segmentace paměti|segmentací]]. Virtuální adresování umožňuje jádru nahradit fyzickou adresu jinou, virtuální. Virtuální adresový prostor může být pro každý proces jiný. Část paměti, ke které přistupuje jeden proces na určité virtuální adrese může být jiná, než paměti ke které má na stejné adrese přístup jiný proces. To umožňuje každému programu se chovat jako by to byl jediný (odděleně od jádra) běžící a chrání aplikace před kolizí.
 
Na mnoha počítačových systémech může virtuální adresa odkazovat na data, která zrovna nejsou v paměti. Vrstva nepřímosti poskytovaná virtuálním adresováním umožňuje operačnímu systému používat jiná datová úložiště, jako je [[pevný disk]], k ukládání dat která by jinak byla v hlavní paměti (RAM). Díky tomu může operační systém umožnit programům používat více paměti než má systém fyzicky k dispozici. Když program potřebuje data, která právě nejsou v paměti, [[jednotka správy paměti|jednotka pro správu paměti]] (obvykle součást procesoruCPU) oznámí jádru, že tam nejsou, a jádro odpoví zapsáním obsahu nečinného bloku paměti na disk (když je to nezbytné) a nahradí je daty, která si vyžádal program. Poté může program pokračovat od bodu, kde byl zastaven. Tento koncept je znám jako stránkování na žádost.
 
Virtuální adresování také umožňuje vytváření virtuálních částí paměti ve dvou rozdělených oblastech, jedna bývá rezervována pro jádro (prostor jádra) a ostatní pro aplikace (uživatelský prostor). Procesor nepovoluje aplikacím, aby adresovaly paměť jádra, a tedy aby aplikace poškodila běžící jádro. Toto důležité rozdělení paměťového prostoru hodně přispívá nynější koncepci současných obecných jader a je téměř univerzální ve většině systémů, ačkoliv některá jádra (například Singularity) volí jiné metody.