-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Tahle wiki vznikla z toho, že se operační systémy vysvětlují buď jako seznam pojmů k zapamatování, nebo jako sada příkazů k opsání. Ani jedno nefunguje. Seznam pojmů ti neřekne, proč ta věc vypadá zrovna takhle, a příkaz opsaný z návodu ti neřekne, co se stane, až přestane fungovat. To druhé je přitom jediné, co v praxi doopravdy potřebuješ.
Cílem je, aby po přečtení nešlo o magii. Abys věděl, co se skutečně děje, když program spadne
a stroj běží dál, když free ukáže padesát megabajtů volné paměti a všechno je v pořádku,
nebo když se dva slušně napsané programy zaseknou na sobě navzájem - a proč se to občas rozbije.
Předpokládám nulové vstupní znalosti. Nepředpokládám ale nezájem: kde je něco komplikované, píšu to komplikovaně a vysvětluju, místo abych to zjednodušil do neužitečné metafory. Prostředí, o kterém se tu píše, je Linux na běžném x86-64 stroji. Kde se to jinde chová podstatně jinak, je to napsané u toho.
Pokud začínáš, jdi popořadě. Stránky na sebe navazují a každá staví na předchozích.
Pokud něco hledáš, koukni do slovníčku, kde jsou zkratky a pojmy na jednom místě.
Pokud máš rozbitý stroj a spěcháš, jdi rovnou na nástroje a diagnostiku a vrať se sem, až bude klid.
Pokud si chceš jen zopakovat podstatné, sekce „Co si odnést" na konci hlubokých stránek jsou psané přesně na to.
Bez tohohle je zbytek jen sada receptů, které občas nefungují a ty nevíš proč.
- Co dělá operační systém - dvě role, které si odporují, a proč to není ta plocha s ikonkami
- Režim jádra a uživatelský režim - jeden bit v procesoru, na kterém stojí celá ochrana. Nejdůležitější stránka celé wiki.
- Systémová volání - jediné dveře do jádra a proč to není volání funkce
- Přerušení a výjimky - jak se hardware dostane ke slovu, aniž by se ho někdo ptal
- Architektury jádra - monolit, mikrojádro, hybrid a co z toho vyhrálo kde
-
Procesy - co je vlastně spuštěný program,
fork,exec, zombie a sirotci - Vlákna - co sdílejí, co ne, a kdy se opravdu vyplatí
- Přepínání kontextu - proč registry nejsou to drahé na celé operaci
- Plánování procesů - kdo dostane procesor, od FCFS po EEVDF
-
Kritická sekce a zámky - proč
x = x + 1nejsou jedna operace - Semafory a monitory - semafor není mutex, a klasické úlohy, na kterých je vidět proč
- Uváznutí - čtyři podmínky, ze kterých stačí zrušit jednu
- Meziprocesová komunikace - roury, sdílená paměť, sokety a signály
-
Správa paměti - adresní prostor procesu a proč
mallocskoro nikdy nevrátí NULL - Virtuální paměť a stránkování - adresa, kterou vidíš, není adresa v paměti
- Výměnné algoritmy - LRU, clock, swap, thrashing a proč swap nevypínat
- Souborový systém - jméno souboru není soubor, i-uzly a odkazy
- Žurnálování a konzistence - co přežije výpadek proudu a co ne
- VFS a připojování - jedna vrstva, která předstírá, že je všechno soubor
- Vstup a výstup - ovladače, DMA, page cache a tři vyrovnávací paměti, na které se zapomíná
- Uživatelé a práva - devět bitů, setuid a proč jádro nezná jména
- Start systému - od zapnutí po přihlašovací výzvu, a kde se to láme
- Virtualizace a kontejnery - proč kontejner není malý virtuální stroj
- Nástroje a diagnostika - postup, tahák a čtyři otázky, které se ptáš vždycky
- Slovníček - zkratky a pojmy na jednom místě
Psáno v roce 2026 proti jádru řady 6.x. Principy se mění pomalu, čísla verzí rychle. Kde je něco vázané na konkrétní verzi nebo rok, je to u toho napsané.
Našel jsi chybu nebo něco chybí? Založ issue nebo pošli pull request.
Základy
- Co dělá operační systém
- Režim jádra a uživatelský režim
- Systémová volání
- Přerušení a výjimky
- Architektury jádra
Procesy
Souběh
Paměť
Soubory a zařízení
Systém v provozu
Praxe