Input és Output
1
Bevitel-Kivitel • Eddig a számítógép „agyáról” volt szó – Processzusok, memória, stb
• Szükség van eszközökre – Adat bevitel és kivitel a számitógépből, -be – Perifériák
2
Perifériák csoportosításá, használat szerint • Háttértár – Merevlemezek, diszkek – Optikai lemezek (CD-ROM, DVD) – Solid-state lemezek (flash)
• Megjelenítő, kiviteli eszköz – Kijelzők, monitorok – Nyomtatók – Hangkártyák
3
Perifériák • Beviteli eszköz, interface az ember felé – – – –
Billentyűzet Egér Mikrofon Lapolvasó (Scanner)
4
Perifériák • Hálózati eszközök – Vezetékes • Réz alapú • Optikai
– Vezeték nélküli • Infravörös (IrDA) • Rádiófrekvenciás (WiFi, Bluetooth)
• Egyéb periféria – Időzítő – Véletlenszám generátor – Stb. 5
Perifériák, adatátvitel • Átviteli sebesség is teljesen különböző lehet
6
Blokkos, karakteres eszközök • Blokkos eszköz – Információt adott méretű blokkban tárolja, adja át – Szokásos méret: 256 byte - 32 KB – Az egyes blokkok írhatók, olvashatók a többitől függetlenül – Például: lemez
• Karakteres eszköz – Karakterenként írható, olvasható az adat – Elejétől történik a keresés 7
Blokkos, karakteres eszközök • A határ nem éles • Szalagos egység – bár blokkokban tárolja az adatot – elejétől kell keresni
• Bizonyos eszközök nem sorolhatók be e két csoportba – Óra
8
Perifériák • Nagy számú, különböző periféria létezik – Különböző tulajdonságok – Különböző kezelési mód – Különböző adatmennyiség átadása (blokkos, karakteres) – Különböző adat reprezentálási módok (kódolás) – Különböző hiba kezelés
9
Perifériák • Úgy tűnik különböző interface-t igényelnek – Minden periféria különböző interface? – Sokféle de hasonló interface kód ismétléshez vezethet
• Kihívás – Azonos, hatékony mód a perifériák kezelésére
10
I/O fejlődése 1. • Processzor közvetlenül kontrollálja az eszközt
11
I/O fejlődése 2. • Eszközkezelő, I/O modul – A processzor a modult programozza (megszakítás nélkül) – UART: Universal Asynchronous Receiver Transmitter
12
I/O fejlődése 3. • A processzor nem tölt időt az I/O műveletre varó várakozással – Megszakítás jelzi a művelet végét
13
I/O fejlődése 4. • Direct Memory Access, DMA – Adat bekerül a memóriába a processzor kezelése nélkül – A processzor csak művelet elején és végén játszik szerepet
14
I/O fejlődése 5. • Az I/O modulnak saját processzora van – Pl. SCSI kontroller
15
I/O fejlődése 6. • I/O processzor – Önálló processzor, memória, belső busz, stb – Egy önálló számítógép – Pl. Myrinet 10 gigabit NIC
16
Sínek és buszok • Busz • A részegységek közötti kapcsolatot biztosítja
17
Sínek és buszok • Perifériák nem érhetik el a memóriát • Csak programozott I/O lehet • Processzor és RAM között gyorsabb lehet az összeköttetés
18
Sínek és buszok • Két sínt összevonhatjuk – Közös sebesség – Processzor órajelét csak a többi periféria gyorsításával lehet elérni
19
Sínek és buszok • Két sín, melyeket egy híd köt össze • Processzor és RAM között tetszőlegesen gyors lehet az átvitel
20
Sínek és buszok • Mai számítógépek hidakat használnak – További leágazások lehetésgesek – Northbridge: CPU, RAM, grafikus segédprocesszor kapcsolata – Southbridge: Northbridge és a többi sín közötti kapcsolat • • • • • • •
PCI: Periferial Control Interconnect ISA: Industry Standard Architecture (régi) IDE: Integrated Drive Electronics (háttértárak) SCSI: Small Computer System Interface USB: Universal Serial Bus (külső eszközök) FireWire CardBus
21
Sínek és buszok
22
Sínek és buszok Intel IXP420
23
Programozott I/O • • •
Minden vezérlő rendelkezik néhány regiszterrel a vezérléshez Állapot bit: jelzi ha műveletet végez Nehány vezérlő adatbufferrel is rendelkezik – Framebuffer, video RAM
•
CPU kommunikáció a vezérlőregiszterekkel 1. I/O kapu 2. Memórialeképezésű I/O 24
Programozott I/O, I/O kapu • I/O kapuhoz egy 8-16 bites szám van rendelve • Utasítás – IN REG, PORT : Kiolvassa a portot és a regiszterben tárolja az adatot – OUT PORT, REG : A regiszter értékét kiírja a portra (beírja a vezérlőregiszterbe) Memória
I/O kapuk 25
Memórialeképezésű I/O • Az I/O regiszterek a memória egy részén található Memória
• Hibrid rendszer (x86)
Memória
I/O kapuk 26
Programozott I/O Read parancs az I/O modulnak I/O modul státusza nem
Készen áll?
CPU I/O
I/O CPU
hiba
igen
nem
Adat olvasás az I/O modulból
I/O
Adat írás a memóriába
CPU
CPU
memória
Végeztünk? igen 27
Programozott I/O • Könnyen kivitelezhető, de – Terheli a processzort, más feladat nem végezhető • Tevékeny várakozás • Figyelni kell az állapot bitet • Lehet hogy nagyon hosszú ideig kell várni az adatra
– A státuszregisztert folyamatosan figyelni kell van-e adat
28
Megszakításvezérelt I/O • Az eszköz generáljon egy megszakítást ha új adat érkezett • Megszakítás hatására a processzor felfüggeszti az aktuális processzust és a megszakításkezelő feldolgozza az adatot • Különböző eszközhöz különböző megszakításkezelő kell
29
Megszakításvezérelt I/O
30
Megszakításvezérelt I/O • Az operációs rendszer osztja szét a megszakításokat • Néha az eszközök osztozni kényszerülnek a megszakításon – A megszakításkezelőnek minden eszközt ellenőriznie kell hogy kihez tartozik a megszakítás
• Mentesíti a processzort a tevékeny várakozástól • Az adat bevitelt és kivitelt még mindig a processzor végzi 31
Megszakításvezérelt I/O CPU Read parancs az I/O modulnak I/O modul státusza
Státusz?
I/O
valami mást csinálhatunk megszakítás I/O CPU hiba
kész
nem
Adat olvasás az I/O modulból
I/O
Adat írás a memóriába
CPU
CPU
memória
Végeztünk? igen 32
Megszakítás kezelés • Mielőtt a megszakítás feldolgozása megtörténik, az állapotot el kell menteni – Regiszter? • felülírható?
– Felhasználói szintű verem? • Lehet hogy nem érvényes
– Kernel verem?
• Mi a CPU állapota? – Pontos és pontatlan megszakítások 33
Pontos megszakítás • Egy megszakítás, mely a gépet egy pontosan definiált állapotban hagyja – IP elmentve egy ismert helyre – Az IP előtti utasításokat teljesen végrehajtotta – Az IP utáni utasításokból egyik sem változtat meg semmilyen „külsőleg” elérhető állapotot
• Pentium Pro (P2, P3, P4) a visszafelé kompatibilitás miatt ilyen – Megszakítás logika nagyon „drága” – Op. rsz. Szempontjából nagyon kedvező 34
Pontatlan megszakítás • Pipeline architektúra – Utasítások párhuzamos végrehajtása – Utasítások sorrenden kívüli végrehajtása – A feltételes utasítás sorozat végrehajtása, mielőtt a feltétel eredményét ismernénk
• Megszakítás esetén a CPU állapotának reprezentálására nem elég az IP – Mind ezt visszafejteni nehéz, bonyolult – Mindenféle állapotjellemzők elmentése, majd az op. rsz. kitalálja mit kell csinálni. 35
Közvetlen memória-elérés (DMA) • Hogy lehet hogy nem a processzor végzi a bevitelt és kivitelt? • A periféria közvetlenül elérheti a memóriát és közvetlenül írhat vagy olvashat • Direct Memory Access (DMA)
36
DMA 1. CPU beállítja a DMA vezérlőt
Meghajtóegység DMA
Lemezvezérlő
Cím
Puffer
Számláló
CPU
Memória 4. Nyugtázás
Megszakítás ha kész
2. DMA átvitelt kér
3. adatátvitel 37 Sín
DMA • CPU beprogramozza a DMA-t (1) • Utasítást ad a lemezvezérlőnek, hogy olvasson be adatot a lemezről a pufferbe • Ha a puffer tele indulhat a DMA • A DMA vezérlő elindítja az átvitelt (2) • A lemezvezérlő a pufferből a memóriába másol egy szót (3) • Ha az írás készen, a lemezvezérlő nyugtázást küld a DMA-nak (4) 38
DMA • A DMA növeli a címet csökkenti a számlálót • 2-4 lépések ismétlése amíg a számláló zérus lesz • Ha kész, megszakítás jön létre – Az adat már a memóriában van, nem kell másolni
39
DMA • Miért kell a puffer? – Mielőtt az átvitel megtörténne ellenőrzést lehet végezni az adatot (hibaellenőrző kód) – Ha a lemez olvasás megindult, az adatok folyamatosan érkeznek függetlenül attól hogy a vezérlő készen van-e
40
I/O szoftver alapjai • Eszközfüggetlen – Úgy lehessen programot írni amely bármilyen I/O eszközt el tud érni anélkül hogy ismernénk az eszközt előre – Pl. file olvasás floppy-ról, merevlemezről, CD-ROMról, DVD-ről, hálózatról, kazettáról
• Egységes elnevezés – Pl. UNIX alatt minden eszköz egy file • /dev/hda1 • /dev/audio 41
I/O szoftver alapjai • Hibakezelés – Kezeljük a hibát a lehető legalacsonyabb szinten • Ha az eszköz kezelő olvasási hibát tapasztal, még megpróbálhatja javítani, pl. CRC segítségével • Ha nem sikerül, megpróbálhatja újra beolvasni • Ha nem sikerül, csak ezután kell a hibaüzenetet átadni magasabb szintre
42
I/O szoftver szintjei Felhasználói I/O szoftware Eszköz független op. rsz. szoftware Eszköz kezelő (Device driver) Megszakítás kezelő Hardware
43
Eszközmeghajtó „helye”
44
Eszközmeghajtó • Eredetileg az eszközmeghajtó bele van fordítva a kernelbe – Technikusok végezték az installálást – Az eszközök száma ritkán változott
• Manapság dinamikusan betölthetőek a modulok – A tipikus felhasználó szintén nem fordít kernelt – Az eszközök száma nagy és változatos, gyakran menet közben is változik
45
Eszközmeghajtó • A drivereket kategóriákba sorolják – Blokk és karakter alapú
• Eszközmeghajtó munkája – A kéréseket lefordítja eszközfüggetlen interface-en keresztül (open, close, read, write) hardware utasítássorozattá – Inicializálja az eszközt bekapcsoláskor és lezárja leállítás során
46
Eszközmeghajtó • A kérés elküldése után – az eszköz azonnal végez és vissztér a híváshoz, vagy – az eszköznek fel kell dolgoznia a kérést így az eszközmeghajtó blokkol
• Eszközmeghajtó „re-entrant” – Újra be lehet lépni, meg lehet hívni, míg egy másik kérés miatt blokkolva van
47
Eszközfüggetlen szoftware I/O • A hasonló eszközök között sok hasonló kódrészlet van • Felosztjuk a rendszert – Eszközfüggetlen és – Eszköz függő részekre
• Eszközfüggetlen kódrészlet – Buffer és buffer cache kezelés – Eszköz hozzáférés kezelése – Hibajelentés 48
Eszközfüggetlen szoftware I/O
49
Eszközfüggetlen szoftware I/O Felhasználói processzus
a) Buffer nélküli input b) Bufferelés a felhasználói processzusban c) Egyszeres bufferelés (single buffer) d) Dupla bufferelés kernel módban
50
Nincs bufferelés • A processzus byte-onként, szavanként (word) olvas – Minden független rendszerhívás sok időt vesz fel – A processzusnak várnia kell minden I/O végrehajtására • Sok rövid futása a processzusnak nem hatékony
51
Felhasználói szintű bufferelés • Processzus megadja a buffert, hogy hova lehet helyezni az adatokat – Egy rendszerhívással egy egész bloknyi adatot lehet beolvasni • Hatékonyabb
Operációs rendszer
Felhasználói processzus
I/O eszköz 52
Felhasználói szintű bufferelés • Problémák – Mi történik ha buffert tartalmazó lapot kiírjuk a merevlemezre (swapped out)? • Adatot veszíthetünk • Rögzíthetjük a lapot a memóriában – Sok I/O-t végző processzus hatására kevés memória lesz elérhető, holtponthoz vezethet
53
Egyszeres bufferelés (single buffer) • A felhasználói processzus feldolgoz egy blokkot, amíg egy másikot olvasunk be • Swap-olás bekövetkezhet, hiszen az adatok nem felhasználói memóriába íródnak • Blokk-orientált
Operációs rendszer
Felhasználói processzus
I/O eszköz 54
Egyszeres bufferelés • Hatékonyság
T +C max(T , C ) + M – T: az eszközről egy blokk átmásolására szánt idő – C: egy blokk feldolgozásának ideje – M: egy blokknak a kernelből a felhasználói processzusba való átmásolásra fordított idő 55
Dupla bufferelés • Két rendszer buffer • A processzus kiolvas adatokat a bufferből, amíg az operációs rendszer a másik buffert üríti vagy feltölti
Operációs rendszer
Felhasználói processzus
I/O eszköz 56
Dupla bufferelés • Hatékonyság
T +C max(T , C + M ) – T: az eszközről egy blokk átmásolására szánt idő – C: egy blokk feldolgozásának ideje – M: egy blokknak a kernelből a felhasználói processzusba való átmásolásra fordított idő 57
Körkörös bufferelés • Akkor használják ha az I/O-nak lépést kell tartania a processzusnak
Operációs rendszer
Felhasználói processzus
I/O eszköz
58
Fontos • Mindegyik bufferelés esetén figyelembe kell venni a gyártó-fogyasztó problémát, vagy korlátos tároló problémát
59
Röviden összefoglalva I/O válasz
I/O kérés
Felhasználói I/O szoftware Eszköz független op. rsz. szoftware Eszköz kezelő (Device driver) Megszakítás kezelő Hardware
60
Blokkos eszközök • RAM lemez • Lemezek – RAID
61