3. Jak pracuje operační systém

Jméno nejpopulárnějšího operačního systému pro osobní počítače založené na procesoru Intel - MS-DOS - je zkratkou z anglického Microsoft disk operating system (česky: diskový operační systém firmy Microsoft). Původně byl operační systém předurčen jako prostředek pro provádění většiny složitých operací vstupu a výstupu - pro komunikací s nejrůznějšími diskovými mechanikami. Brzy se však z operačního systému stal univerzální prostředník mezi osobním počítačem a programovým vybavením na něm spouštěným.

Bez operačního systému by každý programátor sám musel přijít na to, jak něco vypsat na obrazovku, jak poslat data na tiskárnu, jak zapisovat nebo číst z disku a jak provést mnoho dalších funkcí, které leží na pomezí hardware a software. Operační systém je však něco víc než jen způsob, jak usnadnit život programátorům.

Operační systém vytváří základnu pro veškeré programové vybavení, které používáte. Bez operačního systému byste nebyli schopni uložit soubory vytvořené dvěma různými programy na tentýž disk, protože každý z nich by asi měl vlastní formát pro ukládání souborů. Operační systém vám rovněž dává do ruky nástroj, kterým můžete provést úkony mimo aplikační program - rušení a kopírování souborů, výpis seznamu i provedení příkazů uložených v dávkovém souboru.

Operační systém nepracuje osamoceně. Je závislý nejen na spolupráci s jinými programy, ale i na propojení se systémem BIOS. Jak je zřejmé z předcházejících odstavců, určité části operačního systému jsou přečteny z disku, připojeny k BIOS a poté spojeny s ovladači zařízení. Všechno dohromady pak provádí rutinní hardwarové funkce. Operační systém je ve skutečnosti složen ze všech těchto tří komponent. Bylo by zjednodušením, kdybychom si mysleli, že operační systém jsou pouze soubory uložené na disku, který máte v počítači.

Dohromady provádějí BIOS, ovladače zařízení a operační systém tolik funkcí, že je nemožné popsat jejich složitost na pár stránkách s obrázky. Tady se jen podíváme jak operační systém používá paměť a ukážeme si typický jednoduchý příklad aplikačního programu, který má na tiskárně vytisknout jediný znak.

Paměť operačního systému
1. Po uložení systému MS-DOS do počítače se jednotlivé části operačního systému objeví na různých místech paměti, na adresách začínajících od 0 do 1MB. Tato oblast paměti je logicky souvislá. Některé adresy jsou však ve skutečnosti fyzicky umístěny v různých částech počítače -v obvodech ROM, které obsahují BIOS počítače, v obvodech BIOS v adaptéru obrazovky, v obvodech RAM na základní desce počítače nebo v paměťových obvodech přídavných desek.
2. Prvních 1024 bytů paměti obsahuje vektory přerušení, které nastavuje jak BIOS tak i DOS; mohou je nastavovat i aplikační programy. Vektor obsahuje adresu začátku programové rutiny uložené někde v paměti, která se má spustit v případě, že určitá část počítače dá zvláštní signál, kterému říkáme přerušení.
3. Následujících asi 256 bytů obsahuje data pro BIOS, kterým říkáme příznaky. Používají se pro evidenci nejrůznějších vnitřních stavů systému. V této oblasti je rovněž vyrovnávací paměť klávesnice o délce 16 bytů, ve které se přechodně ukládají informace o stisknutých klávesách, když je počítač jinými úkoly tak zaneprázdněn, že na stisk těchto kláves nemůže reagovat bezprostředně.
4. Zbytek paměti RAM až do 640KB představuje pracovní paměť. Do ní se běžně ukládá program COMMAND.COM, ovladače zařízení, programy trvale uložené v paměti (tzv. rezidentní programy) a aplikační programy. Manažery paměti, např. QEMM386 nebo HIMEM.SYS dodávaný se systémem MS-DOS 5.O, dovolují přemapování této paměti tak, že ovladače zařízení, rezidentní programy a v DOS 5.0 i COMMAND.COM, lze uložit do paměti nad 640KB, která je rezervována pro aplikační programy. Když takový manažer paměti nepoužijeme, je COMMAND.COM ukládán na nejvyšší adresy pracovní paměti, kde ho smí jakýkoliv aplikační program přepsat, potřebuje-li paměť.
5. Nad pracovní pamětí je oblast, jejiž část je rezervována pro použití v BIOS na nejrůznější typy adaptérů obrazovky a pro takové adaptéry jako jsou síťové karty a řadiče pevných disků. Manažery paměti mohou paměť přidělenou těmto zařízením přemapovat tak, že vzniknou větší souvislé oblasti nepoužité paměti, do které mohou manažery ukládat další ovladače zařízení a programy.
6. Posledních přibližně 64KB oblasti paměti obsazuje BIOS uložený v obvodech ROM počítače. V systému IBM je zde také uložen jednoduchý kód zvaný ROM BASIC.
7. Třebaže DOS umí přímo adresovat pouze prvních 1024KB paměti, dovolují zvláštní adresovací techniky používat i paměť s adresami nad 1024KB, označovanou jako rozšiřující paměť. Tuto paměť RAM lze použít pouze u procesorů Intel 80286 a vyšších. V systému DOS nelze do rozšiřující paměti ukládat programy, lze ji použít pouze pro data.

Poznámka: Služby DOS jsou vždy přístupné prostřednictvím dodatků operačního systému k BIOS. Navíc příkazy DOS jako např. DIR, které jsou součástí COMMAND.COM, vytvářejí další sadu příkazů operačního systému. A to co pokládáme za jednoduché příkazy DOS, jako jsou FORMAT, CHKDSK a MEM jsou ve skutečností pomocné programy. Jsou k dispozici jen tehdy, jestliže jsou uloženy na disku buď v aktuálním adresáři nebo v některém z adresářů na něž je vytvořena cesta.

Operační systém: software a hardware
1. Jakmile na výzvu systému DOS zadáte z klávesnice jméno aplikačního programu, COMMAND.COM vystaví na BIOS požadavek, aby se pokusil nalézt zadaný program a zkopírovat ho z disku na první volnou adresu v paměti RAM. Jakmile je program hodně velký, může přemazat i samotný COMMAND.COM.
2. Prostřednictvím spuštěného aplikačního programu sdělíte požadavek na tisk nějakého dokumentu. Software vygeneruje přerušení, což je zvláštní kód, kterým se po operačním systému požaduje okamžitá pozornost. Hodnota spojená s přerušením informuje operační systém, jaká služba se právě požaduje. V případě tisku jednoho znaku je číslo přerušení jednoznačné, protože ho lze použít pro řadu služeb. Číslo přerušení je rovno 33 a služba pro zaslání jednoho znaku na tiskárnu má číslo 5.
3. Signál přerušení je zpracován čipem pro řízení přerušení, což je speciální čip v počítači, který nedělá nic jiného než že jen zpracovává přerušení.
4. Čip pro řízení přerušení upozorní procesor, že nastalo přerušení, které je nutno ihned vyřídit.
5. Aby si procesor zapamatoval stav výpočtu v okamžiku přerušení, uloží si adresu naposled prováděné instrukce aplikačního programu na zásobník. Zásobník je zvláštní oblast paměti pro ukládání adres. Pracuje jako zásobník na čisté talíře v restauraci. Každý nový talíř stlačí ty předchozí dolů, přičemž jako první se vždy odebírá ten talíř, který byl v zásobníku uložen jako poslední.
6. Procesor se podívá do části pamětí RAM, kde jsou zapsány vektory přerušení, aby mezi nimi našel položku pro přerušení číslo 33, služba 5. Vektor pro toto přerušení obsahuje adresu paměti obsazenou systémem ROM BlOS.

Poznámka: U některých počítačů lze zrychlit tisk pomocí spooleru. Je-li spooler uložen v paměti, změní si vektor přerušení 33 služba 5 tak, aby obsahoval adresu rutiny v paměti RAM používanou spoolerem. Tato rutina obvykle nařídí procesoru, aby tisknutý znak zapsal do vyrovnávací paměti v rozšířené paměti RAM, kde znak čeká, až ho vlastní rutina spooleru odešle na tiskárnu.

7. Rutina BIOS odešle jeden byte dat paralelním portem na tiskárnu.
8. Jestliže tiskárna není schopna z nějakého důvodu data přijmout - chybí v ní papír nebo je dosud zaměstnána tisknutím předchozího znaku - zašle do počítače chybový signál. BIOS chybu rozpozná a pokusí se o nápravu bez vědomí aplikačního programu. Náprava spočívá v tomto případě v několikrát opakovaném pokusu zaslat daný znak znovu do tiskárny. Když se to ani teď nepodaří, vygeneruje BIOS vlastní přerušení, které vyvolá podobný řetěz činností, končící spuštěním rutiny uložené do paměti RAM aplikačním programem. Tato rutina vypíše na obrazovku chybové hlášení.
9. Jestliže rutina BIOS skončí úspěšně, vygeneruje BIOS návrat z přerušení, neboli instrukci IRET. IRET sděluje procesoru, aby použil adresu uloženou na vrcholu zásobníku.
10. Procesor pokračuje ve zpracování programu od adresy odebrané ze zásobníku. Adresa označuje místo v programové rutině, kterou procesor prováděl, když došlo k přerušení 33. Skokem na tuto adresu procesor pokračuje v provádění programu od toho místa, kde přestal.
11. Jestliže aplikační program při ukládání do paměti přepsal COMMAND.COM, operační systém při ukončení programu znovu zapíše COMMAND.COM do paměti RAM.