Úvod

Naše doba je poznamenána masovou výrobou matematických strojů -  počítačů (computers). Mezi neodborníky jsou nejznámější osobní počítače (personal computers), které jsou vzhledem ke své velikosti a určení používány pro potřeby jednoho člověka při vedení jeho osobní agendy. Vyrábí se ale i jiné počítače. Například ty, které jsou určeny pro náročné průmyslové aplikace nebo pro potřeby organizací či celých regionů. Jsou používány současně desítkami nebo i stovkami lidí, kteří čtou nebo mění uložené informace. Podle počtu lidí, kteří je v dané chvíli mohou používat současně, se při nasazování vybírá počítač vhodné síly1.

Přestože existují a jsou důležité dále i jiné typy počítačů (specializované, pro potřeby řízení výroby, sledování a řízení přírodních, umělých  nebo společenských procesů, reagující ve velmi malém časovém intervalu na výskyt určitých událostí atd.), předmětem našeho zájmu bude přístup k  počítačům a v nich uloženým datům, které slouží pro vědomostní potřeby současně více lidí.

Takový počítač, je-li vyroben, musí mít vytvořen software (programové vybavení), který zajistí pokud možno pohodlné a bezchybné používání hardwaru (technické vybavení, holý stroj) několika uživateli současně. Jedná se o ovládání disků, terminálů, operační paměti, tiskáren, propojení s jinými počítači atd. a poskytování jejich možností uživatelům. Takový řídicí software holého stroje nazýváme operační systém (operating system). Dnes jsou v oblasti používání počítačů známy dva hlavní problémy. První je problém návrhu holého stroje tak, aby vyhovoval požadavkům nárůstu výkonu. Druhý je návrh operačního systému, který by obecně byl schopen pracovat se stejným výsledným efektem a  na různých současných nebo budoucích typech holého stroje a přitom umožňoval  provoz všech možných aplikací (tj. programových systémů), které byly nebo teprve budou vymyšleny. To je jistě pro výrobce operačního systému úkol náročný a z uvedených požadavků vyplývá, že nikdy nepůjde o návrh definitivní, ale že se jedná o neustále probíhající proces dalšího rozvoje, zdokonalování nebo i vytváření nových koncepcí. Tématem této knihy je popis jednoho z nejvíce používaných operačních systémů, který tyto předpoklady splňuje, přestože není ideální. Protože je ale v současné době nejvíce rozšířený a používaný, budou jeho principy jistě akceptovány i v budoucnu, a proto je dobré o nich něco znát. Jeho jméno je UNIX.

Hlavní důvod úspěchu tohoto operačního systému je právě především ve snaze používat libovolný hardware. V praxi to pak znamená, že prostředí, ve kterém se pohybuje uživatel, programátor nebo správce systému, je shodné na počítačích od různých výrobců a s různou architekturou a koncepcí hardwaru. Říkáme, že je operační systém přenositelný mezi různým hardware. Tato přenositelnost ovšem znamená několikaměsíční usilovnou práci týmu specialistů, protože je nutno přeprogramovat všechny části, které operují s hardwarem. Původní myšlenka při zrodu UNIXu ale akceptovala tuto náročnost, proto jsou tyto části minimalizovány jako nejnižší vrstva operačního systému. Všechny ostatní části, které mohou být na holém stroji nezávislé, jsou pak součástí vrstev vyšších.

Protože je přenositelné prostředí, ve kterém se pohybují programátoři, jsou přenositelné i jejich programy. A to je druhý hlavní důvod jeho úspěchu, který se jednoznačně potvrdil v dnešní době při spojování počítačů a místních sítí do větších celků. Jejich vzájemná komunikace je bezproblémová, je-li komunikačním partnerem tentýž princip.

Podob operačního systému UNIX je celá řada. Jejich počet je dán především počtem jeho výrobců, kteří jsou většinou také výrobci hardwaru, pro který je konkrétní podoba vytvořena. UNIX vznikl velmi dávno (na konci 60. let) ve výzkumných laboratořích americké firmy American Telephone and Telegraph Company (AT&T), v Bell Laboratories, která se stala vlastníkem autorských práv. Dnes je UNIX chráněná značka organizace UNIX System Laboratories (USL), která také uděluje licence pro implementaci na určitý hardware. Ve snaze dosáhnout jednoty a přesnosti při vývoji a používání UNIXu formulovala AT&T v průběhu 80. let (dnes již šestisvazkový) dokument, ve kterém jsou uvedeny podstatné a neměnitelné vlastnosti a charakteristiky UNIXu. Název tohoto dokumentu je System V Interface Definition, zkratka SVID, poslední edice je třetí, tedy SVID3 (viz Literatura). Název je odvozen od jména UNIXu firmy AT&T, který je System V (pod touto značkou AT&T začala prodávat UNIX od poloviny 80. let), poslední známá verze je System V Release 4.2 (SVR4) (viz Literatura). Dokument SVID, kterému říkáme také doporučení, protože není registrovanou normou, popisuje rozhraní (interface) jednotlivých vrstev UNIXu tak, aby byl pro výrobce závazný a pro uživatele konkrétní vrstvy daný. Dnes je běžné, že výrobci akceptují tento dokument jako kritérium kompatibility a také shodu s dokumentem v charakteristice svého operačního systému uvádějí.

Známý je také dokument X/OPEN Portability Guide (XPG3), který má podobnou funkci jako SVID a je produktem původně evropského sdružení výrobců UNIXu. Obě aktivity, jak SVID, tak XPG úzce spolupracují, takže dokumenty jsou velmi podobné, v mnoha částech zcela shodné. Sdružení X/OPEN bývá ovšem považováno za obecněji uznávanou instituci, proto SVID obvykle požaduje svolení k přetištění částí X/OPEN, stejně tak USL požaduje potvrzení kompatibility svých verzí operačního systému UNIX v kontextu X/OPEN.

SVID3 navazuje na standard (registrovanou normu) operačních systémů POSIX a oba standardy jazyka C, tj. X3.159-1989 (ANSI C) a ISO/IEC 9899-1990 (ISO C). Z pohledu normy POSIX je jeho nadmnožinou. Majitelem POSIXu  (plným názvem Portable Operating System Interface for Computer Environments) je IEEE (Institute for Electrical and Electronic Engineers). Standard přitom definuje model obecného operačního systému a pro něj implementovaných programovacích jazyků pro zaručení přenositelnosti napsaných programů a aplikací.

Text této knihy vychází při popisu práce v UNIXu především z SVID3 (viz [SVID391]) a posledního vydání POSIXu (viz [POSIX94]), odkud také přebírá popis struktur a jednoznačné definice rozhraní. Filozofie a funkcionalita UNIXu jako celku nebo jednotlivých komponent je výsledkem autorových praktických zkušeností nebo literární erudice a je popisována obecně tak, že vyhovuje těm verzím UNIXu, které přijímají SVID3 a POSIX, pokud nebude řečeno jinak. POSIX je přitom prezentován v zatím poslední verzi ISO/IEC 9945-2:1993(E), ANSI/IEEE Std 1003.2-1993 a SVID ve verzi třetího vydání (Third Edition)2. V textu této knihy tedy nejde jen o vágní údaje, ale o komentář přesných a závazných definic.

Přenositelná část UNIXu je napsána v  programovacím jazyce C, který za tímto účelem vymyslel a implementoval jeho první verze v 70. letech jeden z autorů UNIXu Denis Ritchie. Je samozřejmé, že při vyjadřování v UNIXu používají odborníci tento jazyk, a stejně tak tomu bude i v této knize. Učebnic jazyka C je mnoho, bestsellerem je právem [KernRitch78], podrobným popisem s častými poznámkami k přenositelnosti a implementaci je  [HarbStee87] a přehled jazyka uvádí také [BrodSkoc89].

Kniha je určena pokročilým uživatelům operačního systému UNIX. Přestože každý základní prvek je definován, není možné knihu úspěšně zvládnout bez znalosti prostředí některého z shellů, znalosti pojmů soubor (file), adresář (directory), přesměrování vstupů a výstupů atd. Kniha popisuje vždy práci pro zabezpečení požadavku uživatele z pohledu operačního systému, je tedy určena především programátorům a správcům systémů a sítí. Začínající a středně pokročilé uživatele odkazuji na   [KernPike84] a [Skoc93].



1 K takovému účelu může pro potřeby několika uživatelů sloužit i počítač navržený a vyrobený jako osobní (IBM PC, Macintosh, pracovní stanice SGI, HP nebo Sun atd.), ale tyto počítače upřednostňují především podporu jednoho uživatele v daném okamžiku, proto je to řešení nouzové a ve většině případů by mělo být pouze dočasné.

2 Uvedený POSIX v bibliografii odkazuje na SVID jako na jednu z průmyslových specifikací, kterou se vyplatí sledovat.