1 / 73

Operációs Rendszerek II.

Operációs Rendszerek II. 10. előadás 2007. á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)

ellery
Download Presentation

Operációs Rendszerek II.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operációs Rendszerek II. 10. előadás 2007. április 16.

  2. 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

  3. 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!

  4. I/O eszközök jellemzői • Adatátviteli sebesség (Data rate) • Felhasználási terület (Application) • Vezérlés összetettsége (Complexity of control) • Adatátvitel egysége (Unit of transfer) • Adatok megjelenése (Data representation) • Hibalehetőségek (Error conditions)

  5. 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: 109 bit/sec • A sávszélesség nem köthető a kapcsolat fajtájához!

  6. 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

  7. További jellemzők 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 • 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.

  8. 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

  9. 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

  10. 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)

  11. 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

  12. Pufferelési módok • Egyszeres puffer • Dupla puffer • Cirkuláris pufferek

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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)

  18. 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 3.600 és a 15.000 közötti percenkénti fordulatszám a jellemző (a 3.600 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)

  19. Játék a számokkal • Példadiszk • átlagos seek idő: 4ms • fordulatszám: 15.000 (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 + 500 rekord olvasása = 10 ms • 2...5. track: 4x(forgás + olvasás) /no seek/ = 24 ms • Összesen: 34 ms

  20. Játék a számokkal • Példadiszk • átlagos seek idő: 4ms • fordulatszám: 15.000 (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

  21. Játék a számokkal - tanulságok • 34 msec vs. 14.6 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!

  22. 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)

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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!

  31. 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

  32. 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)

  33. 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

  34. 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

  35. 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

  36. Diszk cache • Gyorsítótár, a gyorsítótáraknál korábban megismert célokkal és problémákkal • Gyorsítótár: központi memória (drágább, kisebb kapacitású, de gyorsabb, mint a merevlemez) • Algoritmusok: gyorsítótár lehető legoptimálisabb használata

  37. Diszk cache tervezési kérdések • Gyorsítás „iránya” • Csak olvasáskor (write through) • Mindkét irányban (write back) • Memória felhasználás módja • Fix (előre meghatározott) • Dinamikus (terheléstől függő) • Adat átadás a cache-területről (olvasáskor) • Másolás a felhasználói címtérbe • Osztott memória használata • Blokkcsere algoritmusa • LRU (least recently used) • LFU (least frequently used) • Frequency-based

  38. Fájlok, fájlrendszerek • Felhasználói szempontból az operációs rendszer (egyik) legfontosabb része • Ezzel közvetlen „találkozik” • A fájlok tárolása, hozzáférés alapvető • Teljesítmény szempontból kritikus

  39. Alapvető elvárások • Hosszú távú tárolás • A fájlokat másodlagos tárolón (tipikusan merevlemezen) tároljuk • A fájlok tartalma a felhasználó kilépése, a gép kikapcsolását követően is megmarad • Megoszthatóság • Ugyanazt azt az adathalmazt több program is elérhesse – a fájlok egyértelmű azonosítása alapvető • Amennyiben igényelt, a fájlokat több felhasználó is elérhesse • Strukturáltság • A fájlok tartalmát (adatokat) jól ismert struktúrába kell szervezni • A fájlok között is célszerű struktúrát definiálni (sok fájl, átláthatóság)

  40. Tipikus fájl műveletek • Általános modell • Létrehozás • Törlés • Megnyitás • Lezárás • Olvasás • Írás • Az egyes konkrét implementációk további műveleteket is definiálhatnak

  41. Fájl struktúrák • Struktúra-elemek • Mező, alapelem • Rekord, összetartozó mezők gyűjteménye • Fájl, összetartozó rekordok • Adatbázis, összetartozó fájlok • Mai rendszerekben a struktúra meglehetősen egyszerű, az összetett(ebb) adatstruktúrák kezelését alkalmazás szintű komponensekre bízzák

  42. Fájl menedzsment rendszer elvárások • Felhasználók (és alkalmazások) adattárolási, adatkezelési igényeinek kielégítése • Tárolt adatok validitásának biztosítása • Teljesítmény optimalizálás rendszer (globális) és felhasználói szempontból egyaránt • Különféle tároló eszközök támogatása • Adatvesztés kockázatának minimalizálása • Szabványos (programozói) interfész biztosítása • Többfelhasználós működés támogatása

  43. Másodlagos tároló menedzsment tervezési tere • Fájl foglalása • Előzetes foglalás: a létrehozáskor lefoglaljuk (fix méret) • Dinamikus foglalás • Foglalási egység • változó hosszú, összefüggő: nagyon jó teljesítmény, módosítás és felszabadítás problémás • blokk alapú: fix méretű (kicsi) blokkokból foglalunk. Bonyolultabb nyilvántartás, rosszabb teljesítmény – viszont könnyen módosítható és újrahasználható • Fájl foglalási módszerek (blokkos) • Folyamatos foglalás • Láncolt foglalás (minden blokk külön) • Indexelt foglalás (minden blokk külön) • Szabad hely nyilvántartása • Bit tábla használata • Láncolás • Indexelés • Szabad blokkok listája (külön területen, a diszken tárolva)

  44. Fájlrendszer architektúra

  45. Rétegek • Device driver: kommunikáció a különféle hardver elemekkel (eszközfüggő) • Basic FS (physical I/O): alacsony (blokk) szintű műveletek • Basic I/O supervisor: I/O sorbaállítás, ütemezés • Logical I/O: magas szintű file műveletek • File szervezés: NEM Unix/Win világban • Pile („struktúrálatlan”, ahogy jön) • Szekvenciális (rekord alapú) • Indexelt szekvenciális (rekord alapú) • Indexelt (rekord alapú) • Direct (hash) fájlok (rekord alapú)

  46. Unix I/O (klasszikus) • Hozzáférés fájl-interfészen keresztül • Kétféle eszköz • Blokkos • Karakteres • Eredeti buffer cache fix

  47. I/O eszközök a fájlrendszerben • Kernel tábla hivatkozások az i-node táblában • Major és minor numberek (eszköz, példány) drwx------ 16 bzso bzso 544 Mar 24 22:48 Documents drwx------ 35 bzso bzso 1190 Apr 3 18:24 Library -rwxr-xr-x 1 bzso bzso 99452 Nov 1 00:46 Google Earth -rwxr-xr-x 1 bzso bzso 92840 Nov 1 01:02 Google Earth Launcher crw-rw-rw- 1 root wheel 10, 6 Apr 18 23:20 tty.Bluetooth-Modem crw-rw-rw- 1 root wheel 10, 2 Apr 18 23:20 tty.Bluetooth-PDA-Sync crw-rw-rw- 1 root wheel 10, 4 Apr 18 23:20 tty.Hermione-Dial-upNetwork-2 brw-r----- 1 root operator 14, 0 Apr 18 23:19 disk0 brw-r----- 1 root operator 14, 1 Apr 18 23:19 disk0s1 crw-rw-rw- 1 root wheel 3, 2 Apr 19 00:20 /dev/null crw-rw-rw- 1 root wheel 3, 3 Apr 18 23:19 /dev/zero crw-rw-rw- 1 root wheel 8, 1 Apr 18 23:19 /dev/urandom

  48. Unix I/O • Klasszikus: statikus táblázatok • Új hardver illesztéséhez új kernel kell (a meghajtó programok statikusan betöltve) • Sok esetben előre „belepakoltak” minden drivert a kernelbe • Modern: dinamikus kernelek • A különféle meghajtó programok futási időben is betölthetők (igény szerint) • Függőségek! • Lényegesen rugalmasabb és erőforrás takarékosabb működés – de a kernel sokkal bonyolultabb lesz

More Related