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ákcsoportosí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
Átviteli sebesség is teljesen különböző lehet Perifériák, adatátvitel 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/Oprocesszor I/O fejlődése 6. Önálló processzor, memória, belső busz, stb Egy önálló számítógép Pl. Myrinet 10 gigabit NIC 16
Busz Sínek és buszok 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/Olehet Processzor és RAM között gyorsabb lehet az összeköttetés 18
Két sínt összevonhatjuk Közös sebesség Sínek és buszok 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/Okapuk 25
Memórialeképezésű I/O Az I/Oregiszterek a memória egy részén található Memória Hibrid rendszer (x86) Memória I/Okapuk 26
Programozott I/O Read parancs az I/O modulnak CPU I/O I/O modul státusza I/O CPU nem Készen áll? hiba igen Adat olvasás az I/O modulból I/O CPU Adat írás a memóriába CPU memória nem 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 Read parancs az I/O modulnak I/O modul státusza CPU I/O valami mást csinálhatunk megszakítás I/O CPU Státusz? hiba kész Adat olvasás az I/O modulból I/O CPU Adat írás a memóriába CPU memória nem 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 DMA Lemezvezérlő Meghajtóegység Cím Puffer CPU Számláló Memória 4. Nyugtázás Megszakítás ha kész 2. DMA átvitelt kér 3. adatátvitel Sín 37
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
Miért kell a puffer? DMA 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
Eszközfüggetlen I/O szoftver alapjai Ú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
Hibakezelés I/O szoftver alapjai 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/Oszoftware 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
A kérés elküldése után Eszközmeghajtó 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 Ahasonló 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/Ové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
Hatékonyság Egyszeres bufferelés 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
Két rendszer buffer Dupla bufferelés 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
Hatékonyság Dupla bufferelés 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 kérés I/O válasz Felhasználói I/Oszoftware Eszköz független op. rsz. szoftware Eszköz kezelő (Device driver) Megszakítás kezelő Hardware 60
RAM lemez Lemezek RAID Blokkos eszközök 61