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

Smazaný obsah Přidaný obsah
Korektura textu
interní odkazy, vhodnější slovesa, pravopisné chyby, typo
Řádek 2:
'''Jádro''' je v [[Informatika (počítačová věda)|informatice]] označení pro '''jádro''' [[Operační systém|operačního systému]]. Jádro je zavedeno do [[Operační paměť|operační paměti]] při startu ([[bootování]]) [[počítač]]e a je mu předáno řízení. U pokročilých operačních systémů jádro nikdy neztrácí kontrolu nad počítačem a po celou dobu jeho běhu koordinuje činnost ostatních běžících [[Proces (program)|procesů]]. Anglický název ''kernel'' znamená v překladu jádro pecky, zrno nebo ztvrdlou dužinu ovoce.<ref>http://slovnik.seznam.cz/?q=kernel&lang=en_cz – překlad anglického slova ''kernel''</ref>
 
Hlavní úkol jádra spočívá v přidělovaní [[elektronickáElektronická paměť|paměti]] a času [[procesor]]u (či procesorů) programům, ovládání zařízení počítače (pomocí [[ovladačOvladač zařízení|ovladačů]]) a abstrakci funkcí (aby bylo např. možné načítat soubory z [[pevnýPevný disk|pevného disku]] a z jednotky [[CD-ROM]] stejným příkazem).
 
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ádroMikrojádro|''mikrojádro'']] (jádro je velice jednoduché a obsahuje pouze zcela základní funkce, zbytek operačního systému jese nachází mimo toto jádro v aplikacích, 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ýSouborový systém|souborového systému]]). Toto jádro je typickýmtypické pro operační systém [[Unix]]. Jakýmsi kompromisem[[kompromis]]em je ''hybridní jádro'', které kombinuje výhody obou předchozích jader, např moderní Windows.
 
== Základní povinnosti jádra ==
Základní účel jádra jespočívá v ovládání prostředků počítače[[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:
* [[Procesor]] (centrální procesorová jednotka neboli procesor). ToJde jeo základní část počítače. Ta má za zodpovědnost běh nebo vykonávání programů. Jádro má povinnostza úkol rozhodování o tom, který z programů bude přidělen procesoru nebo procesorům (na každém procesoru - v modernější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í)
Řádek 21:
 
=== Správa procesu ===
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 (informatika)|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ě to nemusí tak být, když procesor podporuje zároveň simultánní [[multithreading]]).
 
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á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ího 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 jednyjedna data ve stejný čas.
 
=== Správa paměti ===