ÚVOD DO OPERAČNÍCH SYSTÉMŮ Vstup-výstup Input-Output Přehled a obsluha České vysoké učení technické Fakulta elektrotechnická Y38ÚOS Úvod do operačních systémů 12 Ver.1.00 2010
Operační systém (Operating System) Operační systém je software který [1]: pro uživatelské programy vytváří lepší, jednodušší, přehlednější základnu pro efektivní využití počítače, spravuje všechny prostředky (resources) počítače. Prostředky (resources) počítače: Procesory Operační paměť (Main Memory) Disky Tiskárny Klávesnice Myš Síťové adaptéry různá další vstupní a výstupní zařízení (Devices) [1] Tanenbaum, A: Modern Operating Systems. Prentice Hall, New Jersey, 2008 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 2
Komponenty počítačového systému CPU, Memory I/O Devices Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 3
Komponenty operačního systému Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 4
Metody obsluhy I/O zařízení Způsob obsluhy I/O zařízení Polling Programové testování stavového bitu Ready/Busy Interrupt Driven Obsluha pomocí přerušení DMA Driven Obsluha přímým přístupem do paměti Způsob adresování I/O zařízení: I/O mapped Memory mapped Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 5
Propojení bloků počítače Bus (společná sběrnice) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 6
Paměti počítače XTAL Clock CPU CPU - SYNCHRONOUS FINITE STATE MACHINE (FSA, FSM) BUS MASTER SEQUENTIAL PROGRAM PROCESSING (ONE INSTRUCTION AT A TIME) Common Bus Program Memory BIOS Operating System Application Program Data Memory MAIN MEMORY PROGRAM INSTRUCTIONS PROGRAM VARIABLES & PROGRAM STACK CD/DVD COMMON DATA PATH (BIDIRECTIONAL) I/O Channels EXTERNAL MEMORY Output Input HDD FLASH Corsair Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 7
Rozdělení společné sběrnice Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 8
Požadavky pro volání procedury Návratová adresa Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 9
Princip volání procedury (Procedure Call) Zásobník (návratových adres) Ukazatel zásobníku Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 10
Sdílené prostředky (sdílí je procedury) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 11
Asynchronní akce hardwareové (hw) volání procedury Žádosti o přerušení Řadič přerušení Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 12
Asynchronní akce hw volání procedury (ISR) Kontrolní seznam 1 Check list No.1 Asynchronní akce Systém přerušení Hardwarové volání procedury Předdefinovaná cílová adresa Vektor přerušení Tabulka vektorů přerušení Asynchronní žádost o přerušení Řadič přerušení Vstupy žádostí o přerušení Asynchronní událost Žádost o přerušení do CPU Potvrzení žádosti od CPU Asynchronous actions Interrupt system Hardware procedure call Predefined target address Interrupt vector Interrupt vector table Asynchronous interrupt request Interrupt controller Interrupt request inputs Interrupt event CPU interrupt request CPU interrupt acknowledge Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 13
Asynchronní akce hw volání procedury (ISR). Kontrolní seznam 2 Check list No.2 Asynchronní akce - pokrač. Instrukce je nepřerušitelná Reakční doba přerušení Priorita přerušení Statická priorita přerušení Dynamická priorita přerušení Programová priorita přerušení Typy přerušení Maskovatelné přerušení Nemaskovatelné Programové (ladící) přerušení Program řízený událostmi Asynchronous actions cont'd Instruction is uninterruptable Interrupt latency Interrupt priority Static interrupt priority Dynamic interrupt priority Software interrupt priority Interrupt types Maskable interrupt Nonmaskable interrupt Trap (software interrupt) Event driven program Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 14
Asynchronní akce hw volání procedury (ISR) Kontrolní seznam 3 Check list No.3 Asynchronní akce - pokrač. Obsluha přerušení - ISR Návratová adresa z přerušení Instrukce návratu z přerušení Asynchronní událost Pozadí programu Nejnižší hladina programu Sdílené zdroje Střadač Stavové slovo procesoru - PSW Příznakový registr Kontext programu (uložit/obnovit) Asynchronous actions cont'd Interrupt service routine - ISR Interrupt return address Interrupt return instruction Asynchronous event Background (level) Lowest program level Shared resources Accumulator Processor status word - PSW Flag register Program context (save/restore) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 15
Asynchronní akce hw volání procedury (ISR) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 16
Prostředky pro organizaci hw volání procedury (interrupt) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 17
Sdílené prostředky (sdílí je ISR a přerušený program) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 18
Žádost o obsluhu přerušení (hw volání procedury) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 19
Žádost o obsluhu aktivní - 1 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 20
Dokončení aktivní instrukce - 2 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 21
Uložení (Push) návratové adresy do zásobníku (Stack) - 3 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 22
Vyzvednutí adresy obslužného programu (ISR) - 4 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 23
Spuštění obslužné procedury přerušení (ISR) - 5 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 24
Uložení kontextu do zásobníku - 6 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 25
Provedení těla obslužné procedury (ISR) - 7 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 26
Obnovení kontextu (ze zásobníku) - 8 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 27
Vyzvednutí návratové adresy (ze zásobníku) - 9 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 28
Obnovení běhu přerušeného programu - 10 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 29
Princip programu řízeného událostmi - souhrn Obsluha žádosti o přerušení souhrn akcí Dokonči právě prováděnou instrukci (instrukce je nepřerušitelná) Ulož (Push) návratovou adresu do zásobníku (tj. adresu, která je právě v čítači instrukcí (PC)) Vyzvedni adresu ISR (tj. podprogramu obsluhy přerušení) z tabulky vektorů přerušení Spusť ISR Vynuluj Interrupt Request Flag (závisí na typu procesoru) Ulož kontext do zásobníku Proveď tělo ISR (vlastní obsluhu žádosti o přerušení) Obnov původní kontext (vyzvedni ho ze zásobníku) Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu na pozadí tj. čti instrukci z adresy uložené v PC Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 30
Event Driven Program Principle - summary Interrupt request service summary Finish current background instruction (instruction is uninterruptable) Push Return Address to stack (i.e. address in program counter) Get ISR Address from Interrupt Vector Table Start ISR routine Clear Interrupt Request Flag (depends on processor type) Save context to stack Run ISR body Restore context from stack Execute Return instruction Pop Return Address from stack (Pop it to program counter) Continue background program read next instruction from address in PC Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 31
Připojení operační paměti k CPU ADDRESS VALID DATA VALID ADDR.BUS DATA BUS nread nwrite CPU DATA READ CPU DATA WRITE (to MEMORY) NOTE: nread, nwrite - SIGNAL ACTIVE IN 0 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 32
Operační paměť (Main Memory) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 33
Cyklus obsluhy přerušení (Interrupt Cycle) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 34
DMA cyklus (Direct Memory Access Cycle) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 35
DMA - princip Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 36
DMA převzetí řízení sběrnice DMA TRANSFER CYCLE ADDRESS VALID DATA VALID BUS REQUEST BUS RELEASED DMA END CPU CONTINUES ADDR.BUS DATA BUS nread nwrite HOLD HLDA BUS MASTER 1 - CPU BUS MASTER 2 DMA CONTROLLER NOTE: nread, nwrite - SIGNAL ACTIVE IN 0 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 37
Charakteristiky I/O zařízení Způsob přenosu dat: Jednotlivé znaky (proud znaků) Blok dat Způsob přístupu k datům: Sekveční Adresný (libovolný, random) Čas začátku přenosu: Synchronní předvídatelný čas odezvy Asynchronní nepravidelný, náhodný čas odezvy Možnost sdílení více procesy: Nemožné (tiskárna) Možné Rychlost přenosu dat: Jednotky byte/s až stovky MB/s Směr přenosu dat: Jednosměrný jen čtení nebo jen zápis Obousměrný čtení i zápis Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 38
Charakteristiky I/O zařízení Hledisko Způsob přenosu Metoda přístupu Tÿp Znakový Blokový Sekvenční Náhodná (nesekveční) Příklad Terminál Disk Modem CD ROM Čas začátku přenosu Sdílení Rychlost přenosu Směr přenosu Synchronní Asynchronní Nemožné Možné Reakční doba Doba vyhledání dat Přenosová rychlost Doba mezi operacemi Jen čtení Jen zápis Čtení i zápis Magnetická páska klávesnice Tiskárna Klávesnice CD ROM Grafická kontroler Disk Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 39
Typy I/O zařízení PCI Bus Controller SCSI Bus Controller Graphic Display Controller Keyboard Controller Mouse Controller FDD controller ATAPI HDD, Magnetic Tape Flash Disk, Flash Card CD-R/W, CD-ROM DVD-R/W, DVD-ROM Ethernet Controller, WiFi,. USB Controller UART (Asynchronous character transfer Timer RTC Real Time Clock Power Management Unit Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 40
Bus (společná sběrnice) I/O hardware shrnutí principů Controller (kontrolér) I/O port, I/O registers Address space - I/O mapped, memory mapped Handshaking CPU & Device controller (vzájemná synchronizace) Handshaking via polling or interrupts I/O service overhead (režie obsluhy polling vs. Interrupts) DMA transfer DMA controller, large data transfers (low overhead) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 41
Struktura I/O části jádra OS OS kernel (jádro OS) Software kernel I/O subsystem PCI Bus Device Driver Ethernet Device Driver..... Keyboard Device Driver Hardware PCI Bus Device Controller PCI Bus Ethernet Device Controller Ethernet Network..... Keyboard Device Controller..... Keyboard Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 42
Metodika začlenění I/O zařízení do OS Cíl návrhu: Přístup k I/O zařízením stadardní a jednotný Použití: Abstrakce Zapouzdření Dělení software na horizontální vrstvy Zařízení rozdělena na několik málo kategorií: Přístup k jednotlivým kategoriím standardním souborem funkcí OS API Application Program Interface Př: Disky open(), read(), write(), seek(), close(),. Počítačová síť: socket I/O subsystém jádra OS: Nezávislý na detailech obsluhy I/O zařízení (výhodné pro návrh OS) Detaily obsluhy dílčích zařízení: Zapouzřeny v softwarové vrstvě device drivers (ovladače) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 43
Optimalizace vlastností I/O zařízení I/O Scheduling DMA transfer Buffering Vyrovnání různých rychlostí zdroje a cíle dat Vyrovnání různé velikosti dat zdroje a cíle Zajištění konsistence při předání dat ( copy semantics ) kopírování předávaného bloku dat do lokálního bufferu OS. Caching Spooling: Spool = buffer pro data určená pro zařízení, které nelze sdílet (např. data z různých procesů určená pro tiskánu) Error Handling (Ošetření chyb): Přechodné chyby ošetří OS (přetížení počítačové sítě) Trvalé chyby (př. poškození kontroleru) nelze ošetřit v OS. Ochrana I/O: Privileged (system) mode Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 44
Cache (vyrovnávací paměť) Kontrolní seznam 4 Check list No. 4 Cache (vyrovnávací paměť) Operační paměť Externí paměť Disk Magnetická páska Cache pro instrukce Datová cache Metoda zápisu z cache do hl.p. Zápis ihned zpět do hl.p. Zápis až při novém plnění cache Cache slot (blok + označení) Cache tag (označení bloku) Cache blok Cache Main memory Secondary memory HDD (Hard Disk Drive) Magnetic tape Instruction cache Data cache Cache write Write-through method Write-back method Cache slot Cache tag Cache block Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 45
Paměťová hierarchie Registry na CPU Cache Cena Rychlost přístupu Operační paměť (DRAM) Magnetický disk (HDD) CD-RW DVD-RW Magnetická páska Velikost Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 46
Procesor a operační paměť - Výkon vs. roky Výkon 100.000 x 40 let Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 47
Cache vyrovnávací paměť Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 48
Cache vyrovnávací paměť Urychlení práce počítače Část informace přesunuta do menší ale rychlé paměti (cache) Přístup procesoru k této informaci rychlejší Pokud informace v cache není, nutno ji přisunout do cache z operační paměti Cache může být rozdělena na více úrovní (hladin) jedna z úrovní je přímo v procesoru, druhá může být vně procesoru (ale sestavená z rychlejší paměti než je paměť operační) Cache může být určena jen pro data nebo i pro instrukce Data cache Instruction cache Data cache po zpracování dat se data uloží: Ihned zpět do operační paměti (write-through method) Do data cache (write-back method). Zpět do operační paměti se uloží později, při novém plnění data cache Cache je řízena pomocí hardware Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 49
Cache Vyrovnávací paměť - jednohladinová Word (byte) transfer Block transfer Single Level Cache Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 50
Cache Vyrovnávací paměť - dvouhladinová Multi Level Cache Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 51
Cache princip organizace MAIN MEMORY Memory address Slot number 0 Tag CACHE Block Slot 0 1 2 Block (K words) 1 2 X Block length (K words) Block 2 n -1 Word length Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 52
Cache princip organizace (přiklad) 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1... 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 MAIN MEMORY Memory address 0 1 2 Slot number 0 1 Tag 0001 CACHE Block Slot 4096 4097 4098 Block (4K words) 2 8191 Block X Block length 2 n -1 (4K words) Word length Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 53
Virtual Memory (Virtuální paměť) Kontrolní seznam 5 Check list No. 5 Virtuální paměť Overlay (překryvný modul) Logická adresa Fyzická adresa Stránka (Page) MMU (přemapování adresy) Mapovací tabulka Virtuální adresa Stránka je/není v oper.paměti Virtuální stránka Ofset adresy (posun od zač.str.) Fyzická stránka v oper.pam. Stránka není v oper.paměti Virtual Memory Overlay Logical address Physical address Page MMU Memory management unit Page table Virtual address Present/absent bit Virtual page Address offset Page frame Page fault Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 54
Velikost programu vs. velikost operační paměti Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 55
Velikost programu vs. velikost operační paměti Když program větší než operační paměť (Main Memory) - možnosti Program nelze použít (to určitě nechceme) Overlays (překryvné moduly) Za vytvoření zodpovědný programátor Virtuální paměť (Paging) stránkování Za stránkování zodpovědný operační systém Pro programátory transparentní Navrženo - 1961, Manchester, Velká Británie Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 56
Paměťová hierarchie (zjednodušené) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 57
Overlays (překryvné moduly) - princip Program rozdělí PROGRAMÁTOR na části (Overlay) Overlay 1 DISK (HDD) Program se provádí postupně Overlay 2 Program Main Memory Overlay 2 Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 58
Overlays (překryvné moduly) - princip Když program větší než operační paměť (Main Memory) Aplikační program se rozdělí na překryvné moduly (Overlays) Za všechny akce zodpovídá programátor aplikačního programu Program se rozdělí na části (Overlays), které se vejdou do paměti Celý program je uložen ve vnější pamětí (Secondary Storage) např. HDD Programátor určí, kdy se který překryvný modul (Overlay) má zavést do operační paměti a spustit. Celý proces výpočtu pomocí překryvných modulů probíhá v režii programátora, bez pomoci počítače (operačního systému) Nepohodlné, zdlouhavá příprava, možnost chyb Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 59
Virtuální paměť (Virtual Memory) - princip Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 60
Virtuální paměť (Virtual Memory) Virtuální paměť Paměťový prostor je rozšířen na disk Adresy (logické) mohou mít hodnotu větší než odpovídá rozsahu operační paměti (Main Memory) Část instrukcí a dat spuštěného programu je odložena (Swap) na externí paměťové medium (disk) (ty, které nejsou právě třeba při provádění programu) Paměťová jednotka, která se přenáší mezi virtuální a fyzickou pamětí se nazývá stránka (Page) Překódování adres (mapování, remaping) řídí jednotka MMU Memory Management Unit (je součástí CPU) Za překódování (přemapování) virtuální adresy na fyzickou odpovídá operační systém (pro programátora aplikace je činnost MMU transparentní) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 61
Virtuální paměť a MMU (Memory Management Unit) Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 62
Virtuální a fyzická adresa... Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 63
MMU princip činnosti Virtual page MMU Memory Management Unit Page table 12-bit memory address 1 1 0 0 0 0 1 1 0 1 0 0 Present/ absent bit 63 0... 7 0 6 1 11 5 0 4 0 3 1 2 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 6-bit virtual page 10-bit offset 16-bit virtual address Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 64
MMU Jednotka přemapování adres VIRTUÁLNÍ PAMĚŤ Page Virtual adresses 63 61440-65535 6... 6144-7167 FYZICKÁ PAMĚŤ (MAIN MEMORY) 5 4 5120-6143 4096-5119 Page frame Physical adresses 3 3072-4095 3 3072-4095 2 2048-3071 2 2048-3071 1 1024-2047 1 1024-2047 0 0-1023 0 0-1023 MMU 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 6-bit virtual page 10-bit offset 16-bit virtual address 12-bit memory address Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 65
MMU Jednotka přemapování adres Page fault CPU MMU MAIN MEMORY 6-bit virtual page 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 10-bit offset 16-bit virtual address 12-bit memory address Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 66
ÚVOD DO OPERAČNÍCH SYSTÉMŮ Vstup-výstup Input-Output Přehled a obsluha KONEC České vysoké učení technické Fakulta elektrotechnická Y38ÚOS Úvod do operačních systémů 12 - Vstup - výstup 67