Hlavní navigace

Historie OS UNIX

28. 6. 2001
Doba čtení: 6 minut

Sdílet

Pod pojmem UNIX si dnes hodně lidí představí spíše obecné označení typu nebo ještě lépe řečeno rodiny operačních systémů, než jeden konkrétní produkt, který byl přímo či nepřímo praotcem těch dnešních IRIXů, Solarisů, AIXů, BSD a dalších. Přesto to celé skutečně začalo u jediného systému tohoto jména a vy se dnes dozvíte jak to tenkrát vlastně bylo.

V dobách, kdy se počítače ještě vyráběly ze dřeva a jejich uživatelé byli osamocená sekta podivínů, byl operační systém (OS) často záležitostí psanou přesně na míru určité specifické činnosti a umožňoval zpracování omezené množiny úloh. Výrobci počítačů si také většinou psali pro své stroje vlastní systémy. Další velkou nevýhodou bylo, že některé systémy byly ve zpracování dat natolik samorostlé, že data bylo při přechodu na jiný systém nutno vkládat znovu.

Postupně se také měnil přístup k tomu, jak zpracovávat určité úlohy; zatímco dříve převládala snaha připravit data a nechat si je zpracovat, čímž byl uživatel dat vzdálen tomu, pracovat přímo s počítači, postupem času byl naopak vtahován do procesu zpracování dat, až nakonec ve finále se tato práce změnila v interaktivní a uživatel by posazen přímo k počítači. To přineslo nové a náročnější požadavky na systém, který musel být schopen obsloužit více úloh a více uživatelů.

S těmito požadavky se rozhodlo vypořádat seskupení firem AT&T, MIT a GE (General Electric). V Bell Labs byl tak v roce 1965 založen projekt Multics (Multiplexed Information and Computing Service). Multics je asi jedním z nejslavnějších softwarových systémů, který byl úplně k ničemu.

Multics byl sice schopen práce, ale nedělal to, pro co byl vyvíjen – například podporu více uživatelů. Dalším problémem bylo, že každá s podílejících se stran měla trošku jinou představu o konečném produktu. Ke všemu ještě přispěl pocit Bell Labs, že Multics by byl drahý, a tak byl projekt v roce 1969 zastaven. Výsledkem byla nakonec frustrace a pár zkušeností do budoucna. Důležité bylo, že v Bell Labs Computing Science Research Center v Murray Hill zůstala skupinka lidí – Ken Thompson, Dennis Ritchie, Doug McIlroy a J. F. Ossanna – ochotná „něco“ dalšího dělat.

Zatímco se debatovalo o tom, co „něco“ dělat, pohrával si Ken Thompson s programováním hry „Space Travel“. Hra simulovala pohyb planet v solárním systému a hráč se měl pohybovat mezi nimi. Ken napsal tuto hru pro Multics, ale později ji přepsal pro počítač GE 632 se systémem GECOS. S tímto počítačem však nebyl příliš spokojen (nekvalitní terminál, špatná ovladatelnost apod.), hrát na GE 635 byla také dost drahá legrace.

Thompson a Ritchie si proto našli malý počítač DEC PDP-7 s daleko lepším terminálem, podporou floating-point operací a debug subsystémem. Metoda portace této hry bylo asi to nejdůležitější pro další vývoj Unixu. Hra byla psána v GEMAP assembleru pro cross-assembler, který pracoval pod GECOS, byl však schopný produkovat i pásky pro PDP-7. Stejnou metodou pak byl psán základ Unixu. Systém tedy vznikal na jiném počítači, než na jakém pak běžel.

Po hře následovalo v létě roku 1969 napsání filesystému, který implementoval Thompson. Dalším krokem bylo naprogramování základních utilit pro kopírování, mazání a přemisťování editovaných souborů, a hlavně základního interpretu příkazů. Vše bylo stále tvořeno pro GECOS a transformováno na PDP-7, což však nemělo dlouhého trvání a po čase se tento nový systém osamostatnil. Brian Kernighan proto navrhl dát systému jméno, a to znělo Unix (slovní hříčka na Multics).

Základní a převratnou myšlenkou bylo, že kernel systému neobsahoval interpretr příkazů (shell) – tyto věci byly svěřeny „user-space“ programům. Částečně byla tato myšlenka přejata z Multicsu.

Počítač PDP-7 začal být v roce 1970 zastaralý. Proto se objevil návrh na nový počítač, kterým měl být DEC PDP-11 za $65 000. Bell Labs se rozhodla projekt Unix podpořit a týmu tento počítač zakoupila. Byl k dispozici na podzim toho roku a měl 24kB RAM – kernel Unixu využil 12kB, zbytek byl pro uživatelské programy. Počítač ale dorazil bez hardisku, takže tým používal paměť také jako RAM disk. Vlastní disk doputoval do Bell Labs až na konci roku.

Motivací Bell Labs pro vývoj Multicsu bylo využití nějakého takového systému uvnitř organizace. Protože Multics byl mrtev a Unix živ, logicky se prvním uživatelem Unixu stala samotná Bell Labs, přesněji jejich „Bell Labs Patent Department“. Toto využití také nastartovalo vývoj dalších utilit pro formátování textů.

Jak již bylo řečeno, Unix byl psán v assembleru. Thompson si však přál používat nějaký více high-level jazyk. V roce 1971 začal zkoušet Fortran, ale po několika dnech toho zanechal a raději si sám napsal jazyk „B“. Byl to funkční jazyk, nicméně s řadou problémů, z nichž nejdůležitější bylo, že se jednalo o jazyk interpretovaný a tedy i pomalý.

Thompson měl ale štěstí na kamarády – kolega Ritchie implementoval do jazyka „B“ (BCPL) datové typy a následně začal pracovat na kompilátoru. To byla vlastně první fáze vývoje jazyka „C“, následovala implementace struktur.

Tým tak získal programovací jazyk, který si přál, a v létě roku 1972 začalo přepisování do Céčka. Kernel systému měl 11 000 řádek.

Po určitou dobu měl vývojový tým problém s předáváním dat mezi programy. Šlo o to, jak udělat něco jako „cat into grep into…“. Řešení tohoto problémů vzešlo od Douga McIlroye, který se již od padesátých let zabýval makry. Thompson přepsal celý systém během jedné noci tak, aby používal nově navržený systém pipes. Roury mezi procesy byly jednou z důležitých součástí filosofie Unixu, nejlépe to vyjadřují slova McIlroye:

„Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface.“

První oficiální prezentace Unixu proběhla 15. – 17. října 1973 na „The Symposium on Operating Systems Principles, IBM Thomas J. Watson Research Center, Yorktown Heights, New York“.

V roce 1973 byla také založena skupina Unix System Group (USG), která poskytovala podporu převážně pro interní potřebu Bell Labs.

V letech 1976 – 77 působil Ken Thompson šest měsíců na Computer Science Department at the University of California-Berkeley (UCB) a vyučoval zde Unix. Po Thompsonově návratu do Bell Labs pokračovali studenti a profesoři na Berkeley v práci na Unixu. Tato větev dostala název BSD – Berkeley Software Distribution (BSD). Software se následně pod akademickou, poměrně nenákladnou licencí (cca $150, podle některých zdrojů $50) rozšířil mezi další univerzity. V roce 1975 mělo již 33 akademicích institucí někoho, kdo se zabýval Unixem, v roce 1978 jich bylo již 136, z toho 37 mimo USA.

Akademické prostředí bylo pro Unix velmi přínosné, jmenujme si alespoň ty nejzajímavější počiny:

  • editor „vi“ – Bill Joy (Berkeley, na této universitě vzniklo i mnoho dalších věcí důležitých pro rozvoj software obecně, např. regulární výrazy, výzkum v oblasti databází apod.)
  • tisk – University of Toronto
  • shell – Yale University
  • zlepšování výkonu, podpora více uživatelů a sítě – Purdue University (Electrical Engineering Department)

Některé tyto univerzitní změny obsahovala „Version 7“ (někdy zkráceně označována jako v7) z roku 1978. Vlastnosti Verze 7:

  • textově orientovaná interaktivní práce více uživatelů u terminálů
  • práce s procesy
  • hierarchická struktura adresářů
  • podpora volání jádra
  • awk, lint, make, uucp, sh (Bourne shell), expr
  • 400 stránek manuálu
  • C compiler od Kernighan a Ritchie

Větev BSD zaznamenala v pozdější době (80. a 90. letech) asi nejbouřlivější vývoj, co se různých jmen a verzí a jejich vzájemného ovlivňování týká.

Tip do článku - TOP100

V této době také vznikaly první portace Unixu na jiné počítače, např. na DEC VAX, IBM 360, Interdata 832 a Interdata 7/32. Verze 7 tedy byla první portabilní verzí. Po tomto období následoval přechod z akademií a laboratoří do reálného průmyslového využití.

Již zítra se dočkáte dokončení tohoto článku, v němž si povíme o dalším vývoji UNIXu a jeho hlavních odnožích.

Autor článku