operációs rendszerek ii

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

Upload: ellery

Post on 22-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

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) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Operációs Rendszerek II

Operációs Rendszerek II.

10. előadás

2007. április 16.

Page 2: Operációs Rendszerek II

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

Page 3: Operációs Rendszerek II

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!

Page 4: Operációs Rendszerek II

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)

Page 5: Operációs Rendszerek II

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!

Eszköz Átviteli sebesség (10n bps)

Giga ethernet 9

Grafikus megjelenítő 10 (PCI Express)

HDD 9 (Seagate: 78 MB/s)

Page 6: Operációs Rendszerek II

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

Page 7: Operációs Rendszerek II

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

Page 8: Operációs Rendszerek II

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

Page 9: Operációs Rendszerek II

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

Page 10: Operációs Rendszerek II

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)

Page 11: Operációs Rendszerek II
Page 12: Operációs Rendszerek II

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

Page 13: Operációs Rendszerek II

Pufferelési módok

• Egyszeres puffer

• Dupla puffer

• Cirkuláris pufferek

Page 14: Operációs Rendszerek II

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

Page 15: Operációs Rendszerek II

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

Page 16: Operációs Rendszerek II

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

Page 17: Operációs Rendszerek II

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

Page 18: Operációs Rendszerek II

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)

Page 19: Operációs Rendszerek II

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)

Page 20: Operációs Rendszerek II

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

Page 21: Operációs Rendszerek II

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

Page 22: Operációs Rendszerek II

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!

Page 23: Operációs Rendszerek II

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)

Page 24: Operációs Rendszerek II

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

Page 25: Operációs Rendszerek II

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

Page 26: Operációs Rendszerek II

Név Leírás Megjegyzés

A kiválasztás a művelet igénylőjétől függ

FIFO FIFO elv A legkorrektebb

Prioritásos A folyamat prioritása alapján Független a diszk ütemezőtől

LIFO LIFO A lokalitás maximalizálja

A kiválasztás a kért elemek függvénye

SSTF Shortest Service Time First Magas kihasználtság

SCAN Felvonóként Korrekt, de gyengékkel

CSCAN Egyirányú gyűjtőlift Megjósolhatóbb szolgáltatás

N-Step-SCAN Fix számú rekordot dolgoz fel Garantált szolgáltatás

FSCAN Változó rekordszám Érzékeny a terhelésre

Page 27: Operációs Rendszerek II

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

Page 28: Operációs Rendszerek II

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

Page 29: Operációs Rendszerek II

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

Page 30: Operációs Rendszerek II

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

Page 31: Operációs Rendszerek II

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

Page 32: Operációs Rendszerek II

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!

Page 33: Operációs Rendszerek II

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

Page 34: Operációs Rendszerek II

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)

Page 35: Operációs Rendszerek II

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

Page 36: Operációs Rendszerek II

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

Page 37: Operációs Rendszerek II

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

Page 38: Operációs Rendszerek II

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

Page 39: Operációs Rendszerek II

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

Page 40: Operációs Rendszerek II

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

Page 41: Operációs Rendszerek II

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)

Page 42: Operációs Rendszerek II

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

Page 43: Operációs Rendszerek II

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

Page 44: Operációs Rendszerek II

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

Page 45: Operációs Rendszerek II

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)

Page 46: Operációs Rendszerek II

Fájlrendszer architektúra

Page 47: Operációs Rendszerek II

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ú)

Page 48: Operációs Rendszerek II

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

Page 49: Operációs Rendszerek II

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)

crw-rw-rw- 1 root wheel 10, 6 Apr 18 23:20 tty.Bluetooth-Modemcrw-rw-rw- 1 root wheel 10, 2 Apr 18 23:20 tty.Bluetooth-PDA-Synccrw-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 disk0brw-r----- 1 root operator 14, 1 Apr 18 23:19 disk0s1

crw-rw-rw- 1 root wheel 3, 2 Apr 19 00:20 /dev/nullcrw-rw-rw- 1 root wheel 3, 3 Apr 18 23:19 /dev/zerocrw-rw-rw- 1 root wheel 8, 1 Apr 18 23:19 /dev/urandom

drwx------ 16 bzso bzso 544 Mar 24 22:48 Documentsdrwx------ 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

Page 50: Operációs Rendszerek II

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

Page 51: Operációs Rendszerek II

A közelmúlt (90-es évek) Unix fájlrendszerei

• Főbb mozzanatok– Fájlrendszer interfész és keretrendszer

változásai, több fájlrendszer egyidejű támogatása

– Többféle fájlrendszer megjelenése • Szolgáltatások (pl. hosszú fájlnevek)• Méret (fájlrendszer, fájlok)• Teljesítmény• Megbízhatóság• Speciális funkciók (pl. tmp terület)

Page 52: Operációs Rendszerek II

Fájlrendszer keretek

• Fájlrendszer interfész (amely meghatározza az alapvető /rendszerközeli kódból hívható/ műveleteket) – hosszú ideje viszonylag stabilnak tekinthető– Újabb funkciók megjelentek, de cél volt a

kompatibilitás megőrzése

• A fájl keretrendszer az idők során jelentősen átalakult– Leglátványosabb: több fájlrendszer támogatása– Megoldás: vnode/vfs interfész

Page 53: Operációs Rendszerek II

Több fájlrendszer – a kezdetek

• Többféle fájlrendszer használatának igényére nem volt megoldás (a kernel csak egyet támogatott)– s5fs és/vagy FFS– DOS (pl. Floppy-k)– Speciális fájlrendszerek

• Az 1980-as években a kommunikációs hálózatok elterjedésével a fájlmegosztás igénye is előtérbe került, egyebek mellett a transzparens hozzáférést kínáló Sun által fejlesztett NFS– NFS használata esetén a felhasználó ugyanolyan módon

láthatja a helyi fájlokat, mint a távoli gépen lévőket– Az NFS megoldáshoz a Sun teljesen átalakította a fájl

keretrendszert, később a megoldás (vnode/vfs) de facto szabvány lett (az SVR4 részévé is vált)

– Az NFS is az…

Page 54: Operációs Rendszerek II

A vnode/vfs architektúra

• Tervezési szempontok– Többféle fájlrendszer egyidejű (Unix és nem Unix – pl.

MS-DOS) támogatása– Különféle fájlrendszereket tartalmazó diszk partíciók

csatolása (mount) után létrejövő kép konzisztens, a felhasználónak nem kell törődnie a különféle fájlrendszerek sajátosságaival

– Fájlok (távoli) megosztásának támogatása– Saját fájlrendszerek típusok létrehozásának

lehetősége

Page 55: Operációs Rendszerek II

vnode/vfs koncepció

• Objektum szemléletű megközelítés:– Vnode: a fájlok absztrakciója, a– Vfs: pedig fájlrendszeré a Unix kernelben

• Absztrakt alaposztályok, minden tényleges fájlrendszer-implementáció ősei

• Az osztályok adatelemei és metódusai virtualizáltak, a funkciók két szintre oszthatók– alacsony szintű funkciók (pl. open, read) – ezeket

egyes fájlrendszer-implementációk implementálnak– magas szintű „utility” funkciók – alacsony szintű

funkcióra épülő funkciók, ezeket tipikusan a kernel egyéb részei használják

Page 56: Operációs Rendszerek II

Fájlrendszer Implementációs elvárások

• Minden művelet végrehajtása a hívó folyamat nevében történik, a végrehajtás alatt a hívó blokkolódik/hat

• Bizonyos műveletek kizárólagos fájl hozzáférést igényelnek – ezek struktúrák zárolását igényelhetik

• Az interfésznek állapotmentensnek kell lennie, globális változókra nem támaszkodhat

• Reentráns interfész szükséges, ez tiltja a globális változók használatát

• Globális erőforrások (pl. buffer cache) használata megengedett

• Támogatnia kell a távoli fájlelérést szerver oldalát• Fix méretű, statikus táblák használata nem lehetséges

Page 57: Operációs Rendszerek II

Fájlrendszerek

• SVR4 rendszerben támogatott fájlrendszerek– System V FS (s5fs) az „eredeti” Unix fájlrendszer– Berkeley Fast Filesystem (FFS, most ufs)– Veritas Journaling Filesystem (VxFS)– Eszközmeghajtók fájlrendszere, specfs– Hálózati fájlrendszer, NFS– Process fájlrendszer, /proc– Boot fájlrendszer, bfs

• További implemetációk– MS-DOS FAT (pl. Solaris esetén)– CD (pl. ISO 9660), DVD támogatás

Page 58: Operációs Rendszerek II

Az s5fs

• A fájlrendszer egyetlen diszk partíciót foglal el, használatához más információ nem kell

• A partíció logikailag blokkok lineáris tömbjének tekinthető– A blokkok mérete 512 szorzata 2 egész számú hatványával– A diszk műveletek előtt a blokkok címét át kell fordítani a lemez

fizikai címadataira

• A partíció négy részből áll– Boot terület– Szuper blokk– i-node lista– adatterület

Page 59: Operációs Rendszerek II

Fájlok tárolása

• Kb. fa struktúrájú szervezés, a struktúrát a könyvtár fájlok írják le. Felépítés:– Fájl neve 14 karakteren– i-node szám, 2 bájton (0 érték foglalt, törölt fájlt jelöl)– A ‘.’ és ‘..’ minden könyvtárban kötelező, root könyvtár

i-node értéke: 2

• Index node fájl adatait tárolja (kivétel név)– Fájl elhelyezkedésének magadása: indexelt, 13

bejegyzés, ebből 3 indirekt– Lyukak támogatása fájlokban (ilyenkor a blokkcím 0)

• Másoláskor gond lehet…

Page 60: Operációs Rendszerek II

Szuperblokk

• A fájlrendszer metaadatait tartalmazza– Minden fájlrendszer tartalmaz egy ilyen blokkot– Csatoláskor a kernel memóriába tölti, leválasztásig ott

is marad

• Szuperblokkban tárolt adatok– Fájlrendszer mérete (blokkok)– I-node lista mérete (blokkok)– Szabad blokkok és i-node bejegyzések száma– Szabad blokkok listája– Szabad I-node bejegyzések listája

Page 61: Operációs Rendszerek II

Szuperblokk, folyt.

• Szabad i-node blokkok nyilvántartása– Csak részleges lista van a szuperblokkban– Ha elfogy, a rendszer szabad blokkokat keres a

diszken

• Szabad diszk blokkok nyilvántartása– Az összes szabad blokkot nyilván kell tartani– Teljes lista szuperblokk-ban tartása nem lehetséges– A szuperblokkban csak a lista „eleje” van, a többi

tárolása adatblokkokban történik• Minél jobban telített a diszk, annál kisebb ez a lista!

Page 62: Operációs Rendszerek II

Cache

• Korai megoldásokban különálló buffer cache• SVR4 esetén a fájlkezelés a virtuális memóriakezeléssel

integrált• Olvasási művelet (példa)

– Blokk diszk-beli címének meghatározása– Lap foglalás kernelben, megadva az előbb kiszámolt cím– Lap másolása felhasználói térbe – laphiba, adatterület

beolvasása

• Az írás is virtuális memórián át történik, de:– A fájl mérete változhat– Ha nem teljes blokkot ír, akkor visszaíráskor szükség van a

diszken található adatokra is

Page 63: Operációs Rendszerek II

A fájlrendszer értékelése• Egyszerűsége kiemelkedő, de problémák több területen is

jelentkeznek:– Megbízhatóság– Teljesítmény– Szolgáltatások

• A szuperblokk sérülése a teljes fájlrendszert tönkreteszi• Teljesítmény szempontjából kritikus a teljes i-node tábla partíció

elején való elhelyezése• Az i-node foglalás véletlenszerű, nem ügyel kapcsolatokra (pl. egy

könyvtár fájljai)• A fájlrendszer létrehozásakor a szabad blokkok listája optimális (a

diszk műveletekre nézve), később azonban ezzel nem foglalkozik• A diszk blokkok mérete szintén nem optimális (nagyobb méret,

kevesebb művelet – jobb teljesítmény, de sok pazarlás)• A 14 karakteres fájlnév komoly funkcionális korlát

Page 64: Operációs Rendszerek II

Berkeley FFS

• Az FFS célja az s5fs korlátainak túllépése volt• Teljesítmény-növelés

– Bár a fájlrendszer továbbra is blokkok tömbjének tekinthető, a műveleteknél figyelembe veszi a diszkek forgási késleltetését

– A fejmozgások csökkentése érdekében a partíciót tovább osztjuk, ún. cilinder csoportokat hozunk létre

• Cél az összetartozó adatok egy cilinder-csoportban tartása• A szuperblokk adatainak egy része is a cilinder-csoportokba

vándorol

• Biztonság növelés érdekében a szuperblokk több példányban „elszórtan” tárolódott

• A helykihasználás javítása (és a teljesítmény növelése) miatt a (s5fs-nél nagyobb méretű) blokkokat oszthatóvá tették

Page 65: Operációs Rendszerek II

Fájlfoglalási politika

• Fájlfoglalás optimalizálása cilinder-csoportokon keresztül– Egy könyvtár fájljai egy csoportba kerülnek (lokalitás,

gyors könyvtárműveletek)– Új alkönyvtárat eltérő csoportba helyezi– A fájl blokkokat egy csoportba helyezi az i-node

blokkal– A nagy fájlokat „szétkeni” a blokkok között– Szekvenciális blokkok elhelyezése a diszk forgás

függvényében (késleltetések)• Az optimális működéshez legalább 10% szabad

diszk terület szükséges!

Page 66: Operációs Rendszerek II

Új szolgáltatások

• Hosszú fájlnevek (255 karakter)– Tárolás változó hosszon a könyvtár fájlokban

(a fix 255 hossz túlzás lenne)

• Szimbolikus linkek

• Stb.

Page 67: Operációs Rendszerek II

Blokkok osztása

• A nagy(obb) blokkméret jót tesz a teljesítménynek, de helyet fecsérelhet– 1 transzfer alatt átvihető adatmennyiség

• Az FFS egy fájlrendszeren belül csak egyféle blokkméretet támogat (ez általános)

• A blokkméret 2 hatványa, legalább 4096 byte– Ezzel a mérettel már elég a kétszeres indirekció

• Kis fájlok miatt az FFS támogatja blokk töredékek használatát– Csak a fájl utolsó blokkja lehet töredéken, a többi

csak teljes blokkot foglalhat (emiatt néha mozgatni is kell)

Page 68: Operációs Rendszerek II

Értékelés

• S5fs-hez képes jelentős teljesítmény növekedés– 1983: olvasás ~8x, írás ~3x

• Fájlrendszer kihasználási hatékonyság hasonló– Több tényező, kiegyenlítik egymást

• Mai diszkek esetén a sávonkénti blokkok száma eltérő, így az FFS elhelyezési politikája többé-kevésbé elévült

• Összességében az FFS jelentős előrelépés a s5fs-hez képest, azonban innen van még hova fejlődni

Page 69: Operációs Rendszerek II

Speciális fájlrendszerek, tmpfs

• Átmeneti adattárolás (tmp terület)– Sok alkalmazás intenzíven használ átmeneti fájlokat –

a teljesítmény fontos, a hosszú távú megőrzés szükségtelen

– Sokáig az ún. RAM diszkek használata volt a tipikus, ez viszont a központi memóriát statikusan foglalja

• A különféle speciális fájlrendszer megoldások (pl. Berkeley mfs, Sun tmpfs) dinamikusan használják a (virtuális) memóriát– a tmpfs akár nagyobb is lehet, mint a fizikai memória– a két megoldás közül a tmpfs a fejlettebb

Page 70: Operációs Rendszerek II

Speciális fájlrendszerek, procfs

• Cél hatékony és elegáns hozzáférés biztosítása a folyamat-adatokhoz (kernel adatok)

• A folyamatok adatait fájlok reprezentálják, hozzáférés egyszerű fájl I/O műveletekkel

• Az adathozzáférés (pl. státusz, creditentals, címtér) mellett (olvasás, esetenként írás) vezérlés is lehetséges (stop, resume, signal)

Page 71: Operációs Rendszerek II

Tradicionális fájlrendszerek korlátai

• Teljesítmény– Még az FFS sávszélessége is jelentősen elmarad a diszk

potenciális sávszélességétől

• Összeomlás esetén– A cache miatt adat és metaadat is elveszhet, helyreállás során

hosszadalmas konzisztencia ellenőrzés (fsck) szükséges– Minél nagyobb a diszk, annál tovább tart

• Biztonság– A klasszikus Unix hozzáférés kontroll sokszor nem elég finom,

ACL-re lenne szükség

• Méretek– A 32 bit korlátjai…

Page 72: Operációs Rendszerek II

Naplózás (journaling)

• Alapkoncepció (jelentősen leegyszerűsítve)– Minden változást feljegyzünk egy szekvenciális fájlba

(is)– Hiba esetén csak a fájlt kell ellenőrizni (végrehajtatlan

tranzakciókat keresve)

• Megvalósítás– Jelentős számú tervezési kérdés– Valós referenciák (pl. már a standard Solaris

fájlrendszernek is része a naplózási opció)

Page 73: Operációs Rendszerek II

Tervezési kérdések

• Naplózás köre: mindent v. metaadat változások• Műveletek vagy értékek naplózása• A napló kiegészíti vagy kiváltja a fájlrendszert• Redo vagy undo-redo logok• Szemétgyűjtés (naplófájl nem használt részei)• Írási szemcsézettség (egyedi, csoport)• Adatvisszanyerés teljesítménye (főleg a kiváltó

megoldásoknál)