Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

I/O és fájlkezelő alrendszer

Hasonló előadás


Az előadások a következő témára: "I/O és fájlkezelő alrendszer"— Előadás másolata:

1 I/O és fájlkezelő alrendszer
Operációs rendszerek I/O és fájlkezelő alrendszer

2 A mai program Az I/O alrendszer, különböző látásmódokkal
Eszközök osztályai, eszköz-driverek Logikai diszk, partíció fogalom Fájlok, szervezettség, elérés Fájlrendszer megvalósítási feladatok jegyzékstruktúra megvalósítás, blokk hozzárendelés fájlokhoz, szabad blokk menedzselés. Unix fájlrendszer. Vadász

3 Az I/O alrendszer feladatai
Elrejteni az eszközök specialitásait Kényelmessé tenni az eszközhasználatot Menedzselni az eszközöket, fájlokat védeni azokat, ütemezni, konkurens vagy kizárólagos hozzáféréseket biztosítani. (A fájl absztrakció a felhasználók által leginkább ismert és használt absztrakció, amit az operációs rendszer nyújtani tud.) Vadász

4 Eszközök, másodlagos tárolók, fájlrendszer
I/O alrendszer, eszközök Hozzáférések Eszköz driverek Buffer cache Másodlagos tárolók Fájlrendszer megvalósítás Jegyzékstruktúra, attribútumok rögzítése Blokkhozzárendelés Blokkmenedzselés Melyikkel is kezdjük a tárgyalást? A fájlrendszer funkciók a leginkább eszköz-függetlenek (ezért viszonylag a felsőbb rétegekben vannak), lehetne azokkal kezdeni. Viszont a fájlrendszert egy bizonyos eszközön (blokkorientált eszközön) lehet megvalósítani. Kezdjük ezzel … Vadász

5 I/O rendszer a felhasználó szemszögéből
Szimbolikus neveken látja az eszközöket, fájlokat Lát eszközöket (köztük logikai eszközöket), látja a fájlok halmazát (file pool), lát hierarchiát (ösvény, jegyzék stb. fogalmak, ezek “rendeznek“), fájl névteret. A felhasználói felülettel (burok, v. GUI és segédprogramok) kezeli ezeket (készít, töröl, másol, mozgat, eszközt kezel stb.) Ismer tulajdonossági és hozzáférési kategóriákat (védelem), beállít ilyeneket. Bizonyos OS-ekben észlel fájl szervezési és fájl elérési módokat. Ad „hozzáférések” Nem ismert: a felhasználó nem is tudhat a fájl/eszköz létezéséről Ismert: a user tudhatja, hogy létezik és ismerheti tulajdonosát Futtaható (x): betöltheti (load) és futtathatja, de nem másolhatja Olvasható (r): olvashatja, másolhatja Hozzáfűzhető (append): eddigi tartalmát ugyan nem módosíthatja, de hozzáfűzhet Módosítható (update): egészben vagy részben újraírhatja, módosíthatja Védelme változtatható: változtatható a hozzáférési jog Törölhető (delete): törlheti, megszüntetheti Vadász

6 A programozó látásmódja
(Nyitott) csatornákat (stream) lát. Ezek azonosítója: fájl-leíró/pointer. Nyithat/zárhat csatornákat (open, fopen, close, fclose). Nyitni: több dolgot jelent: csatorna azonosítót kreál, pozíció indikátorral, a csatornát összeköti szimbolikus névvel, védelmeket kezel, beállít. Azonosított csatornákon adatokat (byte/karakter, rekord, blokk stb.) mozgat. Ez függ az elérési módtól: szekvenciális eléréssel, direkt eléréssel. Vadász

7 A programozó látásmódja
Fájl nyitó-záró rendszerhívások A fájlleíró processzenkénti objektum Az adatmozgató rendszerhívások: read, write, put, get, putchar, getchar, seek stb. Néha külön rendszerhívások a jegyzékekre opendir, readdir, rewinddir, mkdir, rmdir stb. Vadász

8 A programozó látásmódja
Proc A fd1=open(”/etc/passwd”, O_READONLY) fd2=open(”local”, O_RDWR) fd3=open(”/etc/passwd”, O_WRONLY) Proc B fd1=open(”/etc/passwd”, O_READONLY) fd2=open(”private”, O_RDWR) Proc A descriptor table Inode list File table 1 2 3 4 5 6 Count 1 R Count 1 RW Count 1 W Count 3 /etc/passwd Count /local Count /private Proc B descriptor table 1 2 3 4 5 6 A kernel globális táblái Vadász

9 Az OS I/O alrendszere A kernel struktúráknál láttuk: van külön I/O alrendszer Ennek feladata: vezérlés, interfész biztosítás, védelem és menedzsment biztosítás. Alapelvek: Réteges struktúra, eszközfüggetlenség biztosítása, célszerűen elosztott a hibakezelés, szinkronitás-aszinkronitás biztosítása, osztható és dedikált eszközök, fájlok is kezelhetők. Vadász

10 I/O alrendszer szerkezet
Névtér kezelés (dirs, paths), védelem kezelés (rwx), adatfolyamok azonosítása Adatfolyamok kezelése, elérések (seek, direkt (random) elérés, soros elérés) Az adatfolyamok blokkokra való leképzése (blokk allokáció) Adatfolyamok szűrése (vezérlő karakterek átalakítása) Adatfolyamok szűrés nélküli továbbítása Diszk buffer cache (diszk elérés gyorsítása) Disk drivers Device drivers Devise drivers Egyre eszközfüggőbb funkciók … Vadász

11 Unix I/O alrendszer Vadász

12 NT I/O Manager alrendszer
I/O Manager: minden I/O menedzselésére. Mint látjuk, különböző driverek és a driverek közötti kommunikációs mechanizmusok alkotják. Réteges: felül eszközfüggetlen, lejjebb egyre eszközfüggőbb részek. A driverek kommunikációjára: I/O Request Packets (IRPs) adatstruktúrák, ezeket az I/O Manager „kézbesíti”. („Legalul” HW-t kezelő „igazi” driverek, bennük IT handlerek is.) Az IRP-k I/O sorokban (queue) állhatnak, várva az egyes driverek szolgáltatását (és a sorokból különböző prioritásokkal ütemezhetik a kérelmeket a driverekhez). Az I/O Subsystem részben megemlíthető a Cache Manager. A teljes blokkorientált I/O cache-elve van. Vadász

13 A Linux többrétegű fájlrendszere
Process 1 Process 2 Process n User mode Kernel mode VIRTUAL FILE SYSTEM ext2 msdos minix proc Buffer cache Device drivers File system Vadász

14 Az eszköz „driverek” Rutinkészlet + táblázatok + pufferek
“Megszólíthatók“: felülről (call, IRPs), alulról (IT). Három fő részük: Auto-konfigurációs inicializáló rutinok (egyszer futnak, az eszközt inicializálják), I/O hívások rutinjai (Call-lal többször is megszólítódnak, alapvető szolgáltatók), IT handlerek (IT-vel többször is). IRP - I/O Request Packets Vadász

15 Az eszköz driverek „felső” rétege
Setup: paramétereket juttat a driverhez automatic detection a setup argumentumokkal Init: eszköz jelenlétét teszteli Hívódik a kernel inicializáláskor belső adatstruktúrákat, regisztereket generál az eszköz számára open & release: inicializál standard értékekkel hogy adminisztrálni lehessen az eszközt visszaad/megszüntet egy leírót az eszközhöz processz nyithat kizárólagosan magának, vagy osztottnak Vadász

16 Az eszköz driverek „középső” rétege
Read & Write: a szokásos szolgáltatások IOCTL: eszköz-specifikus parancsok készlete Select: vizsgáló vizsgálja, hogy lehet-e írni, olvasni a lekérdezős (polling) technikához jó nem minden eszközhöz, és lehet az IOCTL-ben Mmap: leképzés a felhasználói címtartományra nincs minden eszköznél, de fájlrendszert tartalmazónál hasznos lehet Lseek: indikátor mozgató Nincs minden driver-nél, lehet IOCTL-ben Vadász

17 Az eszköz driverek „alsó” rétege
IT kezelők: értelemszerűen Check_media_change & revalidate: blokkos cserélhető eszközhöz észreveszi a medium cserét, annak paramétereivel aktualizálja az adatstruktúrákat kérdés, hogy ne a felső réteghez tartozónak vegyük-e Vadász

18 A DLLs & VxDs DLL: Dynamic Link Library VxD: Virtual anything Device
Csak ha kérelem van, akkor töltődik be (egyfajta overlay) Kérelmeket fogad és szolgál ki (sokszor úgy, hogy a kérelmeket speciális formában továbbadja) VxD: Virtual anything Device A rétegezettségi koncepció miatt virtuális eszközöket valósít meg A "kezelő" rutinjai valószínűleg nem IT-vel szólítódnak meg (hanem call jelleggel, pl. IRP-vel) Elvileg lehet DLL IRP: I/O Request Packet Vadász

19 Milyen eszközök vannak?
Karakteres eszközök (pl. billentyű, soros port, képernyő, analóg-digital átalakító stb.). Strukturálatlanul (pl. karakter-folyamként) kezel, (Néha sor (line) strukturáltság van!) De! A driver fölött szűrés lehet. Diszk is kezelhető karakteresen. Strukturált (blokkos) eszközök (diszkek). blokkos I/O-val is kezelhetők, fájl-rendszer is alakíthatók ki rajtuk, a buffer cache gyorsító mechanizmuson át használjuk Vadász

20 Diszkek, blokk orientált eszközök
Blokknyi egységben történik az adatáramlás. Oldal-sáv-(cilinder)-szektor (blokk) fogalmak adattárolási egység a szektor (blokk), oldal-sáv-szektor címek léteznek, Az oldal-sáv-szektor címek leképezhetők folyamatos logikai blokkcímekre (ezt a kontroller végezheti): felülről 0-n-ig számozott blokkok sorának láthatjuk. Logical Disk képezhető a fizikai diszkre. Oka: egységesítés, egyszerűbb driverek. Vadász

21 Logikai diszk, partíció
Egy fizikai diszken több 0-ni -ig számozott blokk sora, több logikai diszk a képzet. Mindegyiknek saját szimbolikus neve van. Mindegyiknek saját driver-e van. A partíciók (egyes OS-eknél) átlapolódhatnak. Egy partíciót kijelölhetünk egy OS boot területének (erről indítunk), kilapozási/kisöprési területnek (virt. mem.), egy OS fájlrendszer területének, hibás blokkok helyettesítő területének (ma már nem szükséges). Vadász

22 A partícionálás Részben az OS-től független dolog!
“Alacsonyabb“ szintű SW-ek kellenek a partíció létrehozásához, a boot partíció kijelöléséhez, a “magasabb“ driver-ek támogatásához. Alacsonyabb? Mi általában egy OS-t használunk. ezek a SW-ek szinte minden OS-ben megvannak, használhatók (akár más OS “javára“). A partíciókat az OS-ek nem egyformán kezelik. Vannak OS-ek, melyek pl. kötött számú partíciót engednek, nem mindig látják egymás fájlrendszereit stb. Pl. W NT Képes kezelni max 3 db. Primary Partition-t És 1 db. Extended Par-t. Egy Primary Par kap szimbolikus (betű) nevet, lehet rá tenni egy bootolható fájlrendszert. Az Extended Par-ra szervezhető több logikai eszköz, mindegyik kaphat saját szimbolikus (betű) nevet, mindegyikre tehető fájlrendszer … (Az Extended Par mechanizmus alkalmas a Windows-nál a 4 partíciós korlát meghaladására. Vadász

23 Diszkek, partíciók - kötetek
Partícionálással egy nagy diszket részekre osztunk Néha szükség lenne kisebb diszkeket (partíciókat) összevonva, egyetlen nagy diszkként "látni": ez a kötetesítés Némely OS tudja ezt … pl. AIX, Windows, NT A kötet: logikai diszk, szervezhető rá fájlrendszer … van drivere ... Vadász

24 A Unix eszközök szimbolikus nevei
Unix-ban minden fájl. Az eszközök: speciális fájlok, a /dev/ jegyzékben, aljegyzékeiben ... Tartalmuk (rövid): major device number: azonosítja a kontrollert, minor device number: azonosítja a tényleges eszközt (pl. logikai diszket), és a device driver-t. Vadász

25 Partíciókra osztás Unixban
1 2 3 4 5 6 7 8 9 n /dev/dsk/0s0 /dev/dsk/0s1 /dev/dsk/0s2 /dev/dsk/0s3 /dev/dsk/0s4 /dev/dsk/0s6 /dev/dsk/0s5 Vadász

26 A fájlok Mi a fájl? Fájl szervezettség (organisation) lehet
Byte-ok sora (nincs szervezettség), csakis a processzek strukturálhatnak. Rekordok sora (szekvenciális). A rekordokban mezők. Fix, változó rekordhossz, rekordok blokkokba csoportosítva stb., mindezek a fájlban (fájlrendszeren) rögzítettek. Nem minden OS biztosítja. Index-szekvenciális szervezettségű rekordok: egyes mezők a rekordokban kulcsmezők, ezek rendezettek, a rekordok gyors keresését teszik lehetővé. Nem minden OS biztosítja. Vadász

27 A fájlok A fájl elérés: soros elérés: egy adatelem (byte, rekord) eléréséhez az előzőeken “át kell jutni“. Minden szervezettségnél lehetséges. direkt (random) elérés: egy adatelem eléréséhez nem kell a többiekkel foglakozni. Csak az indexelt és bizonyos szekvenciális (fix rekordhosszúságú) szekvenciális szervezettségnél. (A Unix seek hívással lehetővé teszi. ) Fájl típusok a tartalmuk szerint is kialakíthatók (text, dokumentum, futtatható, bináris, jegyzék, fifo stb.) Vadász

28 A fájlok Fájl attribútumok: név,
készítési, módosítási, elérési dátumok/idők, tulajdonossági és védelmi információk, szervezettségi adatok (hossz, rekordhossz, blokkolási tényezők stb.), néha a tartalom szerinti típusukra vonatkozó adatok, a logikai diszken való elhelyezkedésükre vonatkozó információk. Vadász

29 Fájlrendszer megvalósítások
Partíciókra szervezhetünk fájlrendszert. 3 dolgot kell megoldani valahogy: adott (szimbolikus) fájlnévhez hogyan rendelhetjük az attribútumokat, kiváltképp a fájl “testét“ képező blokkokat? (Megfelelő sorrendben persze.) (Keresni, hozzáfűzni, elengedni blokkokat) A partíción a szabad blokkok menedzselése hogyan történjen? (Keresni szabad blokkokat, elengedni (szabaddá tenni) blokkokat.) Kiindulás: jegyzékstruktúra alakítandó ki. Rögzíteni kell az attribútumokat is. Vadász

30 Blokkhozzárendelés fájlokhoz (A)
Folyamatos allokáció Jegyzékben a név mellet a kezdő blokk cím és a hossz. A fájl blokkjai egymás után, folyamatosan Egyszerű, teljesítményre optimalizált allokáció Fájlkészítésnél megbecsülni a várható hosszt, választani a lehetséges szabad folytonos területekből (best-, worst-, next fit) Nehézkes a hozzáfűzés (append) meglévő fájlhoz. Fregmentálódik a partíció, időnként compaction szükséges Tisztán ezt ma már nem használják HPFS/NTFS kiterjesztésein (extent, run) folyamatos allokáció van. Annyira mégsem elavult? Vadász

31 Blokkhozzárendelés fájlokhoz (B)
Láncolt (lista) allokáció Jegyzékben a név mellett az első blokk címe (esetleg hossz). Az adott blokkban mutató a következő blokkra. Az utolsó blokkban a mutató a véget jelez(het)i. Egyszerű, nincs partíció-fregmentáció, van ugyan fájl-fregmentáció, könnyű a hozzáfűzés stb. Gond: hosszú fájlok végének eléréséhez végig kell menni a láncolt listán. Gond: A mutató a blokkokon “elvesz“ területet a fájl adataitól. Hossz-számítás. Vadász

32 Blokkhozzárendelés fájlokhoz (B)
Láncolt listás allokáció 7 a első blokkja a második blokkja NULL a utolsó blokkja 4 2 File a, starts at 4 12 b első blokkja b második blokkja NULL b utolsó blokkja 6 28 File b, starts at 6 Vadász

33 Blokkhozzárendelés fájlokhoz (C)
Indextáblás allokáció A jegyzékben az első blokk/első index (és a hossz). Indextábla: egy bejegyzése egy-az-egy megfeleltetésben a blokkokkal (i-edik bejegyzéshez az i-edik blokk tartozik). Az indextábla kötött helyen a diszken. Egy bejegyzés az indextáblában kettős jelentésű: a bejegyzés index-száma jelzi, az ugyanolyan számú blokk a fájl blokkja. maga a bejegyzés a soron következő blokk (egyben index is), vagy a lista vége. Tulajdonképp láncolt lista, de a mutatók ki vannak emelve az indextáblába. Nem zárja ki az optimalizált allokációs lehetőségeket Vadász

34 Indextáblás allokáció
indextábla blokkok 28 ... NULL x y … NULL ... 28 ... a utolsó blokkja a első blokkja b első blokkja a második blokkja b második blokkja … b utolsó blokkja ... File a, starts at 4  File b, starts at 6  Vadász

35 Blokkhozzárendelés fájlokhoz (C)
Indextáblás allokáció (folyt) Egyszerű. Ma is használatos. Közepesen gyors hosszú fájloknál is (Csak az indextáblát kell végigolvasni). Gond: nagy blokkszámnál nagy az indextábla. Megoldása: Blokkokat “cluster“-ekbe szervezik, az indextábla ezeket címezi. Persze, területvesztés lehet itt. In-core indextábla pedig gyorsítja az elérést. Ilyen a VAX/VMS, és tulajdonképpen a DOS FAT is. Vadász

36 Blokkhozzárendelés fájlokhoz (D)
I indexes, i-bögös, i-listás allokáció (i, inode, i-list) (Unix, Linux ext2 stb.) Egyéb, vegyes, i-listához hasonló bögös megoldások (HPFS, NTFS stb.) Vadász

37 Szabad blokk menedzselés (A)
Bit térképes (bitmap) Kötött helyen a bit-térkép. Lehet elosztott térkép is. Egy-az-egyes megfeleltetés egy bit és a blokkok (clusterek) között. Ha egy bit bebillentett: azt jelenti, a hozzá tartozó blokk foglalt. Ilyen a VAX/VMS, HPFS, NTFS, Linux ext2 Bit térkép helyett mező-térképes is lehet (ilyen a DOS FAT, a VFAT). A FAT egybevont indextábla és szabad bokk/cluster menedzselő térkép: egy bejegyzés harmadik funkciója: a foglaltság jelzése. Tetszőleges allokációs politikát kiszolgálhat. Vadász

38 Szabad blokk menedzselés (B)
Láncolt listás szabad blokk menedzselés Kötött helyről indulva mutató egy szabad blokkra, melyben mutató van a következő szabad blokkra s.í.t. Hátránya, hogy a lista kezelése lassú (diszkműveletek kellenek). Egyszerű allokációs politikája lehet: lista elejéről allokálunk, lista elejére tesszük a felszabadulót. (Esetleg a végére.) Vadász

39 Szabad blokk menedzselés (C)
Szabad helyek csoportjainak listája (Az előző teljesítményének javítására) Kötött helyről indulva egy blokk mutatókat tartalmaz szabad blokkokra, egy mutatója viszont további olyan blokkra mutat, ami további szabad blokkok csoportját jegyzi fel s.í.t. Blokk foglalás esetén a lista elején lévő blokkon feljegyzett szabad blokkokat allokáljuk, blokk felszabadításkor ide tesszük a felszabadult blokkok mutatóit. Belátható a teljesítmény javulás: kevesebb I/O művelet. Ha a lánc eleji blokkról „kifogytak” a szabad blokkok, maga a lánc eleme is felhasználható (Unix s5fs megoldás)! Vadász

40 Szabad blokk menedzselés (D)
Egybefüggő szabad területek nyilvántartása Kötött helyen lévő táblázat bejegyzései az egyre magasabb című, egybefüggő szabad blokkcsoportok kezdő mutatóját és blokkban mért hosszát tárolják. Hozzá illő allokációs politika a folyamatos allokáció (best-, worst-, next fit). A lapozó eszköz menedzselésénél szokták alkalmazni Vadász

41 Jegyzék implementációk
A jegyzék is fájl. Blokkhozzárendelés jegyzékhez akár a szokásos fájlhoz való blokkhozzárendeléssel, akár speciálisan történhet. Tartalma: bejegyzései fájlneveket, kezdő címet (hosszat, esetleg bizonyos attribútumokat) tartalmaz. Kötött vagy változó hosszú lehet. A bejegyzések struktúrája befolyásolja a keresést: lineáris keresés (nem rendezett, hézagos bejegyzések), hash táblás keresés, b-fás (rendezett) jegyzékben a keresés. Vadász

42 Unix fájlrendszer Itt minden fájl: az eszközök is a fájlrendszerben, a fájlrendszer pedig blokkos eszközre (partícióra, kötetre) szervezett. Minden fájlhoz tartozik ún. i-bög (i-node). Az i-bögök az ún. i-listán vannak. Egy i-bög szinte mindent tartalmaz a hozzá tartozó fájlról. Ha ismered: elérheted a fájl blokkjait. A szabad blokk menedzselést az ún. szuperblokkból kiinduló szabad blokkok listája segíti: ezen lista eleme maga is szabad blokk. Vadász

43 Egy Unix partíció szerkezete
boot block 1 super block 2 i-bög tábla (i-list) . . data blocks n Vadász

44 A Unix i-bög szerkezete
Directory file1 i-bög mode & védelem linkek száma tulajdonos uid gid fájl méret Direkt mutatók Single indirekt Double indirekt Triple indirekt Utolsó hozzáf. Utolsó mód. Készítési idõ Adat blokk Vadász

45 Unix jegyzékek SVID-ben 16 bájt hosszúak a bejegyzések (névhossz max. 14) BSD-ben a “chunk“-ok 255 kar. hosszú neveket is megengednek. BSD szerkezet SVID szerkezet Vadász

46 Hogyan “szerzik“ meg az i-bögöt?
A namei algoritmus. Elemzi az ösvény egy-egy komponensét, minden nevet az ösvényből i-böggé konvertál, a bög segítségével megnézi, jegyzék-e. Ha nem az visszatér jelezve ezt a tényt. Ha jegyzék veszi i-bögjét, a jegyzékben keresi a következő komponenst, sít. Végül visszatér az input ösvény i-bögével, vagy hibajelzéssel. root jegyzék i-böge a szuperblokkban, jegyzékből kikeresi a nevet, veszi az i indexet, és ezzel “megragadta“ a következő jegyzéket-fájlt, s.í.t. Gyors kereséshez: in-core-i-node lista! Az aktuális jegyzék i-böge processzenként feljegyezve! Vadász

47 Miért kell az i-bög? Ha egy fájl i-bögét ismered, szinte mindent tudsz róla ismered attribútumait típusát & védelmi maszkját, tulajdonosi viszonyait, hosszát, linkjeinek számát, készítési és hozzáférési időit. Ismered blokkjainak sorrendjét és helyét. Vadász

48 A fájl link Célja: már meglévő fájlra más névvel is hivatkozhassunk.
Hard link: új dir-bejegyzés készül, a már létező fájl i indexével! Csak ugyanazon a fájlrendszeren! Hozzáférések? Törléskor a linkek száma csökken! Szoft link (symbolic link): új fájl készül (új i-böggel), ebben az eredeti abszolút ösvényneve. Mount-olt fájlrendszeren is! Korrektebb védelmek! Vadász

49 Hard link-soft link > ln -s /usr/joe/foo /usr/sue/bar link=2
> ln /usr/joe/foo /usr/sue/bar foo 2 bar /usr/joe /usr/sue 2. i-bög A hard link > ln -s /usr/joe/foo /usr/sue/bar foo 2 bar 16 /usr/joe /usr/sue 2. i-bög 16. i-bög /usr/joe/foo A simbolic link Vadász

50 A szuperblokk tartalma ...
a fájlrendszer mérete; a szabad blokkok száma; a szabad blokkok listája + index a listán; az i-lista mérete; a szabad i-bögök száma; a szabad i-bögök listája + index a listához; lock mező a két listához; jelző, hogy történt-e módosítás a szuperblokkban. ind ind Vadász

51 Szabad blokkok listája
105 100 szuper-blokk index 112 103 109 208 202 109-es blokk 205 211 214 307 301 211-es blokk 304 310 313 406 400 310-es blokk 403 409 ... Vadász

52 Fájlkészítés forgatókönyve ...
Beírni a nevet a jegyzékbe; allokálni i-bögöt a fájlhoz (ialloc), ezt is beírni a jegyzékbe; tölteni az i-bögöt; ahogy a fájl "növekszik", allokálni neki blokkokat a szabad blokkok készletéből (alloc). Az ialloc algoritmus Szabad i-bög igénylés a lista közepéről. Szabad i-bög igénylés, amikor a lista üres. Vadász

53 Szabad i-bög allokálás
... 48 Szuper blokk szabad i-bög lista 83 470 index Kiindulás (a) Igénylés - a lista közepéről ... 83 470 Szuper blokk szabad i-bög lista index Eredmény Szuper blokk szabad i-bög lista 470 index Kiindulás (b) Igénylés - a lista üres Megjegyzett i-bög 471 534 ... 535 Szuper blokk szabad i-bög lista index Eredmény Vadász

54 A fájltörlés forgatókönyve
Az i-bögben a linkek számát csökkenteni, továbbá a jegyzék bejegyzést törölni; ha a linkszám elérte a 0-t, akkor a fájl blokkjait szabad listára tenni; az i-bögöt szabad listára tenni (ifree). Vadász

55 Az ifree algoritmus 471 534 ... 535 Szuper blokk szabad i-bög lista
index Kiindulás Megjegyzett i-bög Felszabadult a 499-es bög (499 < rem-i-bög) 471 534 ... 499 Szuper blokk szabad i-bög lista index Csak a rem-i-bög változott Megjegyzett i-bög Felszabadult a 601-es bög (601 > rem-i-bög) 471 534 ... 499 Szuper blokk szabad i-bög lista index Semmi sem változott Megjegyzett i-bög Vadász

56 Blokk felszabadítás ... Felszabadult a 409-es blokk szuper-blokk 112
index 112 109 208 202 109-es blokk 205 211 (a) Kiindulási állapot ... Felszabadult a 409-es blokk szuper-blokk index 112 109 208 202 109-es blokk 205 211 (b) A 409-es blokk felszabadulása utáni állapot ... 409 Vadász

57 Blokk foglalás ... Egy szabad blokkot igényeltek
szuper-blokk index 112 109 208 202 109-es blokk 205 211 (d) Egy szabad blokkot igényeltek: a 409-est kapták ... Újabb szabad blokkot igényelnek index (e) Újabb szabad blokkot igényeltek: a 109-est megkapták de annak listája felmásolódott a szuperblokkba ... 112 208 202 Szuper blokk 205 211 214 307 301 211-es blokk 304 310 Vadász

58 Fájlrendszer kialakítás
A rendszergazda (su) az mkfs paranccsal: # mkfs logical-disk size A használatba vétel: a mountolás A rendszergazda (su) a mount paranccsal: # /etc/mount log-disk empty-dir Az umount parancs: megszüntet. A mount tábla: /etc/mnttab. Vadász

59 A mountolás Vadász

60 A mount tábla egy bejegyzése
A partíció száma a szuperblokk bufferére mutató pointer a mount jegyzék i-böge (mount point) a gyökér jegyzék i-böge. Vadász

61 Fogalmak Eredeti fájlrendszer (root/original/mounted on fs)
mountolt eszköz, ennek spec. fájlneve (mounted fs) mountolt eszköz logikai száma (major+minor)=fs-number mountolt eszköz gyökér jegyzéke, ennek i-böge mount jegyzék (mount point) mount jegyzék i-böge Vadász

62 Összefoglalás OS-ek I/O alrendszere, fájlrendszere
A eszköz-driverek, partíciók, kötetek A fájlrendszer implementációk 3 alapfeladata és ezek megoldási lehetőségei Jegyzék implementáció Attribútum és blokkhozzárendelés a fájlokhoz A szabad blokkok menedzselése Unix partíciók, szuperblokk, i-bög, i-lista Unix link, mount Vadász

63 I/O és fájlkezelő alrendszer
Operációs rendszerek I/O és fájlkezelő alrendszer


Letölteni ppt "I/O és fájlkezelő alrendszer"

Hasonló előadás


Google Hirdetések