Operációs Rendszerek II. 10. előadás április 16.
I/O kezelés I/O eszközök I/O szervezés Operációs rendszeri elvárások Diszkek kezelése –RAID Fájlrendszerek
I/O eszközök csoportosítása Csoportosítás kapcsolódás fajtája szerint –Felhasználói kapcsolat (bevitel és kivitel is) –Gép általi kapcsolat (pl. HDD, tape) –Kommunikáció (gép-gép közötti) A fenti csoportokba tartozó eszközök között is jelentős eltérések lehetnek további jellemzők vizsgálata szükséges!
I/O eszközök jellemzői 1.Adatátviteli sebesség (Data rate) 2.Felhasználási terület (Application) 3.Vezérlés összetettsége (Complexity of control) 4.Adatátvitel egysége (Unit of transfer) 5.Adatok megjelenése (Data representation) 6.Hibalehetőségek (Error conditions)
Adatátviteli sebesség Különféle eszközök átviteli sebessége között több nagyságrendi eltérés is lehet –Billentyűzet kevesebb, mint 100 bps –Ethernet: 10 9 bit/sec A sávszélesség nem köthető a kapcsolat fajtájához! EszközÁtviteli sebesség (10 n bps) Giga ethernet9 Grafikus megjelenítő10 (PCI Express) HDD9 (Seagate: 78 MB/s)
Felhasználási mód (terület) Az eszköz felhasználási területe befolyásolja, hogy az operációs rendszernek milyen módon kell azt kezelnie – Például a lemezegységek használatához általában fájlkezelő rendszer szükséges, azonban ha a lemezegységet a memória lapok tárolására használjuk (másodlagos memória) a fájlkezelés helyett másfajta lemezkezelésre lesz szükség
További jellemzők Vezérlés összetettsége: egy mátrixnyomtató kezelése viszonylag egyszerű feladatot ró az operációs rendszerre, ugyanakkor egy lemezegység kezelése meglehetősen összetett feladat. Az átvitel egysége: adatokat bájtok vagy karakterek folyamaként is átvihetjük, de kezelhetjük az adatokat összefüggő blokkokban is. Az adatok megjelenése: különböző eszközök az adatokat más-más kódolásban igényelhetik (karakterkódok, paritás, stb.). Hibalehetőségek: hibák jellege, a hibajelentés módja, és a hiba fellépése esetén elvégzendő intézkedések fajtáji eszközről-eszközre változnak. A változatosság ellenére azt várjuk, hogy az operációs rendszer az I/O kezelést egységes, eszközfüggetlen interfészen keresztül biztosítsa számunkra
I/O szervezés lehetőségei I/O kezelési technikák –Programozott I/O –Megszakítás vezérelt I/O –DMA alapú I/O Az I/O funkciók fejlődése –A processzor direkt vezérli az eszközöket –Kontroller (I/O modul) hardver hozzáadása –Megszakítások kezelése (I/O modul) –DMA megjelenése –Az I/O modul egy programozható célprocesszorként jelenik meg. A központi CPU feladata a programkód megadása és a folyamat indítása (I/O csatorna) –Az I/O processzor nem a központi memóriát használja, hanem dedikált memóriával rendelkezik
Operációs rendszer elvárások Hatékonyság –az I/O eszközök többsége a CPU-hoz képest lassú –az I/O kezelő funkciókat úgy kell elkészíteni, hogy a lassú eszköz miatti várakozás során más folyamat futhasson –ma már léteznek olyan gyors perifériák, amelyek kiszolgálása jelentős teljesítmény-optimalizálást igényel Általánosság: sokszínűségük ellenére egységes periféria-kezelési megoldás –OS szintjén (belső struktúrák) –folyamatok felé nyújtott interfészen (read, write, open, close, lock, unlock) keresztül –megoldást a hierarchikus struktúrák alkalmazása jelenti
I/O funkciók logikai struktúrája Klasszikus megoldás: hierarchikus megközelítés, az egyes rétegek csak a saját feladatukért „felelnek” –Logikai I/O: általános I/O funkciók szolgáltatása a folyamatok felé –Eszköz I/O: I/O kérések „lefordítása” eszköz specifikus parancs-szekvenciákra –Ütemezés, vezérlés: I/O műveletek sorba állítása, ütemezés (pl. IRQ-k kezelése)
I/O Pufferelés Ha az eszközök közvetlenül „csatoltak” a folyamathoz, akkor: –az érintett memória lapok nem lapozhatók –a művelet befejeztéig a folyamatnak várnia kell (az adott terület nem módosítható) –beviteli műveletek esetén csak az „igény szerinti” (on- demand) működés képzelhető el Pufferelés: egy kernel területén található átmeneti tár közbeiktatásával szétválasztjuk az eszközt és a folyamatot
Pufferelési módok Egyszeres puffer Dupla puffer Cirkuláris pufferek
Pufferelési módok Egyszeres puffer –A műveletek egy kernel puffer- be/ből történnek. –A kernel-user címtér utáni mozgatás után a puffer felszabadul (kezdődhet a következő művelet) –A user címtér lapozható (de a memória menedzsment elbonyolódik) Dupla puffer Cirkuláris pufferek
Pufferelési módok Egyszeres puffer Dupla puffer –Két puffert használunk, az egyiket az OS, a másikat a user folyamat „fogja” –Két művelet történhet egy időben –Gyorsabb, mint az egyszeres – de bonyolultabb is Cirkuláris pufferek
Pufferelési módok Egyszeres puffer Dupla puffer Cirkuláris pufferek –A dupla pufferelés továbbgondolása, a kernel n puffert rendel egy folyamathoz –Bizonyos esetekben tovább gyorsít –A megoldás a „termelők-fogyasztók” modellel írható le
Diszk I/O Probléma: diszk és CPU/Mem közötti sebesség különbség folyamatosan növekedett az elmúlt időben (és valószínűleg ez így is marad): –diszkek több nagyságrenddel „lassabbak” a CPU-nál Mivel a leggyakoribb I/O művelet a diszkekkel kapcsolatos (fájl, VM) a diszkkezelés hatékonysága alapvető fontosságú az operációs rendszerek számára
Diszkek teljesítményének elemei Elemek –Seek time: a fej mozgásának ideje (megfelelő track fölé) –Forgási késleltetés: amíg a track-on belül a kívánt blokk befordul –Átviteli idő: a konkért írás vagy olvasás A seek time és a forgási késleltetés összege adja az elérési időt. A fenti időkön túl még számolni kell: –az eszközre való várakozás ideje –I/O csatornára való várakozás ideje (ha az osztott)
Idők, értékek Seek time –A fej mozgásához szükséges idő. Ez a mozgás nem teljesen lineáris. A mai kisebb diszkek esetén rövidebb, mint a régi nagyobb (pl. 14 inch) lemezeknél. Mai jellemző érték 4…10 ms. Forgási késleltetés –A lemez forgási sebességétől függ –Mai HDD-k esetén a és a közötti percenkénti fordulatszám a jellemző (a csak a low-end, hordozható eszközökben) –15k esetén egy teljes fordulat ideje 4ms, így az átlag 2ms! Átviteli idő: –Szintén a fordulatszám függvénye. Egy track-en belül számítható: T = b/(rN) –b: átviendő bájtok, r: forgási sebesség, N: track mérete (byte)
Játék a számokkal Példadiszk –átlagos seek idő: 4ms –fordulatszám: (full: 4 ms) –szektorméret: 512 byte –szektor/track: 500 (16 us) Feladat: 2500 szektor (1.28 MB beolvasása) Scenario 1: összefüggő elhelyezkedés – 5 track –1. track: seek + forgás rekord olvasása = 10 ms – track: 4x(forgás + olvasás) /no seek/ = 24 ms –Összesen: 34 ms
Játék a számokkal Példadiszk –átlagos seek idő: 4ms –fordulatszám: (full: 4 ms) –szektorméret: 512 byte –szektor/track: 500 (16 us) Feladat: 2500 szektor (1.28 MB beolvasása) Scenario 2: véletlenszerű elhelyezkedés –2500 x (átlagos seek + átl. Forgás + olvasás) –2500 x (4m+2m+16u) = 14.6s! –Összesen: 14.6 s
Játék a számokkal - tanulságok 34 msec vs sec Fájlrendszereket célszerű úgy szervezni, hogy a fájlok elhelyezkedése ne legyen teljesen véletlenszerű! Multiprogramozott rendszerek esetén az egymástól független I/O műveletek esetén érdemes optimalizációt végezni!
Diszk ütemezés diszk kérések hatékony kiszolgálása (multiprg. rendszerekben) –Tökéletes megoldás nincs Algoritmusok –FIFO –Prioritásos –LIFO –SSTF –Scan (és változatai)
Diszk ütemezési algoritmusok FIFO: kiszolgálás a beérkezés sorrendjében. –Korrekt ütemezés, kevés számú folyamatnál hatékony is lehet –Sok folyamatnál hatékonysága drasztikusan romlik Prioritásos: mindig a legnagyobb prioritású kérést –Kiéheztetés lehetséges LIFO: Mindig a legfrissebb kérést szolgálja ki –Filozófiája lényege, hogy az utolsó kérés az előző közelében lehet – így gyorsan kiszolgálható –Sok folyamatnál ez nem feltétlenül igaz –Kiéheztetés lehetséges SSTF: mindig a legrövidebb kiszolgálási időt igénylő (legkisebb fejmozgás) tartozó kérést szolgálja ki –A megoldás nem garantálja, a fejmozgások globális minimumát –Kiéheztetés lehetséges
Folytatás, SCAN verziók Scan: –Cél a hatékonyság növelése a a kiéheztetést elkerülése mellett (ezt eddig csak a FIFO oldotta meg) –A fej fel-le mozog, és minden útjába akadó kérést kiszolgál. középső részeket favorizálja tömeges kérésekkel „leragasztható” C-Scan: mindig csak egy irányba megy, –a Scan első problémáját megoldja N-step-Scan: a diszk sort N nagyságú részekre osztja, egyszerre csak egy N-est dolgoz fel FSCAN: két sor van. Amíg az egyikből dolgozik, a kérések a másikba gyűlnek –e két megoldás a leragadást oldja meg
NévLeírásMegjegyzés A kiválasztás a művelet igénylőjétől függ FIFOFIFO elvA legkorrektebb PrioritásosA folyamat prioritása alapjánFüggetlen a diszk ütemezőtől LIFO A lokalitás maximalizálja A kiválasztás a kért elemek függvénye SSTFShortest Service Time FirstMagas kihasználtság SCANFelvonókéntKorrekt, de gyengékkel CSCANEgyirányú gyűjtőliftMegjósolhatóbb szolgáltatás N-Step-SCANFix számú rekordot dolgoz felGarantált szolgáltatás FSCANVáltozó rekordszámÉrzékeny a terhelésre
RAID Diszk (másodlagos tároló) problémák –Teljesítményük növekedési rátája szignifikánsabban alacsonyabb a CPU növekedésnél –a tárolt adatok fontossága miatt a nagy kapacitású diszkek hibája egyre nagyobb üzleti kockázattal járt –A nagy kapacitású diszkek sem „eléggé nagyok” RAID koncepciója: nagy kapacitású és teljesítményű drága diszkek helyett kisebb (olcsóbb) diszkeket használva érjük el célunkat, azaz: –Kapacitás növelése –Teljesítmény növelése –Megbízhatóság növelése
RAID Az elnevezés a Berkley egyetem kutatóitól származik (1988) – akkor ők ezt a „Redundant array of Inexpensive Disks” szavakból állították össze. A névben később az „Inexpensive” szó „Independent”-re változott… Dióhéjban: úgy kapcsolunk össze több diszket, hogy –az operációs rendszer számára egy diszknek látszanak –az adatot szétosztjuk a diszkek között, –a diszk hibák ellen paritás információ tárolásával védekezzünk (ezt –két megoldás nem elégíti ki) A szabvány 5+1 szintet definiál –a „+1” nem redundáns és 3 terjedt el –különböző gyártók további szinteket is definiálnak –szint-kombinációkat is alkalmazunk A különböző megoldások a szükséges tárolóterület overhead-ben, a megoldás teljesítményigényében és a biztonság szintjében térnek el
RAID szintek RAID-0 (striping) –Redundancia nélküli megoldás RAID-1 (tükrözés) –Adatduplikáláson alapul (nem paritás alapú) RAID-2 –Speciális, Hamming kód alapú –Gyakorlatilag kihalt RAID-3 –Kizáró vagy műveletre épít, egy blokk az összes diszkre szét van osztva –Erős hardver támogatást igényel! RAID-4 –Kizáró vagy műveletre épít, egy blokk csak egy diszken található –Dedikált paritás diszket használ RAID-5 –Hasonló a RAID-4 megoldáshoz, de itt a paritás is szét van osztva a diszkek között
RAID – háttér információk A diszkek átviteli jellemzőjének tényezői –a mechanikai működésből adódó késleltetés –az adatátvitel végrehajtásának teljesítménye (átviteli sebesség) A terhelés jellege –Kevés számú, kis párhuzamosságú, de nagy mennyiségű adatot mozgató terhelése (pl. kötegelt feldolgozás) –Nagy számú, magas párhuzamosságú, de kicsi adatmennyiséget érintő terhelés (tranzakciós rendszerek) Kapcsolat a fentiek között –Nagy mennyiségű adatot mozgató terhelésnél az adatátvitel teljesítménye domináns –Nagy tranzakciószámnál a késleltetések sokkal fontosabbak
RAID – háttér információk Olvasás és írás műveletek különbsége redundáns tároláskor –olvasáskor csak annyi adatot kell beolvasni, ami elegendő a kért adatblokk biztosításához –íráskor az adatblokkhoz tartozó összes részt aktualizálni kell Vizsgáljuk –Tárolás módja –Viselkedés íráskor és olvasáskor Példák –Diszkek száma: N –Egy diszk átviteli sebessége: T
RAID-0 Tárolás módja –Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. –Redundancia nincs a rendszerben. –Hasznos terület: N. Olvasás –Egy időben ~N független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T –Hiba esetén: működésképtelen! Írás –Egy időben ~N független írása tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T –Hiba esetén: működésképtelen!
RAID-1 Tárolás módja –Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. –A redundanciát a teljes adat duplikálása eredményezi. –Tipikusan N=2, hasznos terület: N/2. Olvasás –Egy időben ~N független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T –Hiba esetén: egy időben ~(N-1) független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T Írás –Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: =< T –Hiba esetén: Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: =< T
RAID-3 Tárolás módja –Byte szintű csíkok, a blokkok az összes diszkre szét vannak osztva. –Byte szintű paritás képzés XOR művelettel történik, –a megoldás dedikált paritás diszket használ. N>2, hasznos terület: N-1. Olvasás –Egy időben 1 olvasási tranzakció szolgálható ki Tranzakciónkénti átviteli sebesség: (N-1)*T –Hiba esetén: egy időben 1 olvasási tranzakció szolgálható ki Tranzakciónkénti átviteli sebesség: < (N-1)*T (számolni kell) Írás –Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: <= (N-1)*T (számolni is kell) –Hiba esetén: egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: <= (N-1)*T (számolni is kell)
RAID-4 Tárolás módja –Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. –Blokk szintű paritás képzés XOR művelettel történik, a megoldás dedikált paritás diszket használ. –N>2, hasznos terület: N-1. Olvasás –Egy időben (N-1) független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T –Hiba esetén: az olvasási tranzakciók száma akár egyre is lecsökkenhet, mert a hibás diszkeken található adatok előállításához az összes többi diszkblokk adata szükséges! Írás –Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T. Egy blokk kiírása után a teljes sor paritását újra kell számolni –Hiba esetén: 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T
RAID-5 Tárolás módja –Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. –Blokk szintű paritás képzés XOR művelettel történik, a paritás blokkok is szét vannak osztva a diszkek között. –N>2, hasznos terület: N-1. Olvasás –Egy időben (N-1)...(N) független olvasási tranzakció Tranzakciónkénti átviteli sebesség: T –Hiba esetén: az olvasási tranzakciók száma akár egyre is lecsökkenhet, mert a hibás diszkeken található adatok előállításához az összes többi diszkblokk adata szükséges! Írás –Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T –Hiba esetén: 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T
További RAID szintek Raid-6 –Két paritás blokk használatával (n+2 konfig) nagyobb hibatűrést biztosít –Az írás során jelentős overhead –Nem igazán terjedt el Raid-S –EMC Symmetrix diszktömbökben használt technológia. –Raid-5 szerű, de speciális, teljesítményt növelő eljárásokat alkalmaz Kombinált Raid: 1+0 és 0+1 –0+1: összetükrözi a stripe-ot –1+0: tükröket stripe-ol