Osnova přednášky. Programové prostředky řízení Operační systémy II. Komunikace mezi řadičem a CPU. Vstupy a výstupy principy I/O zařízení



Podobné dokumenty
Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Management procesu I Mgr. Josef Horálek

Řízení IO přenosů DMA řadičem

Systém souborů (file system, FS)

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Operační systémy 2. Struktura odkládacích zařízení Přednáška číslo 10

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Operační systémy 1. Přednáška číslo Struktura odkládacích zařízení

Principy komunikace s adaptéry periferních zařízení (PZ)

Princip funkce počítače

Přerušovací systém s prioritním řetězem

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Principy operačních systémů. Lekce 8: Ovladače periferií

Činnost počítače po zapnutí

VISUAL BASIC. Práce se soubory

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Procesy a vlákna (Processes and Threads)

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Profilová část maturitní zkoušky 2014/2015

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Systém řízení sběrnice

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

Obsluha periferních operací, přerušení a jeho obsluha, vybavení systémových sběrnic

Komunikace procesoru s okolím

2.9 Vnitřní paměti. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Registrový model HDD

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Principy počítačů a operačních systémů

Architektura počítače

DUM 11 téma: Úvod do příkazové řádky

Paměťový podsystém počítače

Systém souborů Mgr. Josef Horálek

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

3. Počítačové systémy

Periferní operace využívající přímý přístup do paměti

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

Principy operačních systémů. Lekce 7: Souborový systém

Profilová část maturitní zkoušky 2015/2016

Vstupně - výstupní moduly

Integrovaná střední škola, Sokolnice 496

Systém adresace paměti

Metody připojování periferií BI-MPP Přednáška 2

Služba ve Windows. Služba (service) je program

Přednášející: Zdeněk Kotásek. Ústav počítačových systémů, místnost č. 25

PB002 Základy informačních technologií

Přidělování paměti II Mgr. Josef Horálek

Logická organizace paměti Josef Horálek

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

PB153 Operační systémy a jejich rozhraní

Mikrokontroléry. Doplňující text pro POS K. D. 2001

IPZ laboratoře Struktura pevného disku L305 Cvičení 1 Cvičící:

A0M38SPP - Signálové procesory v praxi - přednáška 10 2

I/O systém Vnější paměti. PB 169 Počítačové sítě a operační systémy

Uživatelská příručka

Periferní operace využívající přerušení

Windows a real-time. Windows Embedded

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Maturitní téma: Operační MS-DOS

Přidělování CPU Mgr. Josef Horálek

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Témata profilové maturitní zkoušky

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Počítač jako prostředek řízení. Struktura a organizace počítače

Práce se soubory. Úvod do programování 2 Tomáš Kühr

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

PROTOKOL RDS. Dotaz na stav stanice " STAV CNC Informace o stavu CNC a radiové stanice FORMÁT JEDNOTLIVÝCH ZPRÁV

09. Memory management. ZOS 2006, L.Pešička

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

ZOS OPAKOVÁNÍ. L. Pešička

DWL-G122 bezdrátový USB adaptér. Pokud některá z výše uvedených položek chybí, kontaktujte prodejce.

Ovládání tiskárny BT-100

Souborové systémy a logická struktura dat (principy, porovnání, příklady).

Pozice sběrnice v počítači

udev a kamarádi... Středisko UN*Xových technologií

Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Periferní zařízení, cvičení IPZ Analýza komunikace na sběrnici USB

Principy činnosti sběrnic

Aplikace. Hlásič SMS

Operační systémy. Přednáška 1: Úvod

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

TCP-Wedge ZDARMA. Přidává podporu TCP/IP: Sběr dat z adres portu IP na libovolné síti TCP/IP - ethernet / internet.

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Pokročilé architektury počítačů

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

Principy operačních systémů. Lekce 1: Úvod

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Architektury počítačů a procesorů

Počítač jako elektronické, Číslicové zařízení

Práce se soubory. Základy programování 2 Tomáš Kühr

Přednášející: Zdeněk Kotásek. Ústav počítačových systémů, místnost č. L322

Operační systém MS Windows XP Professional

Reliance. Komunikační driver Johnson Controls verze 1.5.4

OPERAČNÍ SYSTÉMY. Operační systém je prostředník mezi hardwarem (technickým vybavením počítače) a určitým programem, který uživatel používá.

SEKVENČNÍ LOGICKÉ OBVODY

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Osnova kurzu OBSLUHA PC ZÁKLADNÍ ZNALOSTI. pilotního projektu v rámci I. Etapy realizace SIPVZ

Transkript:

Osnova přednášky Programové prostředky řízení Operační systémy II Vstupy a výstupy Souborový systém Pavel Balda Západočeská univerzita v Plzni, FAV, KKY Vstupy a výstupy principy I/O zařízení Komunikace mezi řadičem a Řízení vstupně-výstupních (V/V) zařízení (Input/Output, I/O devices) je jedním z hlavních úkolů OS OS posílá k zařízením příkazy, obsluhuje přerušení (interrupts) a chyby OS by měl poskytovat co nejjednotnější (pokud možno stejné) rozhraní ke všem zařízením (device independence) I/O zařízení lze zhruba rozdělit do dvou typů: Bloková zařízení pracují s informací organizovanou do bloků pevné délky (typicky od 51 do 768 bytů), každý blok má svou adresu. Nejtypičtějšími zařízeními tohoto typu jsou disky (HDD, FDD, CD, DVD) Znaková zařízení dodávají nebo přijímají posloupnost (stream) znaků, které nemají blokovou strukturu. Typickými představiteli jsou tiskárny, síťové adaptéry, myši, sériové a USB porty a většina nediskových zařízení Toto dělení však pokulhává, některá zařízení nejsou ani jednoho z uvedených typů, např. : Časovač (clock) generují přerušení v periodických intervalech videokarty mapovaná do hlavní paměti procesoru I/O zařízení se typicky skládá z mechanické a elektronické součásti. Elektronická část se nazývá řadič zařízení (device controller) Každý řadič má několik registrů pro komunikaci s. Zápisem do registrů se vydávají příkazy, co má daný řadič dělat Čtením registrů se zjišťuje stav zařízení a případné hodnoty ze zařízení Často mají řadiče vyrovnávací paměť (buffer) pro čtení a/nebo zápis Existují dva základní způsoby komunikace s I/O zařízením: I/O porty: čtení pomocí instrukcí IN REG,PORT (čte port PORT do registru REG), zápis pomocí instrukcí OUT PORT,REG (nastavuje na port PORT hodnotu z registru REG), viz obr. a) Mapování do paměti: Každému řídicímu registru je přiřazena jedinečná adresa v paměti, obr. b) Třetím způsobem je hybridní přístup, tj. kombinace obou přístupů, obr. c) 0xFFF 0 Dva adresní prostory Jeden adresní prostor Dva adresní prostory I/O porty Mapovaná paměť Mapovaná paměť a) b) c) I/O porty 4 1

ově mapované I/O Přímý přístup do paměti (DMA) Výhody paměťově mapovaných I/O: Není třeba speciálních instrukcí IN a OUT pro přístup k I/O portům, nemusí být proto ve vyšších programovacích jazycích užíván assembler. Registry jsou pak proměnnými. Není třeba žádný dodatečný mechanismus ochrany paměti. Je vhodné umístit registry na samostatnou stránku virtuální paměti. To umožňuje umisťovat ovladače do různých adresových prostorů (zamezí vzájemné ovlivňování) Každá instrukce procesoru pro práci s pamětí se může odkazovat na řídicí registry. Obvykle lze číst a testovat řídicí registr jednou instrukcí, což vede k mírnému zrychlení ovladače Nevýhoda: Většina podporuje práci s cacheováním paměti. Je-li užito na řídicí registry, může způsobit katastrofu. Pro zabránění tomuto problému musí být HW vybaven selektivním zakazováním cacheování, např. pro jednotlivé stránky I/O Sběrnice Rychlá sběrnice DMA (Direct Memory Access) je často používaný mechanismus přímého přístupu do paměti, který je nezávislý na Vyžaduje přítomnost řadiče DMA (má jej většina systémů) Řadič DMA má přístup na sběrnici nezávisle na Jeho registry jsou programovány z (adresní registr, registr pro počet bytů, stavové registry) Příklad: Čtení z harddisku 1. naprogramuje řadič DMA (co má být přeneseno a kam) a vyšle příkaz řadiči disku k přečtení dat do interního bufferua verifikaci kontrolního součtu (checksum). DMA zinicializuje přenos vysláním požadavku na čtení řadiči disku. Zápis do paměti (standardní cyklus sběrnice) 4. Potvrzení (acknowledge) ukončení zápisu z řadiče disku řadiči DMA 5. Inkrementace adresy paměti a dekrementace počtu bytů. Opakování kroků. až 4. dokud není počet bytů nulový. Pak vyslání přerušení (interrupt) Řadič DMA Řadič disku Disk I/O 1 Addr 4 Buffer Count Control 5 Přístup I/O zařízení do paměti Sběrnice 5 Sběrnice 6 Přerušení (Interrupts) Přerušení (Interrupt) je způsob signalizace ukončení I/O operace. Interrupt generuje řadič interruptů (interrupt controller), viz obr. 1. I/O zařízení ukončí práci a generuje interrupt (za předpokladu, že jsou interrupty povoleny) signálem přivedeným do řadiče interruptů.. Neprobíhají-li další interrupty, zpracuje interruptní řadič signál okamžitě. Nastaví adresu specifikující zařízení, které interrupt vyvolalo a nastaví signál pro.. Interruptní signál způsobí, že pozastaví to, co právě provádí a začne dělat něco jiného: číslo na adresní sběrnici je použito jako index do tabulky nazývané interrupt vector. Touto hodnotou je naplněn program counter a je zahájeno vykonávání obslužné procedury interruptu (interrupt service routine, ISR). Někde blízko na začátku potvrdí (acknowledge) procedura interrupt zápisem do registru řadiče, že může generovat další interrupt. Před startem obslužné procedury musí hardware uložit některé informace, minimálně program counter, maximálně všechny registry. Nejčastěji se informace ukládají na zásobník Řadič interruptů Disk Klávesnice 1 Clock Sběrnice 7 Cíle I/O softwaru (1/) Klíčovým konceptem je tzv. nezávislost zařízení (device independence) Mělo by být možné psát programy, které přistupují k jakýmkoliv I/O zařízením, aniž by tato zařízení musela být specifikována dopředu Např. program, který čte vstupní soubor by měl být schopen číst soubor z floppy disku, harddisku i CD/DVD-ROM Jednotné pojmenování (uniform naming) všechna zařízení a soubory jsou adresována jednotně, pomocí cesty (path name), např. "E:\temp\pokus.txt", "COM1:" (Windows) "DEV1:/file1", "/tyco/0" (UNIX like) Obsluha chyb (error handling) měla by být prováděna co nejblíže hardwaru Zjistí-li řadič např. chybu čtení, měl by se snažit ji opravit sám (je-li to možné), třeba zopakováním čtení. Teprve pokud se oprava nezdaří, měla by být informována nadřazená vrstva 8

Cíle I/O softwaru (/) Synchronní (blokující, blocking) versus asynchronní (interrupty řízené, interrupt-driven) přenosy Většina zařízení je asynchronní odstartuje přenos a jde dělat něco jiného, dokud nepřijde interrupt Z uživatelského hlediska je jednodušší jsou-li I/O operace blokující po zavolání služby čtení je program automaticky suspendován, dokud se neobjeví data v bufferu OS může zajistit, že interrupty řízené operace se jeví uživateli jako blokující Ukládání do bufferů (buffering) často nemohou být data ukládána přímo na cílovou adresu, dokud nejsou zpracována Např. u paketu přicházejícího po síti neví OS, kam jej uložit, dokud není celý přijat a zanalyzován Některá zařízení, např. digitální audio mají velmi přísná real-time omezení, proto musí být data ukládána do výstupního bufferu v dostatečném předstihu, aby nedošlo k podtečení (underrun) bufferu Programované (programmed) I/O Programované (programmed) I/O je technika, kde všechnu práci dělá (programově). Např. tisk řetězce na tiskárně (viz obr.) Nejprve je sestaven řetězec v uživatelském programu (a). Podaří-li se získat tiskárnu, je zavolána systémová služba vytiskni řetězec, která obvykle zkopíruje řetězec do bufferu v paměťovém prostoru jádra (kernel space) Je-li tiskárna pořád dostupná pošle se na ni první znak (nemusí se objevit hned, pokud tiskárna bufferuje např. celý řádek). Avšak v případě (b) se objevil. Zápisem znaku se tiskárna dostane do stavu nepřipravena, OS musí počkat na stav připravena (pro zaslání dalšího znaku). Tato informace se získá ze stavového registru tiskárny Po dosažení stavu připravena vytiskne OS další znak (c). Tak se pokračuje dokud se nevytiskne celý řetězec. Pak se předává řízení uživatelskému procesu Po vyslání znaku se cyklicky dotazuje na připravenost k přijetí dalšího znaku. Takové chování se nazývá polling nebo busy waiting prostor Prostor jádra Řetězec k vytištění ABCD Tištěná stránka Next ABCD Tištěná stránka A Next ABCD Tištěná stránka AB 9 a) b) c) 10 I/O řízené interrupty (Interrupt driven I/O) I/O řízené interrupty signalizují dokončení každé operace vygenerováním interruptu. Jako teoretický příklad uvažujme tisk na tiskárně, která neukládá znaky do bufferu, ale tiskne každý znak tak, jak přichází. Může-li tiskárna tisknout např. 100 znaků za vteřinu, znamená to, že tisk každého znaku trvá 10 ms. To je dost dlouhá doba na to, aby ji nepromarnila čekáním. Interrupty umožňují, aby dělala během čekání na vytisknutí znaku něco jiného Po zavolání systémové služby vytiskni řetězec se zkopíruje řetězec do bufferu v paměťovém prostoru jádra (jako v předchozím příkladu) a ihned poté co je tiskárna schopna přijmout znak je tento znak vyslán. Pak zavolá plánovač, který spustí nějaký jiný proces. Proces, který volal službu pro tisk řetězce je blokován dokud není vytištěn celý řetězec Jakmile tiskárna vytiskne daný znak a je připravena tisknout další znak, vygeneruje interrupt, který přeruší daný proces, uloží jeho stav a spustí obslužnou proceduru (ISR) Jsou-li vytištěny všechny znaky, odblokuje se uživatelský proces, který zavolal tisk. Jinak se pošle na tiskárnu další znak, potvrdí se interrupt (acknowledge) a obslužná procedura se vrací do procesu, který přerušila. I/O využívající DMA Zřejmou nevýhodou I/O řízených interrupty je výskyt interruptu za každý znak Interrupty spotřebovávají čas Řešením je využití DMA DMA je vpodstatě programovaná I/O operace, kde veškerou práci dělá řadič DMA místo hlavního Velká výhoda DMA je radikální snížení počtu generovaných interruptů z jednoho na každý znak na jeden za celý buffer Na druhou stranu jsou DMA řadiče obvykle mnohem pomalejší než hlavní Není-li DMA řadič schopen ovládat zařízení plnou rychlostí nebo nemá-li co dělat během čekání na interrupt od DMA, můhou být lepší jak I/O řízené interrupty, tak i programované I/O. 11 1

Softwarové vrstvy pro obsluhu I/O Obsluha interruptů (Interrupt Handlers) I/O software je typicky organizován do 4 vrstev (viz obr.) Každá vstva (layer) má přesně definovanou funkci, kterou vykonává a přesně definovaná rozhraní na sousední vrstvy Funkčnost a rozhraní však závisejí na konkrétním systému I/O SW uživatelské úrovně (User-level I/O SW) Software OS nezávislý na zařízení (Device independent OS SW) Ovladače zařízení (Device drivers) Obsluha interruptů (Interrupt handlers) Hardware 1 Pro většinu I/O jsou interrupty nepříjemnou, ale nevyhnutelnou skutečností Proto je rozumné je skrýt v útrobách OS Nejlépe je blokovat ovladač volající I/O službu dokud není dokončena voláním interruptu Po výskytu HW interruptu musí SW principiálně řešit (závisí na OS) 1. Uložit všechny registry (včetně PSW Program Status Word), které nebyly uloženy hardwarem. Nastavení kontextu pro ISR. Může zahrnovat nastavení MMU, tabulku stránek, apod.. Nastavení zásobníku pro ISR 4. Potvrzení (acknowledge) interruptu na řadiči. Není-li v systému centralizovaný řadič přerušení, pak opětné povolení (reenable) interruptů 5. Kopírování registrů z místa uložení (nejčastěji ze zásobníku) do tabulky procesu 6. Spuštění ISR. Získá informace z registrů řadiče zařízení, které vyslalo interrupt 7. Volba procesu, který má být následně spuštěn 8. Nastavení kontextu MMU pro následně spouštěný proces 9. Natažení registrů nového procesu (včetně PSW) 10. Start běhu nového procesu Je zřejmé, že obsluha interruptů není vůbec triviální! 14 Ovladače zařízení (Device Drivers) (1/) Ovladače zařízení (Device Drivers) (/) Každý řadič zařízení má nějaké registry pro posílání příkazů a nějaké registry pro čtení stavu. Počet registrů a jednotlivé příkazy se radikálně liší v závislosti na jednotlivých zařízeních Každé I/O zařízení potřebuje specifický kód pro svou obsluhu. Tento kód se nazývá ovladačem zařízení (device driver). Ovladače jsou typicky dodávány výrobcem zařízení pro nejčastěji používané OS Ovladače jsou obvykle součástí jadra OS Příklad několika ovladačů je znázorněn na obr. Většina OS definuje standardní rozhraní, které musí dodržet všechna bloková zařízení a druhé rozhraní, které musí dodržet všechna znaková zařízení Ovladač tiskárny Řadič tiskárny program Zbytek OS Ovladač A/D karty A/D karta Ovladač CD-ROM Řadič CD-ROM prostor Prostor jádra Hardware Zařízení 15 Ovladače zařízení mají několik funkcí: Musí akceptovat abstraktní požadavky na čtení (read) a zápis (write) z nadřazené vrstvy SW nezávislého na zařízení Musí inicializovat zařízení (je-li třeba) Mohou též spravovat požadavky na napájení (power management) a ukládat události (log events) do souboru nebo systémového zapisovače událostí (event logger) Často mají ovladače podobnou obecnou strukturu: Nejprve zkontrolují vstupní parametry. Pokud ne, vrátí chybu Pak mohou konvertovat abstraktní parametry na konkrétní (např. pro disk mohou přepočítat lineární číslo bloku na parametry head, track, sector a cylinder Pak může ovladač otestovat, zda není zařízení právě užíváno. Pokud ano, bude požadavek zařazen do fronty, jinak může být vykonán ihned Řízení zařízení znamená posílání posloupností příkazů. Ovladač ví, které příkazy má posílat a jak zjišťovat, zda byly provedeny Po dokončení příslušných operací musí ovladač zkontrolovat, zda nedošlo k chybám Ovladače musí být reentrantní! Běžící ovladač musí očekávat, že bude zavolán podruhé ještě předtím, než bylo ukončeno první volání 16 4

I/O software nezávislý na zařízení Část I/O SW je určena daným zařízením, druhá část je nezávislá na konkrétních zařízeních Přesná hranice mezi ovladači a SW nezávislém na zařízení je určena OS Některé funkce, které by mohl vykonávat SW nezávislý na zařízení může být součástí ovladačů, např. kvůli efektivitě SW nezávislý na zařízení obvykle vykonává následující funkce: Jednotné rozhraní pro ovladače zařízení Práce s vyrovnávací pamětí (buffering) Signalizace chyb (Error reporting) Přidělování a uvolňování vyhrazených (dedicated) zařízení Práce s bloky, jejichž velikost je nezávislá na zařízeních (logická velikost) Jednotné rozhraní pro ovladače zařízení Důležitá otázka v OS, jak zařídit, aby všechna I/O zařízení vypadala víceméně stejně Mapování symbolických jmen zařízení na příslušný ovladač přiřazení vyhrazených jmen zařízením v rámci souborového systému Ochrana přístupu (protection) k zařízení řešena v rámci souborového systému stejně jako k souborům Práce s vyrovnávací pamětí (buffering) Bufferování je velmi důležité jak pro bloková, tak i znaková zařízení výrazně ovlivňuje efektivitu Příklad: proces čte data z modemu prostor Prostor jádra a) Čtení bez bufferu, každý znak je čten zavoláním systémové služby read a čekáním na interrupt v ISR. Velká režie při přepínání procesů b) Proces má buffer na n znaků. ISR vkládá přicházející znaky do bufferu, dokud jej nanaplní. Pak vzbudí uživatelský proces. Co se stane, je-li stránka bufferu odložena na disk? c) Buffer je také v jádře; po jeho zaplnění je zkopírován do bufferu v uživatelském procesu. Kam však dávat znaky, které přijdou během natahování stránky v uživ. procesu? d) Řešením je dvojité bufferování (double buffering). Zatímco jeden buffer z jádra je kopírován, do druhého se ukládají přicházející data. Tato technika se používá i rychlém měření velkého počtu dat (Data acquisition) 1 1 proces 17 a) b) c) d) 18 I/O software v uživatelské vrstvě Knihovny I/O funkcí Většina I/O SW je v operačním systému. Pro zprostředkování systémových volání existují knihovny, které se přisestaví (link) k uživatelskému programu Příklad (jazyk C): count = write(fd, buffer, nbytes); Funkce write() bude přisestavena k programu (v uživatelském prostoru) Množina všech takových funkcí je součástí I/O systému Jiný příklad formátování a výpis hodnoty na konzolu v C# Console.WriteLine("Celková cena\t{0,8:c}", celkem); Spooling (Simultaneous Peripheral Operation On-Line) po dokončení dané operace (job) zjišťuje, zda není třeba provést další I/O operaci Spooling je prováděn samostatným procesem nazývaným NT service (Windows) nebo daemon (UNIX) Příklad: Tisk souborů na tiskárně. Místo přidělení tiskárny danému uživatelskému procesu se do speciálního adresáře (spooling directory) zapíše soubor, který má být vytištěn. Jeho vytištění zařídí výše zmíněný NT service/daemon. Další příklad: přenos souboru po síti I/O Systém názorné shrnutí Následující obrázek shrnuje funkce všech úrovní I/O systému a principiální funkci každé vrstvy Požadavek na I/O (I/O request) Uživatelské procesy Software nezávislý na zařízení Ovladače zařízení Obsluha interruptů Hardware Odpověď I/O (I/O reply) Vykonání I/O volání; formátování I/O; spooling Pojmenování; ochrana; blokování; bufferování; přidělování zařízení Nastavení registrů zařízení; testování stavu Buzení ovladače po dokončení I/O operace Provádění I/O operací 19 0 5

Časovače (clocks, timers) hardware Časovače software Nejčastěji je časovač složen ze tří komponent: Krystalový oscilátor generuje periodický signál vysoké přesnosti a frekvence (typicky stovky MHz) Čítač (counter) dekrementuje svou hodnotu na každém pulsu. V okamžiku dosažení nuly generuje interrupt Uchovávací registr (holding register) slouží pro zavedení počáteční hodnoty do čítače Dva základní režimy čítání Jednorázový (one-shot) po dosažení hodnoty 0 čítače je vygenerován interrupt a čítání je zastaveno Periodický po dosažení 0 čítače je čítač automaticky naplněn obsahem holding registru a běh pokračuje. Periodicky generované interrupty se nazývají tiky (clock ticks) Krystalový oscilátor Čítač je dekrementován každým pulsem Uchovávací registr se užívá pro zavedení hodnoty do čítačem 1 Hardware pouze generuje tiky s danou periodou. Všechno ostatní řeší SW: Aktualizace času v daném dni Zabránění procesům běžet déle, než mají povoleno (volání plánovače po uplynutí přípustného kvanta) Statistika využití Generování alarmu v určitém čase ( budík ) nebo za určitou dobu Watchdog pro různé části systému (obsluha timeoutů) Uvedené požadavky vedou na potřebu většího počtu časovačů než kolik bývá zabudováno v hardwaru Tato potřeba se řeší simulací virtuálních časovačů odvozených od 1 fyzického časovače Lze udržovat tabulku aktivních časovačů a proměnnou s časem následujícího časovače Druhou možností je uspořádaný seznam (podle času), říkající kolik tiků po předchozím časovači se má čekat na následující časovač. Jiným principem jsou tzv. Soft-timers Nevyužívají interrupty, ale sledují čas, kdykoliv je prováděno systémové volání a podle uplynulého času rozhodují o aktivaci procesů Nevýhoda: méně přesné než časovače ovládané interrupty Výhoda: výrazně menší režie (není třeba ukládat stav procesoru při příchodu interruptu) Souborové systémy Všechny počítačové aplikace potřebují ukládat a načítat informace Při běhu procesu může být omezené množství informace uloženo v adresním prostoru procesu Pro některé aplikace (např. práce s velkými databázemi) velikost paměti nestačí Navíc po ukončení běhu procesu, restartu počítače nebo spadnutí programu je informace z paměti ztracena! Ideou je odstranění závislosti mezi procesy a dlouhodobě ukládanou informací: Musí být možno ukládat velké množství informace Informace musí přežít ukončení procesu, který ji používá (perzistence) Několik procesů musí mít možnost přistupovat k informaci současně Obvykle je problém řešen ukládáním informace na disk nebo jiné externí médium do jednotek nazývaných soubory (files) Procesy mohou soubory číst a zapisovat. Soubor může zmizet když jej jeho vlastník explicitně odstraní Soubory jsou spravovány OS. Ta část OS, která se správou souborů zabývá se nazývá souborový systém (file system) Soubory vlastnosti (1/) Soubory jsou abstrakcí jak ukládat informaci a později ji číst. Uživatele odstiňují od detailů jak a kde je informace uložena a jak pracují disky Pojmenovávání souborů (file naming) Když proces vytvoří soubor, dá mu jméno. Po ukončení procesu soubor s daným jménem stále existuje a může být dostupný jinému procesu právě prostřednictvím jména Přesná pravidla pro vytváření jmen se liší systém od systému. Všechny současné OS umožňují soubory pojmenovávat minimálně 8 písmeny. Ve jménech mohou být často i číslice. Někdy i interpunkční znaménka, oddělovače, speciální znaky a dokonce i mezery. Windows 000/XP (v souborovém systému NTFS) umožňují používat znaky ze sady UNICODE Někdy je maximální délka jména souboru až 55 znaků, Některé systémy rozlišují malá a velká písmena (UNIX) pak jsou soubory ahoj, AHOJ a Ahoj různé. Jiné je nerozlišují (MS-DOS, Windows) Jméno se někdy skládá ze dvou částí vlastního jména a přípony (extension) oddělené tečkou. Přípona v některých systémech určuje typ souboru (MS-DOS, Windows), jinde jde jen o mnemotechnickou konvenci (UNIX) 4 6

Soubory vlastnosti (/) Struktura souborů V dnešních systémech se převážně používá nejjednodušší struktura posloupnost bytů Typy souborů Normální soubory (regular files) soubory obsahující uživatelskou informaci Adresáře (directories) systémové soubory pro udržování struktury souborového systému V systémech UNIX ještě existují tzv. Character special files (modelují seriová I/O zařízení terminály, tiskárny, síťové adaptéry) a Blockspecial files (modelují bloková I/O zařízení disky) Přístup k souborům Sekvenční přístup (sequential access) jediný přístup k souborům v dřívějších OS. Tento přístup byl dán používáním magnetické pásky (musela se převíjet) Libovolný přístup (random access files) umožňuje číst jednotlivé byty v libovolném pořadí. Souvisí s využíváním disků. V současné době je vyžadován mnoha aplikacemi (např. databázovými) Atributy souborů (File attributes) Kromě jména a dat udržují OS k souborům další informace souhrnně nazývané atributy Příznaky (flags) read-only, hidden, system, archive, ASCII/binary, random access flag, temporary, locked, apod. Velikosti current size, maximum size Časové údaje čas vytvoření, čas poslední modifikace, čas posledního otevření Identifikace uživatelů např. creator (Identifikátor uživatele, který soubor vytvořil), owner (vlastník souboru) Ochrana souboru password, protection Databázové údaje např. record length, key position, key length 5 6 Operace se soubory Create vytvoření prázdného souboru Delete zrušení souboru Open otevření souboru. Před použitím musí proces soubor otevřít. Při otevírání souboru se čtou adresy na disku a atributy souborů do paměti Close zavření souboru. Způsobí zápis posledního bloku na disk. Read čtení souboru, obvykle z aktuální pozice souboru Write zápis do souboru, obvykle na aktuální pozici. Případná data na aktuální pozici jsou přepsána Append omezená forma zápisu. Data jsou přidána na konec souboru Seek nastavení aktuální pozice souboru (jen pro random access files) Get attibutes získání atributů souboru Set attributes nastavení atributů souboru Rename přejmenování souboru Adresáře (directories, folders) Jednoúrovňové adresáře všechny soubory byly v jedné úrovni. Nepřehledné, často se vyskytující konflikt jmen. Dnes se používá jen výjimečně Hierarchická struktura adresářů V každé úrovni hierarchie mohou být jak soubory tak další adresáře Zpřehledňují organizaci disků, např. každý uživatel může mít svůj základní adresář a vněm si může vytvářet vlastní hierarchickou organizaci Hierarchická organizace vytváří stromovou strukturu Zobecněním stromové struktury je acyklická struktura (jeden soubor může patřit do několika adresářů) Názvy cest (Path Names) Absolutní cesta úplná cesta od kořenového adresáře (root) až k danému souboru. Jednotlivá patra stromu jsou oddělena znaky \ (Windows) nebo / (UNIX) Relativní cesta cesta od pracovního nebo aktuálního (working or current directory). Relativní cesty usnadňují přenášení adresářových podstromů (organizace projektů, apod.) Obvykle se zavádí speciální znaky. a.. pro označení aktuálního adresáře a adresáře předka Nelze je používat v systémech, které neznají pojem aktuální adresář (např. Win CE) 7 8 7