Zkratka proOperating SystemTakéOS, operační systém počítače, systémový softwareZákladní
Definice
Operační systém je software, který spravuje hardware počítače a rozděluje jeho zdroje mezi běžící programy. Přiděluje procesorový čas, paměť, přístup k disku a k síti, izoluje procesy od sebe navzájem a nabízí aplikacím jednotné rozhraní systémových volání. Bez operačního systému by každý program musel ovládat konkrétní hardware sám.
Co operační systém řeší
Operační systém stojí mezi hardwarem a aplikacemi a řeší problém, který by jinak musel řešit každý program zvlášť: na jednom počítači běží desítky až tisíce úloh, ale procesorových jader, paměťových modulů a disků je omezený počet. Operační systém tyto zdroje rozděluje, hlídá, aby si programy navzájem nepřepisovaly data, a skrývá rozdíly mezi konkrétními modely hardwaru za jednotné rozhraní.
Jádro, uživatelský prostor a hranice mezi nimi
Jádro (kernel) je část systému běžící v privilegovaném režimu procesoru, kde má přímý přístup k paměti a k zařízením. Aplikace běží v uživatelském prostoru s omezenými právy a o službu jádra žádají systémovým voláním (syscall): otevření souboru, alokace paměti, odeslání paketu. Přechod přes tuto hranici je řízený a kontrolovaný, což je základ celé bezpečnosti systému. Hardwarová podpora ze strany CPU, hlavně ochrana paměti a přepínání režimů, je pro tento model nezbytná.
Monolitické jádro versus mikrojádro
Monolitické jádro (Linux, jádra rodiny BSD) drží ovladače a souborové systémy uvnitř jádra, což je rychlé, ale chyba v ovladači shodí celý stroj. Mikrojádro přesouvá co nejvíc služeb do uživatelského prostoru a komunikuje zprávami: je odolnější, platí ale režií za předávání zpráv. Windows NT i macOS používají hybridní přístupy.
Hlavní úlohy systému
- Plánování procesů: rozhoduje, které vlákno poběží na kterém jádru a jak dlouho.
- Správa paměti: virtuální adresní prostor, stránkování, odkládání na disk. Každý proces vidí vlastní souvislou paměť, i když fyzická RAM je fragmentovaná.
- Souborové systémy: převádí pojmenované cesty na bloky na úložišti a řeší práva.
- Ovladače a I/O: obsluha přerušení, fronty požadavků, vyrovnávací paměti.
- Síťový zásobník: implementace TCP/IP, sokety, směrovací tabulky.
- Bezpečnost a izolace: uživatelé, práva, jmenné prostory, sandbox.
Proč to zajímá vývojáře aplikací
Chování operačního systému se prosakuje do výkonu aplikací. Systémová volání stojí čas, takže program, který čte soubor po jednom bajtu, je řádově pomalejší než ten, který čte po blocích. Plánovač může uspat vlákno déle, než se čekalo, a měření latence pak ukáže dlouhý chvost. Limity počtu otevřených deskriptorů, velikost síťových bufferů nebo agresivita OOM killeru rozhodují o tom, co se stane pod zátěží dřív než samotný kód.
Kontejnery, virtualizace a hranice systému
Klasická virtualizace emuluje celý stroj a nad ním běží další kompletní operační systém. Kontejnery jdou jinou cestou: sdílejí jádro hostitele a izolaci staví na jeho funkcích, u Linuxu na jmenných prostorech a cgroups. Proto je kontejner lehčí, ale zároveň proto nelze na linuxovém jádru spustit obraz Windows: kontejner není virtuální stroj, jen ohraničený pohled na tentýž systém.
Příklady z praxe
Systémové volání viditelné v kódu
Zápis do souboru v jazyce C končí voláním write(), které předá řízení jádru. Nástroj strace na Linuxu ukáže, kolik takových přechodů program skutečně udělá. Zápis po jednom bajtu v cyklu vygeneruje milion syscallů, zatímco bufferovaný zápis po 64 kB jich udělá jednotky.
#include <unistd.h> #include <fcntl.h> int main(void) { int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0644); write(fd, "start\n", 6); // systemove volani do jadra close(fd); return 0; }Limit otevřených souborů shodí server
Node.js server pod zátěží začne vracet chybu EMFILE, přestože v kódu není žádná chyba. Příčinou je systémový limit počtu deskriptorů na proces, který je ve výchozím stavu často 1024. Každé TCP spojení i otevřený soubor jeden deskriptor spotřebuje, takže limit se vyčerpá dřív než paměť.
ulimit -n # aktualni limit deskriptoru ulimit -n 65535 # zvyseni pro danou relaci
Časté omyly
- MýtusOperační systém je to okno s ikonami, co vidím po zapnutí počítače.
- Ve skutečnostiGrafické prostředí je jen jedna vrstva nad systémem, u Linuxu dokonce volitelná a vyměnitelná. Vlastní operační systém tvoří jádro a systémové služby, které běží i na serveru bez jediné obrazovky.
- MýtusLinux je operační systém.
- Ve skutečnostiLinux je přesně vzato jádro. Použitelnou distribuci tvoří až jádro spolu se systémovými knihovnami, init systémem a nástroji, proto se u části komunity používá i označení GNU/Linux.
- MýtusKontejner obsahuje vlastní operační systém, je to taková lehká virtualizace.
- Ve skutečnostiKontejner sdílí jádro hostitele a obsahuje jen uživatelský prostor: knihovny, binárky a soubory distribuce. Vlastní jádro má virtuální stroj, nikoli kontejner, což je také důvod, proč lze linuxové kontejnery spouštět jen nad linuxovým jádrem.
Časté dotazy
- Jak si vybrat operační systém pro server?
- Volba operačního systému pro server se řídí hlavně tím, co potřebuje běžící aplikace a jak dlouhou podporu vyžaduje provoz. Linuxové distribuce s dlouhou podporou, například Debian, Ubuntu LTS nebo Rocky Linux, dominují webovému hostingu a jsou výchozí volbou pro kontejnery. Windows Server dává smysl u aplikací postavených na .NET Frameworku, Active Directory nebo MS SQL Serveru. Rozhodující bývá dostupnost balíčků, délka bezpečnostních aktualizací a zkušenost týmu, který systém bude spravovat, nikoli technická převaha jedné rodiny nad druhou.
- Co dělá operační systém při startu počítače?
- Operační systém se po zapnutí počítače nespouští jako první. Firmware (UEFI nebo starší BIOS) otestuje hardware a předá řízení zavaděči, například GRUBu. Zavaděč načte do paměti jádro a počáteční ramdisk s nezbytnými ovladači. Jádro následně inicializuje správu paměti, detekuje zařízení, připojí kořenový souborový systém a spustí první proces v uživatelském prostoru, na Linuxu obvykle systemd s PID 1. Ten teprve nastartuje ostatní služby: síť, logování, databáze, webový server. Celý řetězec je tedy firmware, zavaděč, jádro, init, služby.
- Mají mobilní telefony operační systém?
- Mobilní telefony operační systém mají a jde o plnohodnotné systémy. Android stojí na linuxovém jádru doplněném o vlastní běhové prostředí a systémové služby, iOS a iPadOS sdílejí jádro XNU s macOS. Oproti desktopu kladou mobilní systémy mnohem větší důraz na správu energie, přísný sandbox aplikací a řízení oprávnění: aplikace se musí explicitně ptát na přístup ke kameře, poloze nebo kontaktům. Systém také agresivně ukončuje procesy na pozadí, aby šetřil baterii a paměť.
- Proč se u operačního systému mluví o real-time verzích?
- Real-time operační systém garantuje, že reakce na událost proběhne do pevně daného časového limitu. Běžné systémy jako Linux nebo Windows optimalizují průměrnou propustnost, takže úloha může být odložena o desítky milisekund, což pro webový server nevadí. V řízení brzd, lékařských přístrojích nebo průmyslových automatech je ale zpoždění chyba, i když je vzácné. RTOS jako FreeRTOS, QNX nebo Zephyr proto používají deterministický plánovač s prioritami a omezují mechanismy s nepředvídatelnou dobou běhu. Linux nabízí kompromis v podobě konfigurace jádra s preempcí v reálném čase.
Zdroje
- The Linux Kernel documentation(otevře se v novém okně)
- About the GNU Operating System(otevře se v novém okně)
- Windows kernel-mode driver architecture(otevře se v novém okně)
- Operating system(otevře se v novém okně)