Uživatelské nástroje

Nástroje pro tento web


i_o

Vstup a výstup (I/O - Input/Output)

V informatice pojem I/O (zkratka z anglického Input/Output, česky vstup a výstup) označuje veškerou komunikaci mezi systémem pro zpracování informací (počítačem, mikrokontrolérem) a vnějším prostředím. Tímto prostředím může být lidský uživatel, jiný počítač, síť nebo jakékoliv periferní hardwarové zařízení.

Jednoduše řečeno: Vstupy jsou data a signály, které systém přijímá ke zpracování, zatímco výstupy jsou výsledky zpracování, které systém odesílá ven. Koncept I/O je absolutním základem architektury počítačů (tzv. Von Neumannovy architektury) – bez něj by počítač byl jen izolovanou černou skříňkou, do které nelze dostat žádná data a ze které nelze přečíst žádné výsledky.

1. Hardwarové I/O zařízení (Periferie)

Fyzická zařízení, která zprostředkovávají I/O operace, se nazývají periferie. Dělí se do tří základních kategorií:

  • Vstupní zařízení (Input): Transformují podněty z fyzického světa do digitálních dat srozumitelných pro počítač. Patří sem klávesnice, myš, mikrofon, skener, webkamera nebo různé senzory (teploměr, GPS).
  • Výstupní zařízení (Output): Přijímají digitální data z počítače a převádějí je do formy srozumitelné pro člověka nebo jiný fyzický systém. Typickým zástupcem je monitor, tiskárna, reproduktory nebo robotické rameno v továrně.
  • Kombinovaná I/O zařízení: Slouží k obousměrné komunikaci. Příkladem jsou pevné disky (HDD/SSD) a flash disky (můžeme z nich data číst i na ně zapisovat), síťové karty (NIC) nebo dotykové obrazovky.

2. Jak počítač komunikuje s I/O zařízeními

Aby mohl centrální procesor (CPU) efektivně komunikovat s pomalejšími periferiemi, využívá počítačová architektura několik klíčových mechanismů:

Adresování periferií

  • Memory-Mapped I/O (MMIO): V tomto přístupu sdílí I/O zařízení stejný adresní prostor jako hlavní operační paměť (RAM). Pokud chce procesor poslat data na grafickou kartu, zapíše je jednoduše na specifickou adresu v paměti.
  • Port-Mapped I/O (PMIO): Zařízení mají svůj vlastní, izolovaný adresní prostor (tzv. I/O porty). K přístupu do něj musí procesor používat speciální instrukce.

Správa přenosu dat

  • Polling (Dotazování): Procesor v cyklu neustále kontroluje I/O zařízení a ptá se: „Máš pro mě nová data?“ Tento způsob je velmi neefektivní a plýtvá výpočetním výkonem CPU.
  • Interrupts (Přerušení): Mnohem chytřejší metoda. Procesor si hledí své práce. Když má I/O zařízení připravená data (např. uživatel stiskl klávesu), pošle procesoru hardwarový signál přerušení (IRQ). Procesor okamžitě přeruší stávající činnost, obslouží vstup a pak se vrátí k původní práci.
  • DMA (Direct Memory Access): Přímý přístup do paměti. Speciální čip na základní desce umožňuje zařízením (např. pevnému disku nebo síťové kartě) zapisovat a číst data z operační paměti zcela samostatně, a to bez jakékoliv asistence hlavního procesoru. CPU je díky tomu ušetřeno masivních přesunů dat a může se věnovat výpočtům.

3. Softwarové I/O a programování

Z pohledu operačního systému a softwarového vývoje neznamená I/O jen klávesnici a monitor. Jde primárně o File I/O (čtení a zápis souborů na disku) a Network I/O (stahování a odesílání dat přes síť). Tyto operace jsou z hlediska procesoru extrémně pomalé.

Programovací jazyky k tomu přistupují dvěma způsoby:

Blokující vs. Neblokující I/O

  • Synchronní (Blokující) I/O: Program požádá o načtení velkého souboru z disku. Během čekání na fyzické přečtení dat diskem se běh celého programu zastaví (zablokuje se) a aplikace může působit zamrzle.
  • Asynchronní (Neblokující) I/O: Program zadá operačnímu systému požadavek na načtení souboru a okamžitě pokračuje v provádění dalšího kódu. Jakmile systém data z disku načte, pošle programu upozornění (např. přes tzv. callback). Tento přístup je kritický pro tvorbu rychlých webových serverů (např. framework Node.js).

4. I/O jako úzké hrdlo (Bottleneck)

Rychlost procesorů a operačních pamětí roste historicky mnohem rychleji než propustnost pevných disků nebo síťových spojení. Z tohoto důvodu se IT systémy často dělí podle toho, co je nejvíce omezuje:

  • CPU Bound (Limitováno procesorem): Úlohy jako renderování 3D grafiky, trénování AI nebo komprese videa. Procesor běží na 100 % a zpracování brzdí jen jeho výpočetní výkon.
  • I/O Bound (Limitováno vstupem/výstupem): Úlohy jako kopírování tisíců malých souborů, prohledávání rozsáhlých databází nebo stahování z pomalého internetu. Procesor se drtivou většinu času „nudí“ a jen nečinně čeká, až pevný disk nebo síťová karta dodají požadovaná data.

K měření výkonnosti úložných I/O zařízení se nejčastěji používá metrika IOPS (Input/Output Operations Per Second), která udává, kolik operací čtení/zápisu dokáže úložiště zpracovat za jednu vteřinu (moderní NVMe SSD disky dosahují i více než milionu IOPS).

Rychlé srovnání I/O pojmů

Aspekt Popis Typický příklad
Vstupní zařízení Posílá data do počítače Klávesnice, čtečka čárových kódů
Výstupní zařízení Přijímá data z počítače pro zobrazení Monitor, tiskárna, LED dioda
I/O Bound proces Brzděn pomalým přísunem dat Zálohování velkých složek, databázové dotazy
Synchronní I/O Blokuje běh programu do dokončení operace Tradiční čtení souboru (např. v Pythonu)
DMA (Direct Memory Access) Hardware obchází procesor při přesunu dat Načítání textur z disku přímo do grafické paměti
i_o.txt · Poslední úprava: autor: admin