VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STAVEBNÍ JIŘÍ MACUR INFORMATIKA MODUL 01 POČÍTAČOVÉ A OPERAČNÍ SYSTÉMY STUDIJNÍ OPORY PRO STUDIJNÍ PROGRAMY S KOMBINOVANOU FORMOU STUDIA
Informatika Modul 01 Počítačové a operační systémy Jiří Macur, 2004
Obsah OBSAH Vstupní informace k modulu...5 Cíle...5 Požadované znalosti...5 Doba potřebná ke studiu...5 Klíčová slova...5 Použitá terminologie...5 Metodický návod na práci s textem...5 1 Úvod...7 1.1 Úkoly operačního systému...7 1.2 Základní komponenty počítačových systémů...7 1.3 Stručný přehled typů systémů...8 2 Konstrukce a struktury počítačového systému...10 2.1 Základní architektura počítače...10 2.1.1 Instrukční cyklus a instrukční tabulka...11 2.1.2 Struktura procesoru a jeho instrukce...11 2.1.3 Komunikace procesoru s pamětí, vnitřní sběrnice, cache...14 2.2 Periferní zařízení...15 2.2.1 Vstupně výstupní sběrnice a porty...17 2.2.2 Mechanismus přerušení...17 2.2.3 Mechanismus přímého přístupu do paměti...18 2.2.4 Programová obsluha zařízení...19 2.3 Paměťové struktury...20 2.4 Mechanismy ochrany...21 2.5 Architektura osobních počítačů...22 2.5.1 Vnitřní a vnější sběrnice...22 2.5.2 Procesory...25 2.5.3 Operační paměť...27 2.5.4 BIOS...28 2.5.5 Diskové paměti...29 2.5.6 Univerzální rozhraní PC...30 3 Subsystémy operačního systému...32 3.1 Správa procesů...32 3.1.1 Vlákna...34 3.2 Správa operační paměti...34 3.2.1 Virtuální paměť...35 3.3 Souborový systém...36 3.3.1 Alokační jednotky disku, souborový systém FAT...37 3.3.2 Souborový systém NTFS...38 3.4 Správa zařízení...39 3.5 Systém ochrany a bezpečnosti...40 4 Architektura a služby operačního systému...42
Informatika Modul 01 Počítačové a operační systémy 5 Vlastnosti operačního systému Windows XP... 44 6 Vlastnosti operačního systému Linux... 46 7 Autotest... 48 Závěr... 51 Shrnutí... 51 Klíč k autotestu... 51 Studijní prameny... 52 Seznam použité literatury... 52 Seznam doplňkové studijní literatury... 52 Odkazy na další studijní zdroje a prameny... 52
Vstupní informace k modulu Vstupní informace k modulu Cíle Čtenář by měl získat přehled o základních principech, na nichž je založena architektura současných osobních počítačů jak po technické stránce (hardware), tak zejména po stránce programové (software). Text je určen pro studenty technicky orientovaných oborů mimo oblast informačních technologií. Požadované znalosti K přečtení a porozumění tomuto textu jsou potřebné základní znalosti z informatiky v rozsahu vyučovaném běžně na středních školách. Zejména je očekávána dovednost uživatelské práce s operačním systémem typu Windows a/nebo Unix. Doba potřebná ke studiu Je velmi individuální podle znalostí čtenáře. Pro velmi skromné znalosti je uvedená doba cca 6 hodin. Klíčová slova Architektura počítače, operační systém, procesor, operační paměť, sběrnice, I/O zařízení, I/O řadič, proces, vlákno, virtuální paměť, souborový systém, Windows XP, Linux Použitá terminologie Diskutovaná problematika se rychle vyvíjí, proto je česká terminologie značně neustálená. V textu je většinou uváděna i ekvivalentní anglická terminologie spolu s příslušnými zkratkami. Metodický návod na práci s textem Text je určen zejména pro všeobecné pochopení stěžejních principů, které se dnes uplatňují v základní technické a programové výbavě osobních počítačů hlavního proudu výpočetní techniky. Předpokládá se, že text doplní a uspořádá fragmentární znalosti, kterými čtenář již disponuje. Není vhodné se s textem seznamovat encyklopedickým způsobem, spíše přemýšlet nad obecnými principy tak, jak si je vynutil technologický pokrok, a jejich možnými alternativami, které se neprosadily často pouze z komerčních důvodů. Čtenář by se neměl nechat odradit některými složitějšími a konkrétnějšími odstavci. Většinou jsou uvedeny proto, že kvůli těmto konkrétnějším konstrukcím - 5 -
Informatika Modul 01 Počítačové a operační systémy a postupům vznikla obecná řešení, která by bez uvedení kontextu působila zbytečně složitým dojmem. Je třeba mít na paměti, že technické a programové prostředky se vyvíjejí ve vzájemné symbióze, a nelze je tedy studovat odděleně. - 6 -
Úvod 1 Úvod 1.1 Úkoly operačního systému Operační systém je základní programové vybavení, které je prostředníkem mezi uživatelem počítače a technickými prostředky počítače (hardware). Z hlediska používání počítače je dnes zcela nezbytnou součástí, bez níž nelze s počítačem pracovat. Hlavním úkolem operačního systému je spouštět a řídit běh uživatelských programů, usnadnit uživateli práci s počítačem a přitom využít co nejefektivněji technické prostředky počítače. Pro efektivní práci s operačním systémem je pro uživatele výhodné mít zběžný přehled i o technickém vybavení počítače a jeho základních funkcích. V opačném případě je obtížné provádět konfiguraci a přizpůsobení operačního systému vlastním potřebám. 1.2 Základní komponenty počítačových systémů Při popisu práce počítače musíme vycházet z obecnějšího pohledu na celý systém. Jeho součásti jsou pak následující: Hardware (procesory, paměti, vstupní/výstupní zařízení). Operační systém řídí a koordinuje využívání hardware ze strany různých uživatelských programů a jejich uživatelů. Aplikační programy definují způsob, kterým jsou prostředky počítače využity pro řešení uživatelských úloh (programy kancelářské, obchodní, databázové, vývoj nových programů, CAD, hry apod.). Uživatelé lidé, počítače a jiné stroje. Uživatel 1 Uživatel 2 Uživatel n Textový editor Databázový systém Hra Aplikační (a systémové) programy Operační systém Hardware Obr. 2.1 Schéma počítačového systému - 7 -
Informatika Modul 01 Počítačové a operační systémy 1.3 Stručný přehled typů systémů První sálové počítače (mainframes) disponovaly velmi primitivním operačním systémem, který umožňoval obsluze pouze postupné (sekvenční) spouštění uživatelských programů. Po skončení jednoho programu byl operační systém schopen zavést pomocí obsluhy další program obvykle z papírových medií (děrné štítky a pásky) do operační paměti, kde ho mohl procesor vykonat (job). Sálové počítače s možností dávkového spouštění více programů (multiprogrammed systems) umožňovaly paralelní zavedení programů do operační paměti. Operační systém pak přepínal procesor mezi jednotlivými sekcemi paměti s různými joby (processor multiplexing). Operační systém Job 1 Job 2 Job n Obr. 2.2 Schéma obsazení operační paměti Operační systém provozovaný na tomto typu systémů již musel zajišťovat následující úkoly: Plánování a přidělování procesoru různým jobům (CPU scheduling) operační systém musel vyhodnotit, který job je připraven k převzetí řízení (podle priority a okamžitého stavu). Správa paměti (memory management) nutnost rozdělit operační paměť do disjunktních bloků pro jednotlivé joby. Obsluha vstupních/výstupních zařízení (I/O device drivers) výhradně prostřednictvím operačního systému jednotlivé joby nemohou pracovat s technickými prostředky přímo. Hrozí totiž riziko současných požadavků na jedno zařízení ze strany více jobů. Zamykání vstupních/výstupních zařízení (I/O device allocation) mechanismus zabraňující požadavkům na zařízení v době, kdy je využíváno jiným jobem. Systémy sdíleného času (Time Sharing Systems) již umožňovaly interaktivní práci (on-line) více uživatelům. Pracovaly vesměs s diskovými pamětmi, které umožnily automatizaci spouštění programů a přenášení jobů mezi operační pamětí a diskem (swapping). Uživatel mohl zadávat příkazy operačnímu systému pomocí univerzální klávesnice a sledovat data a stavy jobů na monitoru. Stolní systémy, osobní počítače (desktop systems) určené pro jednoho uživatele. Standardní interaktivní zařízení jsou doplněna o polohovací zařízení (myš). Provozovaný operační systém je orientován zejména na uživatelské po- - 8 -
Úvod hodlí a rychlou odezvu. Zpočátku jsou kvůli vyššímu výkonu potlačeny funkce zajišťující společnou práci více uživatelů a bezpečnost procesů a dat. S rostoucím výkonem hardware osobních počítačů se postupně vracejí do jejich operačních systémů vlastnosti, které byly dříve nutné pouze pro velké sálové počítače. Paralelní systémy obsahují více procesorů. Podle organizace jejich přidělování jednotlivým jobům jsou rozděleny na Symetrické (symmetric multiprocessing) každému procesoru je přidělena identická kopie operačního systému. Tato kopie pak řídí přepínání procesoru mezi jednotlivými joby v operační paměti. Paměť je sdílena všemi procesory. Tento typ paralelismu podporuje většina moderních operačních systémů. Asymetrické (asymmetric multiprocessing) každému procesoru je přidělován speciální job vybraný řídicím procesorem (master procesor). Používáno pouze u speciálních vysoce výkonných supersystémů. Distribuované systémy tvořené procesory volně spojenými obvykle prostřednictvím počítačové sítě. Každý procesor má k dispozici vlastní operační paměť a další zařízení. Systémy umožňují rozložení zátěže, uživatelskou komunikaci, sdílení prostředků. Podle typu řízení se dělí na systémy peer-to-peer (přímá komunikace dvou rovnoprávných systémů) a klient-server (s privilegovaným serverem komunikují a vyžadují služby klientské systémy). Klastry (clustered systems) umožňují distribuovaným systémům sdílení paměti (disků). Jsou používány zejména pro zvýšení spolehlivosti. V asymetrické variantě provádí aplikaci vždy právě jeden systém (server), v případě potřeby (poruchy) přebírá činnost jiný systém v klastru. V symetrické variantě provádějí všechny systémy aplikaci paralelně. Systémy reálného času (real time systems) garantují vykonání speciálních úloh v definovaném časovém intervalu. Používají se například při řízení vědeckých experimentů v lékařství, robotice apod. V hardwarové variantě obvykle nepoužívají žádná zařízení s neurčitou odezvou (disky). V softwarové variantě jsou používány v systémech virtuální reality, řízení technologických procesů apod. Kapesní systémy (handheld systems) osobní asistenti a plánovače (Personal Digital Assistent PDA), celulární telefony. Disponují omezeným množstvím paměti pomalejšími procesory a maloformátovým displejem. Operační systém se musí přizpůsobit značným omezením. - 9 -
Informatika Modul 01 Počítačové a operační systémy 2 Konstrukce a struktury počítačového systému Architektura současných počítačů je velmi složitá. Opírá se sice o určitá obecná teoretická východiska, ale i ta jsou pro účely tohoto textu příliš komplikovaná. Proto si základní principy vysvětlíme na silně zjednodušeném modelu počítače. 2.1 Základní architektura počítače Základními komponenty našeho modelu tvoří procesor (CPU Central Processing Unit) a operační paměť (RAM Random Access Memory). Obě komponenty spolu oboustranně komunikují: procesor nejenže požaduje od operační paměti informace, ale zároveň je tam také ukládá. Abychom pochopili činnost počítače, vyjdeme ze struktury operační paměti. Paměť je rozdělena na posloupnost elementárních informačních buněk pro jednoduchost představovaných v našem modelu bajty. Každá buňka má přiřazeno pevné identifikační číslo, tzv. adresu. Adresy tvoří souvislý sled celých čísel. Obsah buněk bajtů na jednotlivých adresách je samozřejmě tvořen uspořádanou osmicí bitů s nějakou hodnotou např. 10011101. Záměrně je adresa i její obsah znázorněn ve dvojkové (binární) soustavě. Počítač samozřejmě jinou soustavu nepoužívá. Běžně se však tyto informace v dokumentech vyjadřují spíše hexadecimálně. Adresa 00000000 00000001 00000010 00000011 00000100 Obsah 01001011 10000010 01001111 10101011 00001000 Procesor Paměť Obr. 2.1 základní komponenty počítače - 10 -
Konstrukce a struktury počítačového systému Protože lze na obsah bajtu pohlížet jako na číslo vyjádřené ve dvojkové (binární) soustavě, můžeme také říci, že obsah bajtu je číslem v rozsahu 0 255, tj. v úvahu připadá celkem 2 8 možností obsahu bajtu. Z konstrukčního hlediska je dvojková soustava nejvýhodnější, a proto jsou všechny typy informací v počítači (ve skutečnosti tedy i adresa a její obsah) realizovány pomocí nul a jedniček. Pro nás je však vyjadřování v této soustavě příliš obšírné. Proto používáme stručnější zápis v jiných soustavách, zejména v šestnáctkové (hexadecimální) pro její zřejmé výhody (úspornost vyjádření hodnoty bajtu dvěma ciframi, snadná konverze z primární dvojkové soustavy). V textech popisujících adresy a obsah paměti se tedy obvykle setkáme s šestnáctkovou, ale i osmičkovou nebo desítkovou soustavou, všechny údaje jsou však ekvivalentní a skutečná realizace v počítači je vždy dvojková. 7. 6. 5. 4. 3. 2. 1. 0. Snadnost vyjádření obsahu bajtu v šestnáctkové soustavě ilustruje obrázek. Předpokládáme, že čtenář je obe- 1 1 0 1 1 0 0 1 známen s vyjádřením čísla v různých D 9 soustavách, zde např. 11011001 BIN =D9 HEX =217 DEC =331 OCT Adresa bajtu je celým číslem a na obsah bajtu lze také pohlížet jako na celé číslo. Přesto jsou oba údaje velmi rozdílné a je důležité, abychom je nezaměňovali. 2.1.1 Instrukční cyklus a instrukční tabulka Předpokládejme, že procesor je zkonstruován tak, aby si po zapnutí vyžádal na paměti obsah bajtu s adresou rovnou nule. Paměť poskytne obsah tohoto bajtu, který procesor považuje za označení tzv. instrukce nějaké elementární činnosti, kterou budeme diskutovat níže. Instrukci vykoná a vyžádá si na paměti další bajt s bezprostředně následující adresou (=1). Podle obsahu bajtu opět provede elementární operaci instrukci. Tímto způsobem prochází celou operační paměť. Procesor v našem modelu je tedy zkonstruován tak, aby uměl provést 256 různých elementární činností, přičemž každá má svůj číselný identifikátor tím je právě obsah bajtu, který si procesor přečte z paměti. Popis instrukcí spolu s jejich identifikátory se nazývá instrukční tabulka. Obecně je instrukční tabulka pro každý typ procesoru jiná. Uvedenou posloupnost operací, které procesor vykonává, nazýváme instrukční cyklus: 1. vyžádání informace z definované adresy paměti vyvolávací fáze (fetching) 2. nalezení instrukce podle přijaté informaci dekódovací fáze (decoding) 3. vykonání zjištěné instrukce prováděcí fáze (performing) 2.1.2 Struktura procesoru a jeho instrukce Abychom si mohli objasnit podstatu elementárních operací instrukcí procesoru, musíme alespoň velmi zjednodušeně popsat jeho schéma: - 11 -
Informatika Modul 01 Počítačové a operační systémy instrukce operační paměť data Řídicí jednotka registr stavu registr zásobníku registr instrukcí Aritmetickologická jednotka registr n registr C registr B registr A procesor Obr. 2.2 zjednodušené schéma procesoru Stěžejní strukturou v procesoru jsou pro nás tzv. registry. Můžeme si je představit jako vnitřní paměť procesoru o několika bajtech. Každý registr má své označení (jakousi formu adresy) v poněkud nesystematické podobě několika písmen abecedy (např. AX, BX, SP apod.). Registry lze rozdělit do dvou skupin: obecné (datové) registry a řídicí registry s pevně daným významem. Nad datovými registry procesor typicky provádí aritmetické a logické operace. Je to daleko efektivnější, než provádět tyto operace přímo s bajty v operační paměti rychlost přístupu procesoru ke svým registrům na stejném čipu je totiž řádově vyšší než k buňkám relativně nezávislé paměti. Nyní se již můžeme vrátit k instrukcím procesoru, které lze roztřídit do několika skupin: Aritmetické instrukce s obecnými registry umí procesor provádět například početní operace na jejich obsah nahlíží jako na čísla (operandy), která umí sečítat, odečítat, násobit a dělit. Výsledek ukládá obvykle do jiných registrů, než byly registry s operandy instrukce. Výsledek může zabírat větší prostor než operand (např. v případě násobení) pak je uložen ve více registrech. Logické instrukce na obsah obecných registrů a jejich jednotlivé bity lze pohlížet jako na hodnoty logických proměnných a provádět s nimi základní logické operace (logický součet, součin, negaci apod.). Do této skupiny instrukcí patří také operace, které mění pořadí bitů v registru (rotace a posuvy). Přesunové instrukce viděli jsme, že některé typy instrukcí procesor provádí nad svými registry. Potřebujeme proto instrukce, které obsah obecných registrů přesouvají do operační paměti na stanovené adresy nebo naopak plní datové registry obsahem definovaných adres. Je zřejmé, že jednoduchá aritmetická operace může vyžadovat více instrukcí: potřebná data načíst z operační paměti do registrů, provést aritmetický úkon a výsledek přesunout z registrů zpět do operační paměti. Instrukce skoku v našem modelu by procesor postupně vyvolával obsahy bajtů na rostoucích adresách a jednou by nevyhnutelně dorazil na konec operační paměti. Procesor se však ve vykonávání instrukčních cyklů nikdy nemůže zastavit. Nevyhnutelně proto musí existovat instrukce, která procesoru přikáže, aby následující instrukce nebyla vyvolána z následující adresy, ale z libovolné - 12 -
Konstrukce a struktury počítačového systému jiné adresy v paměti. Tento typ instrukcí je realizován pomocí speciálního registru, tzv. čítače instrukcí. Tento registr obsahuje adresu v operační paměti, z níž bude realizován příští instrukční cyklus procesoru. Standardní instrukce v rámci instrukčního cyklu zvyšují obsah registru instrukcí automaticky na adresu další buňky v operační paměti obsahující instrukci. Instrukce skoku registr instrukcí prostě naplní nějakou obecnou adresou v paměti. Uvedený typ instrukcí je často spojen s vyhodnocením určitých okolností souvisejících s obsahem registrů. Skok se např. provede pouze v případě, že je požadovaná podmínka splněna. Tento typ instrukcí se používá pro realizaci větvení algoritmu. Vstupně výstupní instrukce jsou obdobou přesunových instrukcí. Přesouvají obsah registrů do připojených periferních zařízení, resp. daty získanými z periferií počítače plní registry procesoru. Uvedený popis ještě upřesníme v části věnované vnějším zařízením. Řídicí instrukce pracují zejména se stavovým registrem procesoru. Zde má každý bit předem určený význam. Některé bity obsahují příznaky, které kvalitativně popisují průběh provádění předešlých instrukcí (např. zda došlo ke specifické chybě). Nastavením jiných bitů v registru lze změnit režim práce procesoru, ovlivnit provádění instrukcí apod. Ve schématu procesoru vidíme ještě registr zásobníku. Jeho význam je úzce spjat s prováděním podprogramů často se opakujících sekvencí instrukcí. Pokud procesor provádí program (vykonává instrukce podle obsahu buněk v operační paměti) a pomocí instrukce skoku začne v určité chvíli provádět podprogram, je třeba okamžitý stav procesoru někde uchovat, aby ho bylo možné opět obnovit po ukončení podprogramu a pokračovat ve vykonávání původního programu. Stav procesoru definovaný obsahem jeho registrů se v takovém případě uloží do operační paměti od adresy, kterou obsahuje registr zásobníku. Po uložení stavu se zásobník nastaví na další volnou adresu v operační paměti tak, aby bylo možné uložit stav i v případě skoku do dalšího vnořeného podprogramu. Při ukončování podprogramů dochází k inverzní operaci: registry procesoru se naplní obsahem paměti z adresy určené registrem zásobníku tím se však obnoví také čítač instrukcí a procesor pokračuje v činnosti, kterou prováděl před skokem do podprogramu. Registr zásobníku se rovněž vrátí na původní hodnotu. V uvedeném výkladu si pozorný čtenář mohl všimnout, že mnoho instrukcí potřebuje doplňující operandy a nelze je tedy provést v jednom instrukčním cyklu. Např. při dekódování instrukce skoku procesor ví, že si musí z paměti vyzvednout ještě adresu, kterou naplní čítač instrukcí. Automaticky tedy pokračuje fází 1 instrukčního cyklu vyvoláním obsahu další buňky v paměti a tento obsah považuje za adresu skoku. Nakonec provede 3. fázi, tj. vlastní vykonání instrukce skoku. V paměti jsou tedy uloženy nejen kódy instrukcí, ale i data (v tomto případě operand instrukce). Ze samotného obsahu buňky paměti však není nijak patrné, zda se jedná o kód instrukce nebo o data to je rozhodnuto až při běhu programu, kdy procesor interpretuje obsah buňky podle okamžitého kontextu. Vlivem nepřesné práce programátorů nebo jinou chybou se může stát, že procesor vyvolá buňku obsahující data, avšak pokusí se na ni nahlížet jako na instrukci další chování procesoru je pak nepředvídatelné a může skončit krachem systé- Všimněte si, že tímto způsobem je počet úrovní vnoření závislý pouze na velikosti dostupné paměti. A ještě pozornější by mohl namítnout, že stačí nejprve naplnit registry hodnotami parametrů, a pak provést instrukci, která nalezne hodnoty operandů v registrech. I tak se to někdy dělá - 13 -
Informatika Modul 01 Počítačové a operační systémy mu. Tento typ chyb je důsledkem tzv. Von Neumannovy architektury počítače, kdy lze v téže operační paměti ukládat jak data, tak kódy instrukcí. Vzhledem k důležitosti dodnes používané koncepce geniálního matematika, uvedeme stručně její znění: Nověji až osm bajtů 64-bitové procesory Intel Itanium, AMD Opteron. A aby to nebylo tak jednoduché, i 32-bitový procesor Pentium 4 čte z paměti najednou 64 bitů. Počítač sestává z procesoru, paměti a vstupně výstupních zařízení. Struktura počítače je nezávislá na řešeném problému. Paměť sestává ze stejných buněk. Přístup k jejich obsahu se děje prostřednictvím adres buněk. Buňky paměti obsahují jak instrukce, tak data rozlišitelná pouze pomocí kontextu. Program sestává ze sekvence instrukcí vykonávaných postupně s výjimkou skoků. Adresy, instrukce i data jsou v počítači uložena v binární podobě. Moderní procesory v počítačích typu PC pracují s buňkami paměti, které obsahují čtyři bajty. V jednom instrukčním cyklu obdrží procesor tedy z operační paměti 32 bitů. Z toho rovněž plyne, že je výhodné, aby velikost registrů procesoru byla rovněž čtyřbajtová. Proto hovoříme o 32-bitových procesorech. 2.1.3 Komunikace procesoru s pamětí, vnitřní sběrnice, cache V počítači se komunikace (výměna informací) relativně nezávislých komponent realizuje prostřednictvím sběrnice (angl. bus). Zjednodušeně můžeme sběrnici považovat za množinu vodičů elektrických signálů doplněnou o komunikační protokol systém pravidel, které určují, jaký tvar signálů v jakém čase se může na sběrnici vyskytnout a jaký je jejich význam. Schéma vnitřní sběrnice, kterou komunikuje procesor s operační pamětí, může vypadat např. následovně: Interní sběrnice (bus) CPU RAM data adresa řízení Obr. 2.3 části vnitřní sběrnice Ve vyvolávací fázi instrukčního cyklu procesor nastaví na definovaných vodičích sběrnice adresu požadované buňky. Každý vodič přitom přenáší právě jeden bit. Hodnota bitu je definována úrovní elektrického napětí na vodiči. Máli tato část sběrnice 20 vodičů, lze na nich nastavit 2 20 možných adres, tj. paměť může mít maximálně 1 048 576 buněk. Buňky navíc by nebylo možné prostřednictvím sběrnice adresovat. Stav adresové části sběrnice tedy mění pouze procesor (je v roli vysilače), paměť tento stav pouze čte (role přijímače). Počet vodičů v této části sběrnice se nazývá šířka adresové části sběrnice. Například procesor Pentium III má šířku adresové sběrnice 32 bitů, horní mez kapacity operační paměti je tedy teoreticky 2 32 bajtů, tj. 4 GB. - 14 -
Konstrukce a struktury počítačového systému Z adresové části sběrnice si paměť přečte adresu, vyhledá obsah odpovídající buňky a nastaví na datových vodičích sběrnice jednotlivé bity obsahu buňky. Procesor v roli přijímače dat si tedy na datové části sběrnice přečte požadovaný obsah. Počet datových vodičů zpravidla odpovídá velikosti paměťové buňky, která může být přenesena v jednom instrukčním cyklu. 32-bitový procesor je tedy připojen ke sběrnici s šířkou datové části 32 bitů (např. procesor Pentium 4 má však pro urychlení tuto část sběrnice širokou 64 bitů, přesto používá 32-bitové registry, jedná se tedy o 32-bitový procesor). Při přesunových instrukcích procesor zapisuje do paměti data. Pak kromě nastavení adresy nastavuje i datovou část sběrnice. Vidíme, že adresová část sběrnice je jednosměrná, nastavuje ji vždy procesor, datová část je obousměrná, nastavuje ji podle typu přenosu paměť nebo procesor. Vodiče řídicí části sběrnice obsahují bity se specifickým významem. Řídí např. směr přenosu dat a zejména synchronizují komunikační partnery. Musíme si uvědomit, že komunikace se odehrává velkou rychlostí a signály na sběrnici se tudíž velmi rychle mění. Řídicí signály hrají stěžejní roli jako příznak, že bity na adresové, resp. datové části sběrnice jsou již nastaveny a ustáleny a lze je přečíst. Jiný příznak pak potvrdí, že informace již byla přečtena a lze ji nahradit novou informací. Pokud uvedené řídicí synchronizační příznaky na sběrnici nastavují komunikační partneři, nazývá se tento způsob komunikace asynchronní. Na vnitřní sběrnici se však používá synchronní způsob, kdy řídicí bity nenastavují komunikační partneři, ale nezávislé hodiny sběrnice. Signální příznaky jsou tudíž periodické a zařízení připojená ke sběrnici musí stihnout své povinnost vysilače, resp. přijímače v časových intervalech vymezených hodinami. Frekvence hodin vnitřní sběrnice je důležitým výkonovým parametrem počítače. Rychlost vnitřní sběrnice neodpovídá frekvenci vykonávaných instrukcí. Viděli jsme, že některé instrukce vyžadují více cyklů a naopak při dnešních šířkách sběrnice je možné kumulovat více operací do jednoho cyklu komunikace procesoru s pamětí. Navíc se uplatňuje mechanismus cache, který dovoluje, aby se obsah paměti dostal k procesoru rychleji. Vyrovnávací paměť (cache) procesoru je velmi rychlá paměť, s níž může procesor komunikovat mnohonásobně rychleji než se standardní operační pamětí. Je zkonstruovaná tak, aby se v době, kdy procesor provádí nebo dekóduje instrukce a nekomunikuje s pamětí, plnila obsahem blízkých adres operační paměti. V případě požadavku procesoru na paměť se informace přečte z cache, pouze v případě, že tam není přítomna (např. při instrukcích skoku), použije se přímá komunikace s operační pamětí. Cache je přítomna přímo na čipu procesoru a u moderních procesorů je její kapacita desítky kilobajtů (např. 64KB). Ve skutečnosti se obvykle používá cache dvou úrovní, výše uvedená integrovaná cache první úrovně L1 je menší a rychlejší, cache druhé úrovně L2 je realizována externí rychlou pamětí s kapacitou až 512 KB. V současnosti dosluhují vnitřní sběrnice s frekvencí hodin 66MHz a používají se rychlosti až 200 MHz. Rychlost sběrnice 800 MHz, která je inzerována u dražších základních desek s Pentiem 4, je taktována hodinami 200 MHz, avšak v jednom cyklu hodin mohou proběhnout až čtyři přenosy dat.. 2.2 Periferní zařízení Náš model počítače sice vysvětluje, co se odehrává v jeho hlavních komponentách mění se stav procesoru a operační paměti, avšak musíme mít k dispozici - 15 -
Informatika Modul 01 Počítačové a operační systémy mechanismus, jak tento stav sledovat a ovlivňovat. I představa běhu programu v podobě postupného vykonávání instrukcí uložených v operační paměti předpokládá, že existuje možnost efektivního naplnění paměti relevantními instrukcemi programem. Nástroje umožňující zasahovat do struktury procesor paměť a zpřístupňovat její stav nazýváme periferní zařízení (peripheral devices). Pro popis jeho činnosti opět zvolíme velmi zjednodušený model. Uvažujme nejprve klávesnici, pomocí které lze měnit nezávisle na procesoru obsah operační paměti. Pohyby kláves vytvářejí mechanickou informaci, která je pro hlavní komponenty počítače neakceptovatelná. Proto musí existovat měnič informace specifické pro periferní zařízení na binární formu kompatibilní s obsahem paměti. Toto zařízení se nazývá řadič (také adaptér, resp. controller). RAM CPU Řadič Řadič Obr. 2.4 model připojení periferních zařízení Představme si, že v našem modelu řadič klávesnice převede stisknutí klávesy na obsah bajtu tak, že pro každou klávesu je tento obsah jiný. Zároveň je řadič schopen zapsat tento bajt do paměti na pevně stanovenou adresu. Aby bylo možné tímto způsobem ovlivnit stav počítače, musí v něm probíhat program, který občas vyhodnotí data z pevně stanovené adresy vyhrazené pro klávesnici. Fragment programu, který zjistí, zda se na klávesnici něco změnilo (obvykle speciální podprogram) nazýváme ovladač (driver). Klávesnice je vstupní zařízení (input device). Produkuje informace, která vstupují zvnějšku do systému počítače. Příkladem výstupního periferního zařízení (output device) může být monitor. Informuje nás o stavu počítače, aniž by do něj zasahoval. Optická informace poskytovaná monitorem opět vyžaduje řadič (grafický adaptér), který tentokrát pracuje obráceně: obsahy bajtů na pevně stanovených adresách paměti mění na znaky vykreslované monitorem, nebo na barvu jednotlivých bodů na obrazovce podle stanovených pravidel. Zatímco pro klávesnici nám stačí vyhradit jeden nebo několik málo bajtů, jejichž obsah odpovídá mechanické činnosti na klávesnici, k poskytování grafické informace potřebujeme podstatně vyšší kapacitu paměti. V nejčastěji používaném modelu odpovídá barvě jednoho bodu (pixelu) na obrazovce trojice bajtů tak, že mezi souřadnicemi pixelu a adresou této trojice je jednoznačný vztah. Ovladač (grafický driver) monitoru pak musí naplnit značně velkou část paměti obsahem, který řadič neustále graficky interpretuje. - 16 -
Konstrukce a struktury počítačového systému Příkladem vstupně výstupního zařízení je disková paměť. Permanentní magnetickou informaci na povrchu disku převádí řadič na binární informaci, kterou lze zapsat do paměti. Probíhat však může i opačný přenos zápisu informace z paměti na magnetické médium. Toto zařízení je však v dnešní době pro počítače natolik důležité, že se mu budeme věnovat v samostatné kapitole. 2.2.1 Vstupně výstupní sběrnice a porty Uvedený model periferních zařízení je velmi hrubý. Komunikace řadičů s operační pamětí by v tomto modelu byla značně problematická, nesměla by totiž ovlivňovat přístup procesoru k paměti. Navíc musí existovat možnost komunikace procesoru s řadičem tak, aby bylo možné činnost řadiče kontrolovat a konfigurovat. Proto obsahuje počítač ještě jeden druh paměti, která je připojena k procesoru prostřednictvím tzv. vstupně výstupní sběrnice (I/O bus). Sběrnice má rovněž adresovou, datovou a řídicí část, rozdíl však tkví v realizaci paměti, která je k ní připojena. Jednotlivé buňky paměti se nazývají I/O porty a jsou realizovány přímo na řadičích periferních zařízení. Tato paměť neobsahuje samozřejmě instrukce pro procesor, je určena pouze pro data. Data lze přenášet mezi porty a registry procesoru prostřednictvím vstupně výstupních instrukcí, které již byly zmíněny. Adresový prostor této paměti nemusí být souvislý, požadovaná adresa portu je součástí I/O instrukce. Obr. 2.5 I/O porty obsazené řadičem klávesnice v PC 2.2.2 Mechanismus přerušení Každé periferní zařízení je tedy připojeno k počítači prostřednictvím řadiče, který pracuje paralelně s procesorem. Data získaná z periferního zařízení si vstupní řadič ukládá do lokální paměti (I/O portů), k nimž má procesor přístup prostřednictvím I/O sběrnice a I/O instrukcí. Naopak výstupní řadič předává na výstupní zařízení informaci vytvořenou z dat, kterou zapsal procesor do jeho I/O portů. Vzhledem k tomu, že řadiče a periferní zařízení pracují relativně nezávisle na procesoru, je třeba vyřešit problém synchronizace uvedených komponent. Obvykle je periferní zařízení daleko pomalejší než procesor. V případě vstupu z klávesnice by např. program musel neustále sledovat porty klávesnice, zda již neobsahují potřebnou informaci (i takové řešení tzv. čekací smyčka je někdy potřebné). Daleko efektivnější je však nechat procesor vykonávat program a informovat ho až v okamžiku, kdy má data k dispozici. K tomu slouží tzv. mechanismus přerušení: - 17 -
Informatika Modul 01 Počítačové a operační systémy 1. Řadič informuje procesor požadavkem na přerušení (interrupt request IRQ). Procesor identifikuje řadič, který žádá o přerušení, prostřednictvím speciálního čísla, unikátního pro každý řadič v počítači. 2. Procesor provede instrukci skoku do speciálního obslužného podprogramu (driveru), jehož adresa je uložena v paměti v tzv. tabulce přerušení (každému číslu přerušení odpovídá adresa driveru). 3. Procesor vykoná obslužný podprogram zařízení (např. přečte data z I/O portu, vyhodnotí, zda při operaci se zařízením nedošlo k chybě, výsledek zapíše do operační paměti). 4. Procesor pokračuje v původně prováděném programu. Procesor i I/O sběrnice jsou samozřejmě zkonstruovány tak, aby měl celý postup vydatnou technickou podporu. Jak tabulka přerušení, tak obslužné drivery zařízení, jsou součástí operačního systému. Uživatelské programy tedy při používání periferních zařízení využívají operační systém. Obr. 2.6 příklad přiřazení čísel přerušení řadičům v PC Samozřejmě je možné speciálními instrukcemi přerušení činnosti procesoru od libovolného řadiče v případě potřeby zablokovat. Například může být nevhodné přerušit provádění obslužného driveru jiného nebo dokonce téhož zařízení. 2.2.3 Mechanismus přímého přístupu do paměti Přímý přístup do paměti (DMA Direct Memory Access) umožňuje řadiči zapisovat/číst přímo do/z operační paměti větší množství dat bez účasti procesoru podle modelu na obr. 2.4. Tato operace však často není příliš výhodná, neboť v době transportu dat nemá procesor k paměti potřebný přístup a navíc vyžaduje spoluúčast speciálního řadiče DMA. Schematicky pracuje tento mechanismus např. u floppy disku následovně: 1. Driver zařízení nastaví řadič floppy disku (prostřednictvím jeho portů) na přenos n bajtů dat ze specifikovaného místa disku do paměti od specifikované adresy A. 2. Řadič disku nastaví řadič DMA do potřebného režimu přenosu n bajtů od adresy A. - 18 -
Konstrukce a struktury počítačového systému 3. Řadič disku zasílá jednotlivé bajty dat z disku řadiči DMA. 4. Řadič DMA ukládá data do operační paměti, jejíž adresu od A postupně zvyšuje. 5. Po přenesení n bajtů vyvolá řadič DMA přerušení, aby informoval procesor o skončení operace. Uvedený mechanismus se vzhledem ke komplikovanosti a zranitelnosti používá pouze u některých zařízení. Řadič, který hodlá přenos DMA používat, musí mít přiřazeno rovněž unikátní číslo DMA, které ho při přenosu identifikuje. Obr. 2.7 příklad přiřazení čísel DMA řadičům v PC Vidíme, že v běžném PC používá DMA mechanismus relativně málo zařízení, dlouho nebyl výhodný ani v případě přenosu dat z běžných pevných disků. V současné době se však u pevných disků již opět používá přímý přístup do paměti pomocí tzv. rozhraní Ultra DMA (někdy také Ultra ATA viz dále). 2.2.4 Programová obsluha zařízení V moderních operačních systémech je přímý přístup z uživatelských programů k periferním zařízením zakázán. Pokud potřebuje program provést vstup nebo výstup dat na zařízení, provede skok do speciálního podprogramu volá službu operačního systému. Operační systém vyhodnotí požadavek, nastaví řadič požadovaného zařízení pro příslušnou operaci a vrátí řízení zpět uživatelskému programu. Při přerušení signalizujícím, že požadovaná operace skončila, je vyvolán obslužný driver, který zajistí přesun například dat z portů řadiče zařízení na požadované místo v paměti, kde jsou k dispozici uživatelskému programu. Vidíme, že obsluha zařízení může mít dvě fáze přípravnou, která operaci zahájí, a obsluhu přerušení. Obě lze považovat za součástí driveru ovladače zařízení. Obsluha zařízení může být dvojího typu: Synchronní při požadavku programu na operaci s periferním zařízením je řízení předáno operačnímu systému, který vrátí řízení zpět až po dokončení operace. Asynchronní při požadavku programu na operaci s periferním zařízením je řízení předáno operačnímu systému, který vrátí řízení zpět ihned - 19 -
Informatika Modul 01 Počítačové a operační systémy po přípravné fázi. Dokončení operace proběhne již nezávisle na programu, který požadavek vyvolal. 2.3 Paměťové struktury V počítači používáme řadu různých koncepčních typů pamětí. Setkali jsme se již s hlavní operační pamětí, s registry procesoru, dvěma úrovněmi cache, I/O porty. Uvedené paměti jsou závislé na elektrické energii (volatile memory), po vypnutí počítače se jejich obsah ztrácí. Jsou rychlé, spolehlivé (neobsahují zranitelné mechanické součásti) a drahé. Proto jsou pro permanentí ukládání velkého množství dat dosud používány periferní paměti, zejména v podobě magnetických disků. Připomínáme, že disk je tvořen jednou nebo více pevnými kovovými nebo skleněnými plotnami pokrytými tenkou vrstvou magnetického záznamového materiálu. Informace na disku je organizována do stop a sektorů, při více površích také cylindrů. Informace mezi operační pamětí a diskem je vždy přenášena prostřednictvím řadiče po celých sektorech, které obvykle obsahují 512 bajtů. Obr. 2.8 Schéma diskové paměti Vidíme, že všechny hlavičky disku jsou navzájem pevně spojeny, takže se všechny nacházejí nad stejnou stopou různých povrchů (cylindr). Pro rychlý přenos dat z/do požadovaných sektorů je pak velmi důležitý algoritmus, který určí, v jakém pořadí se budou požadované sektory vyhledávat tak, aby byl přesun hlaviček minimální. Součástí moderních disků je rovněž disková cache elektronická vyrovnávací paměť, která je plněna obsahem sektorů, které budou pravděpodobně požadovány v blízké budoucnosti. Typy pamětí lze klasifikovat např. podle rychlosti přenosu dat k procesoru, ceny, stálosti uložených dat. V tomto smyslu pak následující obrázek znázorňuje hierarchii paměťových struktur v počítači. - 20 -