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.

Kategorie: Počítačová architekturaAktualizováno

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

  1. 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;
    }
  2. 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

  1. The Linux Kernel documentation(otevře se v novém okně)Linux Kernel Organization
  2. About the GNU Operating System(otevře se v novém okně)Free Software Foundation
  3. Windows kernel-mode driver architecture(otevře se v novém okně)Microsoft Learn
  4. Operating system(otevře se v novém okně)Wikipedia

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.