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
Textový editor
Uživatel 2
Databázový systém
Uživatel n
…
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. Adresa 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ě.
Obsah
00000000
01001011
00000001
10000010
00000010
01001111
00000011
10101011
00000100
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 28 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.
1
1
0
1
1
0
0
1
D
9
Snadnost vyjádření obsahu bajtu v šestnáctkové soustavě ilustruje obrázek. Předpokládáme, že čtenář je obeznámen s vyjádřením čísla v různých soustavách, zde např. 11011001BIN=D9HEX=217DEC=331OCT
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
Řídicí jednotka registr stavu registr zásobníku
operační paměť
data
Aritmetickologická jednotka registr n registr C registr B registr A
registr instrukcí
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é-
- 13 -
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á…
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í: • 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ě. 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ů.
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)
RAM
CPU
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 220 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 232 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.
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 -
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..
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).
CPU
RAM
Ř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 -
Registry Cache L1 Cache L2 Operační paměť
Kapacita
Rychlost, cena
Konstrukce a struktury počítačového systému
Elektr. (flash) disk Magnetický disk Optický disk Magnetická páska
Obr. 2.9 – klasifikace typů pamětí v počítači
2.4
Mechanismy ochrany
S výkonnějšími počítači jsou provozovány stále složitější operační systémy, které umožňují sdílet zdroje počítače více programům i uživatelům. Přitom je třeba zajistit ochranu běžících procesů před jinými tak, aby nedošlo k narušení jejich běhu nebo ke ztrátě citlivých dat, s nimiž pracují. Tato ochrana má technickou podporu zejména v konstrukci moderních procesorů. Ta umožňuje činnost procesoru minimálně ve dvou režimech: uživatelském a systémovém (režimu jádra). Procesor lze přepnout ze systémového režimu do uživatelského speciálními instrukcemi, avšak přerušení vyvolané řadičem zařízení, chybou nebo časovačem automaticky přepíná procesor zpět do systémového režimu. Dále existuje množina tzv. privilegovaných instrukcí, které lze provádět pouze v systémovém režimu procesoru. Všechny I/O instrukce patří automaticky k privilegovaným – pak není možné z uživatelských programů měnit konfiguraci počítače a pracovat s periferními zařízeními bez dohledu operačního systému. Zároveň nelze žádným způsobem z programu v uživatelském režimu získat privilegia režimu jádra. Dále jsou v procesoru přítomny bezpečnostní registry vymezující počáteční adresu a velikost paměti, kterou může program v uživatelském režimu používat. Pokus o překročení tohoto rozsahu skončí chybovým přerušením, které vrátí řízení operačnímu systému. Instrukce pro nastavení registrů vymezujících rozsah použitelné paměti jsou rovněž privilegované a nelze je v uživatelském režimu použít. V režimu jádra lze používat veškerou dostupnou paměť a privilegované instrukce. Vidíme, že vlastnosti procesoru jsou dnes velmi sofistikovaně propojeny s požadovanými vlastnostmi a službami operačních systémů. Firmy zabývající se vývojem technických prostředků tam musí úzce spolupracovat s renomovanými softwarovými firmami. Tato symbióza je velmi důležitá a urychluje celkový vývoj.
- 21 -
Informatika • Modul 01 • Počítačové a operační systémy
Zároveň získáváme představu o filozofii moderního operačního systému. Je zodpovědný za spuštění uživatelského programu v uživatelském režimu procesoru, přiděluje mu potřebnou paměť, kde nemůže dojít ke kolizi s programy a daty jiných uživatelů a citlivé operace provádí sám na požadavek ze strany programů – může tak vyhodnotit oprávněnost požadavku a případně ho zamítnout.
2.5
Architektura osobních počítačů
Osobní počítače PC byly uvedeny na trh v roce 1981 firmou IBM a zhruba po pěti letech se staly standardem a vytlačily většinu ostatních modelů obdobné třídy. Jejich úspěch byl dán zejména následujícími faktory: • • •
standardizovaná otevřená architektura dobrá dokumentace a možnosti technického rozšiřování relativně nízká cena, jednoduchost a robustnost
Počítač byl založen na procesoru Intel 8088 a použit byl jednoduchý operační systém firmy Microsoft MS–DOS. Vzhledem k otevřenosti architektury a dostupné dokumentaci začaly jiné firmy produkovat funkční klony, které dostaly odlišné názvy a umožnily bouřlivý rozvoj původní architektury až do dnešní podoby. Moderní PC je velmi vzdálené od původního modelu jak výkonem, tak architekturou, zde shrneme pouze některé aspekty doplňující výše uvedený obecný text. Základem PC je základní deska (main board), které obsahuje zejména patici pro procesor, konektory pro moduly operační paměti a řadiče zařízení a mnoho vestavěných obvodů, které jsou realizovány tzv. čipovou sadou (chip set). Ta pak určuje základní vlastnosti celé sestavy. Formát základní desky je standardizován (dnes standard ATX) tak, aby bylo možno nezávisle vyrábět různá šasi ATX s napájecím zdrojem a prostorem pro vnější konektory počítače a mechaniky disků. Čipová sada prostřednictvím několika integrovaných obvodů realizuje zejména komunikaci mezi hlavními komponentami počítač, tj. prakticky všechny sběrnice a podpůrné obvody.
2.5.1
Vnitřní a vnější sběrnice
Tradičně byly v počítačích typu PC I/O sběrnice (kterých je vždy více) odvozeny z vnitřní sběrnice počítače (někdy též FSB – Front Side Bus) pomocí speciálních řadičů sběrnice podle níže uvedeného schématu.
- 22 -
Konstrukce a struktury počítačového systému
RAM
L2 Cache
Zařízení
Řadič
Vnitřní sběrnice Řadič I/O sběrnice
I/O sběrnice
CPU
Zařízení
Řadič
Obr. 2. 10 – schéma architektury sbedniv v PC V dnešní době jsou často I/O sběrnice prakticky rovnocenné s vnitřní (systémovou) sběrnicí, každá je pak realizována prostřednictvím speciálního řadiče (součástí čipové sady), který kontroluje dodržování pravidel signálů na sběrnici. Poměrně dlouho byly hodiny systémové sběrnice stejně rychlé jako procesor. Počínaje procesorem Intel 80486DX2 však pracuje procesor na mnohem vyšších frekvencích než sběrnice. Zatímco jsou dnešní systémové sběrnice taktovány na frekvenci až 200 MHz, procesory dnes dosahují rychlostí více než 3 GHz. Až do roku 1987 byla rovněž činnost vnitřní a I/O sběrnice taktována stejnými hodinami. Po nástupu většího počtu I/O sběrnic jsou již jejich frekvence, a tedy i přenosová rychlost, odlišné. U moderních PC se setkáváme obvykle s následujícími I/O sběrnicemi: •
ISA (Industry Standard Architecture) – nejstarší, šířka datové části je 16 bitů, maximální přenosová rychlost 8 MB/s. Vnitřně se používá například pro připojení klávesnice, disketové mechaniky a vytvoření standardního sériového a paralelního rozhraní počítače. Vnější tvář ISA tvoří rozšiřující konektory na základní desce pro připojení řadičů periferních zařízení – u novějších modelů již vesměs absentují. Vzhledem k nízké rychlosti a žádné inteligenci je nahrazována například sběrnicí USB a moderní čipové sady ji již neobsahují.
•
PCI (Peripheral Component Interconnect) – představuje standard zejména pro připojení disků, síťových adaptérů a dalších zařízení vyžadující velký objem přenášených dat. Šířka datové části je standardně 32 bitů, frekvence hodin 33 MHz, maximální (teoretická) přenosová rychlost je tedy 132 MB/s. Sběrnice je charakteristická tím, že adresová a datová část je tzv. multiplexovaná, tj. tvořena stejnými vodiči a význam signálů se liší podle kontextu. V jedné fázi hodin je na těchto vodičích adresa, ve druhé data. Dalším charakteristickým znakem je tzv. burst režim, kdy je odeslána pouze počáteční adresa a následuje blok dat, přičemž přijímací zařízení si data automaticky ukládá do posloupnosti adres počínaje startovací adresou.
- 23 -
Informatika • Modul 01 • Počítačové a operační systémy
Dvě zařízení připojená ke sběrnici si mohou vyměňovat data i bez účasti procesoru, univerzálnost sběrnice přispěla k tomu, že je používána i v jiných typech počítačů než PC. Inteligence sběrnice umožňuje využívat technologii Plug and Play (PnP) – připojené adaptéry se automaticky přizpůsobují prostředí po připojení ke sběrnici. V současných PC je sběrnice použita částečně pro interní vytvoření dvou kanálů tzv. rozhraní EIDE pro připojení až čtyř pevných disků, vnější část je tvořena konektory PCI pro řadiče dalších periferních zařízení. Sběrnice PCI používá obdobu přímého přístupu do paměti nazývanou bus mastering. Tento mechanismus se u novějších disků vydatně používá pod označením Ultra DMA. Sběrnice PCI prodělává evoluční vývoj – dnes používaná specifikace PCI 2.2 umožňuje datovou (a tedy i adresovou) část sběrnice širokou 64 bitů a používá se i vyšší frekvence (66 Mhz). Přenosová rychlost sběrnice PCI–64/66 je pak teoreticky až 528 MB/s. Nový návrh standardu představuje sběrnice PCI-X, která umožňuje například přenosovou rychlost až 1 GB/s. Sběrnice typu PCI–Express je další nový standard dnes osazovaný v dražších modelech PC pod označením PCIe. Má nahradit sběrnici PCI a AGP a přinést další zvýšení přenosové rychlosti a sjednocení I/O sběrnic v PC. •
AGP (Accelerated Graphics Port) – používána výhradně pro připojení grafických adaptérů (řadičů displeje). Jejím úkolem je uvolnit sběrnici PCI od neustálého přenášení velkého množství grafických dat. Poprvé byla uvedena v roce 1997. Vychází ze standardu sběrnice PCI, postupně však byla zrychlena pomocí vyšší taktovací frekvence (často se setkáme s označením AGP 4x, resp. AGP 8x, což označuje násobek přenosové rychlosti oproti původnímu standardu). V současné době je přenosová rychlost sběrnice AGP až 2 GB/s.
•
USB (Universal Serial Bus) – novější standard pro připojování externích zařízení. Současná verze 2.0 má přenosovou rychlost až 40 MB/s, což umožňuje připojit nejen klávesnici, myš, ale i zařízení s většími nároky na přenosovou kapacitu jako je např. externí elektronický disk (flash disk).
Existuje samozřejmě celá řada dalších, méně používaných typů sběrnic (např. SCSI, HP-IB apod.), které jsou osazovány do strojů speciálního určení. Uvedené sběrnice jsou vesměs realizovány pomocí čipové sady, která kromě celkové architektury PC zahrnuje často rovněž integrované grafické, zvukové a síťové adaptéry, tj. často se vyskytující řadiče v počítačové sestavě. Ve vývoji a produkci čipových sad panuje vysoká konkurence, proto se na trhu vyskytuje velké množství typů s různým stupněm integrace a relativně vzhledem k jejich složitosti velmi nízkou cenou. Hlavní producenti čipových sad jsou dnes například společnosti Intel, SiS, ServerWorks, VIA, ALi, nVidia aj.
- 24 -
Konstrukce a struktury počítačového systému
2.5.2
Procesory
Procesory PC jsou tradičně spjaty zejména s firmou Intel, která zahájila svůj vývoj v roce 1971 čtyřbitovým procesorem 4004. Procesor Intel 8088 se stal základem prvních PC a od té doby se vystřídalo více generací těchto procesorů. Intel není v současnosti jediným výrobcem procesorů pro PC (největším konkurentem je AMD), je však zdaleka největším a obvykle svými inovacemi udává budoucí trend. PC 1. generace 2. generace 3. generace 4. generace 5. generace
Pokročilá 5. generace 6. generace
Pokročilá 6. generace
7. generace 8. generace
Procesory 8088 80286 80386DX, 80386SX 80486SX, 80486DX 80486DX2, 80486DX4 Pentium Cyrix 6X86 AMD K5 IDT WinChip C6 Pentium MMX IBM/Cyrix 6x86MX IDT WinChip2 3D Pentium Pro AMD K6 Pentium II AMD K6-2 Mobile Pentium II Mobile Celeron Pentium III AMD K6-3 Pentium III CuMine AMD original Athlon AMD Athlon Thunderbird Pentium 4 Intel Itanium AMD Opteron
Rok 1978-81 1984 1987-88 1990-92
Počet tranzistorů 29 000 134 000 275 000 1 200 000
1993-95 1996 1996 1997 1997 1997 1998 1995 1997 1997 1998 1999
3 100 000 2 500 000 2 500 000 3 500 000 4 500 000 6 000 000 6 000 000 5 500 000 8 800 000 7 500 000 9 300 000 27 400 000 18 900 000 9 300 000 8 000 000 28 000 000 22 000 000 37 000 000 42 000 000
1999 2000 2001 64-bitové procesory
Obr. 2.11 – přehled generací procesorů pro PC a jejich integrace Procesory v jednotlivých generacích musí udržovat zpětnou kompatibilitu, tj. kromě vyššího výkony (rychlosti) a nových instrukcí musí z pochopitelných důvodů podporovat instrukce předcházející generace, jinak by na nich nebylo možné provozovat již vytvořené programy. Kromě evolučních změn týkajících zvyšování rychlosti prošel vývoj procesorů pro PC několika klíčovými změnami: ve třetí generaci nastoupily 32-bitové procesory s šířkou datové části systémové sběrnice 32-bitů a 32-bitovými registry, rovněž adresová část sběrnice byla rozšířena na 32 bitů, což umožnilo adresovat paměť až 4 GB. U procesorů páté generace byla rozšířena datová část sběrnice dokonce na 64 bitů. Od čtvrté generace byla rovněž opuštěna koncepce stejných hodin procesoru a systémové sběrnice, a tak mohla být rych-
- 25 -
Informatika • Modul 01 • Počítačové a operační systémy
lost procesorů rychle zvyšována nezávisle na zvyšování rychlosti sběrnice a operační paměti. Původní modely PC pracovaly s procesorem, který používal aritmetické instrukce pouze pro práci s celými čísly. Operace s reálnými čísly (v pohyblivou desetinnou čárkou) musely být vykonány programem pomocí posloupností jiných instrukcí. Sestavu PC bylo možné doplnit tzv. matematickým koprocesorem, který prováděl aritmetické instrukce nad reálnými čísly uloženými s různou přesností (samozřejmě rovněž kódovanými v binární celočíselné soustavě). Od čtvrté generace byl koprocesor vestavěn do základního procesoru a jako takový zanikl. Zhruba lze říci, že teplo vyzářené procesorem je úměrné frekvenci a počtu tranzistorů. Při dnešních hodnotách by čip nevydržel teplo, které produkuje, musí proto nastoupit účinné chlazení.
V páté generaci bylo rovněž změněno napájení 5V na příznivější hodnotu z hlediska chlazení 3.3V (vnitřně moderní procesory používají napájení dokonce nižší než 1.5V). Začala být podporována systémová sběrnice s frekvencí 66 MHz. Ve vylepšené páté generaci se objevilo 57 nových instrukcí a osm 64-bitových registrů určených zejména pro podporu grafických operací (MMX). Procesory se nicméně dále považují za 32-bitové. Zrychlování procesorů se dosahuje nejen zvyšováním frekvence hodin, ale také paralelním zpracováním instrukcí. Celý proces instrukčního cyklu je rozdělen na fáze tak, že procesor vykonává jednu fázi jedné instrukce, ale zároveň také jinou fázi již další instrukce (pipelined technology). U Pentia 4 je definováno až 20 stavů zpracování instrukce tak, aby je bylo možno zpracovávat odděleně. Procesor tak vlastně zpracovává několik instrukcí paralelně.
Vylepšování procesorů neznamená, že jsou jejich nové vlastnosti také využity. Novým instrukcím a registrům se přizpůsobují programové produkty a operační systém jen velmi pomalu.
V pokročilé šesté generaci dochází k další podstatné změně: do procesoru byly přidány 128-bitové registry a 50 nových instrukcí pro práci s nimi (technologie SSE) – vylepšení bylo určeno pro podporu operací nad reálnými čísly, což se projevilo opět zejména v urychlení programů s pokročilou grafikou. Stejně tak přibylo osm nových instrukcí pro lepší ovládání paměti cache druhé úrovně. Vše bylo podřízeno zejména možnosti přehrávání a zpracování videa. V sedmé generaci se šířka sběrnice procesoru zvýšila na 128 bitů. Pro podporu SSE technologie bylo přidáno dalších 144 instrukcí (SSE2). Objevila se instrukční podpora programových nástrojů pro Internet. V současnosti začíná nástup PC s plně 64-bitovými procesory. Jejich využití však vyžaduje vytvoření nových programových produktů a překonání cenové bariéry masovou výrobou.
Příliš malé struktury však v blízké budoucnosti přinesou problémy kvantově–fyzikálního rázu a bude zřejmě nutné přejít na zcela jiné fyzikální principy.
Z tabulky na obr. 3.11 vidíme, že se vzrůstající složitostí procesorů roste rovněž počet tranzistorů na čipu. Rozměry čipů však kvůli rychlosti a ceně nelze zvětšovat, a tak bylo třeba zvyšovat hustotu integrace. Jejím ukazatelem je tzv. šířka litografické čáry, pomocí níž jsou na křemíkovém čipu vytvářeny polovodičové struktury. Zatímco procesory původních PC byly vytvářeny pomocí šířky 1 μm, v procesorech Pentium 4 již musí být používána šířka čáry 0,13 μm, nové modely Pentia 4 (s označením Prescott) jsou vytvářeny již dokonce technologií 90 nm. Zatím však již dlouhou dobu platí tzv. Mooreův zákon, který empiricky konstatuje, že každých 18 měsíců se zdvojnásobuje počet tranzistorů na čipu a tím
- 26 -
Konstrukce a struktury počítačového systému
i jeho výkon. Touto rychlostí by bylo dosaženo struktur na úrovni atomů někdy kolem roku 2020.
2.5.3
Operační paměť
Původní PC byla osazována pamětí s kapacitou desítek až stovek kilobajtů. Postupně se dosáhlo kapacity 1MB, což bylo maximum adresovatelné 20bitovou adresovou částí sběrnice původních procesorů. V současnosti jsou běžná PC často osazena operační pamětí 1GB i více. Principiálně lze rozdělit fyzickou elektronickou paměť na statickou (SRAM) a dynamickou (DRAM). Ve statické paměti je hodnota každého bitu stabilní – uchována speciálním dvojstavovým elektronickým obvodem. Dynamická paměť uchovává hodnotu bitu v podobě kapacitního náboje, který se časem vybíjí a je třeba ho v pravidelných intervalech obnovovat (refresh rate). Statická paměť je rychlá a drahá, a proto se používá zejména v malých pamětech typu cache. Operační paměť bývá realizována dynamicky obvody typu DRAM. V současné době je operační paměť realizována pomocí modulů osazených paměťovými čipy – moduly se zasouvají do speciálních konektorů na základní desce, která určuje jejich typ. Původní moduly FPM (Fast Page Mode) a EDO (Extended Data Out) byly nahrazeny rychlejšími moduly SDRAM (Synchronous DRAM), které dokážou zpracovávat požadavky procesoru synchronně v paralelních etapách. Zatímco je obsah buňky paměti posílán na sběrnici, jsou již připravována další data. Moduly SDRAM jsou uspořádány do standardu DIMM (Dual Inline Memory Module), který má 168 pinů na konektoru a obsahuje v buňce 64 bitů.
Obr. 2.12 – modul DIMM na základní desce Vybavovací doba modulů DIMM dnes dosahuje 7 ns a kapacita 512 MB. Pro 64-bitovou datovou vnitřní sběrnici můžeme osadit jeden modul DIMM. U procesorů se 128-bitovou sběrnicí však musíme použít vždy pár identických modulů. Stejné pravidlo platilo u procesorů s 64-bitovou datovou sběrnicí a 32bitovými moduly SIMM.
- 27 -
Není to mnoho let, kdy dokonce Bill Gates prohlásil, že s jedním megabajtem paměti v PC máme k dispozici kapacitu, která patrně nikdy nebude plně využita.
Rychlost paměti je indikována tzv. vybavovací dobou mezi dodáním adresy a poskytnutím dat.
Starší moduly SIMM (Single Inline Memory module) obsahovaly 16-bitové buňky (30-pinový konektor), posléze 32-bitové (72-pinový konektor) a v současné době se již nepoužívají.
Informatika • Modul 01 • Počítačové a operační systémy
Zatímco se za posledních 10 let rychlost procesorů zvýšila 200-krát, rychlost pamětí stoupá řádově pomaleji. Vnitřní sběrnice taktovaná na frekvenci 133 MHz tak potřebuje paměťové čipy s vybavovací dobou max. 7,5 ns. Moduly taktované uvedenou frekvencí vyhovují tzv. standardu PC133, kterým se často označují. Další zrychlení pamětí představují moduly DDR RAM (Double Data Rate RAM). Tyto paměti vycházejí z SDRAM, avšak poskytují data dvojnásobnou rychlostí (při každé hraně taktovacího signálu sběrnice). Bohužel, moduly tohoto typu nejsou kompatibilní se standardem SDRAM (mají konektor se 184 piny) a vyžadují tedy jiné základní desky s jinou čipovou sadou.
Podstatně odlišnou technologii představuje RAMBUS RAM (v modulech RIMM – Rambus Inline Memory Module označovaných také RDRAM). Ta se však zatím příliš neprosadila, přestože do ní vkládala velké naděje zejména firma Intel.
Dnes se můžeme setkat s moduly DDR200 (také standard PC1600), DDR266 (PC2100), DDR333 (PC2600), DDR400 (PC3200), DDR533 (PC4300), kde číslo u komerčního značení označuje maximální frekvenci modulu, což je dvojnásobek hodin sběrnice. Modul PC3200 umožňuje například teoretickou přenosovou rychlost 400 MHz x 64 bit = 3,2 GB/s při rychlosti vnitřní sběrnice 200 MHz. Pro šířku datové sběrnice 128 bitů v tzv. Dual Channel režimu je pak přenosová rychlost dvojnásobná, tj. 6,4 GB/s, což představuje v současné době optimální hodnotu, odpovídající taktování vnitřní sběrnice až 800 MHz. Režim Dual Channel musí být podporován čipovou sadou, speciálními párovými moduly DDR a samozřejmě procesorem. Standard DDR2 je představován moduly s 240-pinovým konektorem. Další technická vylepšení umožňují zejména snížení spotřeby a vyšší rychlost (teoreticky až dvojnásobnou). Přes určité obtíže s časováním modulů je tento druh paměti již osazován u dražších základních desek.
2.5.4
BIOS
Po zapnutí počítače musí být okamžitě k dispozici množina instrukcí, které začne procesor vykonávat. Operační paměť však po zapnutí nemá definovaný obsah. Proto je na základní desce uložen v pamětech typu ROM (Read Only Memory) pevný program BIOS (Basic Input Output System), který je vytvořen pro konfiguraci základní desky a její čipovou sadu. V současnosti jsou tyto programy již tak rozsáhlé, že existuje několik firem specializujících se na jeho tvorbu (Phoenix, AMI – Američan Megatrends, Award aj.). Po spuštění počítače je tedy procesor nastaven tak, aby prováděl BIOS, který nejprve vykoná základní test funkčnosti komponent systému a umožní uživateli nastavení konfigurovatelných vlastností základní desky (BIOS Setup). Nastavená konfigurace se ukládá do speciální neprchavé paměti (CMOS) napájené baterií. BIOS je vytvořen tak, aby mohl pokračovat programy uloženými v ROM pamětech přítomnými na připojených řadičích (zejména diskových typu SCSI, nebo pokročilých grafických adaptérů). Tím je umožněna uživatelská konfigurace i periferních zařízení. Hlavní úlohou BIOSu je však nalezení a spuštění zavlékacího programu pro operační systém (Bootstrap Loader). Tento je obvykle uložen ve speciálním záznamu na definovaném sektoru připojeného disku (MBR – Master Boot Record). Zavlékací program pak zatáhne do paměti vlastní zavaděč operačního systému a předá mu řízení. Tato vícestupňová technika umožňuje vytvářet operační systémy s jejich vlastními zaváděcími programy.
- 28 -
Konstrukce a struktury počítačového systému
BIOS základní desky a některých řadičů obsahuje většinou i ovladače pro přítomné komponenty (tzv. firmware) tak, aby bylo možno se zařízeními pracovat i bez přítomnosti dalších programů (zejména operačního systému). Nutno však říci, že tyto ovladače se mnohdy nepoužívají, operační systémy obsahují své – často efektivnější – ovladače.
2.5.5
Diskové paměti
Současné pevné disky sestávají z několika málo povrchů nad kterými se pohybují synchronně čtecí/záznamové magnetické hlavičky. Rychlost otáčení disků se posouvá od 5400 ot./min (rpm – rotations per minute) k současným 7200 rmp až po 10 000 rpm u dražších disků. Speciální disky SCSI určené zejména pro servery dnes mívají i 15 000 rpm. Disky jsou vesměs vybaveny vyrovnávací pamětí cache, jejíž velikost značně ovlivňuje základní parametry disku: střední přístupovou dobu (average seek time), která závisí na rychlosti, s níž se hlavičky pohybují mezi jednotlivými stopami (těch bývá několik tisíc) a střední přenosovou rychlost (transfer speed), která určuje objem dat zapsaných, resp. přečtených za jednotku času. Přístupové doby se dnes pohybují v rozsahu 14–7 ms, přenosová rychlost 60– 133 MB/s, velikost cache paměti na disku bývá do 10 MB, kapacita dnešních běžných disků se pohybuje v oblasti 80–200 GB. Rozhraní, kterým se dnes disky připojují zejména ke sběrnici PCI, se nazývá EIDE (Enhanced Integrated Device Electronics) a je velmi jednoduché. Řadič disku, který řídí vystavování hlav, čtení a zápis sektorů a komunikaci se sběrnicí, je totiž umístěn přímo na jednotce disku. Řadič EIDE rozhraní připojen k PCI sběrnici je realizován čipovou sadou na základní desce a vytváří možnost připojení až čtyř EIDE zařízení: (pevné disky, CD-ROM/RW, DVD, ZIP mechaniky apod.). EIDE je tvořeno dvěma kanály, na každé z nich mohou být dvě zařízení, jedno v tzv. režimu master, druhé v režimu slave. Jednotlivá zařízení připojená k rozhraní mohou pracovat v několika režimech definovaných tzv. protokolem EIDE. Každý režim však musí být podporován jak čipovou sadou, tak samotným diskem, který obsahuje vlastní řadič. Režimy jsou kompatibilní shora, takže zařízení schopné provozu v daném režimu pracuje i ve všech nižších režimech. Na jednom kanálu EIDE může být nastaven pouze jeden režim. V případě připojení dvou různě rychlých disků je pak třeba zvolit režim pomalejšího z nich. Novější disky vesměs mohou využívat velmi efektivní mechanismus DMA, které nabízí sběrnice PCI a které nezatěžuje procesor. Protokol EIDE
Rok uvedení
Přenosová rychlost
PIO 3
1993
13.3 MB/s
PIO 4
1994
16.6 MB/s
Ultra DMA (ATA/33)
1997
33.0 MB/s
Ultra DMA (ATA/66)
1999
66.0 MB/s
Ultra DMA (ATA/100)
2000
100.0 MB/s
Ultra DMA (ATA/133)
2002
133.0 MB/s
Obr. 2.13 – režimy činnosti u rozhraní EIDE
- 29 -
Střední přenosová rychlost samozřejmě úzce souvisí s rychlostí otáčení disku.
Informatika • Modul 01 • Počítačové a operační systémy
V serverech se často používá rozhraní SCSI, které vyžaduje separátní řadič a speciální typ dražších disků. Celkově se toto rozhraní považuje za spolehlivější a výkonnější, avšak vzhledem k vysoké ceně se v osobních počítačích pro osobní použití příliš nepoužívá. V serverech se dále často používá technika spojování více disků do jednoho celku tak, že se data z nich získávají prakticky paralelně (disk stripping). Tak lze i z poměrně málo výkonných disků vytvořit vysoce výkonné zařízení, diskové pole (RAID – Redundant Array of Inexpensive Disks). Navíc lze některá data použít redundantně jako paritní tak, že v případě výpadku jednoho disku nedojde ke ztrátě dat.
2.5.6
Univerzální rozhraní PC
Existuje množství periferních zařízení, která obsahují vestavěný řadič a lze je tedy připojit ke sběrnicím počítače přímo. Na druhé straně jsou I/O sběrnice vyvinuty pro maximální přenosovou rychlost a jsou tedy značně zranitelné. Proto se používají universální rozhraní, která představují robustní sběrnice s konektorem vyvedeným na krytu počítače. K nim se pak připojují zařízení nevyžadující extrémní přenosové rychlosti poskytované vnitřními I/O sběrnicemi. Protokol těchto rozhraní je definován standardy, které jsou všeobecně známé a výrobci zařízení se jim snadno přizpůsobují. Realizaci uvedených rozhraní zabezpečují řadiče, které jsou obvykle integrovány na základní desce prostřednictvím použité čipové sady. K univerzálním rozhraním v dnešních PC patří zejména: • Paralelní rozhraní (také paralelní port), obvykle jeden port označovaný LPT • Sériové rozhraní (také RS232 nebo sériový port), v PC obvykle přítomny dva porty COM1 a COM2 • Rozhraní USB (dnes ve verzi 2.0) • Rozhraní FireWire Paralelní rozhraní je velmi jednoduché rozhraní pro paralelní přenos jednoho bajtu v jednom cyklu. Kromě osmi vodičů pro přenos dat je součástí rozhraní také několik vodičů řídících asynchronní režim přenosu – počítač oznamuje zařízení, že data jsou připravena a zařízení oznamuje, že je zaměstnáno nebo připraveno přijmout další data. Standard Centronics, který stanovuje pravidla rozhraní, je jednosměrný – nepočítalo se s tím, že by počítač přijímal data z tiskárny, pro kterou bylo rozhraní primárně určeno. V současné době však může rozhraní pracovat v několika režimech (upravených standardem IEEE 1284), které mohou být i obousměrné: režim EPP (Enhanced Parallel Port) nebo ECP (Enhanced Capability Port) nabízí obousměrnou přenosovou rychlost až 1 MB/s a kromě tiskáren tak lze použít paralelní port i pro skenery, externí mechaniky ZIP a CD–ROM, dokonce i digitální videokamery. Přesto je paralelní port používán stále méně. Jeho zřejmou nevýhodou je připojení prostřednictví tlustého kabelu s 25 vodiči s velmi omezenou maximální délkou (5 – 10 metrů). Sériové rozhraní je upraveno standardem RS232 a svou jednoduchostí je značně podobné paralelnímu rozhraní – v čase však může najednou přenášet jediný bit. Výhodou je pak daleko jednodušší kabel, který může dosahovat délku až několika set metrů. Nevýhodou je komplikovanější komunikace, kdy se každý
- 30 -
Konstrukce a struktury počítačového systému
bajt musí vyslat po jednotlivých bitech rozložený v čase, k oddělení bajtů se pak používají speciální tzv. start- a stop-bity, k bajtu lze také přidat devátý paritní bit signalizující případnou chybu přenosu. Rozhraní obsahuje po jednom vodiči pro každý směr přenosu, dále řídicí vodiče pro řízení přenosu a zemnící vodiče. V případě potřeby lze však vystačit i se třemi vodiči. O komunikaci se stará speciální obvod UART (Universal Asynchronous Receiver Transmitter), který bajty rozloží na jednotlivé bity, přidá k nim potřebné oddělovací bity a paritní bity a vyšle je do vysílacího vodiče.
Obr. 2.14 – Schéma sériového přenosu K sériovému rozhraní bývají připojeny zejména myši a jiná polohovací zařízení, modemy, tiskárny se sériovým rozhraním apod. Maximální přenosová rychlost rozhraní je pouze 115 200 bitů/s. Proto je rychle nahrazováno univerzálnějším a daleko rychlejším rozhraním USB. Rozhraní USB (Universal Serial Bus) má daleko univerzálnější použití než uvedené klasické sériové rozhraní. Kromě daleko vyšší přenosové rychlosti umožňuje řetězit připojená zařízení na jednom kabelu nebo rozbočit kabel pro více zařízení (USB HUB). Poskytuje také napájení pro periferní zařízení. Zařzení lze připojovat a odpojovat od rozhraní „za letu“, rozhraní je podporováno v moderních operačních systémech technologií plug and play. Standard USB 1.1 specifikuje maximální přenosovou rychlost 12 Mb/s, specifikace USB 2.0 až 480 Mb/s. Toto rozhraní začíná být masově používáno pro připojování všech zařízení, kterým uvedená rychlost postačí: klávesnice, myši, tiskárny, skenery, modemy, externí disky apod. Rozhraní FireWire dle specifikace IEEE 1394 je složitější obdoba výše uvedeného rozhraní USB. Uplatňuje se zejména u počítačů Macintosh, avšak s nástupem standardu USB 2.0 již nemá výhodu podstatně vyšší přenosové rychlosti, takže jeho větší rozšíření u PC se patrně nedá očekávat.
- 31 -
Informatika • Modul 01 • Počítačové a operační systémy
3
Subsystémy operačního systému
V kapitolách 1 a 2 jsme se seznámili se vysokou úrovní složitosti současných počítačových systémů a úkoly operačního systému, který umožňuje tyto systémy využívat. Tak, jak roste komplexnost technického vybavení počítačů, roste i složitost potřebných operačních systémů a dalšího programového vybavení. Moderní operační systémy jsou vysoce strukturovány a z hlediska plnění úkolů v nich lze identifikovat zejména následující subsystémy: • • • • • • •
Správa procesů Správa paměti Správa souborů Správa vstupů a výstupů (periferních zařízení) Správa sítě Systém ochrany a bezpečnosti Systém uživatelského rozhraní
S jejich účelem a koncepcí se alespoň zběžně seznámíme v následujících článcích.
3.1
Správa procesů
Procesem nazýváme vykonávaný program sestávající z posloupnosti instrukcí a realizující ucelený algoritmus. Každý proces vyžaduje ke svému běhu odpovídající prostředky počítače (resources): určitý čas procesoru, část operační paměti, některá periferní zařízení, prostor na discích apod. Operační systém je odpovědný za následující manipulace s procesem: • • •
Vytvoření a spuštění procesu Zastavení a odstranění procesu Pozastavení a pokračování vykonávání procesu
Proces tak nabývá různých stavů: •
Nový proces (new): proces je vytvářen operačním systémem – systém plní operační paměť instrukcemi procesu, připravuje si popis procesu a jeho potřeb ve svých strukturách.
•
Stav běhu (run): procesor vykonává instrukce procesu.
•
Stav čekání (wait): procesor nevykonává instrukce procesu, proces čeká na uskutečnění nějaké události (např. dokončení operace s I/O zařízením).
•
Stav připravenosti (ready): proces je v paměti a čeká na spuštění.
•
Ukončení (terminated): běh procesu byl ukončen.
Za běhu procesu mu operační systém poskytuje požadované služby v podobě přístupu k I/O zařízením, dále umožňuje komunikaci a synchronizaci s jinými procesy.
- 32 -
Subsystémy operačního systému
Obr. 3.1 – Seznam procesů v operačním systému Windows XP Z výpisu správce procesů (taskmgr.exe) vidíme, že: • • • • • • •
•
každý proces v operačním systému je identifikován unikátním číslem PID (process ID) proces běží s oprávněním určitého uživatele (uživatel SYSTEM je privilegovaný vestavěný uživatel), které ho opravňuje jen k těm operacím, které má uvedený uživatel povoleny. systém je schopen vyhodnotit čas CPU a velikost operační paměti, kterou proces zatím potřeboval ke svému běhu každý proces má přiřazenu určitou prioritu, podle níž jsou mu přidělovány prostředky ve srovnání s dalšími běžícími procesy systém eviduje rovněž počet bajtů, které proces poslal nebo přijal z periferního zařízení. Tato informace je systému dostupná proto, že každá operace s I/O zařízením probíhá v režii operačního systému. název procesu je odvozen z názvu souboru, něhož byl proces načten do paměti a spuštěn každý proces může vytvořit podprocesy (za tímto účelem volá službu operačního systému). Ty pak obvykle zdědí atributy rodičovských procesů jako je oprávnění, priorita apod . V operačních systémech na bázi Unixu má každý proces svůj rodičovský proces, který požádal systém o jeho spuštění. V operačních systémech typu Windows se tento vztah neudržuje.. součástí operačního systému jsou rovněž tzv. systémové procesy (někdy běží v privilegovaném režimu procesoru, ale mohou pracovat i pod oprávněním uživatele, který si je vyžádal).
- 33 -
Informatika • Modul 01 • Počítačové a operační systémy
Moderní operační systémy jsou tzv. preemptivní, poskytují procesům jen určitý čas procesoru. Proces po uplynutí této doby převedou do stavu připravenosti (také odloženosti), zařadí ho do fronty a aktivují další proces ve frontě. Operační systém musí při odložení procesu samozřejmě uložit všechny informace umožňující jeho pokračování (stav procesoru, umístění procesu v paměti, rozpracované I/O operace ap., které obsahuje datová struktura PCB – Process Control Block). Tento mechanismus má samozřejmě určitou režii, na druhé straně však umožňuje zdánlivě paralelní běh mnoha programů (tzv. multitasking) na jednom procesoru, což je pro efektivní využití počítače nezbytné. Různé operační systému používají různé algoritmy pro plánování procesů a přidělování procesoru (process scheduling). Jde o vyhodnocení priorit, o požadavky na I/O zařízení ze strany procesů apod. Ještě složitější situace nastane v případě přítomnosti více procesorů v počítači. Účelem je využít procesor co nejlépe a přitom s minimální režií na správu a plánování.
3.1.1
Vlákna
Možnost multitaskingu a více procesorů v počítači dala vzniknou jemnější diferenciaci procesů. Na proces se lze dívat jako na kontejner tzv. vláken (threads), kdy každé vlákno může běžet relativně samostatně, ale dědí od procesu všechny jeho zdroje a oprávnění. Každý proces sestává minimálně z jednoho vlákna a tedy instrukce, které provádí procesor, patří spíše k vláknu než procesu. Jednotlivé procesy jsou vzájemně izolovány a nemohou se ovlivnit jinak, než požádáním o službu operačního systému, která zprostředkuje určitý druh komunikace. Na rozdíl od tohoto mechanismu vlákna patřící k témuž procesu sdílejí i paměťový prostor, jehož obsah si mohou vzájemně měnit. Vlákna mohou vytvářet, rušit a pozastavovat jiná vlákna (resp.synchronizovat se s jinými vlákny) téhož procesu pomocí volání služeb operačního systému. Výhoda používání vláken vynikne na víceprocesorových systémech, kdy se jednotlivá vlákna rozloží pomocí operačního systému automaticky na jednotlivé procesory. Avšak i v jednoprocesorových systémech je vhodné např. pro náročný výpočet vytvořit speciální vlákno tak, aby neblokoval uživateli jinou (většinou interaktivní) činnost. Typicky se například vytváří samostatné vlákno pro vyřízení každého požadavku na serverech internetových služeb.
3.2
Čtenáři je snad známo, že nový program obvykle vytváříme pomocí speciálního nástroje – překladače. Ten vytvoří instrukce s tzv. relativními adresami, konečné logické hodnoty adres jim přiřazuje sestavovací program. O výsledných fyzických adresách nemají tyto programy ani tušení.
Správa operační paměti
Program je spuštěn přenesením do operační paměti obvykle ze souboru na disku, vytvořením potřebných struktur procesu a převedením do stavu připravenosti a posléze běhu. Vzhledem k tomu, že v operační paměti koexistuje více procesů, je nutné použít mechanismus, který umístí (alokuje) program tam, kde je v paměti místo, resp. přesune program z jednoho umístění jinam. Program je však tvořen instrukcemi, které často obsahují argumenty v podobě odkazů – adres v operační paměti. Jedná se například o instrukce skoku nebo manipulace s daty v operační paměti. Jak však vytvořit tyto adresy, když dopředu nevíme, kde bude program při spuštění umístěn? Řešení je přímo v konstrukci procesoru. Při vytváření programu se používají tzv. logické, resp. virtuální adresy. Skutečná, resp. fyzická adresa je tvořena až - 34 -
Subsystémy operačního systému
za běhu programu podle nastavení speciálních (tzv. segmentových relokačních) registrů procesoru. Ty nastavuje operační systém tak, aby byla obsazována volná paměť, ale zároveň všechny odkazy v programu fungovaly správně. Schematicky může vypadat rozdíl mezi logickou a fyzickou adresou následovně: 1. Procesor obdrží instrukci skoku, adresa skoku je např. 123 2. Obsah relokačního registru je 80000 3. Výsledná adresa v operační paměti, kam se skok uskuteční, bude součtem obsahu registru a logické adresy, tj. 80123 Pokud se tedy za běhu procesu nezmění obsah relokačního registru, bude možné vykonat program správně s logickými adresami. Operační systém si tedy musí udržovat obraz obsazené paměti a umísťuje procesy pomocí registrů procesoru do volných míst. Tím však nevyhnutně vzniká fragmentace paměti, která vede k jejímu horšímu využití – volných míst je mnoho, mají však malý rozsah, a tak se tam nové procesy prostě nevejdou. Skutečně používaný mechanismus, jak přiřadit logické adresy fyzickým, je proto daleko složitější: kromě uvedeného postupu je fyzická paměť rozdělena na tzv. rámce (frames, např. po čtyřech kilobajtech), stejně tak se logická paměť rozdělí na tzv. stránky (pages) o stejné velikosti. Program je vytvořen tak, aby pracoval s určitým počtem stránek, při jeho zavedení tedy operační systém vyhledá stejný počet volných rámců a vytvoří tabulku stránek přiřazující potřebným stránkám fyzické adresy volných rámců. Výsledná fyzická adresa je pak správnou kombinací segmentů, stránek a logických adres. Tento mechanismus technicky podporují současné procesory pro PC (počínaje procesorem 80386), navíc je přítomen již zmíněný mechanismus ochrany, který nedovoluje procesům přistupovat k paměti mimo zvolený rozsah uložený opět ve speciálních registrech procesoru. Je zřejmé, že manipulace s registry, které mají vliv na fyzickou adresu je možná pouze pomocí privilegovaných instrukcí, které uživatelské programy nemohou provádět. Tak je zajištěno, že správa (přidělování a uvolňování) fyzické paměti je v režii výhradně operačního systému.
3.2.1
Virtuální paměť
Moderní operační systém může pomocí rozlišení logické a fyzické paměti poskytnout procesům daleko více paměti, než je její reálná kapacita. Slouží k tomu mechanismus odkládání paměťových stránek do diskové paměti (swapping). Stránky paměti, které jsou málo využívány, operační systém odloží na disk a uvolněný rámec použije pro jinou potřebnou stránku. Pro každý proces je udržován seznam stránek paměti, které používá, s příznakem, zda je stránka v paměti (a lze s ní tedy pracovat) nebo na disku. Ve druhém případě je zapotřebí nalézt odloženou stránku na disku a naplnit jejím obsahem volný rámec, který se stane součástí stránkové tabulky daného procesu. Uvedený mechanismus není jednoduchý a existuje řada používaných algoritmů, které se pokoušejí o minimální transport stránek mezi pamětí a diskem. Je totiž obtížné vytipovat stránku, která nebude použita, stejně tak je třeba dbát na to, aby nebyly z paměti odstraněny stránky, které z různých důvodů musí - 35 -
Informatika • Modul 01 • Počítačové a operační systémy
být přítomny i případě nepoužívání (např. stránky využívané obsluhou I/O zařízení, nelze totiž předpovědět, kdy přijde přerušení a stránka bude ihned použita např. procesem DMA). Také rychlé nalezení stránky na disku (v tzv. swap souboru) nemusí být triviální. Při spuštění příliš mnoha procesů, kdy dochází k potřebě odkládání stránek, se rychlost počítače velmi znatelně snižuje, přesto je však správa virtuální paměti velmi důležitou součástí operačního systému.
Obr. 3.2 – Nastavení swap souboru ve Windows XP Z obrázku je patrné, že ve Windows XP může stránkovací (swap) soubor existovat na více diskových jednotkách, stejně tak lze odkládání stránek zcela zakázat. Nastavení maximální hodnoty brání havárii v případě, že na disku není dost volného prostoru.
3.3
Souborový systém
Informace uložené na vnějších pamětech počítače jsou organizovány do souborů – ucelených logických jednotek souvisejících informací. Struktura souborů je obvykle specifická pro jednotlivé typy operačních systémů. Soubor je identifikován jménem a je začleněn v systému adresářů se stromovou strukturou. Přístup k souborům umožňuje operační systém pomocí svých služeb. Moderní operační systémy vytvářejí abstraktní vrstvu, která před programy skrývá konkrétní organizaci a strukturu souborů, které tak mohou být uloženy nejen na magnetických discích, ale i jiných zařízeních (flash disk, CD–ROM, magnetická páska, souborový systém jiného počítače dostupný prostřednictvím - 36 -
Subsystémy operačního systému
sítě apod.) – programy tak při práci se soubory mohou využívají stejné služby operačního systému (tzv. logický, resp. virtuální systém souborů). Vlastní přístup k souborům je v operačních systémech realizován v hierarchických vrstvách: •
Na nejnižší úrovni jsou vlastní ovladače diskových řadičů (drivery), které přenášejí data mezi disky a operační pamětí.
•
Podprogramy další vrstvy využívající služby driverů umožňují čtení a zápis požadovaných sektorů (Basic File System).
•
Další vrstva již obsahuje informaci o celkovém rozložení obsazených sektorů a jejich příslušnosti k souborům (File Organization Module).
•
Poslední vrstva, kterou pak využívají uživatelské programy (tzv. aplikační vrstva), organizuje soubory do adresářů, přiřazuje souborům atributy (vlastníka, oprávnění, dobu vytvoření apod.) a umožňuje programům vlastní čtení a zápis do souborů (Logical File System).
Informace o rozložení souborů na jednotlivých sektorech disku a jejich atributech je uložena rovněž na disku v systému tabulek, tzv. metadat. Při práci se souborem vytvoří uvedená aplikační vrstva pomocí těchto metadat v operační paměti speciální datovou strukturu reprezentující požadovaný soubor na disku (FCB – File Control Block). Obsahuje jak atributy souboru (vlastníka, přístupová oprávnění, velikost, dobu vytvoření apod.), tak datové bloky informací uložených v souboru. Hierarchie vrstev operačního systému pro souborový systém pak zajišťuje, aby při změně uvedené struktury FCB (vymazání, přepis dat, vytvoření nového souboru apod.), docházelo k synchronizaci s daty na disku (oprava metadat a sektorů s obsahem souboru).
3.3.1
Alokační jednotky disku, souborový systém FAT
Souborový systém FAT byl používán u starších typů operačních systému firmy Microsoft a i dnes ho lze použít u menších disků, kde nevyžadujeme žádné zabezpečení. Disk je rozdělen na stejně velké tzv. alokační jednotky (clustery), které sestávají ze stejného počtu po sobě následujících sektorů. Tabulka adresáře na disku pak obsahuje pro každý uložený soubor název souboru, malý seznam jeho atributů a číslo záznamu v tzv. tabulce FAT (File Allocation Table). Tabulka FAT pak obsahuje seznam čísel clusterů patřících ke každému souboru na disku (ve formátu tzv. zřetězeného seznamu). Uvedený mechanismus dovoluje obsadit pro soubor minimálně jeden cluster. V případě, že se soubor nevejde přesně do určitého počtu alokačních jednotek, zůstane část kapacity disku nevyužita. Jaké jsou velikosti alokačních jednotek – clusterů? Čísla v tabulce FAT umožňují adresování clusterů podle svého rozsahu. Pokud budou tato čísla uložena v 16 bitech (FAT16), lze adresovat maximálně 216 = 65 636 clusterů. Minimální možná velikost clusteru tedy roste úměrné s celkovou kapacitou disku – viz obr. 3.3. Větší clustery však vždy znamenají horší využití disku, kvůli proměnné délce souborů. Na druhé straně velký počet clusterů zvyšuje režii jejich organizace.
- 37 -
Informatika • Modul 01 • Počítačové a operační systémy
Kapacita disku Velikost clusteru 512 B 32 MB 8 KB 500 MB 16 KB 1 GB 640 KB 40 GB Obr. 3.3 – závislost velikosti alokační jednotky disku na jeho kapacitě pro FAT Z uvedené tabulky vidíme, že systém FAT16 je vhodný pro disky s kapacitou do 0,5 GB. Delší clustery by již vedly k neúnosnému plýtvání diskovým prostorem vzhledem k průměrným délkám souborů. Jedna z metod, jak zavést menší clustery na velkých discích, je rozdělení celkové kapacity disku na tzv. oblasti (partitions), které se chovají jako samostatné disky (obsahují své vlastní tabulky FAT).
Bohužel, defragmentace disku je velmi dlouhodobý a nebezpečný proces, který může data na disku snadno poškodit. Může však dramaticky zrychlit přístup k disku.
Jiná metoda spočívá ve větším rozsahu čísel adresujících clustery. Proto byl zaveden souborový systém FAT32, kde jsou tato čísla uložena ve 32 bitech, což umožňuje adresovat již 232 (cca 4 miliardy) clusterů. Tím se však tabulka FAT zvětší na dvojnásobek a zpomalí se vyhledávání požadovaných clusterů. Dalším problémem malých clusterů je zvětšující se fragmentace disku – soubory po intenzivních změnách dat na disku nejsou uloženy v navazujících sektorech a přístup k souboru se rychle zpomaluje kvůli nutným změnám polohy hlaviček disku. Tento problém pochopitelně nenastává, pokud se data na disku nemění, lze ho však řešit občasnou defragmentací disku, kdy se rozložení souborů přeorganizuje optimálním způsobem. Počáteční vytvoření clusterů a založení tabulek proběhne při formátování disku. Moderní operační systémy umožňují při tomto procesu vybrat vhodný typ souborového systému, přičemž obvykle navrhnou optimální variantu velikosti alokační jednotky.
3.3.2
Souborový systém NTFS
Systém organizace souborů NTFS (NT File System) byl zaveden v operačních systémech MS Windows NT a představuje velmi pokročilou bezpečnou variantu souborového systému s následujícími vlastnostmi: Jednotlivé oblasti (partitions) lze tvořit nejen na jednom disku, ale sjednotit i více disků dohromady do jedné oblasti, na níž je definován souborový systém NTFS. Proto místo disku hovoříme raději o svazku (volume). Bohatá struktura metadat je na disku uložena rovněž v podobě souborů, kterých je i na prázdném disku více než deset. Obsahují například informace o vadných sektorech disku, uživatelských kvótách (maximální kapacitě disku, kterou smí daný uživatel použít), atributy disku, mapu použitých a volných clusterů apod. Velikost clusteru lze nastavit velmi variabilně (v počtu sektorů daných mocninou dvou). Operační systém však navrhuje standardně velikosti clusterů podle kapacity disku tak, aby souborový systém obsahoval zhruba 106 alokačních jednotek. Podobně jako v souborovém systému FAT je hlavní částí alokační tabulka, tak v NTFS je hlavní částí tabulka MFT (Master File Table), která obsahuje infor-
- 38 -
Subsystémy operačního systému
mace o rozložení všech souborů, adresářů i metadat na disku. MFT je rozdělena na jednotky, které se nazývají záznamy (records). V jednom nebo více MFT záznamech ukládá souborový systém metadata, která popisují vlastnosti souboru nebo adresáře (bezpečnostní nastavení, atributy) a jeho umístění na disku. Protože MFT je uložena také v souboru, je i on zaznamenán v MFT. Uložení informací v těchto záznamech umožňuje, aby MFT mohla růst nebo se zmenšovat. NTFS vnitřně určuje soubory a adresáře podle pozice jejich záznamů v MFT, které označují začátek jejich metadat. Velikost záznamu je obvykle 1 KB, ale může být i větší. Tabulka MFT je na disku dvakrát v různých oblastech disku tak, aby v případě poškození jedné verze bylo možné použít nepoškozenou MFT. NTFS přirozeně pomocí záznamů v MFT určuje přístupová oprávnění k souborům a adresářům. Kromě toho však umožňuje také kompresi souborů a jejich šifrování. Každá změna dat na disku je zaznamenána v tzv. logovacím souboru, který je součástí metadat. Pomocí tohoto nástroje lze obnovit ztracená data na disku ať již vinou nevhodné manipulace nebo poruchou. Názvy souborů v MFT mohou obsahovat až 255 znaků a jsou ukládány ve formátu Unicode, mohou tedy obsahovat znaky národních abeced.
3.4
Správa zařízení
Z výše uvedených kapitol víme, že k počítači může být připojeno mnoho periferních zařízení (I/O devices), jejichž řadiče jsou připojeny k různým sběrnicím a komunikují s procesorem prostřednictvím přerušení a obsahem I/O portů, mohou zapisovat do paměti pomocí DMA apod. Uživatelské programy nelze vytvářet a přizpůsobovat znovu pro každé zařízení, proto má v moderních operačních systémech přístup k zařízením pouze operační systém. Prostřednictvím vrstev je zde stejně jako v případě souborových systémů vytvářeno jednotné aplikační rozhraní, které mohou používat uživatelské programy a které do značné míry skrývá odlišnosti jednotlivých zařízení. Podrobnosti, různé technické verze zařízení apod. jsou dokonce i pro operační systém vyrovnány pomocí ovladačů (driverů), které často produkují sami výrobci zařízení pro každý rozšířený operační systém. Aby byl tento mechanismus účinný, musí být operační systém navržen modulárně a musí existovat dobře dokumentovaná pravidla (programová rozhraní), umožňující nezávislým producentům dodávat drivery využívající efektivně nejen možnosti zařízení, ale i možnosti operačního systému – systém musí být otevřený. Zařízení lze klasifikovat podle různých kritérií: •
režim přenosu dat – znakový (zařízení produkuje nebo přijímá jednotlivé bajty, např. klávesnice) nebo blokový (zařízení komunikuje prostřednictvím pevných bloků dat, např. disk)
•
metoda přístupu k požadovaným informacím – přímá (většinou pomocí nějaké formy adresy lze obdržet konkrétní informaci, např. informace na flash disku) nebo sekvenční (informace jsou pevně seřazeny, při pří-
- 39 -
Informatika • Modul 01 • Počítačové a operační systémy
stupu k informaci musí být přečteny i ostatní informace, např. mg. páska) •
výhradnost použití – zařízení může být sdílitelné (sharable) mnoha procesy nebo vyhrazeno (dedicated) pouze pro jeden proces
•
parametry rychlosti – přenosová rychlost, střední doba vyhledání informace, střední prodleva apod.
•
směr přenosu – vstupní (jen pro čtení, např. CD-ROM), výstupní (jen pro zápis, např. monitor), vstupně–výstupní (disk)
•
apod.
Obsluha zařízení může být synchronní a asynchronní. Program, který požádá operační systém o práci se zařízením se synchronní obsluhou, je pozastaven až do doby, kdy je celá operace provedena (také blokující zařízení). Při práci s asynchronně obsluhovaným zařízením (obvykle výstupním) je průběh I/O operace paralelní s dalším během procesu. Často je přitom využíván mechanismus vyrovnávacích pamětí, které se naplní daty produkovanými procesem a operační systém je pak nezávisle potřebnou rychlostí předává řadiči zařízení (také neblokující zařízení). Sdílitelná zařízení mohou být požadována současně mnoha procesy. Operační systém v rámci svého I/O subsystému vytváří z těchto požadavků fronty podle speciálních algoritmů, které zohledňují jak doby prodlev, tak priority procesů apod. I/O subsystém je rovněž odpovědný za to, aby procesy neuvázly v nekonečných cyklech při čekání odezvy na zařízení a rovněž za detekci případných chyb a včasné zablokování požadavků na vadné nebo odpojené zařízení. Případné chyby zaznamenává do speciálních logovacích souborů (System Error Log).
3.5
Systém ochrany a bezpečnosti
Systém počítače sestává s množství identifikovatelných entit ať již technického nebo programového typu. Operační systém musí zajistit přehledným způsobem přístup k těmto entitám tak, aby uživatel a jeho procesy, které nemají mít přístup k některým entitám, nemohli toto omezení obejít. Naopak by se nemělo stát, aby byl uživatel s povoleným přístupem prostřednictvím některého procesu odmítnut. Množina operací, k nimž lze definovat nějaké oprávnění, závisí na entitě, k níž se vztahuje. Například pro tiskárnu můžeme povolit tisk a zakázat změnu nastavení tiskárny a ovlivňování tisku jiných uživatelů. U souboru můžeme povolit čtení, ale zakázat zápis a mazání apod. U procesů můžeme např. povolit změnu jejich priority, ale zakázat násilné ukončení atd. Uvedený příklad množiny operací nazýváme množinou oprávnění (rights-set), která tvoří přístupové právo k dané entitě. Množina přístupových práv vztahující se k uživatelům se nazývá doména oprávnění. Domény mohou být disjunktní nebo se mohou překrývat (uživatel může patřit do více domén). - 40 -
Subsystémy operačního systému
Typ přístupu domény k dané entitě lze zachytit tzv. maticí přístupu: sloupce tvoří entity a řádky domény. Obsahem jednotlivých buněk je pak seznam oprávnění: Entita Doména D1 D2 D3 D4
F1
F2
Read
F3
F4
Read Print Read
Read, write
Execute Read, write
Manage, print
Obr. 3.4 – příklad matice přístupu Součástí systému ochrany musí být možnost změny uvedené tabulky prostřednictvím speciálních druhů oprávnění: právo vlastníka entity (owner) zavádí většina operačních systémů. Vlastník má k entitě maximum práv, kromě těch, které mohou vést k nepřípustným operacím k jinému objektu. Kromě jiných může nastavovat oprávnění k entitě pro jiné domény (full control). V systému je obvykle vestavěný privilegovaný uživatel (supervisor, administrátor, root apod.), který má (nebo si může přidělit) všechna přístupová práva ke všem objektům systému. Dále může vytvářet a rušit uvedené domény. Při operacích se všemi objekty systému musí být vždy zřejmé, který uživatel je za spuštění operace odpovědný („pod kterým uživatelem“ běží proces požadující vykonání operace). Systém pak vyhodnotí podle seznamu oprávnění daného objektu (ACL – Access Control List), zda lze požadovanou operaci provést.
- 41 -
Informatika • Modul 01 • Počítačové a operační systémy
4
Architektura a služby operačního systému
Již víme, že moderní operační systém je speciální program, který zejména řídí provádění jiných programů, přiděluje a odebírá jim zdroje (včetně procesoru). Ostatním programům skrývá detaily práce periferních zařízení a řídí je tedy ve své režii. Otevřenost operačního systému zajišťuje snadnou aktualizaci technických prostředků (hardware) počítače a začleňování nových komponent do stávajícího systému. Operační systémy jsou dnes charakteristické vrstevnatou hierarchickou strukturou, kdy každá vrstva nabízí své služby vyšší vrstvě prostřednictvím přesně definovaného rozhraní (pravidel), přičemž nižší (primitivnější) vrstva nikdy nevyužívá služby vyšší (inteligentnější) vrstvy. Příklad vrstevnaté struktury jsme viděli v případě práce se soubory. Uvedená koncepce je výhodná pro nezávislou specializovanou programátorskou tvorbu, kdy výměna vrstvy za efektivnější variantu nemusí ovlivnit ostatní části systému. Operační systémy jsou dnes patrně nejkomplexnějšími a algoritmicky nebohatšími programovými díly. Jejich relativně nízká cena je způsobena pouze obrovským rozšířením a unifikací.
Obr. 4.1 – Schéma architektury klasického operačního systému Běžný uživatel vnímá hlavně uživatelské rozhraní systému – spektrum textových a grafických nástrojů pro interaktivní práci s počítačem spočívající zejména ve spouštění uživatelských programů a manipulacích se souborovým systémem.
- 42 -
Architektura a služby operačního systému
Programátor daleko více pracuje s programovým (aplikačním) rozhraním – pravidly a nástroji, které mu umožňují začleňovat do svých programů služby, které může poskytnout pouze operační systéme (práce s periferiemi, správa procesů apod.). Z výše uvedeného schématu je patrné, že základní moduly operačního systému řídí tzv. jádro (kernel), jehož služby pak využívají uživatelské programy. Volání služeb jádra se provádí speciálními instrukcemi, přičemž se případné parametry předávají buď v registrech procesoru nebo v případě rozsáhlejších dat jejich počáteční adresou v paměti opět uloženou ve stanoveném registru procesoru. Jádro běží v privilegovaném režimu, tudíž má k dispozici i paměť procesu, který žádá o službu. Uvedená (tzv. monolitická) architektura systému je v současné době nahrazována tzv. technologií mikrojádra, kdy je jádro operačního systému velmi zredukováno, prakticky pouze na základní řízení procesů a správu paměti. Všechny ostatní moduly operačního systému běží jako samostatné procesy (tzv. servery, jsou řízeny mikrojádrem a nepotřebují privilegovaný režim procesoru) a vyřizují potřebné požadavky uživatelských programů metodou zasílání zpráv (technologie dobře známá z objektově orientovaného programování – v současnosti nejrozšířenější programovací technologie). Tím se velmi omezil rozsah instrukcí provozovaných v privilegovaném režimu a celkově se zlepšila modularita a tím i přehlednost operačních systémů. Systém zasílání zpráv může být unifikovaný, lze snadno přidávat další a rušit nepotřebné služby. Přidáním modulů skrývajících odlišnosti zasílání zpráv v jednom systému a mezi různými systémy prostřednictvím počítačové sítě lze přejít k tzv. distribuovaným systémům (operačním systémům pracujících na více počítačích). V případě novějších technologií (např. nové generaci procesorů s novými instrukcemi) lze přenést operační systém do nového prostředí (tzv. portace systému) pouhým přizpůsobením mikrojádra. Architektura založená na mikrojádře má ovšem odněkud vyšší režii než monolitické systémy. Tento handicap se ovšem rychle vyrovnává novými generacemi procesorů a technických realizací sběrnic a pamětí. V současné době je většina komerčních operačních systémů založena na mikrojádře, avšak kvůli vyšší rychlosti běží v režimu jádra i některé další moduly.
- 43 -
Informatika • Modul 01 • Počítačové a operační systémy
5
Vlastnosti operačního systému Windows XP
Jedná se o operační systém založený na architektuře mikrojádra, víceuživatelský (multiuser), víceúlohový (multitask), určený pro 32-bitové procesory Intel a osobní počítače. Navazuje na předcházející operační systémy Windows2000 a Windows NT a zaručuje prostředí, v němž mohou pracovat programy z předcházejících verzí operačních systémů firmy Microsoft. Systém byl naprogramován zejména v jazyce C a C++ a rozsahem programového kódu je přibližně o řád objemnější než Linux (což nemusí znamenat, že je lepší). Systém existuje ve čtyřech variantách: •
Professional – určena pro intenzivní používání počítače v rozsáhlé síti.
•
Home Edition – „odlehčená“ verze určena pro práci doma nebo v jednoduché síti typu peer-to-peer.
•
64-bit Edition – první verze systému firmy Microsoft určená pro 64bitová PC např. s procesorem Intel Itanium, která se v současnosti začínají objevovat na trhu.
•
Tablet PC Edition – speciální verze určená pro počítače typu Tablet PC, které u nás nejsou příliš rozšířeny.
Obr. 5.1 – Schéma systému Windows XP podle firemní dokumentace Z hrubého schématu architektury operačního systému vidíme, že přístup k technickým prostředkům počítače má nejprve vrstva HAL (Hardware Abstraction Layer), jejímž úkolem je přizpůsobit detaily procesoru a sběrnic do - 44 -
Vlastnosti operačního systému Windows XP
standardního tvaru unifikovaného hardware. Teprve nad touto vrstvou pracuje mikrojádro, které je tak prakticky nezávislé na technickém řešení počítače, na němž pracuje. Dále však vidíme, že kvůli vyšší efektivitě Microsoft přistoupil k určité modifikaci architektury mikrojádra, kdy některé moduly přistupují k hardwaru přece jen přímo (zejména správa vstupů a výstupů). Správa procesů, paměti, komunikace mezi procesy, to vše je vřazeno do tzv. Exekutivy, která pracuje v privilegovaném režimu, což je samozřejmě v rozporu s koncepcí mikrojádra. Její služby jsou volány prostřednictvím rozhraní Win32 – hlavního aplikačního rozhraní, které používají programátoři při volání služeb operačního systému v uživatelských programech. Pro programy vyvinuté pro starší operační systémy je vždy k dispozici přizpůsobovací modul, který vytváří virtuální prostředí původních systémů (tj. zejména jejich aplikační rozhraní). Pro programy vyvinuté pro MS DOS je tak k dispozici tzv. virtuální stroj MS DOS, pro Windows 3.x je k dispozici virtuální Win16, určitá přizpůsobení jsou i pro programy určené pro operační systém OS/2 (OS/2 subsystem) a Unix (Posix subsystem). Systém podporuje tzv. symetrický multiprocesing, kdy v případě přítomnosti více procesorů v systému jsou jednotlivým procesům (jak již víme, spíše jejich vláknům) přidělovány volné procesory, které sdílejí stejnou paměť stejně jako v případě jednoho procesoru. Mechanismus se nazývá symetrický proto, že jsou všechny procesory v systému rovnocenné. Údaje o nastavení systému pro jednotlivé uživatele, nastavení uživatelského software, bezpečnostní informace apod. jsou uloženy ve speciální systémové databázi (registry). Vzhledem ke komplexnosti systému je již samotný jeho start složitou posloupností procesů, která dotváří představu o celkové architektuře systému: 1. Po zapnutí počítače je spuštěn program BIOS. Jeho úkolem je zejména nalézt na připojených zařízeních speciální zavlékací program operačního systému. 2. Ten nalezne na disku v kořenovém adresáři soubor NTLDR, který je již vlastním zavaděčem operačního systému Windows XP. 3. NTLDR zavede do operační paměti nejprve modul HAL, databázi registry a jádro, kterému předá řízení. 4. Jádro dále zavede a spustí modul system (vnitřní služební vlákna systému) a proces SMSS – inicializační proces. 5. SMSS dokončí inicializaci systému, spustí stránkování paměti a subsystém Win32 (skrytý v procesu CSRSS) a bezpečnostní proces WINLOGON. 6. WINLOGON se dále postará o zavedení a spuštění doplňujících bezpečnostních a přihlašovacích služeb systému. Uvedené procesy operačního systému naleznete i na obr. 3.1 – mezi spuštěnými procesy jsou vždy přítomny. Příručky pro používání operačního systému Windows XP jsou dobře dostupné, rozsah tohoto textu neumožňuje jiný než obecný pohled na uvedený operační systém.
- 45 -
Informatika • Modul 01 • Počítačové a operační systémy
6
Vlastnosti operačního systému Linux
Jedná se o operační systém šířený volně a vycházející z koncepce operačních systémů Unix používaných zejména na specializovaných pracovních stanicích. Jejich vývoj sahá až do sedmdesátých let minulého století. Jádro systému Linux vytvořil Linus Torvalds v roce 1991 pro procesor Intel 80386. Postupem času začala systém rozvíjet skupina programátorů z celého světa a dnes představuje alternativu ke komerčním operačním systémům. Jádro bylo přepracováno do plnohodnotné architektury (správa virtuální paměti, správa procesů apod.) v roce 1996. Systém se neustále vyvíjí, jeho architektura však zůstává značně odlišná od nejrozšířenějších operačních systémů pro PC firmy Microsoft. Postupně bylo vyvinuto několik tzv. instalačních distribucí systému, které obsahují sestavy různých modulů kladoucí důraz na určité specializace při nasazení systému (síťový server, grafická stanice apod.). Pří vývoji a distribuci systému byla přijata konvence zakazující prohlašovat jakoukoli část systému za značkový produkt podléhající autorským zákonům. Navíc se musí vždy přikládat zdrojový kód (většinou v jazyce C), který umožňuje znalým uživatelům operační systém přizpůsobovat svým potřebám. Linux představuje multiuživatelský multiúlohový systém využívající standardy Posix určené pro operační systémy typu Unix. Existuje i ve variantách pro jiné typy počítačů než je PC. V současné době podporuje i symetrický multiprocesing. Vnitřní část systému představuje jádro, které spravuje soustavu modulů, které lze přidávat, odstraňovat a měnit. Modul může představovat ovladač zařízení, souborový systém apod. Dobře definované programové rozhraní umožňuje komukoli vytvářet nové moduly a modifikovat tak operační systém. Moduly lze zavádět a odstraňovat dynamicky za běhu systému, správce modulů může moduly z paměti odstranit automaticky v případě, že je žádný proces nepoužívá. Jádro je monolitické, nepoužívá se architektura mikrojádra, kterou do značné míry nahrazují dynamické moduly. Na druhé straně je Linux zcela otevřený – uživatel má k dispozici zdrojový kód jádra i modulů a může si vytvořit svou pozměněnou verzi operačního systému s důrazem na vyšší rychlost nebo větší flexibilitu systému. Jádro i moduly jsou prováděny v privilegovaném režimu procesoru, ostatní procesy běží v uživatelském režimu. Zatímco uživatelské procesy jsou prováděny v preemptivním režimu (řízení jim může jádro kdykoli odebrat), samotný proces jádra je nepřerušitelný, i když běží ve prospěch uživatelského procesu (který např. požádal jádro o službu). Tato nevýhoda však byla v nejnovější verzi jádra 2.6 (uvolněná v roce 2003) odstraněna. Správa procesů nerozlišuje vlákna a procesy – vlákno je proces vytvořený rodičovským procesem tak, že sdílí jeho paměťový prostor. Algoritmy pro předávání řízení podle priority procesů a jejich stavu jsou vysoce propracovány neboť vycházejí z dlouholetého vývoje Unixu. Při tvorbě nového procesu probíhají typicky dvě fáze: jádro vytvoří synovskou kopii rodičovského procesu, který požádal o vytvoření procesu (fork). Synovský proces je pak typicky napl- 46 -
Vlastnosti operačního systému Linux
něn novým programem (exec). Systém využívá u procesů vztah rodič–potomek v řadě bezpečnostních mechanizmů. Linux tradičně narozdíl od MS Windows podporuje celou řadu souborových systémů a díky tomu je schopen pracovat s disky vytvořenými v jiných prostředích. Patrně nejpoužívanější je však souborový systém ext2. Pro alokační struktury souborového systému se v systémech typu Unix používá poněkud odlišná terminologie: celkový popis souborového systému (popis, velikost, clustery apod.) je uložen v tzv. superbloku, jména souborů spolu s odkazem na začátek alokačních jednotek souboru jsou v tzv. adresáři, vlastní popis souboru spolu s výčtem alokačních jednotek (tzv. datových bloků souboru) je v tabulce tzv. i-uzlů (i-nodes). Linux však umožňuje práci i s diskem bez souborového systému, pak lze disk považovat za sekvenční zařízení, na které lze např. zálohovat data stejně jako na magnetickou pásku. Velký počet podporovaných typů souborových systémů je umožněn zavedením tzv. virtuálního souborového systému (VFS – Virtual File System), který před procesy skrývá odlišnosti jednotlivých typů souborových systémů. Posloupnost zavedení a spuštění Linuxu v PC je následující: 1. BIOS vyhledá na připojeném disku zaváděcí sektor, vyhledá v něm zavlékací program, který se nazývá LILO (Linux Loader). 2. Zavlékací program nalezne, zavede a předá řízení jádru (Linux kernel), které je centrální řídicí částí celého systému. Jádro přepne procesor do privilegovaného režimu a zjišťuje potřebné informace o hardware a síťovém prostředí, v němž pracuje. V případě správné činnosti jádro spustí program init a předá mu řízení. 3. Proces init se stává rodičem všech ostatních procesů v systému. Typicky spouští mnoho jiných procesů, z hlediska uživatele je však nejdůležitější proces pro správu interaktivního terminálu např. getty nebo xdm (textového nebo grafického). 4. Dále je spuštěn proces login, který umožní uživateli přihlásit se do systému, po úspěšném přihlášení je pak spuštěno prostředí uživatele, ve kterém může uživatel interaktivně např. spouštět další programy apod. V operačních systémech typu Unix není správa grafického interaktivního prostředí integrována tak těsně do systému jako u MS Windows. Místo toho je používán nezávislý grafický systém, tzv. X Window, který umožňuje používat specializované grafické terminály připojené k systému Linux např. prostřednictvím počítačové sítě. Obecně jsou dnes při používání Linuxu kladeny na uživatele poněkud vyšší kvalifikační nároky než v případě produktů firmy Microsoft. Na druhé straně se však oba typy systémů bouřlivě vyvíjejí a konkurují si ku prospěchu uživatelů. Motto: Linux je přátelský operační systém, avšak své přátele si vybírá.
- 47 -
Informatika • Modul 01 • Počítačové a operační systémy
7
Autotest
1) Šířka datové části sběrnice procesoru určuje: a) s jak velkou pamětí je procesor schopen přímo pracovat, b) kolik bitů lze najednou přenést mezi procesorem a pamětí, c) taktovací frekvenci procesoru, d) maximální počet řídicích signálů procesoru. 2) Šířka adresové části sběrnice procesoru určuje: a) s jak velkou pamětí je procesor schopen přímo pracovat, b) kolik bitů lze najednou přenést mezi procesorem a pamětí, c) taktovací frekvenci procesoru, d) maximální počet řídicích signálů procesoru. 3) 32-bitový procesor Pentium III: a) dokáže komunikovat s operační pamětí rychlostí 32 bitů za sekundu, b) umožňuje připojit maximálně 32 vstupně výstupních zařízení, c) má šířku datové části vnitřní sběrnice 32 bitů, d) pracuje maximálně s 32-bitovými čísly. 4) CPU je zkratka pro označení: a) jednotky pevného disku, b) jednotky pružného disku, c) procesoru, d) operační paměti. 5) Operační paměť PC je tvořena: a) obvody statické paměti SRAM, b) obvody dynamické paměti DRAM, c) obvody paměti CMOS zálohované baterií, d) diskovou pamětí. 6) Požadavek na přerušení IRQ je: a) požadavek operační paměti na přerušení komunikace s procesorem, b) požadavek na přerušení práce periferního zařízení, c) signál řadiče zařízení, kterým žádá procesor o obsluhu, d) signál pro restart počítače. 7) Mechanizmus přímého přístupu do paměti DMA umožňuje: a) přistupovat procesoru k operační paměti, b) přistupovat procesoru k diskové paměti, c) přistupovat řadiči zařízení do paměti bez účasti procesoru, d) přistupovat perifernímu zařízení k paměti bez účasti řadiče. 8) Obsah bajtu 00110101 je v desítkové soustavě: a) 53, b) 37, c) 69, d) 83.
- 48 -
Autotest
9) Aritmetické instrukce provádí procesor: a) přímo s obsahem paměti, b) s obsahem svých obecných registrů, c) s obsahem svých stavových registrů, d) s čítačem instrukcí. 10) Von Neumannova architektura postuluje, že: a) v operační paměti jsou instrukce, data jsou uložena na diskové paměti, b) v operační paměti jsou pouze data, instrukce procesor získává z diskové paměti, c) v počítači jsou dva typy operační paměti – jedna pro data, druhá pro instrukce, d) v jedné operační paměti jsou uloženy jak instrukce, tak data. 11) Hodiny sběrnice určují: a) reálný čas na sběrnici, b) údaje, které budou po sběrnici přenášeny, c) rychlost sběrnice, d) bitovou šířku sběrnice. 12) Cache označuje: a) rychlé pevné disky, b) paměti systému BIOS, c) operační paměť, d) rychlou vyrovnávací paměť. 13) Proces v paměti počítače neovlivňuje paměť jiných procesů, protože: a) je v paměti vždy sám, b) ostatní procesy používají diskovou paměť, c) je tak naprogramovaný programátorem, d) brání mu v tom operační systém pomocí limitních registrů procesoru. 14) Čipová sada v počítačích PC je: a) sada čipů realizujících vlastní procesor, b) sada čipů realizující napájecí zdroj, c) sada čipů realizující operační paměť, d) sada čipů realizující podpůrné technické prostředky (zejména sběrnice). 15) Sběrnice AGP v počítačích PC je určena k připojení: a) diskových pamětí, b) grafických adaptérů, c) klávesnice, d) síťových adaptérů. 16) Procesory pro počítače PC jsou vždy: a) 16-bitové, b) 32-bitové, c) 64-bitové, d) v průběhu vývoje se počet bitů procesorů mění.
- 49 -
Informatika • Modul 01 • Počítačové a operační systémy
17) BIOS obsahuje: a) pouze program pro podporu zatažení operačního systému, b) pouze program pro nastavení základní desky, c) pouze testovací program spouštěný při startu počítače, d) všechny výše uvedené části. 18) Přenosová rychlost disků je závislá zejména na: a) rychlosti přesunů hlaviček mezi jednotlivými stopami, b) velikosti operační paměti, c) rychlosti procesoru, d) rychlosti otáčení disku. 19) Proces využívá čas procesoru v preemptivních systémech podle toho: a) jak je naprogramován, b) kolik obsazuje operační paměti, c) kolik mu ho operační systém přidělí, d) kolik je právě místa v operační paměti. 20) Proces ve Windows XP využívá konkrétní fyzické části operační paměti podle toho: a) jak je naprogramován, b) jak mu je operační systém přidělí, c) zda jsou umístěny ve stránkovacím souboru, d) jak je operační paměť velká. 21) Alokační jednotka disku označuje: a) jednotlivé sektory, b) souvislý počet sektorů na disku, které jsou spravovány jako celek, c) soubory na disku, d) umístění disku v počítači. 22) Souborový systém NTFS je oproti systému FAT32: a) rychlejší, b) použitelný i na pružné disky, c) použitelný na větší disky, d) bezpečnější. 23) Jeden z aspektů technologie mikrojádra je, že v privilegovaném režimu jádra: a) běží maximum procesů, b) běží minimum procesů, c) neběží žádný proces, d) běží všechny procesy. 24) Operační systém windows Windows XP je založen na architektuře: a) čistého mikrojádra, b) monolitického jádra, c) non-preemptivního plánování procesů, d) modifikovaného mikrojádra, kdy v privilegovaném režimu běží více nezbytných procesů.
- 50 -
Závěr
Závěr Shrnutí I z uvedeného velmi stručného textu čtenář snad pochopil, že dnešní PC a operační systémy, které v nich provozujeme, jsou velmi složité, avšak mají určité obecné rysy, které by si i běžný uživatel technického zaměření měl uvědomovat. Jen tak je schopen odhadnout možnosti výpočetní techniky ve své profesi dnes i v budoucnosti. Navíc pochopení principů technologií, které jsou původcem bouřlivého vývoje nejrůznějších oblastí poznání, slouží k celkovému kvalifikačnímu růstu a inspiraci každého uživatele. Obrovské rozšíření počítačů a jejich nasazení ve všech oblastech umožnilo, že ač patří dnešní procesory k nejsložitějším produktům, které kdy lidstvo vyrobilo, je jejich cena velmi příznivá a jsou k dispozici prakticky všude a komukoli. Stejně tak operační systémy, na nichž se podílelo několik generací špičkových programátorů, jsou vnímány jako běžná samozřejmost. Bylo by však omylem považovat výpočetní techniku pouze za spotřební zboží, neboť její fenomén má obrovský vliv nejen na technický rozvoj, ale celou lidskou společnost. Patrně neexistuje jiný technický obor, který by byl výsledkem čistě lidských „umělých“ konstrukcí, myšlenek a postupů, tak nezávislý na přírodních zákonech, a s takovým dopadem na celou civilizaci. I proto si zaslouží bližší studium stejně, jako exaktní přírodní vědy.
Klíč k autotestu Správné odpovědi na otázky autotestu: 1b, 2a, 3c, 4c, 5b, 6c, 7c, 8a, 9b, 10d, 11c, 12d, 13d, 14d, 15b, 16d, 17d, 18d, 19c, 20b, 21b, 22d, 23b, 24d Pokud jste zodpověděli správně alespoň 20 otázek, jsou Vaše znalosti dostatečné k absolvování této části celého kurzu. V případě alespoň 15 správných odpovědí (a hlavně bez hádání) byste se ještě měli nad textem zamyslet. Méně správných odpovědí již naznačuje, že máte o diskutovaném předmětu nesprávné nebo velmi neúplné představy.
- 51 -
Informatika • Modul 01 • Počítačové a operační systémy
Studijní prameny Seznam použité literatury [1]
Abraham Silberschatz, Greg Gagne, Peter Baer Galvin, Operating System Concepts, Wiley, 2002
[2]
Linux – Dokumentační projekt, Computer Press, 1998
[3]
Microsoft Windows XP Professional Resource Kit, Microsoft Corporation, 2003
[4]
Ed Bott, Carl Siechert, Mistrovství v Microsoft Windows XP, Computer Press, 2003
Seznam doplňkové studijní literatury [5]
Luděk Skočovský, Science, 1993
Principy a problémy operačního systému UNIX,
Odkazy na další studijní zdroje a prameny [6]
http://www.karbosguide.com
[7]
http://www.svethardware.cz
- 52 -