12.10.13
IOSYS_2013: Hardware a operační systémy
Operační systémy
2 Hardware a operační systémy Obsah: 2.1
Procesor – CPU, 2.1.1 Zpracování instrukcí, 2.1.2 Zvyšování výkonu CPU, 2.1.3 Režimy CPU,
2.2
Paměť, 2.2.1 Cache,
2.3
Vstupně‑výstupní zařízení, 2.3.1 Komunikace se V/V zařízeními, 2.3.1.1 Přístup pouze pomocí instrukcí CPU, 2.3.1.2 Přístup pomocí instrukcí CPU s přerušovacím signálem, 2.3.1.3 Přímý přístup do paměti – DMA (Direct Memory Access),
2.4 2.5 2.6 2.7
Přerušení (IRQ – Interrupt ReQuest), Sběrnice (bus), Shrnutí – požadavky OS na HW, Opakování.
2.1 Procesor – CPU Hlavní procesor (CPU – Central Processing Unit) zpracovává instrukce programu, provádí tedy program. Procesory lze rozdělit dle rozsahu instrukční sady na: RISC – Reduced Instruction Set Computer a CISC – Complete Instruction Set Computer. Hlavní část procesoru, která vykonává aritmetické a logické operace, se označuje jako ALU (Arithmetic Logic Unit) – aritmeticko‑logické jednotka. Aritmetické operace jsou v ní obvykle pouze celočíselné a pro výpočty s desetinnými čísly je třeba numerické jednotky FPU (Floating‑Point Unit) – numerický koprocesor. FPU pracuje s čísly reprezentovanými jako desetinná čísla. Není‑li součástí hardware FPU, je třeba naprogramovat požadované operace pomocí ALU, což je náročnější. Na architektuře IA‑32 je FPU trvale součástí procesoru od verze procesoru 486. Procesor obsahuje pro práci s daty i adresami registry. Jsou to paměťová místa o velikosti obvykle jednoho slova (word), kde počet bitů ve slově je dán architekturou – 32bitový procesor pracuje se slovy o velikosti 32 bitů, má tedy registry také 32bitové. Nejdůležitější registry: program counter (instruction pointer) – obsahuje adresu následující instrukce, instruction register – interní registr (nepřístupný programátorovi) obsahující právě prováděnou instrukci, stack pointer – obsahuje adresu vrcholu zásobníku. PSW (Program Status Word, případně flags) – stavový registr – obsahuje příznaky, které informují o výsledku předchozí instrukce; jednotlivé příznaky: C – carry – příznak o přenosu nejvyššího bitu při počítání s čísly skládajícími se z více slov, N – negative – výsledek předchozí operace je záporný, Z – zero – výsledek předchozí operace je nulový, V – overflow – výsledek předchozí znaménkové operace se nevejde do registru (při použití dvojkového doplňku reprezentuje výsledek záporné číslo).
fei-learn.upceucebny.cz/mod/page/view.php?id=5269
1/5
12.10.13
IOSYS_2013: Hardware a operační systémy
Další registry jsou obecné (libovolné použití), bázové adresní (obsahují počáteční adresy), ofsetové (obsahují relativní adresy), privátní (používá je interně CPU) aj.
2.1.1 Zpracování instrukcí Zpracování instrukcí má obvykle tyto fáze: 1. 2. 3. 4.
fetch – načtení instrukce, decode – dekódování instrukce (určení činnosti), execute – provedení instrukce, write – zápis výsledku.
Provedení instrukce v CPU
2.1.2 Zvyšování výkonu CPU Pro zvýšení výkonu CPU se používají následující techniky: spekulativní provádění instrukcí – některé instrukce jsou prováděny mimo pořadí (je‑li to pro CPU výhodnější a nenaruší‑li to výpočet), použití pipeline – paralelní zpracování instrukcí na základě rozdělení zpracování instrukce na nezávislé kroky, díky čemuž lze zahájit zpracovávání jedné instrukce ještě před dokončením předchozí – viz obrázek, paralelizace instrukcí – takové procesory se označují jako superskalární CPU, jsou schopné zpracovávat více instrukcí současně (mají duplicitní součásti), více jader – duplicitní CPU v jednom pouzdře, v podstatě se jedná o víceprocesorový systém.
Riscová pipeline
Použití více fází pipeline: Jednotlivé fáze zpracování instrukce jsou na sobě nezávislé a využívají jinou část CPU. Díky tomu lze během další fáze zpracování jedné instrukce provádět předchozí fázi zpracování další instrukce. Tím se dosáhne vyššího počtu instrukcí provedených za jednotku času. Jednotlivé fáze riscového procesoru jsou následující: 1. 2. 3. 4. 5.
fetch – načtení instrukce z adresy v registru program counter do instrukčního registru, decode – dekódování instrukce (zjištění, co má instrukce dělat), execute – provedení instrukce (vykonání operace, obvykle v ALU), memory access – čtení z paměti, write back – zápis výsledků do paměti anebo registrů.
fei-learn.upceucebny.cz/mod/page/view.php?id=5269
2/5
12.10.13
IOSYS_2013: Hardware a operační systémy
2.1.3 Režimy CPU Obvykle jsou k dispozici alespoň dva režimy práce CPU: režim user – není povoleno vše, některé instrukce jsou zakázané, některé mají omezené operandy, zápis do některých registrů je omezen, režim kernel – privilegovaný režim, všechny instrukce jsou povoleny. Architektura IA‑32 (x86) má čtyři režimy: ring 0 – ring 3, kde ring 0 je privilegovaný režim a ring 3 je uživatelský režim. S nástupem virtualizace procesory podporující hardwarovou virtualizaci – technologie Vanderpool (VT) / Pacifica (AMD‑V) – zavádějí novou úroveň, kterou využívá hypervizor, úroveň ring −1. Instrukce TRAP (nebo její ekvivalent) provádí přepnutí z režimu user do režimu kernel. Jedná se o skok na předem definovanou adresu v jádře OS. Využívá se pro systémová volání či ošetření výjimek a chybových stavů.
2.2 Paměť Pro běh programů i pro ukládání dat je potřeba paměť. Pokud by výroba rychlé paměti byla levná, byla by paměť v počítačích nejspíše jen dvojí – pro běh a pro trvalé ukládání. Nicméně výroba velmi rychlé paměti je drahá, takže počítače disponují různými druhy různě rychlých pamětí. Nejrychlejší paměti pro běh procesů a jejich data jsou registry procesoru, dále pak cache na procesoru (může být různých úrovní dle rychlosti) a operační paměť. Pro trvalé ukládání dat pak slouží disky s pamětí flash či SSD, magnetické pevné disky, páskové jednotky a optické jednotky. Paměť dále můžeme dělit na RAM (Random Access Memory) a ROM (Read Only Memory). Paměť pouze pro čtení si prošla vývojem od čistě nepřepisovatelné verze čipů (ROM) přes čipy s možností jednoho naprogramování (PROM), dále pak čipy vymazatelné ultrafialovým zářením (EPROM) a nebo elektronicky (EEPROM). Operační systém pro zajištění izolace procesů potřebuje, aby HW podporoval ochranu operační paměti. Je třeba izolovat paměť procesů navzájem a také izolovat jádro OS od procesů. Další důležitou vlastností je relokace. To je vlastnost, která dovolí zavést proces od libovolné adresy nebo jej za běhu přemístit na jiné (např. po odložení procesu na swap se při vrácení do paměti nahraje na jiné adresy). Z toho důvodu se pak rozlišuje mezi adresou logickou (virtuální) a fyzickou (skutečnou). Proces a procesor (CPU) pracují s logickými adresami a tím je umožněna i relokace. Na fyzické adresy jsou ty logické převáděny jednotkou MMU (Memory Management Unit), která může být součástí čipu CPU.
2.2.1 Cache Protože výroba velmi rychlé paměti je drahá, nepoužívá se pro operační paměť ta nejlepší technologie, ale jiná, přijatelně rychlá a cenově dostupnější. Díky tomu je však procesor, který pracuje několikrát rychleji než paměť, zdržován při každém přístupu do operační paměti. Proto se vkládá mezi operační paměť a procesor vyrovnávací „mezipaměť“ – cache –, která je rychlostí stejná jako procesor (nebo je mu rychlostí mnohem bližší). Do této mezipaměti se ukládá část aktuálně prováděného kódu procesu a část jeho dat. Procesor pak na operační paměť nemusí čekat. Přitom se využívá toho, že proces má tendenci přistupovat ke stejné části paměti jako v bezprostředně předcházejícím čase (např. při vykonávání cyklu), což se označuje jako princip lokality odkazů. Díky tomuto principu může paměť cache fungovat efektivně i při malých velikostech a činitel úspěšnosti (Hit Ratio), kterým se určuje efektivita paměti cache, se pak bude blížit jedné i při malé kapacitě paměti. Činitel úspěšnosti (HR) určuje počet úspěšných přístupů do paměti cache (data v ní byla nalezena a nemuselo se přistupovat do pomalejší operační paměti) v poměru ke všem přístupům do paměti. Střední přístupová doba (TS) pak označuje střední dobu potřebnou pro získání dat z paměti. Vypočítat lze následovně: TS = TC + (1 − HR) ⋅TOP, kde TC je přístupová doba do paměti cache a TOP je přístupová doba do operační paměti, přičemž TC << TOP. Bude‑li HR blízko jedné, střední přístupová doba se bude blížit přístupové době do cache.
2.3 Vstupně‑výstupní zařízení Aby byl počítač k něčemu užitečný, měl by mít připojená nějaká vstupní a výstupní zařízení. Před zařízení bývá připojen řadič (řídicí jednotka, controller), který řídí komunikaci mezi procesorem, operační pamětí a daným zařízením. OS má pak zajistit zjednodušení práce při komunikaci s V/V zařízeními, což zajišťují ovladače (device drivers).
fei-learn.upceucebny.cz/mod/page/view.php?id=5269
3/5
12.10.13
IOSYS_2013: Hardware a operační systémy
Způsob aktivace ovladačů v OS může být následující: zařazení ovladače přímo do jádra OS, načtení ovladačů do paměti při spuštění systému nebo načtení ovladačů za běhu systému. V moderních OS je potřeba řešit připojování zařízení za běhu (USB, IEEE 1394), takže je třeba mít podporu pro dynamické zavádění ovladačů.
2.3.1 Komunikace se V/V zařízeními Pro komunikaci (zadávání příkazů a přenosy dat) jsou na zařízení registry, do kterých se příkazy či data zapisují nebo ze kterých se čte. Tyto registry označujeme pojmem V/V porty. Každé zařízení si alokuje nějakou část adres těchto portů. Mnohá zařízení pak podporují také přenos bez účasti procesoru (DMA), k čemuž je potřeba, aby si zařízení alokovalo příslušný kanál DMA a přerušovací signál. Rozlišujeme tři základní způsoby komunikace s V/V zařízeními: přístup pouze pomocí instrukcí CPU, přístup pomocí instrukcí CPU s přerušovacím signálem a DMA (Direct Memory Access).
2.3.1.1 Přístup pouze pomocí instrukcí CPU Procesor má instrukce pro posílání dat na V/V porty (a na čtení). Vzhledem k tomu, že procesor je mnohonásobně rychlejší než V/V zařízení, je potřeba po každé takové operaci čekat, než je možné pokračovat v komunikaci. Při přenosu bloku dat je cyklus následující: 1. Zápis do (čtení z) registru V/V zařízení, 2. kontrola stavu zápisu (čtení) – neproduktivní čekání, 3. pokračování krokem 1. Během kroku 2 procesor v cyklu kontroluje stav dokončení operace, aby mohl zahájit operaci následující. Tohle čekání tedy neproduktivně využívá procesorový čas. Proto je tenhle způsob komunikace s V/V zařízením neefektivní.
2.3.1.2 Přístup pomocí instrukcí CPU s přerušovacím signálem Pokud to hardware umožňuje, lze místo čekání na dokončení operace v cyklu využít přerušovacího signálu (IRQ – Interrupt ReQuest). Během provádění V/V operace může procesor provádět jinou činnost, která bude po dokončení operace automaticky přerušena, aby se mohlo pokračovat v přenosu dat. Cyklus přenosu bloku dat pak vypadá následovně: 1. Zápis do (čtení z) registru V/V zařízení, 2. provádění jiných operací – produktivní využití CPU, 3. po dokončení přenosu generuje V/V zařízení přerušovací signál, který přeruší operace v kroku 2, lze tedy pokračovat předáváním dalších dat → krok 1. Během provádění V/V operace může procesor provádět jinou činnost, jeho čas je využit efektivněji. Nicméně, je třeba si uvědomit, že při jednom zápise (čtení) se předávají jen data o velikosti jednoho slova (word), což je rozsah registru. Na 32bitové architektuře lze tedy obvykle naráz přenést obvykle pouze 32 bitů, tedy čtyři bajty. Při přenosu většího bloku dat pak po každém přenosu slova procesor přepíná kontext mezi přenosem a další činností, což také stojí nějakou režii. I přes vylepšení oproti předchozímu způsobu tedy při přenášení většího bloku dat není ani tenhle způsob komunikace příliš efektivní.
2.3.1.3 Přímý přístup do paměti – DMA (Direct Memory Access) Pří použití přímého přístupu zařízení do operační paměti je postup následující: 1. Zápis adresy dat, množství dat a příkazu do registru V/V zařízení, 2. provádění jiných operací – produktivní využití CPU, 3. po dokončení přenosu stanoveného množství dat generuje V/V zařízení přerušovací signál, který přeruší operace v kroku 2, čímž je přenos dokončen. Tímto způsobem se přenáší celý blok dat bez účasti CPU. Připojené V/V zařízení má alokovaný kanál DMA, pomocí kterého přistupuje k datům přímo do operační paměti. Procesor je použit pouze na začátku přenosu.
2.4 Přerušení (IRQ – Interrupt ReQuest)
fei-learn.upceucebny.cz/mod/page/view.php?id=5269
4/5
12.10.13
IOSYS_2013: Hardware a operační systémy
Systém přerušení umožňuje plánovači OS ošetřit paralelně prováděné operace různých komponent počítače, například dokončení V/V operace, jak bylo popsáno výše, ale také lze využít pro ošetření chybových stavů. Důležitou součástí HW je časovač, což je programovatelný čip, který generuje v daných intervalech přerušovací signál. To umožňuje plánovači OS získat v těchto intervalech kontrolu nad prováděnými procesy, umožňuje preempci (odebrání procesoru běžícímu procesu) a naplánování jiného. Koncepce přerušení se využívá také pro ošetření různých výjimek na HW, například přístup do nepřidělené oblasti paměti procesu, provedení neplatné instrukce, ale také pro ošetření chyb HW (chyba parity paměti, výpadek napájení). Některé procesory mají speciální instrukci, která umožňuje provést přerušení i softwarově; ta pak může nahrazovat instrukci TRAP pro skok do jádra OS.
2.5 Sběrnice (bus) Sběrnice je propojení různých částí počítače mezi sebou, které umožňuje komunikaci a přesun dat. Nejrychlejší sběrnicí je sběrnice CPU, po ní se data mohou přenášet stejnou rychlostí jakou pracuje CPU; bývá součástí čipu CPU a je na ni napojena obvykle pouze cache první úrovně. Další sběrnicí je systémová – FSB (Front Side Bus); na ni je napojena operační paměť a pak přes můstek další pomalejší sběrnice pro připojení interních zásuvných karet a externích zařízení. Pro připojování karet uvnitř osobních počítačů slouží (sloužily) sběrnice ISA (Industry Standard Architecture) a PCI (Peripheral Component Interconnect), pro připojení grafického adaptéru pak AGP (Accelerated Graphics Port), pro připojení disků IDE (Integrated Drive Electronics) a jeho vylepšení jako EIDE (Enhanced IDE), ATAPI (Advanced Technology Attachment Packet Interface). Pro připojení interních i externích disků i jiných periferií (např. skenerů) slouží sběrnice SCSI (Small Computer System Interface), dále pak standard IEEE 1394 označovaný obvykle jako FireWire, ale také i.Link nebo HPSB (High Performance Serial Bus). Další je pak USB (Universal Serial Bus).
2.6 Shrnutí – požadavky OS na HW Aby bylo možné implementovat operační systém se všemi vyžadovanými vlastnostmi, je třeba aby hardware počítače zahrnoval: přerušovací systém – umožní efektivní využití CPU při asynchronních přenosech dat (např. DMA), programovatelný časovač pravidelně generující přerušení, které umožní preempci procesů, CPU s podporou alespoň dvou úrovní oprávnění – režimy kernel a user –, což umožní v neprivilegovaném režimu ošetřit neoprávněné přístupy a operace (skokem do jádra – TRAP), CPU s podporou ochrany a virtualizace paměti (logické adresování) – umožní využít sekundární paměť pro odložení nepotřebných procesů z operační paměti, umožní relokaci procesů.
2.7 Opakování 1. 2. 3. 4. 5. 6. 7. 8.
Jmenujte nejdůležitější registry procesoru. Popište, jak CPU zpracovává instrukce. Uveďte, jak dosahuje CPU vyššího výkonu. Uveďte, proč je důležité mít na procesoru alespoň dva různé režimy. Popište paměť typu cache a způsob výpočtu střední přístupové doby do paměti s využitím cache. Uveďte a podrobně popište způsoby možné komunikace se vstupněvýstupními zařízeními. Definujte pojem preempce v souvislosti s procesy a uveďte HW části systému, které využívá. Jmenujte požadavky, které klademe na HW, aby bylo možné nad ním implementovat moderní OS. Naposledy změněno: Pátek, 4. říjen 2013, 17.35
fei-learn.upceucebny.cz/mod/page/view.php?id=5269
5/5