====== Teorie operačních systémů ====== **Operační systém** je komplexní program, který funguje jako abstraktní vrstva mezi hardwarem a uživatelem. Jeho hlavním úkolem je efektivní správa omezených systémových prostředků a zajištění bezpečného a stabilního prostředí pro aplikace. ===== 1. Klíčové funkce operačního systému ===== Operační systém lze chápat jako **správce prostředků** (Resource Manager), který plní tyto základní úkoly: * **Abstrakce hardwaru:** OS skrývá složitost hardwaru a nabízí aplikacím jednotné rozhraní (např. zápis do souboru probíhá stejně na SSD i na USB disku). * **Správa procesů:** Organizace běhu více programů současně (multitasking). * **Správa paměti:** Izolace a přidělování operační paměti (RAM) jednotlivým programům. * **Vstup/Výstup (I/O):** Komunikace s periferními zařízeními (klávesnice, tiskárna, síťová karta). * **Bezpečnost:** Ochrana dat jednoho uživatele před druhým a systému před škodlivým kódem. --- ===== 2. Architektury jader (Kernels) ===== Jádro je nejdůležitější částí OS. Podle způsobu organizace služeb rozlišujeme několik typů: * **Monolitické jádro:** Všechny základní služby (ovladače, správa souborů, síť) běží v jednom velkém celku v privilegovaném režimu. Je velmi rychlé, ale chyba v jedné části může shodit celý systém (např. [[it:sw:linux_kernel|Linux]]). * **Mikrojádro (Microkernel):** Jádro obsahuje jen to nejnutnější (předávání zpráv, základní plánování). Ostatní služby běží jako běžné procesy. Je bezpečné a modulární, ale pomalejší kvůli časté komunikaci (např. QNX, L4). * **Hybridní jádro:** Kombinuje oba přístupy pro dosažení stability i výkonu (např. Windows NT, macOS). --- ===== 3. Správa procesů a vláken ===== Základní jednotkou práce v OS je **proces**. * **Proces:** Instance běžícího programu s vlastním adresním prostorem. * **Vlákno (Thread):** „Lehký“ podproces, který sdílí paměť s ostatními vlákny v rámci jednoho procesu. ==== Plánování procesoru (Scheduling) ==== Protože procesorů je méně než běžících programů, OS musí rozhodovat, kdo dostane procesor. K tomu slouží algoritmy: * **Round Robin:** Každý proces dostane stejný časový úsek. * **Priority Scheduling:** Přednost mají důležité systémové úlohy. --- ===== 4. Správa paměti: Virtuální paměť ===== Moderní OS využívají **virtuální paměť**, díky které může program „vidět“ více paměti, než je fyzicky v RAM. * **Stránkování (Paging):** Paměť je rozdělena na malé bloky (stránky). Pokud RAM dojde, nepoužívané stránky se odloží na disk (Swap/Paging file). * **Ochrana paměti:** Zajišťuje, aby Proces A nemohl číst nebo měnit paměť Procesu B. --- ===== 5. Hierarchie úložišť (Memory Hierarchy) ===== OS musí efektivně pracovat s různými typy pamětí, které se liší rychlostí a cenou: ^ Typ ^ Rychlost ^ Kapacita ^ Spravuje ^ | **Registry CPU** | Extrémní | Bajty | Hardware / Překladač | | **L1/L2/L3 Cache** | Velmi vysoká | Megabajty | Hardware | | **RAM** | Vysoká | Gigabajty | **Operační systém** | | **SSD / HDD** | Nízká | Terabajty | **Operační systém** | --- ===== 6. Uživatelské vs. Privilegované režimy ===== Pro zajištění stability procesory podporují minimálně dva režimy: 1. **User Mode:** Omezený režim pro běžné aplikace. 2. **Kernel Mode:** Plný přístup k hardwaru. Přechod mezi nimi probíhá pomocí **System Calls** (systémových volání). ---- //Související články:// * [[it:sw:linux_kernel|Linux Kernel v praxi]] * [[it:sw:distribuovane_systemy|Distribuované systémy]] * [[it:sw:file_systems|Souborové systémy]] //Tagy: {{tag>it theory operating-system kernel computer-science scheduling virtual-memory}}//