Software | Historie | Unix

Před 50 lety se zrodil Unix. Nejdůležitější software a myšlenka počítačových dějin

  • Vše vypuklo koncem srpna 1969
  • Ritchie a Thompson vytvořili systém všech systémů
  • Inspiroval téměř všechny ostatní

Zatímco si školáci před pár dny čistili své aktovky a učitelský sbor užíval posledních hodin bez antidepresiv, pamětníci z Bell Labs bouchali šampaňské. IT scéna totiž bez většího zájmu médií slavila padesáté výročí jedné z nejdůležitějších událostí počítačových dějin.

Jak vidno, řeč není o Windows 1.0 nebo snad ještě o pár let mladším Linuxu, ale o Unixu. Tedy, on se tak tehdy vlastně ještě nejmenoval, vývojáři Dennis Ritchie a Ken Thompson z počítačového oddělení Bell Labs už ale možná tušili, že stvořili něco velkého.

Byl pozdní srpen roku 1969 a jejich UNICS byl hotový. Jednalo se o zkratku pro Uniplexed Information and Computing Service, což byla zase parafráze Multiplexed Information and Computer Service – operačního systému MULTICS pro tehdejší počítač GE 645 od General Electric.

Když už jsme zabili tolik času s Multicsem, proč si nenapsat vlastní, menší a lepší?

MULTICS měl za úkol už v 60. letech představit některé moderní koncepce fungování operačního systému, které dnes považujeme za samozřejmost – třeba sdílení procesorového času mezi aplikacemi a přihlášenými uživateli.

Jeho společný vývoj v laboratořích Bell Labs, MIT a General Electric se ale rok od roku prodražoval, až společnost Bell Labs celý projekt pod hrozbou krachu opustila a s ní i její vývojáři z New Jersey.

66b7e813-7d22-4038-b39f-4c002fdaf7f4
Dennis Ritchie a Ken Thompson u počítače PDP-11 (Foto: Peter HamerCC BY-SA 2.0)

Thompson a Ritchie získané zkušenosti naštěstí nezahodili a postupně je přetavili do vlastního a koncepčně mnohem jednoduššího operačního systému UNICS pro počítač PDP-7.

UNICS – finální fonetický přepis UNIX získal až o něco později – nabídl zcela novou koncepci, která dodnes definuje nejen samotné unixové systémy a jejich deriváty, kam vzdáleně patří i macOS, ale i operační systémy, které se Unixem silně inspirovaly. Třeba Linux.

Unixová filozofie počítačových hippies

Jelikož se Unix zrodil v hlavách programátorů, kteří jej psali pro ostatní vývojáře, a nikoliv v hlavách produktových manažerů, vložili do něj otisk svého vlastního svobodomyslného světonázoru a důraz na vysoce efektivní kód.

Unix se tedy skládal z maličkého jádra, které řídilo spouštění a běh programů, přístup k periferiím atp., a z ohromného množství vlastně docela maličkých a jednoúčelových programů – utilit.

Byli to vývojáři, a tak chtěli, aby se Unix skládal z dílčích aplikací, které sice budou provádět každá jen jednu primitivní úlohu, ale budou to dělat bezchybně a tak rychle, jak to jen tehdejší hardware umožňoval. A hlavně, jejich kód bude díky malé velikosti stručný, snadno pochopitelný a každý si jej bude moci dále upravit.

Další specialitou byl hierarchický souborový systém skládající se ze stromu dílčích adresářů a souborů. Dnes je to samozřejmost, tehdy to ale bylo tak trochu sci-fi. Jako soubor, ze kterého se dalo číst, anebo se do něj dalo zapisovat, zároveň fungovaly i jednotlivé periferie a logické části systému a počítače.  

Namísto velkého programu plného chyb roura poskládaná z utilit

Díky tomuto konceptu umožňoval Unix vytvářet komplexní úlohy skládáním našich drobných programů za sebe do jakéhosi řetězce – roury, kdy výstup jednoho programu byl vstupem dalšího.

Stejné principy podědily i všechny deriváty Unixu a inspiroval se jimi i Linux, takže když do jeho terminálu napíšeme třeba:

cat /proc/cpuinfo | grep "model name"

Provedeme přesně to, o čem snili Ritchie s Thompsonem už před padesáti lety. Nejprve zavoláme velmi jednoduchý program cat. Cat nedělá nic jiného, než že do výstupu vypíše obsah souboru, který jsme mu předložili jako jeho parametr.

Oním parametrem je v našem případě soubor cpuinfo v adresáři /proc a obsahuje údaje o procesoru počítače v textové podobě. Jak už jsme si řekli výše, v unixových systémech lze skoro ke všemu přistupovat jako k (textovému) souboru, ze kterého lze číst nebo do něj zapisovat.

Ještě jsme si řekli, že v unixových systémech lze skládat programy do řetězce za sebe a vytvářet z nich tzv. roury. Pět jednoduchých programů za sebou pak provede stejnou komplexní práci jako jedna těžkopádná aplikace.

My jsme vytvořili rouru znakem |, který výstup z programu cat přesměroval do vstupu posledního programu grep. Program grep tentokrát hledá řádky, na kterých se vyskytuje text, který jsme nastavili jako jeho parametr. V tomto případě tedy model name.

Suma sumárum, když příkaz spustím na svém redakčním laptopu, vypíše se do textového terminálu toto:

model name      : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
model name      : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
model name      : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
model name      : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz

V souboru cpuinfo byl můj procesor zmíněn čtyřikrát, ačkoliv má pouze dvě jádra. Podporuje ale Hyper-Threading a nabízí tedy čtyři logická vlákna, která se systému jeví jako samostatné jednotky.

Psát jádro v assembleru je šílenství, potřebujeme nějaký programovací jazyk

Ale zpět na přelom 60. a 70. let minulého století. První verzi experimentálního a ryze soukromého operačního systému oba vývojáři napsali ještě v jazyku symbolických adres – assembleru, což byl z dnešního úhlu pohledu obdivuhodný výkon.

Úryvek assembleru z české Wikipedie:

writez:
l_writez1:
 lodsb
 or al,al
 jz l_writez9
 xor bh,bh
 mov ah,0Eh
 int 10h
 jmp l_writez1
l_writez9:
ret

Přece jen, programovat celé jádro operačního systému prakticky ve strojových instrukcích procesoru počítače PDP-7, vyžadovalo neuvěřitelnou trpělivost, odhodlání a čas.

Aby si Dennis Ritchie a Ken Thompson napříště usnadnili práci, zkraje 70. let si vytvořili vysokoúrovňový jazyk, který kvanta strojových instrukcí nahradil jednoduchými příkazy. V tomto jazyku mohli konečně začít psát programy pro Unix a vy jej znáte jako C.

b80faf12-7076-4127-8a42-f3f221372b2c1e9c74c3-e4d0-4cc6-8402-9c24e666f54a
Jednoduchý textový program přeložený pro Linux a procesor x86-64

Céčko dodnes zůstává jedním z klíčových programovacích jazyků, který se společně s jeho objektově-orientovaným derivátem C++ používá k programování těch nejdůležitějších částí softwaru počínaje právě jádry operačních systémů, ovladačů či firmwarů drobných čipů.

Proč vlastně?  Protože z dnešního úhlu pohledu to jsou jazyky velmi nízkoúrovňové – blízko samotného železa, a tedy rychlé a s plnou kontrolou toho, co se děje s pamětí. My s těmito jazyky běžně pracujeme v našem seriálu Pojďme programovat elektroniku.

Proč mít jen jeden Unix, když jich mohou být desítky

Prvotní Unix vznikl v laboratořích Bell Labs a ke všemu ve volném čase skupiny nadšených vývojářů. Zrodil se bez jediného produktového manažera a obchodní strategie – zrodil se z čirého nadšení. Tím pádem tu byl ale i jeden háček. Mateřský Bell Systems kvůli soudním tahanicím z 50. let nemohl podnikat v jiném oboru než v telekomunikacích a ani on tak nemohl přetavit Unix v komerční produkt.

Kormidla se nakonec chopila AT&T, které Bell patřil, a v roce 1975 vydala první komerční verzi Unixu v dějinách. Stála 20 tisíc tehdejších dolarů, což po přepočtu činí zhruba 100 tisíc těch současných.

0df11abf-6a84-455d-bb96-5529de5c79a3
Rodokmen unixových systémů (Foto: Eraserhead1, Infinity0, Sav_vasCC BY-SA 3.0)

Nutno podotknout, že tou dobou už existovalo několik různých větví systému, Dennis Ritchie totiž na počátku rozesílal pásky s Unixem včetně jeho zdrojových kódů a svolením k dalším modifikacím, čehož využili zejména studenti na amerických univerzitách. Na jedné z nich – Kalifornské univerzitě v Berkeley – se díky tomuto svobodnému přístupu v druhé polovině 70. let zrodil jeden z klíčových derivátů původního Unixu – Berkeley Software Distribution, tedy BSD.

Části BSD v 90. letech použila Jobsova firma NeXT, obalila jimi jádro Mach a vytvořila desktopový operační systém NeXTSTEP. Když pak Apple v roce 1997 NeXT koupil a Jobs se znovu chopil kormidla počítačové korporace z Cupertina, stal se jeho software i základem nové generace jablečných operačních systémů macOS.  

Osobní počítače měl původně ovládnout unixový Microsoft Xenix

Ale zpět do 70. let. Díky postupnému přepisování všech komponent z assembleru pro daný procesor do univerzálního jazyka C se otevřela cesta k tomu, aby mohl Unix opustit původní počítačovou architekturu, pro kterou byl napsán (DEC) a dostat se i na další mašiny té doby.

Na přelomu 70. a 80. let tedy mnozí analytici předpovídali, že se z Unixu stane standardní operační systém jak pro velké podnikové servery – mainframy, tak pro pracovní stanice. Pomohl k tomu nástup unixových derivátů pro procesory malých počítačů a nebýt pozdější zakázky pro IBM, tento článek byste dost možná dnes nečetli na notebooku s Microsoft Windows, ale s operačním systémem Microsoft Xenix.

5c0af1b3-e8c2-4d68-af13-af30a3a79c35
Vítá vás Microsoft Xenix

O skvělé unixové budoucnosti byl totiž na sklonku 70. let přesvědčený i Bill Gates a jeho mladičký Microsoft, a tak si od AT&T licencoval jeho hlavní Unix a prodával jej OEM výrobcům počítačů jako operační systém pro koncová zařízení.

Microsoft měl v plánu přeložit Xenix na další mikroprocesorové architektury a vyvíjet pro něj i své vlastní programy včetně interpretu Basic, nakonec ale zvítězilo partnerství s IBM a jeho zakázka na jednoduchý operační systém DOS, nad jehož základy později vznikl i Windows a obsadil svět desktopů.

Xenix se postupně dostal na vedlejší kolej, Microsoft se soustředil na jeho protiváhu OS/2, kterou vyvíjel společně s IBM, a práva na Xenix později prodal společnosti Santa Cruz Operation.

17d48897-22fe-45a3-a20c-5ad655330901
Vzdálený potomek Xenixu – Xinuos OpenServer 10 s grafickým desktopem

Xenix změnil ještě několikrát majitele i jméno, ale svým způsobem přežívá dodnes, i když ve zcela odlišné podobě Xinuos OpenServer 10. Poslední verze vyšla před čtyřmi lety.

POSIX a vítězství unixových principů ve světě IT

Jelikož se původní Unix díky své počáteční svobodomyslnosti rozprostřel mezi hromadu odvozených větví, dnes se bavíme spíše o rodině unixových systémů, které mají společnou základní koncepci. To je přesně to malé jádro obalené desítkami a stovkami standardních programů se společným způsobem fungování.

Tomuto aplikačnímu rozhraní, které je všem unixovým systémům společné, dnes říkáme POSIX – Portable Operating System Interface a jedná se o ISO standard číslo 9945:2009. Pokud byste si jej chtěli přečíst, vezměte si měsíc dovolené, čítá totiž 3 807 stran a v letech 2013 a 2017 se dočkal ještě dvou revizí.

28349c72-8631-4972-b7e0-1a5e7b2c8f16
POSIX je ISO/IEC/IEEE standard, který popisuje aplikační rozhraní unixových systémů. S POSIX je kompatibilní také Apple macOS a z velké části také linuxové systémy.

S POSIX jsou kompatibilní nejen původní unixové systémy nebo třeba ona větev BSD z Berkeley, na které dnes staví i jablečný macOS, ale ve valné míře i mladý operační systém z 90. let minulého století, který se unixovým světem silně inspiroval a lze jej tedy tak trochu považovat za jednu z jeho vzdálených větví – Linux.

Na linuxovém jádře pak stojí mnoho dalších operačních systémů včetně mobilního Androidu, původní Ritchieho myšlenka vysoce modulárního operačního systému z konce 60. let tedy přežila do současnosti a principy Unixu definují velkou měrou dnešní IT počínaje dotykovou tatrankou s Androidem a konče sálovým superpočítačem kdesi v Kalifornii.


Duchovní otec Unixu a jazyka C Dennis Ritchie se dožil 70 let a svět nul a jedniček nadobro opustil 12. října roku 2011. Jeho kolega z Bell Labs Ken Thompson letos v únoru oslavil 76. narozeniny.

Diskuze (65) Další článek: Pentagon chce „hlídací satelity“, které by mohly zabránit vypuknutí hvězdných válek

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,