Operační systém musí úzce spolupracovat s hardwarem, který jej hostí. Operační systém potřebuje některé služby, které je možno zajistit pouze hardwarově. K úplnému pochopení činnosti operačního systému Linux je nutné porozumět základům hardwaru. Tato kapitola představuje stručný úvod do hardwaru moderního PC.
Revoluce začala v lednu roku 1975, kdy se na obálce časopisu "Popular Electronicsit objevil obrázek počítače Altair 8800. Počítač Altair 8800, pojmenovaný podle jednoho z prvních dílů seriálu Star Trek, byl počítač, který si mohl zájemce o elektroniku postavit za pouhých 397 dolarů. S procesorem Intel 8080 a 256 bajty paměti bez obrazovky či klávesnice to bylo podle dneýních standardů úplné nic.
Jeho autor, Ed Roberts, pojmenoval svůj vynález "personal computeril. V dneýní době se termínem PC označuje prakticky každý počítač, který můžete odnést v rukou. Podle této definice jsou počítači PC i některé velmi výkonné systémy Alpha AXP.
Různí nadšenci pochopili sílu Altairu a začali pro něj vytvářet programy a hardware. Pro tyto průkopníky představoval Altair svobodu - svobodu od dávkových úloh pro mainframové systémy, spravované elitou kněžstva. Na fenoménu počítače, který můžete mít doma na kuchyňském stole, vydělali závratné bohatství dva zběhlí vysokoškolýtí studenti. Objevila se řada různého hardwaru s různými rozdíly a softwaroví nadšenci radostně vytvářeli nové programy pro nové systémy. Paradoxně to byla společnost IBM, která ohlášením počítače IBM PC v roce 1981 (k zákazníkům se dostal v roce 1982) určila formu moderních osobních počítačů. S procesorem Intel 8088, 64 KB paměti (roz"oitelnými na 256 KB), dvěma disketovými mechanikami a displejem Colour Graphics Adapter (CGA) s rozlišením 80 znaků na 25 řádků to podle dneýních měřítek nebylo nic moc, počítač se ale prodával velmi dobře. V roce 1983 následoval model IBM PC/XT, doplněný o neuvěřitelných 10 MB pevného disku. Krátce předtím vytvořily své klony architektury IBM PC i jiné společnosti, jako například Compaq, a architektura PC se tak stala de facto standardem. Tento standard umožnil, aby řada hardwarových společností začala soutěžit na stále se rozrůstajícím trhu, což vedlo ke snížení cen. Řada rysů architektury těchto prvních PC byla přenesena i do moderních PC. Například i ten nejvýkonnijií systém s procesorem Intel Pentium Pro se spouští v adresačním režimu Intel 8086. Když Linus Torvalds začínal psát to, z čeho později vzniknul Linux, vybral si nejrozšířenější a cenově dostupnou platformu PC Intel 80386.
Když se na PC podíváme zvenčí, nejnápadnějšími komponentami je skříň počítače, klávesnice, myý a monitor. Na čelní stěně skříně jsou nějaká tlačítka, malý displej s nějakými čísly a disketová mechanika. Většina dneýních systémů má také mechaniku CD-ROM a pokud vám zaleží na vašich datech, můžete mít také páskovou jednotku pro zálohování. Všechna tato zařízení se společně označují termínem periferní zařízení.
Přestože celkové řízení systému má na starosti procesor (CPU), není to jediné inteligentní zařízení. Jistou úroveň inteligence mají i řadiče jednotlivých periferií, například řadič IDE.
Uvnitř PC (viz obrázek 1.1) najdeme základní desku, která obsahuje procesor či CPU, paměť a několik slotů pro připojení periferií ISA nebo PCI. Některé řadiče, například řadič IDE disku, mohou být vestavěny přímo na základní desku.
Procesor, CPU nebo mikroprocesor je srdcem každého počítačového systému. Procesor načítá a vykonává instrukce uložené v paměti a provádí tak operace matematické, logické a řídí toky dat. V začátcích počítačové éry byly jednotlivé části procesoru samostatné (a fyzicky velké) moduly. V té době vznikl termín Central Processing Unit (CPU). Moderní mikroprocesor kombinuje všechny tyto moduly v jednom integrovaném obvodu, vytvořeném na malinkém kousku křemíku. V této knize budeme chápat termíny CPU, procesor a mikroprocesor jako rovnocenné.
Mikroprocesor pracuje s binárními daty, tedy daty, složenými z nul a jedniček.
Jedničky a nuly jsou reprezentovány zapnutím nebo vypnutím elektrického napětí. Stejně jako desítkové číslo 42 znamená vlastně "4 desítky a 2 jedničkyié, je i binární číslo posloupnost binárních číslic, z nichž každá reprezentuje určitou mocninu dvou. 10 na první (10 1 ) je 10, 10 na druhou (10 2 ) je 10´10, 10 3 je 10´10´10 a tak dále. Binárně 0001 je desítkově 1, binárně 0010 je desítkově 2, binárně 0011 je 3, 0100 je 4 a tak dále. Takže desítkových 42 je binárně 101010 nebo také 2 + 8 + 32 nebo 2 1 + 2 3 + 2 5 . V počítačových programech se ale čísla neuvádějí ve dvojkové soustavě, namísto toho se obvykle používá soustava šestnáctková.
Při základu šestnáct reprezentuje každý řád jednu mocninu šestnácti. Desítkové číslice jsou pouze 0 až 9, číslice 10 až 15 se jedním znakem zapisují jako písmena A, B, C, D, E a F. Například šestnáctkově E je desítkově 14, šestnáctkově 2A je desítkově 42 (dvě šestnáctky plus deset). Podle konvencí programovacího jazyka C (kterou v knize používám) se šestnáctková čísla uvozují znaky "0xiy; iestnáctkových 2A se tedy zapisuje jako 0x2A.
Mikroprocesor může provádět matematické operace jako sčítání, násobení a dělení a logické operace typu "je X větší než Y?".
Činnost procesoru je řízena vnějšími hodinami. Tyto hodiny, takzvané systémové hodiny, generují pravidelné hodinové impulsy a s každým impulsem provede procesor nějakou operaci.
S každým tikem hodin může procesor například vykonat jednu instrukci. Rychlost procesoru se udává rychlostí "tikáníií systémových hodin. Procesor s rychlostí 100 MHz dostává každou sekundu 100,000,000 hodinových impulsů. Výkon procesoru se ale nedá pomocí hodinového kmitočtu posuzovat, protože různé procesory stihnou za jeden hodinový impuls různé množství práce. Obecně ale platí, že čím rychlejší hodiny, tím výkonnijií procesor. Instrukce vykonávané procesorem jsou velmi jednoduché, například "přečti obsah paměti na adrese X do registru Y". Registry jsou interní pamětí mikroprocesoru, slouží k ukládání dat a k manipulaci s nimi. Prováděná operace může způsobit, že procesor přeruší to, co momentálně dělá, a odskočí na úplně jinou instrukci někde jinde v paměti. Jednotlivé jednoduché instrukce dávají moderním procesorům prakticky neomezené možnosti, protože mohou zpracovat milióny nebo dokonce miliardy takovýchto instrukcí za sekundu.
Před vykonáním instrukce je nutné ji načíst z paměti. Sama instrukce se může odkazovat na data uvnitř paměti, která se pak podle potřeby načítají nebo ukládají.
Velikost, počet a typ registrů závisí výhradně na typu procesoru. Procesor Intel 80486 má jinou sadu registrů než procesor Alpha AXP, první rozdíl může být ten, že registry procesoru Intel jsou 32bitové, registry procesoru Alpha jsou 64bitové. Obecně ale platí, že procesory mají větší počet univerzálních registrů a menší počet speciálním registrů. Většina procesorů má následující speciální, vyhrazené registry:
Všechny systémy mají nějakou hierarch" paměti, na různých úrovních této hierarchie se nacházejí paměti s různou rychlostí a velikostí. Nejrychlejší paměť se označuje jako cache (skladiýtě, zásobárna) a její funkce přesně odpovídá jejímu jménu - slouží k dočasnému uložení obsahu hlavní paměti. Tato paměť je sice velmi rychlá, ale také velmi drahá, takže většina procesorů obsahuje malou interní cache a na základní desce je pak větší externí cache. Některé procesory používají stejnou paměť cache pro uložení instrukcí i dat, jiné mají dvě paměti - jednu pro instrukce, druhou pro data. Procesory Alpha AXP obsahují dvě interní paměti cache, jednu pro data (D-Cache) a druhou pro instrukce (I-Cache). Externí cache (B-Cache) je pro obě společná. Kromě toho systém ještě obsahuje hlavní paměť, která je v porovnání s externí pamětí cache velmi pomalá. V porovnání s interní cache procesoru se hlavní paměť přímo plouží.
Obsah pamětí cache a hlavní paměti se musí shodovat, musí být koherentní. Jinak řečeno, pokud se nějaké slovo z hlavní paměti nachází v některé paměti cache, musí systém zajistit, aby obsah cache a hlavní paměti byl stejný. Zajištění koherence pamětí cache je částečně úkolem hardwaru, částečně úkolem operačního systému. To je ovšem společné i pro řadu jiných systémových úloh, kdy musí hardware a software při zajišťování nějaké činnosti úzce spolupracovat.
Jednotlivé obvody na systémové desce jsou propojeny systémem, nazývaným sběrnice. Systémová sběrnice se dělí na tři logické celky, na adresovou sběrnici, datovou sběrnici a řídící sběrnici. Datová sběrnice udává místo v paměti (adresu) pro datový přenos. Datová sběrnice slouží k přenosu dat, je obousměrná a umožňuje načíst data do procesoru nebo je z procesoru zapsat. Řídící sběrnice obsahuje různé linky, které slouží k přenosu časovacích a řídících signálů pro celý systém. Existuje řada různých sběrnic, oblíbené sběrnice pro připojení periferií k systému jsou například sběrnice ISA a PCI.
Periferie jsou reálná zařízení, jako například grafické karty nebo disky, ovládané čipem řadiče, který může být na základní desce nebo na kartě, zapojené do základní desky. IDE disky jsou řízeny řadičem IDE, SCSI disky řídí řadič SCSI a podobně. Řadiče jsou připojeny k procesoru a k sobě navzájem různými sběrnicemi. Většina dneýních systémů používá k propojení hlavních komponent systému sběrnice ISA a PCI. Řadiče jsou rovněž procesory, podobně jako CPU, a je možno je chápat jako inteligentní pomocníky procesoru, který zajišťuje celkové řízení systému.
Každý řadič je jiný, obvykle však mají registry, jejichž prostřednictvím se ovládají. Program spuitiný na CPU musí být schopen do těchto registrů zapisovat a číst z nich. Jeden registr může například obsahovat příznak chyby. Další může být použit k různým řídicím účelům podle režimu řadiče. CPU může individuálně adresovat každý řadič v systému, což znamená, že musí existovat softwarový ovladač zařízení, který manipuluje s registry řadiče. Dobrým příkladem je sběrnice IDE, která umožňuje individuálně ovládat každý k ní připojený disk. Dalším příkladem může být sběrnice PCI, která umožňuje zvlášť ovládat každé k ní připojené zařízení (například grafickou kartu).
Systémová sběrnice spojuje CPU s hlavní pamětí, je to jiná sběrnice než ta, kterou jsou k CPU připojeny hardwarové periferie. Paměťový prostor, na němž jsou souhrnně připojeny periferie, se označuje jako V/V prostor. V/V prostor může být dále dělen, to nás ale v této chvíli nemusí zajímat. CPU může přistupovat jak k adresovému prostoru systémové paměti, tak k adresovému prostoru V/V zařízení, zatímco řadiče mohou k systémové paměti přistupovat pouze nepřímo, a to pouze s podporou procesoru. Z pohledu zařízení, řekněme ovladače disketových mechanik, je vidět pouze ta část adresového prostoru, v němž se zobrazují registry tohoto zařízení (ISA), není vidět systémová paměť. CPU má typicky odlišné instrukce pro přístup k paměti a k V/V prostoru. Může například existovat instrukce s významem "přečti bajt z V/V adresy 0x3f0 do registru X". To je přesně způsob, jakým CPU řídí hardwarové periferie, čtením a zápisem registrů v V/V prostoru. Která část V/V prostoru je přidělena kterým periferiím (řadiči IDE, sériovým portům, řadiči disket a podobně) je dáno konvencí už od doby vzniku architektury PC. Adresa 0x3f0 z V/V prostoru je shodou okolností adresa řídícího registru jednoho ze sériových portů (COM1).
Jsou chvíle, kdy řadič potřebuje přečíst nebo zapsat větší objem dat přímo z nebo do systémové paměti. Příkladem může být zápis dat na pevný disk. V takovém případě se používá řadič přímého přístupu do paměti (Direct Memory Access, DMA), který umožňuje hardwarovým zařízením přímý přístup k systémové paměti, ovšem pouze pod přísným řízením a dohledem CPU.
Všechny operační systémy potřebují znát čas, takže moderní PC jsou vybaveny zvláštní periferií, zvanou hodiny reálného času (Real Time Clock, RTC). Tyto hodiny zajišťují dvě věci:
informaci o přesném čase a generování pravidelných časových intervalů. RTC mají vlastní baterii, takže pracují, i když je počítač vypnut, proto tedy PC vždy zná správné datum a čas.
Intervalový časovač umožňuje operačnímu systému přesně plánovat základní úkoly.