====== Multitasking ====== **Multitasking** je základní vlastností moderních operačních systémů. Umožňuje uživateli například psát dokument, zatímco na pozadí hraje hudba, stahuje se soubor z internetu a probíhá kontrola antivirem. Existují dva základní principy, jak multitasking funguje: hardwarový (skutečný) a softwarový (střídání času). ---- ====== Typy multitaskingu ====== ===== 1. Kooperativní multitasking (historický) ===== V tomto režimu proces sám rozhoduje, kdy "předá slovo" operačnímu systému nebo jinému programu. * **Nevýhoda:** Pokud se jeden program zasekne, zamrzne celý počítač, protože procesor čeká na uvolnění, které nikdy nepřijde (typické pro Windows 3.1). ===== 2. Preemptivní multitasking (moderní) ===== Operační systém má plnou kontrolu a každému programu přiděluje krátký časový úsek (**time slice**) na procesoru. Po uplynutí času systém běh programu pozastaví a přepne na jiný. * **Výhoda:** Pokud jeden program přestane odpovídat, systém ho prostě odřízne a zbytek počítače běží dál (Windows 10/11, macOS, Linux). ---- ====== Hardwarový vs. Softwarový multitasking ====== Dnes se tyto dvě metody kombinují: * **Kontextové přepínání (Context Switching):** Na jednom jádře procesoru se programy střídají tak rychle (tisíckrát za sekundu), že lidské oko vnímá jejich běh jako plynulý. * **Paralelní zpracování (Parallelism):** Pokud má procesor více jader, může každé jádro vykonávat zcela jinou úlohu ve stejný okamžik. To je "skutečný" multitasking. * **Hyper-Threading / SMT:** Technologie, která umožňuje jednomu fyzickému jádru zpracovávat dvě vlákna najednou tím, že efektivněji využívá nevyužité části jeho obvodů. ---- ====== Klíčové pojmy ====== ^ Pojem ^ Popis ^ | **Proces (Process)** | Samostatná běžící aplikace (např. prohlížeč), která má vlastní vyhrazenou paměť. | | **Vlákno (Thread)** | Menší jednotka uvnitř procesu. Jeden proces (např. hra) může mít desítky vláken (fyzika, zvuk, síť). | | **Plánovač (Scheduler)** | Část jádra operačního systému, která rozhoduje, které vlákno dostane přístup k procesoru jako další. | | **Režijní náklady (Overhead)** | Čas, který procesor spotřebuje na samotné přepínání mezi úlohami místo jejich vykonávání. | ---- ====== Výzvy multitaskingu ====== * **Závody o zdroje (Race Conditions):** Situace, kdy se dvě vlákna snaží přepsat stejná data ve stejný čas, což může vést k chybám. * **Deadlock (Uváznutí):** Stav, kdy Program A čeká na data od Programu B a Program B zároveň čeká na Program A. Oba zůstanou navždy stát. * **Správa paměti:** Operační systém musí zajistit, aby jeden program nemohl číst nebo měnit data jiného programu. ---- //Související pojmy: Operační systém, CPU, Jádro procesoru (Core), Hyper-Threading, Proces, Vlákno (Thread).//