# Operační systémy, od jednoho bitu v procesoru nahoru

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.

## Jak to číst

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](Slovnicek), kde jsou zkratky a pojmy na jednom místě.

Pokud máš rozbitý stroj a spěcháš, jdi rovnou na [nástroje a diagnostiku](Nastroje-a-diagnostika)
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.

## Základy

Bez tohohle je zbytek jen sada receptů, které občas nefungují a ty nevíš proč.

- **[Co dělá operační systém](Co-dela-operacni-system)** - dvě role, které si odporují, a proč to není ta plocha s ikonkami
- **[Režim jádra a uživatelský režim](Jadro-a-uzivatelsky-rezim)** - jeden bit v procesoru, na kterém stojí celá ochrana. Nejdůležitější stránka celé wiki.
- **[Systémová volání](Systemova-volani)** - jediné dveře do jádra a proč to není volání funkce
- **[Přerušení a výjimky](Preruseni-a-vyjimky)** - jak se hardware dostane ke slovu, aniž by se ho někdo ptal
- **[Architektury jádra](Architektury-jadra)** - monolit, mikrojádro, hybrid a co z toho vyhrálo kde

## Procesy a vlákna

- **[Procesy](Procesy)** - co je vlastně spuštěný program, `fork`, `exec`, zombie a sirotci
- **[Vlákna](Vlakna)** - co sdílejí, co ne, a kdy se opravdu vyplatí
- **[Přepínání kontextu](Prepinani-kontextu)** - proč registry nejsou to drahé na celé operaci
- **[Plánování procesů](Planovani-procesu)** - kdo dostane procesor, od FCFS po EEVDF

## Souběh a synchronizace

- **[Kritická sekce a zámky](Kriticka-sekce-a-zamky)** - proč `x = x + 1` nejsou jedna operace
- **[Semafory a monitory](Semafory-a-monitory)** - semafor není mutex, a klasické úlohy, na kterých je vidět proč
- **[Uváznutí](Uvaznuti)** - čtyři podmínky, ze kterých stačí zrušit jednu
- **[Meziprocesová komunikace](Meziprocesova-komunikace)** - roury, sdílená paměť, sokety a signály

## Paměť

- **[Správa paměti](Sprava-pameti)** - adresní prostor procesu a proč `malloc` skoro nikdy nevrátí NULL
- **[Virtuální paměť a stránkování](Virtualni-pamet-a-strankovani)** - adresa, kterou vidíš, není adresa v paměti
- **[Výměnné algoritmy](Vymenne-algoritmy)** - LRU, clock, swap, thrashing a proč swap nevypínat

## Soubory a zařízení

- **[Souborový systém](Souborovy-system)** - jméno souboru není soubor, i-uzly a odkazy
- **[Žurnálování a konzistence](Zurnalovani-a-konzistence)** - co přežije výpadek proudu a co ne
- **[VFS a připojování](VFS-a-montovani)** - jedna vrstva, která předstírá, že je všechno soubor
- **[Vstup a výstup](Vstup-a-vystup)** - ovladače, DMA, page cache a tři vyrovnávací paměti, na které se zapomíná
- **[Uživatelé a práva](Prava-a-uzivatele)** - devět bitů, setuid a proč jádro nezná jména

## Systém v provozu

- **[Start systému](Start-systemu)** - od zapnutí po přihlašovací výzvu, a kde se to láme
- **[Virtualizace a kontejnery](Virtualizace-a-kontejnery)** - proč kontejner není malý virtuální stroj
- **[Nástroje a diagnostika](Nastroje-a-diagnostika)** - postup, tahák a čtyři otázky, které se ptáš vždycky
- **[Slovníček](Slovnicek)** - 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é.*
