Linux je fenoménem Internetu. Vznikl jako zájmový studentský projekt a postupem času se stal nejoblíbenějším zdarma dostupným opecračním systémem. Pro mnoho lidí to je záhada. Jak může zdarma dostupný produkt za něco stát? Jak může ve světě, v němž dominuje několik silných softwarových společností, obstát něco, co vytvořila parta "hackerů"? Jak může program, na jehož vývoji se podílí spousta lidí v řadě zemí, být stabilní a efektivní? Faktem ale je, že Linux obstál a opravdu je stabilní a efektivní. Ke své každodenní činnosti jej používá řada univerzit a výzkumných pracovišť. Řada lidí jej používá na svých domácích počítačích a vsadil bych se, že jej nějakým způsobem používá většina společností, i když si to ne vždy uvědomují. Linux se používá při procházení webem, jako hostitelský systém webovských sítí, k psaní článků a jako u všech počítačů a systémů také ke hraní her. Je třeba zdůraznit, že Linux není v žádném případě nějaká hračka - je to kvalitně navržený a profesionálně napsaný operační systém, používaný nadšenci na celém světě. Kořeny Linuxu je možno vystopovat už od doby vzniku Unixu. V roce 1969 začal Ken Thompson, výzkumný pracovník Bell Laboratories, experimentovat s víceuživatelským a víceúlohovým operačním systémem na jinak nevyužitém počítači PDP-7. Záhy se k němu připojil Dennis Richie a spolu s dalšími pracovníky brzy vytvořili první verzi Unixu. Richie byl značně ovlivněn dřívějším projektem, systémem MULTICS, a samo jméno Unix je vlastně narážka na tento projekt. První verze byly napsány v assembleru, třetí verze systému však už byla přepsána do nového programovacího jazyka - jazyka C. Jazyk C Richie navrhl a napsal speciálně jako jazyk určený pro tvorbu operačních systémů. Tento přechod umožnil přenesení Unixu na podstatně výkonnější počítač PDP-11/45 a 11/70 společnosti Digital. Dál už to šlo rychle. Unix opustil prostředí laboratoří a výzkumných pracovišť a zanedlouho dodávala vlastní verze Unixu většina významných počítačových společností. Linux vznikl jako z nouze ctnost. Linus Torvalds, autor Linuxu a tvůrce jeho návrhu, si mohl dovolit koupit pouze jediný program - Minix. Minix je velmi jednoduchý operační systém unixovského typu, často používaný jako výukový nástroj. Jeho schopnosti ovšem Linuse nijak nenadchly, takže se rozhodl pro vytvoření vlastního systému. Jako základní model si vybral Unix, s nímž byl jako student velmi dobře seznámen. Začal na počítači PC Intel 386 a pustil se do psaní. -lo to velmi rychle a nadšený Linus nabídl výsledky své práce ostatním studentům pomocí celosvětové počítačové sítě, používané hlavně v akademickém prostředí. S programem se seznámili další lidé a začali k němu přispívat. Většina nově vzniklých kódů byla vlastně řešením nějakého problému, který měl jeho autor. Zanedlouho se Linux stal operačním systémem. Je třeba podotknout, že Linux neobsahuje žádný původní kód Unixu, představuje vlastní implementaci normy POSIX a používá velkou část kódu GNU (GNU není Unix) nadace Free Software Foundation, Cambridge, Massachusetts. Řada lidí používá Linux jako jednoduchý nástroj; často jej pouze nainstalují z některého dobrého distribučního balíku CD-ROM. Většina uživatelů Linuxu jej používá k vytváření dalších aplikací nebo ke spouštění aplikací vytvořených někým jiným. Řada uživatelů Linuxu hltavě čte dokumenty HOWTO, pocišují jak nadšení, když se jim správně nakonfigurovat, tak i zklamání, když se jim to nepodaří. Pouze malá skupina uživatelů je schopna aktivně vytvářet ovladače zařízení a nabízet Linusi Torvaldsovi, který vytvořil a udržuje jádro Linuxu, návrhy na opravy jádra. Linus přijímá doplňky a úpravy jádra od kohokoliv. Může to znít jako spolehlivá cesta k anarch", Linus však provádí velmi pečlivé kontroly a veškerý nový kód do jádra vkládá sám. Vždy existovala jen malá skupina lidí, kteří přispívali k jádru Linuxu. Většina uživatelů Linuxu se nestará jak jejich systém funguje, ani jak drží pohromadě. Je to trochu škoda, protože studium Linuxu představuje velmi dobrý způsob, jak se naučit více o fungování operačních systémů. Nejen, že je Linux velmi dobře napsán, všechny jeho zdrojové kódy jsou navíc zdarma k dispozici. Je to dáno tím, že i když si autoři ponechávají autorská práva na své programy, svolili k jejich volné distribuci podle veřejné licence GNU nadace Free Software Foundation. Na první pohled mohou být zdrojové kódy matoucí - uvidíte adresáře jako kernel, mm a net - co ale obsahují a jak kód funguje? Je nutné hlubší pochopení celkové struktury a návrhu Linuxu. A to by mělo být cílem této knihy: jasně vysvětlit, jak operační systém Linux pracuje. Měli byste získat představu o tom, co se v systému děje, když například kopírujete soubor z jednoho místa na druhé, nebo když čtete elektronickou poštu. Dobře si vzpomínám na vzrušení, které jsem zažil, když jsem poprvé zjistil, jak operační systém skutečně pracuje. O toto vzrušení bych se chtěl podělit se čtenáři této knihy. Můj zájem o Linux se datuje od roku 1994, kdy jsem navýtívil Jima Paradise, který pracoval na přenosu Linuxu na platformu Alpha AXP. V té době jsem pracoval ve společnosti Digital Equipment Corporation. Od roku 1984 jsem působil převážně v oblasti sítí a komunikací, od roku 1992 jsem začal pracovat v nové divizi Digital Semiconductor. Cílem divize bylo uplatnit se na trhu procesorů a rozšířit procesory Alpha AXP a desky pro tyto procesory i mimo Digital. Když jsem o Linuxu poprvé slyšel, ihned jsem pochopil možnost, která se pro systémy Alpha otevírá. Jimovo nadšení bylo nakažlivé a začal jsem s ním na přenosu spolupracovat. Při této práci jsem musel stále více obdivovat nejen samotný operační systém, ale i jeho autory. Je to bezesporu pozoruhodná skupina lidí a to, že jsem se stal jejím členem, pro mne představovalo největší uspokojení za celou dobu, co pracuji na vývoji programů. Lidé se mne na Linux velmi často ptají jak v práci, tak doma a já velmi rád odpovídám. Čím více Linux používám jak v profesionálním, tak v osobním životě, tím více se stávám linuxovým nadšencem. Všimněte si, že jsem použil raději termín "nadšenec" a ne "fanatik" linuxového nadšence definuji jako člověka, který si je vědom skutečnosti, že existují i jiné operační systémy, raději je ale nepoužívá. Má manželka Gill, která používá Windows 95, svého času poznamenala: "Nikdy jsem si nemyslela, že budeme mít každý svůj operační systém." Mým potřebám inženýra Linux perfektně vyhovuje. Jedná se o vynikající, pružný a adaptabilní nástroj. Většina zdarma distribuovaných programů je k dispozici ve verzi pro Linux a často mi stačí pouze nahrát si předpřeložené spustitelné soubory nebo nainstalovat program z CD. Co jiného bych měl používat, abych se zadarmo naučil programovat v jazycích C++, Perl, nebo abych se dozvěděl něco o Javě? Alpha AXP je pouze jednou z mnoha hardwarových platforem, na nichž Linux pracuje. Většina různých Linuxů pracuje na procesorech Intel, objevuje se však stále širší nabídka verzí pro jiné procesory. Sem patří Intel, MIPS, Sparc a PowerPC. Tuto knihu jsem mohl orientovat na kterýkoliv ze zmíněných procesorů, mé zkušenosti s Linuxem však vycházejí z verze pro procesor Alpha AXP, takže při ilustraci některých klíčových bodů se orientuji právě na tento procesor. Je však třeba říct, že 95 % zdrojového kódu jádra Linuxu je nezávislých na hardwarové platformě. Proto je i 95 % této knihy věnováno strojově nezávislým částem jádra Linuxu. Komu je kniha určenaV této knize nedělám žádné předpoklady o znalostech a zkušenostech čtenářů. Věřím tomu, že zájem o problematiku je dostatečnou motivací k sebevzdělávání. Při čtení vám může pomoci jistá míra zkušenosti s počítači, nejlépe s počítači třídy PC, a také určitá znalost jazyka C. Členění knihyTato kniha není psána jako dokumentace nitra Linuxu. Namísto toho se zabývá operačními systémy obecně a Linuxem zvláýtě. Jednotlivé kapitoly se řídí pravidlem "od obecného ke konkrétnímu". Nejprve vždy obecně popisují činnost určitého subsystému jádra a poté se pouštějí do větších podrobností. Záměrně jsem se rozhodl při popisu algoritmů jádra a metod, jak jádro řeší různé problémy, nepoužívat formulace jako routine_X() volá routine_Y(), která inkrementuje položku foo datové struktury bar. Takovéto věci zjistíte čtením kódu. Kdykoliv potřebuji vysvětlit část kódu nebo popsat něco podobného, začínám od čistého stolu popisem příslušných datových struktur. V knize je tedy poměrně podrobně popsána řada důležitých datových struktur jádra a jejich vzájemné vazby. Jednotlivé kapitoly jsou poměrně nezávislé, stejně jako jednotlivé subsystémy jádra, které kniha popisuje. Někdy se však na sebe odkazují, protože například není možno popisovat procesy bez pochopení funkce virtuální paměti.
V textu knihy naleznete odkazy na hierarch" zdrojového kódu jádra Linuxu. Uvádím je pro případ, že byste se chtěli podívat přímo na zdrojový kód. Všechny odkazy jsou relativní vzhledem k cestě /usr/src/linux. Pokud vezmeme jako příklad soubor foo/bar.c, naleznete jej jako /usr/src/linux/foo/bar.c. Pokud používáte Linux (což byste měli), představuje studium zdrojového kódu cennou zkušenost a tuto knihu můžete použít jednak jako příručku pro pochopení kódu a jednak jako průvodce různými datovými strukturami. Ochranné známkyCaldera, OpenLinux a logo "Cio jsou ochranné známky společnosti Caldera, Inc. Caldera OpenDOS 1997 je ochranná známka společnosti Caldera, Inc. DEC je ochranná známka společnosti Digital Equipment Corporation. DIGITAL je ochranná známka společnosti Digital Equipment Corporation. Linux je ochranná známka Linuse Torvaldse. Motif je ochranná známka společnosti Open System Foundation, Inc. MS-DOS je ochranná známka společnosti Microsoft Corporation. Red Hat a logo Red Hat jsou ochranné známky společnosti Red Hat Software, Inc. Unix je registrovaná ochranná známka společnosti X/Open. XFree86 je ochranná známka společnosti XFree86 Project, Inc. X Window System je ochranná známka společnosti X Consortium a Massachusetts Institute of Technology. PoděkováníMusím poděkovat řadě lidí, kteří si udělali čas a poslali mi připomínky k této knize. Snažím se všechny připomínky zahrnovat do nových verzí. Zvláýtní poděkování si zaslouží John Rigby a Michael Bauer, kteří důkladně přečetli a opravili celou knihu. Nebylo to nic jednoduchého. |