Unix
Obsah boxu
Šablona:Infobox operační systém
Unix (registrovaná ochranná známka jako UNIX®) je rodina víceuživatelských a víceúlohových operačních systémů, které vycházejí z původního systému vyvinutého v 60. a 70. letech 20. století v Bellových laboratořích společnosti AT&T. Jeho tvůrci, především Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy a Joe Ossanna, položili základy moderní informatiky.
Unix byl od počátku navržen s filozofií, která zdůrazňuje modularitu, jednoduchost a spolupráci malých, specializovaných programů. Klíčové koncepty jako hierarchický souborový systém, reprezentace zařízení a meziprocesové komunikace jako souborů, a využití softwarových rour se staly standardem v mnoha dalších operačních systémech. Unix byl také jedním z prvních systémů napsaných ve vyšším programovacím jazyce (C), což zajistilo jeho snadnou přenositelnost na různé hardwarové platformy.
Díky své flexibilitě, stabilitě a výkonu se Unix stal základem pro servery, pracovní stanice, a později i pro mobilní zařízení. Jeho principy a standardy ovlivnily vývoj mnoha dalších systémů, včetně Linuxu, macOS, Androidu a iOS. Dnes se systémy odvozené z Unixu nebo inspirované jeho filozofií (tzv. Unix-like systémy) používají na drtivé většině počítačů na světě, od superpočítačů po chytré telefony.
📜 Historie
Historie Unixu je příběhem inovace, akademické spolupráce a komerčního soupeření, který zásadně formoval moderní výpočetní techniku.
🌌 Počátky v projektu Multics
V polovině 60. let 20. století spolupracovaly Bellovy laboratoře (součást AT&T), General Electric a MIT na ambiciózním projektu operačního systému nazvaného Multics (Multiplexed Information and Computing Service). Cílem bylo vytvořit systém, který by sloužil stovkám uživatelů současně a poskytoval spolehlivé výpočetní služby podobně jako elektrická nebo telefonní síť. Projekt byl však příliš komplexní, pomalý a nedodržoval termíny. V roce 1969 se Bellovy laboratoře z projektu stáhly, zanechávaje za sebou tým programátorů, včetně Kena Thompsona a Dennise Ritchieho, s cennými zkušenostmi, ale bez moderního interaktivního systému.
💡 Zrození v Bell Labs
Ken Thompson, frustrovaný absencí vhodného systému, začal pracovat na vlastním, jednodušším projektu. Na nevyužívaném minipočítači PDP-7 od firmy DEC napsal základ nového operačního systému, souborového systému a shellu. K projektu se brzy přidal Dennis Ritchie. Systém byl původně neoficiálně pojmenován Unics (Uniplexed Information and Computing Service) jako slovní hříčka na Multics, zdůrazňující jeho jednodušší, jednoúkolový přístup. Později se název změnil na Unix.
Klíčovým milníkem byl rok 1972, kdy byl Unix přepsán z assembleru do nově vytvořeného vyššího programovacího jazyka C, který vyvinul Dennis Ritchie. Tento krok byl revoluční – Unix se stal prvním přenositelným operačním systémem. Díky tomu mohl být relativně snadno upraven pro běh na různých typech počítačů, což dramaticky přispělo k jeho rozšíření.
Protože společnost AT&T měla v té době antimonopolním rozhodnutím zakázáno podnikat v počítačovém průmyslu, poskytovala Unix za symbolický poplatek univerzitám a výzkumným institucím, včetně zdrojových kódů. To vedlo k jeho explozivnímu šíření v akademickém prostředí, zejména na Kalifornské univerzitě v Berkeley.
🎓 Vzestup BSD
Na univerzitě v Berkeley vznikla významná větev Unixu známá jako BSD (Berkeley Software Distribution). Studenti a profesoři, jako například Bill Joy, začali původní kód od AT&T vylepšovat, přidávat nové funkce jako virtuální paměť, síťový zásobník TCP/IP (který se stal základem internetu) a nástroje jako textový editor vi a C shell. BSD se stalo velmi populárním a jeho verze byly základem pro mnoho komerčních Unixů, například SunOS od Sun Microsystems.
⚔️ Unixové války
Po rozdělení AT&T v roce 1984 mohla společnost konečně vstoupit na trh s počítači. Začala komerčně prodávat svou verzi Unixu, známou jako System V. To vedlo k období známému jako "Unixové války" (Unix wars) na konci 80. a začátku 90. let. Různí výrobci hardwaru (jako IBM s AIX, Sun Microsystems se Solaris a Hewlett-Packard s HP-UX) si licencovali buď System V, nebo vycházeli z BSD, a vytvářeli vlastní, vzájemně nekompatibilní verze Unixu. Tato fragmentace brzdila růst a otevřela dveře konkurenci, především společnosti Microsoft s jejím systémem Windows NT.
🌳 Legacy a moderní doba
Snaha o ukončení válek vedla ke standardizaci. Vznikly standardy jako POSIX (Portable Operating System Interface), které definovaly společné API pro unixové systémy a umožnily psát přenositelné aplikace.
Na začátku 90. let se objevily dva klíčové projekty, které navázaly na myšlenky Unixu: 1. **Projekt GNU**: Iniciován Richardem Stallmanem s cílem vytvořit kompletní svobodný operační systém kompatibilní s Unixem. Projekt vytvořil klíčové nástroje (kompilátor GCC, shell Bash), ale chybělo mu vlastní jádro. 2. **Linux**: V roce 1991 finský student Linus Torvalds vytvořil z čisté zvědavosti jádro operačního systému, které nazval Linux. Spojením jádra Linuxu s nástroji z projektu GNU vznikl kompletní, svobodný a otevřený operační systém, který se stal dominantní silou ve světě serverů, superpočítačů a vestavěných systémů.
Dnes jsou nejrozšířenějšími zástupci unixové rodiny systémy založené na Linuxu a systémy z rodiny BSD (FreeBSD, OpenBSD, NetBSD). Také systém macOS od společnosti Apple je certifikovaným Unixem, postaveným na základech BSD (konkrétně na jádře XNU, které kombinuje mikrojádro Mach a komponenty z FreeBSD).
🧠 Filozofie a design
Úspěch a dlouhověkost Unixu spočívá v jeho elegantní a nadčasové designové filozofii, kterou lze shrnout do několika klíčových principů, jak je popsal Douglas McIlroy:
1. **Piš programy, které dělají jednu věc a dělají ji dobře.** Místo velkých monolitických aplikací se Unix spoléhá na malé, jednoúčelové nástroje (např. `grep` pro hledání textu, `sort` pro třídění, `wc` pro počítání slov). 2. **Piš programy, které spolupracují.** Výstup jednoho programu by měl být vstupem pro jiný. Toho se dosahuje pomocí softwarových rour (pipes), které umožňují řetězit příkazy a vytvářet tak komplexní operace z jednoduchých stavebních bloků. Příklad: `cat soubor.txt | grep "chyba" | wc -l` (zobrazí počet řádků obsahujících slovo "chyba" v souboru). 3. **Piš programy, které pracují s textovými proudy, protože to je univerzální rozhraní.** Text je jednoduchý, snadno čitelný a zpracovatelný formát. Většina unixových nástrojů komunikuje prostřednictvím prostého textu.
Dalšími klíčovými koncepty jsou:
- **Vše je soubor:** V Unixu jsou téměř všechny systémové zdroje, včetně hardwarových zařízení (disky, tiskárny, terminály), síťových spojení a meziprocesové komunikace, reprezentovány jako soubory v hierarchickém souborovém systému. To umožňuje používat pro práci s nimi stejné nástroje (např. `read`, `write`).
- **Hierarchický souborový systém:** Organizace souborů do stromové struktury adresářů a podadresářů, začínající v kořenovém adresáři (`/`).
- **Shell jako hlavní uživatelské rozhraní:** Shell je interpret příkazů, který umožňuje uživateli interagovat se systémem. Je to mocný nástroj pro automatizaci úloh pomocí skriptů.
- **Přenositelnost:** Díky napsání v jazyce C byl Unix snadno přenositelný na různé hardwarové architektury.
⚖️ Standardizace (POSIX)
Fragmentace během "Unixových válek" ukázala potřebu standardizace. Hlavním standardem se stal **POSIX** (Portable Operating System Interface), vyvinutý pod záštitou IEEE. POSIX definuje standardní rozhraní pro programování aplikací (API), shellové příkazy a utility. Cílem je zajistit, aby software napsaný pro jeden POSIX-kompatibilní systém mohl být bez větších úprav zkompilován a spuštěn na jiném.
Dnes je certifikace UNIX® spravována organizací The Open Group. Systém může nést oficiální název UNIX®, pouze pokud splňuje specifikaci **Single UNIX Specification (SUS)**. Mezi certifikované systémy patří například macOS, AIX a HP-UX. Ačkoliv Linux není formálně certifikován (především z finančních důvodů), většina distribucí se snaží být s POSIXem co nejvíce kompatibilní.
🌳 Deriváty a vliv
Unix měl a stále má obrovský vliv na svět operačních systémů. Jeho potomci a systémy jím inspirované se dělí do několika hlavních kategorií:
- **Komerční Unixy (historické i současné):**
* **System V**: Větev vyvíjená přímo AT&T. * **Solaris**: Původně SunOS od Sun Microsystems, založený na BSD, později přešel na bázi System V. * **AIX**: Unix od společnosti IBM pro jejich servery. * **HP-UX**: Unix od společnosti Hewlett-Packard. * **IRIX**: Unix od Silicon Graphics, známý pro své grafické schopnosti.
- **BSD (Berkeley Software Distribution) a jeho potomci:**
* **FreeBSD**: Univerzální, vysoce výkonný systém, populární na serverech a v síťových zařízeních (např. v konzoli PlayStation). * **OpenBSD**: Zaměřený na maximální bezpečnost a korektnost kódu. * **NetBSD**: Cílí na maximální přenositelnost a běží na obrovském množství hardwarových architektur. * **macOS**: Operační systém od Apple, jehož jádro a uživatelské prostředí jsou postaveny na technologiích z BSD.
- **Unix-like systémy (nejsou přímými potomky, ale sdílejí filozofii a API):**
* **Linux**: Nejpoužívanější unix-like systém, jehož jádro je vyvíjeno jako svobodný software. Tvoří základ pro tisíce distribucí (např. Debian, Ubuntu, Red Hat Enterprise Linux) a pro systém Android. * **Minix**: Malý unix-like systém vytvořený Andrewem Tanenbaumem pro výukové účely, který inspiroval Linuse Torvaldse.
Vliv Unixu je patrný i v systémech Microsoft Windows, které postupně adoptovaly některé jeho koncepty, jako je vylepšený příkazový řádek (PowerShell) nebo možnost spouštět linuxové aplikace prostřednictvím Windows Subsystem for Linux (WSL).
🤓 Pro laiky
Představte si Unix jako stavebnici Lego pro počítače. Místo toho, abyste měli jednu velkou, složitou hračku (jako monolitickou aplikaci), máte spoustu malých, jednoduchých kostiček (programů), z nichž každá umí jen jednu věc, ale umí ji skvěle.
- **Jednoduché nástroje:** Jeden program umí seřadit text podle abecedy (`sort`). Jiný umí najít řádky, kde se vyskytuje určité slovo (`grep`). Další umí spočítat, kolik řádků dostal (`wc`).
- **Spojování pomocí "rour":** Kouzlo Unixu je v tom, že tyto jednoduché nástroje můžete spojovat dohromady pomocí "rour" (v příkazovém řádku se značí svislítkem `|`). Můžete například vzít telefonní seznam, poslat ho "rourou" do programu, který najde všechny "Nováky", a výsledek poslat další "rourou" do programu, který je seřadí podle křestního jména. Tímto skládáním jednoduchých nástrojů můžete provádět velmi složité úkoly.
- **Vše je soubor:** V Unixu se počítač dívá na skoro všechno jako na soubor. Dokument je soubor. Obrázek je soubor. Ale i tiskárna nebo myš jsou pro systém jen speciální soubory. To znamená, že programátor může poslat data "do tiskárny" stejným způsobem, jako by je zapisoval do textového dokumentu, což všechno zjednodušuje.
- **Příkazový řádek (Shell):** Místo klikání na ikony můžete počítači psát příkazy. To se může zdát staromódní, ale je to neuvěřitelně rychlé a mocné, zvláště když chcete zautomatizovat nějakou opakující se činnost.
Díky těmto principům je Unix a jeho následovníci (jako Linux a macOS) velmi stabilní, bezpečný a flexibilní. Proto pohání většinu internetu, superpočítače i váš chytrý telefon.