2020. április 10., péntek

Fájlok elhelyezése és kezelése

A fájlok olyan adatcsoportok, melyek leglényegesebb tulajdonsága, hogy egy választott név segítségével együttesen kezelhetők. Nem kell tehát a felhasználóknak azzal foglalkozniuk, hogy állományaik egy lemez melyik sávján, azon belül is melyik blokkban helyezkednek el, hanem nyugodtan rábízhatják magukat az operációs rendszerre, mely a megadott név alapján előkeresi számukra a megfelelő programot, vagy adatokat.

A fájl fogalma alatt általában tárolt adatokat értünk, de léteznek olyan operációs rendszerek (például a UNIX), ahol ezt a szemléletet minden külső adatfolyamra, így a képernyő tartalomra és a billentyűzetre is általánosították. A fájl fogalom kiszélesítése a programozó számára rendkívül kellemes, ezért egyes elemeit minden operációs rendszerben megtalálhatjuk. A programozó dolga nagyban leegyszerűsödik, mivel nem kell törődnie azzal, hogy programja milyen perifériáról kap majd bemenő adatokat, vagy eredményeit nyomtatóra, képernyőre, fájlba kell kiírnia, vagy csupán át kell adnia egy másik programnak, elegendő egy fájlra hivatkozni.

A mágneses háttértárak feladata a operatív tár kiegészítése, méretének látszólagos megnövelése (lásd virtuális memória!), illetve a felhasználók által létrehozott állományok megőrzése, hogy tartalmuk kikapcsoláskor ne vesszen el, hanem később is elérhető legyen. A lemezeken tárolt adatok három csoportba sorolhatók:

    Ideiglenes állományok, melyeket az operációs rendszer saját működésének támogatására hoz létre. Ilyenek például a memória kezelő által készített, az operatív memóriába éppen nem betöltött lapok vagy szegmensek, illetve cserefájlok.
    Felhasználói állományok, melyekre nevükkel hivatkozhatunk, azaz a klasszikus értelemben vett fájlok, a felhasználói adatok, programok tartós tárolására.
    Adminisztratív állományok, melyek ahhoz szükségesek, hogy az operációs rendszer számára a felhasználók által létrehozott állományok kezeléséhez, megtalálásához szükségesek. Ezek szerkezete, tartalma a felhasználók elől általában rejtett.

A fájlok tartalmuktól és céljuktól függően nagyon sokfélék lehetnek. Az aktuális operációs rendszer szabályai döntik el, hogy ez a különbözőség a névben vagy felépítésben is megjelenik-e vagy csupán értelmezés kérdése. A UNIX esetében például nincs megkülönböztetés, de a DOS kitünteti figyelmével a végrehajtható bináris programokat (EXE, COM), illetve a parancsnyelvi programokat (BAT).

A fájlok többnyire állandóak, azaz létrehozásuktól kezdve megmaradnak a háttértárolón egészen addig, amíg megszüntetésükről kifejezetten nem intézkedünk. A felhasználói folyamatok a hardverrel közvetlenül nem érintkezhetnek, ezért ha egy folyamat valamilyen háttértárolón lévő bemenő adatra vágyik, vagy eredményeit tárolni szeretné, egyéb lehetőség híján, egy rendszerhívás által az operációs rendszer magjához fordul. A rendszermag azon részét, amely a fájlokkal kapcsolatos műveleteket végzi, fájlkezelőnek nevezzük. (Ez nem tévesztendő össze a gyakran azonos nevű felhasználói programmal!) A fájlkezelő az a folyamat, mely a nevekből a logikai blokkszámokat kialakítva a felhasználói folyamatok kéréseit az eszközvezérlőnek továbbítja.
Fájlok jellemzői

A fájlokhoz a nevükön kívül egyéb információk is tartoznak, melyeket részben az operációs rendszer ad, részben a felhasználó. A többlet adatok a különböző operációs rendszerekben a fájlnevekhez hasonló nagy változatosságot mutatnak. Ezek közül egy pár:

    Fáljnév
    Méret
    Tulajdonos/létrehozó
    Utolsó módosítás ideje
    Attribútumok (A fájl állapotára utaló jelzőbiteket összefoglaló néven attribútumoknak nevezzük.)
        archiválandó (archive needed) (Megváltozott az utolsó mentés óta.)
        a fájl csak olvasható (read only)
        rendszerfájl (system)
        rejtett állomány (hidden)
        katalógus (directory)
        szimbolikus hivatkozás (link)
        ideiglenes, adatcsere fájl (pipe)
    Hozzáférési jogok
    Fizikai elhelyezkedés





Fájlok elhelyezése
Folytonos kiosztás

Legegyszerűbb és a későbbi használat szempontjából is kedvező, ha a fájl blokkjai folytonosan helyezkednek el. Az operációs rendszer felderíti, hogy mely szabad területek alkalmasak az állomány befogadására. Gyakran több ilyen terület is van, így dönteni kell.

    First Fit: A legelső alkalmas hely felhasználása a leggyorsabb ugyan, de nem mindig kedvező. Lehet, hogy az éppen elhelyezendő fájl számára ha szűkebben is, de máshol is lett volna hely, és a következő állomány egyetlen lehetőségét vettük el.
    Best Fit: Megkereshetjük azt a szabad tartományt, melynek mérete csak minimálisan haladja meg az állomány méretét, azaz a fájl a legjobban illeszkedik. A módszer hátránya, hogy számításigényes, végig kell nézni az összes szabad helyet, mielőtt a döntésre sor kerülne.
    Worst Fit: A létező legnagyobb helyre is gondolhatunk, melyben az elhelyezett állomány mellett a legtöbb szabad hely marad, azaz a legrosszabbul illeszkedik. E mellett az elhelyezés mellett a legnagyobb az esélye annak, hogy egy újabb fájl is befér majd a fennmaradó szabad blokkokba.

fájlok folytonos kiosztása

fájlok folytonos kiosztása

Bármelyik módszert választjuk is, ha ragaszkodunk a folytonos elhelyezéshez, óhatatlanul szétdarabolódik a rendelkezésre álló hely. Könnyen előfordulhat, hogy bár összességében van elegendő hely a lemezen, újabb fájl mégsem helyezhető el, mivel a szabad helyek nem alkotnak összefüggő tartományt. A másik hátrány, hogy nem ismerhető előre a fájl végleges mérete. Túl precíz illeszkedés esetén a fájl méretének minimális növekedése is csak az egész állomány átmásolásával lehetséges (ha egyáltalán lehetséges). További nagy probléma, hogy ha a fájl belsejéből ki akarunk törölni egy blokkot, az azzal jár, hogy az összes maradék blokkot egy blokkal előre kell mozgatni.
A fájl helyének nyilvántartása viszont egyszerű. Mindössze a kezdő blokk sorszámát kell megadni a katalógusban, a blokkok száma már számítható a fájl méretéből.
Láncolt elhelyezés

Ha lemondunk az egyszerű nyilvántartásról, és egy újabb táblázatot is igénybe veszünk, sokkal rugalmasabb módszerhez jutunk. A katalógusban itt is csak a fájl kezdő blokkjának címét kell megadni, az összes többi adatot a fájl elhelyezési tábla (File Allocation Table - FAT) tartalmazza. A táblázatnak ugyanannyi eleme van, mint ahány blokk a lemezen és minden rekesz tartalma a fájl következő blokkjára mutató sorszám, ha van következő blokk, 0, ha ez volt az utolsó blokk.
fájlok láncolt elhelyezése

fájlok láncolt elhelyezése

Az eljárás mentes a folytonos elhelyezésnél tapasztalható töredezés veszélyétől. A szabad helyek az utolsó blokkig kihasználhatók, a fájlok mérete a lemez fizikai határáig növekedhet. Az üres helyek keresésére sem kell időt és energiát szánni, az első szabad blokknál lehet kezdeni. Ennél a módszernél nem probléma a fájl méretének növelése, illetve csökkentése. Hátrány azonban, hogy inkább a szekvenciális hozzáférést támogatja, azaz, ha például egy fájl 10. blokkját akarjuk elérni, ahhoz végig kell követni az első 9 blokk helyét, ami lassú lehet.

A FAT meglehetősen nagy táblázat lehet és szerepe döntő. Ezen kívül nagyon sűrűn kell használni, ezért a memóriában kell tartani, ami még szűkösebb, mint a háttértár. A FAT sérülése esetén nagy valószínűséggel a kettészakadt fájlt visszaállítani nem lehet. A láncolási módszert alkalmazó operációs rendszerek, például a DOS, a Windows és a NetWare a biztonság kedvéért két ilyen táblázatot tartanak fenn.
Indextábla alkalmazása

Rugalmas elhelyezési lehetőségekhez jutunk, ha egy óriási táblázat helyett sok kicsit használunk, minden állományhoz külön. A katalógus tartalmazza a fájlhoz tartozó kicsi táblázat címét, a kicsi táblázat pedig a fájl blokkjainak a címét.

A módszer előnye, hogy az elhelyezési információ gyorsan elérhető, kevésbé sérülékeny a tárolás is. Hátránya, hogy valamiféle becslésre van szükség, hogy mekkorák lesznek fájlok.
Mekkora indextáblát kell fenntartani? Ha túlságosan nagy a tábla, az pazarló. Ha túlságosan kicsi, akkor ez határozná meg a maximális fájlméretet, ami megengedhetetlen.

A Unix operációs rendszer a fenti problémát kombinált módszer alkalmazásával oldotta meg.
A katalógus csak egy címet, egy indextábla címét tartalmazza, amely 15 rekeszből áll. Az első 12 a fájl első 12 blokkjának sorszáma. Amennyiben ez kevésnek bizonyulna, a 13. rekesz egy újabb indexre mutat, mely további 15 blokk nyilvántartását teszi lehetővé. Ha a fájlunk még 27 blokknál is nagyobb, az első indextábla 14. rekesze egy indirekt indextáblát címez, amelynek tartalma további 15 indextábla címe, és így tovább ...
fájlok indextáblás elhelyezése

fájlok indextáblás elhelyezése

A módszer hátránya, hogy míg a FAT alkalmas foglaltsági táblának is, itt erről külön kell gondoskodnunk, illetve a fájl belsejéből való törlés itt is másolással jár, de most nem magukat az adatblokkokat, hanem csak az indextábla bejegyzéseit kell másolni. Az indexelt leképzés legnagyobb előnye, hogy lehetővé teszi a közvetlen elérést is, azaz ha most a fájl 10. blokkját akarjuk elérni, annak a címét egyszerűen megtudhatjuk az indextábla 10. sorából.



Nincsenek megjegyzések:

Megjegyzés küldése