1/32 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ I/O systém 10 2/32  HW pro I/O je značně rozmanitý  Existují však určité běžně používané prvky ● port ● sběrnice (bus) ● řadič (host adapter, controller)  I/O zařízení jsou řízeny I/O instrukcemi (IN, OUT)  Adresy I/O zařízení ● uváděné přímo v I/O instrukcích (např. IN AL, DX : DX port, AL získaný bajt) ● I/O se mapuje na přístup k paměti (např. grafická karta, videopaměť)  Základní způsoby ovládání I/O ● polling, programované I/O operace ● aktivní čekání na konec operace ● přerušení ● DMA HARDWARE 3/32 SBĚRNICE PC monitor processor graphics controller bridge/memory controller SCSI controller cache memory disk disk disk disk disk disk diskdisk PCI bus expansion bus keyboardexpansion bus interface parralel port serial port IDE disk controller SCSIbus 4/32  I/O port se obvykle skládá ze 4 registrů ● Data-in ● Čtení vstupu od zařízení ● Data-out ● Pro zápis výstupu do zařízení ● Status ● Aktuální stav (data připravena, chyba, …) ● Control ● Ovládání zařízení, konfigurace, příkazy,… I/O PORTY 5/32  Programovaný I/O (busy-waiting) ● opakovaně se ptám na stav zařízení ● připraven ● pracuje ● chyba  I/O řízený přerušením ● zahájení I/O pomocí I/O příkazu ● paralelní běh I/O s během procesoru ● I/O modul oznamuje přerušením konec přenosu  Direct Memory Access (DMA) ● kopírování bloků mezi pamětí a I/O zařízením na principu kradení cyklů paměti ● přerušení po přenosu bloku (indikace konce) TECHNIKY PROVÁDĚNÍ I/O 6/32  Přerušení obsluhuje ovladač přerušení (kód OS)  Maskováním lze některá přerušení ignorovat nebo oddálit jejich obsluhu  Patřičný ovladač přerušení se vybírá přerušovacím vektorem ● některá přerušení nelze maskovat ● přerušení mohou být uspořádána podle priorit  Přerušení se používá i pro řešení výjimek (nejsou asynchronní) PŘERUŠENÍ 7/32  Přímý přístup do paměti (Direct Memory Access - DMA) ● nahrazuje programovaný I/O při velkých přesunech dat ● vyžaduje speciální DMA řadič ● při přenosu dat se obchází procesor, přístup do paměti zajišťuje přímo DMA řadič ● procesor a DMA soutěží o přístup k paměti DMA 8/32  Jádro OS se snaží skrýt rozdíly mezi I/O zařízeními a programátorům poskytuje jednotné rozhraní  Dále vrstva ovladačů ukrývá rozdílnost chování I/O řadičů i před některými částmi jádra  Některé vlastnosti I/O zařízení ● mód přenosu dat: znakové (terminál) / blokové (disk) ● způsob přístupu: sekvenční (modem) / přímý (disk) ● sdílené/dedikované: klávesnice / páska ● rychlost přenosu: vystavení, přenos, ... ● read-write, read only, write only APLIKAČNÍ ROZHRANÍ I/O 9/32 I/O V JÁDŘE A HW SCSI devices keyboard mouse … PCI bus floppy- disk drives ATAPI devices (disks, tapes, drives) SCSI device controller keyboard device controller mouse device controller PCI bus device controller floppy device controller ATAPI device controller … SCSI device driver keyboard device driver mouse device driver PCI bus device driver floppy device driver ATAPI device driver … kernel I/O subsystem kernel softwarehardware 10/32  Bloková zařízení – typicky disk ● příkazy: read, write, seek ● logický způsob přístupu: obecný I/O nebo souborový systém ● možný přístup formou souboru mapovaného do paměti  Znaková – klávesnice, myš, sériový port ● příkazy: get, put ● nad nimi knihovní podprogramy pro další možnosti (např. řádková editace) BLOKOVÁ A ZNAKOVÁ ZAŘÍZENÍ 11/32  Přístup k nim se značně liší jak od znakových, tak od blokových zařízení ● proto mívají samostatné rozhraní OS  Unix i Windows obsahující rozhraní nazývané „sockets“ ● separují síťové protokoly od síťových operací ● přístup jako k souborům (včetně funkce select)  Existuje celá řada přístupů k síťovým službám ● Pipes (roury), FIFOs, streams, queues, mailboxes SÍŤOVÁ ZAŘÍZENÍ 12/32  Blokující ● z hlediska procesu synchronní ● proces čeká na ukončení I/O ● snadné použití (programovaní), snadné porozumění (po provedení operace je hotovo to co jsem požadoval) ● někdy však není dostačující (z důvodu efektivity)  Neblokující ● řízení se procesu vrací co nejdříve po zadání požadavku ● vhodné pro uživatelské rozhraní, bufferovaný I/O ● bývá implementováno pomocí vláken ● okamžitě vrací počet načtených či zapsaných znaků  Asynchronní ● proces běží souběžně s I/O ● konec I/O je procesu hlášen signály ● obtížné na programovaní, složité používání, ale v případě vhodně promyšleného programu velice efektivní BLOKUJÍCÍ A NEBLOKUJÍCÍ I/O 13/32  Plánování ● některé I/O operace požadují řazení do front na zařízení ● některé OS se snaží o „spravedlnost“  Vyrovnání (vyrovnávací paměti), buffering ● ukládání dat v paměti v době přenosu k/ze zařízení ● řeší rozdílnost rychlosti ● řeší rozdílnost velikosti datových jednotek I/O SUBSYSTÉM V JÁDRU 14/32  Caching ● rychlá paměť udržuje kopii dat ● vždy pouze kopii ● caching je klíčem k dosažení vysokého výkonu  Spooling ● udržování fronty dat určených k výpisu na zařízení ● pokud zařízení může vyřizovat požadavky pouze sekvenčně ● typicky tiskárna  Rezervace zařízení ● exkluzivita přístupu k zařízení pro proces ● rezervace / uvolnění – volání systému ● pozor na uváznutí (deadlock) I/O SUBSYSTÉM V JÁDRU 15/32  Vzpamatování se po poruše při chybě čtení z disku, zjištění nedostupnosti zařízení, po náhodné chybě zápisu, …  Volání požadující I/O operaci získá číslo chyby ● typicky záporná hodnota  Udržuje se záznam o chybách v systému ● pro následné analýzy ● syslog, events (viewer), ... CHYBOVÉ ŘÍZENÍ 16/32  I/O je nejvýznamnějším faktorem výkonu celého systému ● CPU musí provádět ovladače a programy I/O části jádra ● při přerušení se přepíná kontext ● provádí se kopírování dat ● zvláště významný je síťový provoz VÝKON 17/32  Omezujeme počet přepnutí kontextu  Omezujeme zbytečné kopírování dat  Omezujeme počet přerušení tím, že přenášíme delší bloky  Využíváme všech výhod (funkcí) moderních řadičů  Používáme co nejvíce DMA  Všechny komponenty kombinujeme s cílem dosažení co nejvyšší propustnosti ● CPU, paměť, sběrnice, I/O zařízení ZVYŠOVÁNÍ VÝKONU 18/32 Výukovou pomůcku zpracovalo Servisní středisko pro e-learning na MU http://is.muni.cz/stech/