Od jednoho úkolu k tisícům: Iluze současnosti a stavové řízení
Úvod: Iluze multitaskingu
Zvládnete dělat dvě věci najednou?
Cíl lekce: Pochopit, jak počítač "klame tělem". Tváří se, že dělá 100 věcí naráz, ale (často) dělá jen jednu.
Klíčové pojmy: Proces, Vlákno, Plánovač (Scheduler), Změna kontextu, Uváznutí (Deadlock).
Didaktika: Jak to vysvětlit dětem pomocí analogie s kuchařem.
🗣️ Icebreaker (5 min):
Zeptejte se studentů: "Kdo z vás umí psát SMS a zároveň poslouchat přednášku?" (Všichni si myslí, že ano). Vysvětlete jim, že neurologicky to mozek neumí – jen velmi rychle přepíná pozornost. A přesně tak funguje jednoprocesorový počítač.
Program vs. Proces
Recept není to samé co vaření
Program (Pasivní): Soubor na disku (word.exe, hra.apk). Je to jen návod, kód. Nežere žádnou RAM, nezahřívá CPU. (Analogie: Kuchařka v polici).
Proces (Aktivní): Program načtený v RAM, který se právě vykonává. Má přidělené místo v paměti, otevřené soubory. (Analogie: Kuchař, který podle receptu míchá omáčku).
Otázka: Když 5x spustím Poznámkový blok, kolik mám programů a kolik procesů?
Máte 1 Program (na disku je notepad.exe jen jednou), ale 5 Procesů v paměti RAM. Každý proces má svůj vlastní "život", své vlastní texty, svá vlastní okna. Neovlivňují se.
🗣️ Důležité (5 min):
Toto rozlišení je klíčové. Žáci si často myslí, že "kliknutí na ikonku" je program. Ne, to je jen startér. Proces vzniká až v RAM.
Životní cyklus procesu
Cesta pacienta nemocnicí
Proces v OS neustále mění stavy. Nemůže jen "běžet".
Stav
Co se děje technicky
Analogie (Nemocnice)
New
Vytvoření struktury, alokace RAM.
Pacient přichází na příjem.
Ready
Čeká ve frontě na přidělení CPU.
Sedí v čekárně, připraven jít dovnitř.
Running
CPU právě vykonává instrukce.
Je v ordinaci, doktor (CPU) ho vyšetřuje.
Waiting
Čeká na disk/klávesnici (I/O).
Musí na rentgen. Doktor ho vyhodí a bere dalšího.
Terminated
Úklid paměti.
Vyléčen, odchází domů.
🗣️ Hloubka (10 min):
Nejdůležitější přechod je Running -> Waiting. Procesor je milionkrát rychlejší než disk. Když proces řekne "Chci načíst soubor", CPU nemůže čekat. Okamžitě proces "uspí" (Waiting) a bere dalšího z fronty (Ready).
Plánování (Scheduling)
Kdo půjde na řadu?
Ve stavu "Ready" (v čekárně) je 50 procesů. Koho vybere OS jako dalšího?
FCFS (First Come, First Served): Kdo dřív přijde, ten dřív mele. (Fronta v obchodě). Nevýhoda: Když první proces trvá dlouho, všichni čekají.
Round Robin (Kolečko): Každý dostane přesně 20 milisekund. Padni komu padni. (Rozdávání karet). Výhoda: Spravedlnost. Nikdo nečeká věčně.
Prioritní: Systémové procesy mají přednost. (Sanitka s majákem předbíhá ostatní auta).
🗣️ Diskuze (10 min):
Moderní Windows/Linux používají kombinaci. Mají priority, ale zároveň používají Round Robin, aby i procesy s nízkou prioritou "dostaly líznout" (prevence stárnutí/starvation).
Změna kontextu (Context Switch)
Nejdražší operace v OS
Princip: Aby vznikla iluze multitaskingu, CPU přepíná mezi procesy 100x za sekundu.
Co se musí stát:
Stopnout proces A.
Uložit jeho stav (registry, kam dočetl) do "batohu" (PCB).
Najít "batoh" procesu B.
Nahrát stav procesu B do procesoru.
Spustit proces B.
Režie (Overhead): Toto přepínání stojí čas! Pokud přepínáme moc rychle, CPU nedělá nic jiného, než že jen přepíná.
🗣️ Analogie (5 min):
Představte si, že píšete úkol do matematiky a do češtiny. Kdybyste napsali jedno číslo, zavřeli sešit, otevřeli češtinu, napsali jedno písmeno, zavřeli češtinu, otevřeli matiku... nenapíšete nic. Jen otevíráte sešity.
Anatomie procesu v paměti
Co si proces nese v batohu (PCB)
Každý proces má v RAM vyhrazený svůj "píseček", kam ostatní nesmí:
Text (Code): Samotné instrukce programu (to, co napsal programátor).
Data: Globální proměnné (např. jméno uživatele).
Heap (Halda): Dynamická paměť (např. když otevřete novou fotku, halda se zvětší).
Stack (Zásobník): Dočasná data pro funkce (kdo koho zavolal).
🗣️ Pro pokročilé (5 min):
Pokud se program "zblázní" a začne psát do Stacku donekonečna, nastane slavný Stack Overflow. Program spadne.
Vlákna (Threads) vs. Procesy
Továrna vs. Dělník
Proces = Továrna. Je drahé ji postavit (vytvořit). Má vlastní zdi (izolovanou paměť). Když spadne jedna továrna, ostatní stojí dál.
Vlákno = Dělník v továrně. Je levné ho najmout. Sdílí stroje (paměť) s ostatními dělníky v téže továrně. Když jeden dělník vyhodí továrnu do povětří (chyba), skončí všichni.
Příklad z praxe: Microsoft Word je jeden proces. Ale má více vláken:
Vlákno 1: Čeká, co píšete na klávesnici (aby se to nezasekalo).
Vlákno 2: Kontroluje pravopis na pozadí (červené vlnovky).
Vlákno 3: Každých 5 minut ukládá soubor (AutoSave).
🗣️ Didaktika (10 min):
Proč je Google Chrome "žrout paměti"? Protože každý TAB (záložka) v Chromu není vlákno, ale samostatný proces! Výhoda: Když spadne jedna stránka, nespadne celý prohlížeč. Nevýhoda: Žere to strašně moc RAM (každá stránka má vlastní "továrnu").
Uváznutí (Deadlock)
Když se dva perou a nikdo nevyhraje
K deadlocku dojde, když dva procesy čekají na sebe navzájem a ani jeden neuhne.
Podmínky:
Proces A drží Tiskárnu a chce Skener.
Proces B drží Skener a chce Tiskárnu.
OS čeká... a čeká... a čeká.
Výsledek: "Aplikace neodpovídá". Točící se kolečko.
Analogie: Křižovatka
Čtyři auta přijedou na křižovatku z různých směrů přesně naráz. Platí přednost zprava. Každý dává přednost tomu po pravici. Nikdo nejede. Stojí tam navěky.
🗣️ Řešení (5 min):
Jak to OS řeší? Většinou nijak. Čeká, až to uživatel "zabije" ve Správci úloh. Pokročilé systémy umí jednoho "zastřelit" automaticky, aby uvolnily cestu.
Praktická ukázka: Správce úloh
Pojďme se podívat pod kapotu
(Učitel promítne svůj Task Manager / Správce úloh)
Procesy aplikací: To, co vidíte (Word, Chrome).
Procesy na pozadí: To, co nevidíte (Aktualizace, Antivirus, Služby).
Výkon: Vytížení CPU. Pokud je 100 %, počítač se seká, protože fronta "Ready" procesů je příliš dlouhá.
Úkol pro studenty: Otevřete si Správce úloh. Seřaďte procesy podle sloupce Paměť. Kdo je vítěz?
🗣️ Aktivita (5 min):
Ukažte studentům "Zombie proces". Ukončete nějakou aplikaci, ale ukažte, že v seznamu procesů stále visí. Vysvětlete, že "rodič" si ještě nepřečetl zprávu o smrti "dítěte".
Unplugged aktivita: Hra na procesor
Simulace multitaskingu ve třídě
Role (Potřebujeme 5 dobrovolníků)
1x CPU (Procesor): Umí jen číst nahlas.
1x OS (Plánovač): Má stopky a píšťalku.
3x Procesy: Každý drží jinou knihu (Pohádky, Kuchařka, Učebnice).
Pravidla:
OS zapíská. CPU běží k Procesu 1 a čte nahlas.
Po 10 sekundách OS zapíská "ZMĚNA!".
Penalizace (Režie): Než CPU začne číst u Procesu 2, musí oběhnout celou třídu dokola (simulace uložení kontextu).
Opakujeme.
🗣️ Reflexe (10 min):
Zeptejte se třídy: "Bylo to plynulé?" "Kolik času strávil procesor skutečnou prací (čtením) a kolik běháním (režií)?" Děti si uvědomí, že multitasking něco stojí.
Paralelismus: Vícejádrové procesory
Když máme v kuchyni více kuchařů
Doposud jsme mluvili o iluzi (1 jádro). Dnešní mobily mají 8 jader.
Paralelismus: Dvě věci se dějí skutečně naráz.
Problém synchronizace: Co když dva kuchaři chtějí solit stejnou polévku naráz? Musí se domluvit (zamykání/locking).
🗣️ Hloubka (5 min):
Vysvětlete, proč "více jader" neznamená vždy "rychlejší počítač". Pokud aplikace není napsaná pro více vláken (kuchařů), poběží jen na jednom jádře a ostatních 7 se bude flákat.
Didaktické okénko: Otázky a Odpovědi
Co se ptají žáci?
Otázka: "Proč se mi seká hra, když mám super grafiku?"
"Představ si, že malíř (Grafika) maluje obrazy bleskově, ale manažer (Procesor) mu nestíhá říkat, co má malovat. Malíř čeká. Tomu se říká CPU Bottleneck (Úzké hrdlo). Procesor nestíhá krmit grafiku daty."
🗣️ Závěr bloku (5 min):
Naučte budoucí učitele, aby nehledali vinu jen v "viru". Často je to prostě špatná souhra mezi výkonem CPU a požadavky softwaru.
Závěr a shrnutí 2. lekce
Co si odnést?
Multitasking na jednom jádře je iluze (rychlé přepínání).
Proces je běžící program, který vlastní paměť. Vlákno je dělník uvnitř procesu.
Změna kontextu je drahá (režie).
Deadlock je situace, kdy se program zasekne, protože čeká na něco, co nikdy nepřijde.
🗣️ Upoutávka na příště:
Příště se podíváme na Paměť. Kde ten kuchař (CPU) ty recepty skladuje? Co je to RAM, co je to Disk a proč je swapování jako odkládání věcí na zem.