Linux documentation Project (CS)
Previous Content Next Up

4. LINUX - Průvodce jádrem operačního systému Linux

 

wpe45.jpg (732 bytes) 1. Základy hardwaru

wpe45.jpg (732 bytes) 2. Základy softwaru

wpe45.jpg (732 bytes) 3. Správa paměti

wpe45.jpg (732 bytes) 4. Procesy

wpe45.jpg (732 bytes) 5. Meziprocesorová komunikace

wpe45.jpg (732 bytes) 6. PCI

wpe45.jpg (732 bytes) 7. Přerušení a jejich obsluha

wpe45.jpg (732 bytes) 8. Ovladače zařízení

wpe45.jpg (732 bytes) 9. Souborový systém

wpe45.jpg (732 bytes) 10. Sítě

wpe45.jpg (732 bytes) 11. Mechanismy jádra

wpe45.jpg (732 bytes)12. Moduly

wpe45.jpg (732 bytes) 13. Zdrojový kód Linuxu

 

     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čena

     V 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í knihy

     Tato 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.

  • Kapitola Základy hardwaru představuje stručný popis moderního PC. Operační systém musí úzce spolupracovat s hardwarem, který představuje smysl jeho existence. Operační systém potřebuje některé služby, které mohou být zajištěny pouze hardwarově. Aby bylo možno operační systém Linux plně pochopit, je nutné základní porozumění hardwarové problematice.
  • Kapitola Základy softwaru představuje základní úvod do programování a zabývá se assemblerem a jazykem C. Popisuje nástroje používané při vytvoření operačního systému a obsahuje přehled funkcí a služeb operačního systému.
  • Kapitola Správa paměti popisuje způsob, jakým Linux obsluhuje fyzickou a virtuální paměť systému.
  • Kapitola Procesy popisuje co to proces je a jak jádro Linuxu vytváří, spravuje a ruší procesy v systému.Při koordinaci své práce komunikují procesy navzájem mezi sebou a jádrem. Linux podporuje řadu mechanismů pro meziprocesovou komunikaci (Inter-Process Communication Mechanism - IPC). Dvěma z nich jsou signály a roury, Linux ale podporuje také mechanismy IPC Systemu V, pojmenované po verzi Unixu, v níž se poprvé objevily. Tyto mechanismy jsou popsány v kapitole Meziprocesová komunikace. Standard PCI (Peripheral Component Interconnect) je dnes uznáván jako levný a výkonný standard pro datové sběrnice počítačů PC. Kapitola PCI popisuje jak jádro Linuxu inicializuje a používá PCI sběrnice a zařízení v systému.
  • Kapitola Přerušení a jejich obsluha se zabývá tím, jak jádro Linuxu obsluhuje přerušení.  I když jádro obsahuje obecné mechanismy a rozhraní pro obsluhu přerušení, některé podrobnosti obsluhy závisejí na hardware a architektuře systému. Jednou ze silných stránek Linuxu je podpora řady hardwarových zařízení, které jsou dnes k dispozici. Kapitola Ovladače zařízení popisuje, jak jádro Linuxu řídí fyzická zařízení připojená k systému.
  • Kapitola Souborový systém popisuje, jak jádro Linuxu spravuje soubory v souborových systémech, které podporuje. Popisuje virtuální souborový systém (VFS) a rovněž podporu reálných souborových systémů jádrem.
  • Sítě a Linux jsou dva pojmy s prakticky stejným významem. Linux je bez nadsázky produktem Internetu a WWW. Jeho autoři i uživatelé si pomocí webu vyměňují nápady a programy, a Linux sám bývá mnohde používán k zajištění síťových potřeb organizace. Kapitola Sítě popisuje, jak Linux podporuje síťové protokoly, označované společně termínem TCP/IP.
  • Kapitola Mechanismy jádra se zaměřuje na některé obecné úlohy a mechanismy, které musí jádro Linuxu zajišťovat, aby mohly jeho jednotlivé části účinně spolupracovat.
  • Kapitola Moduly popisuje, jak jádro dokáže dynamicky podle potřeby nahrávat různé funkce, například souborové systémy.
  • Kapitola Zdrojový kód vysvětluje, kde máte ve zdrojovém kódu Linuxu hledat konkrétní funkce.
  • Příloha Datové struktury obsahuje okomentovaný definiční kód datových struktur, které byly v předchozích kapitolách popsány.
  • V příloze Procesor Alpha jsou uvedeny hlavní charakteristiky architektury Alpha AXP.
  • Příloha Užitečné adresy WWW a FTP uvádí seznam adres, na nichž můžete prostřednictvím Internetu získat další informace o problematice Linuxu.
  • Konečně Slovníček představuje stručné vysvětlení hlavních pojmů, s nimiž se v této knize setkáte.

     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ámky

Caldera, 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.

Previous Content Next Up