1 Fájl rendszer Terminológia Fájl és könyvtár (mappa) koncepció Elérési módok Fájlattribútumok Fájlműveletek, fájlszerkezetek ----------------------------------------- Könyvtár szerkezet ----------------------------------------- Fájlrendszerek megvalósítása
2 Terminológia Fájl (file) Az adatokat és a programokat a számítógépeken állományokban, más néven fájlokban tároljuk. A fájlokat nevükkel azonosítjuk, amelyet szabadon válaszhatunk. A fájl neve után szokás ponttal elválasztva egy ún. kiterjesztést (extension) is megadni. A kiterjesztés mindig utal az állomány tartalmára, formátumára. Ilyen kiterjesztések a.txt,.exe,.jpg,.pdf,.dll,.bat,.com, stb. A közönséges fájlok vagy ASCII (American Standard Code for Information Interchange), vagy bináris fájlok. Az ASCII fájlok szövegsorokat tartalmaznak. Néhány rendszerben minden sor a kocsi vissza (carriage return, CR) jel zár (ASCII kódja decimális 13). Más rendszerekben a sorvég (line feed, soremelés) jelet
3 használják elválszójelként (ASCII kódja decimális 10). Néha mindkét jelet kell használni (pl. MS-DOS, Windows). Ez biztosítja azt, hogy minden sor más-más hosszúságú lehessen. Adott például egy Walsh mátrix tulajdonságairól szóló tudományos cikk, amit WalshProps nevű fájlban szeretnénk tárolni Adobe (.pdf Portable Document Format) formátumban, akkor a fájl neve kiterjesztéssel együtt így nézhet ki: WalshProps.pdf. Ha az állomány a Walsh mátrix elemeit (amúgy, csak -1 és +1) tartalmaz MS Excel táblázatkezelő formátumban, akkor az állomány neve és kiterjesztése így nézhet ki: WalshProps.xlsx. A személyi számítógépek terjedésének kezdetén, az elterjedt egyfelhasználós rendszerek jellemző maximális fájlnév hosszúsága 8 karakter, a kiterjesztések hossza pedig 3 karakter volt. Ma a hosszú fájlneveket használhatunk, de ezek sem lehetnek
4 végtelenek. Maximális fájlméret általában minden rendszeren 255 karakter. Ebbe beleértve a fájl kiterjesztését is. Ennek ellenére nem ajánlott a túl hosszú fájlnevek használata, mert az elterjedt Windows operációs rendszerben egy fájl elérési útvonal (azaz teljes név ) hosszúsága maximálisan 260 karakter lehet, és fájlok kezelhetetlenné válhatnak a fájlkezelőben: c:\program Files\..\Valami.cs max. 260 karakter ahol Valami.cs max. 255 karakter
5 Könyvtár vagy mappa (folder) A könyvtár másik nevén mappa. Régebben nevezték tartalomjegyzéknek is. Olyan logikai egységek, amelyek állományokat és/vagy más könyvtárakat (alkönyvtár) tartalmaznak. A legfelső szintű könyvtárat szokás gyökérkönyvtárnak (Root, jelölése / vagy \ ) vagy egyszerűen csak gyökérnek nevezni. A gyökérből újabb könyvtárak nyílnak, azokból újabb alkönyvtárak. A könyvtárak szerkezete hierarchikus fa struktúra (irányított körmentes gráf) Minden alkönyvtárból újabb alkönyvtárak nyílhatnak. A könyvtárak hierarchikus rendszere fa szerkezettel írható le. Windows (PC-DOS, MS-DOS, CP/M, stb.) operációs rendszerek esetén a gyökér könyvtár egy meghajtó (volume kötet), amit egy betűjellel azonosítunk. Ezekben a rendszerekben több ilyen meghajtó is lehet, mindegyik más-más betűjelet kap. A rendszernek van egy elsődleges meghajtója, amin a rendszer helyet foglal, ami
6 általában a C: meghajtó. Az A és a B a ma már ritkán használt hajlékonylemezes (floppy disk) egységek részére van fenntartva. Más szavakkal: minden meghajtónak van saját gyökere, pl. A:\, C:\, stb.
7 Unix-os, linux-os rendszerek esetén a gyökérnek nincs betűjele, mert mindig csak egyetlen gyökér lehet. Ha egy másik meghajtót szeretnénk beilleszteni (mounting* felállítás, felcsatolás), akkor azt valamelyik alkönyvtárba szokás megtenni. Ha floppyt, CD-ROM-ot vagy pendrive-ot használunk azt a legtöbb linux-ban a /media könyvtárban érhetjük el. *unmounting - leállítás, lecsatolás
8 Fájl koncepció A számítógépek az adatokat különböző fizikai háttértárakon tárolhatják (pl. mágnes lemez, mágnesszalag, lyukszalag, lyukkártya, optikai lemez, flash-kártya, pendrive, stb.). A számítógép kényelmes használhatósága érdekében az operációs rendszerek egy egységes logikai szemléletet vezetnek be az adattárolásra és adattárakra: az operációs rendszer elvonatkoztatva a tároló eszköz és a tárolt adat fizikai tulajdonságaitól, egy logikai tároló egységet (adatállomány fájl file) használ. A fájlokat az operációs rendszer képezi le a konkrét fizikai tároló berendezésre. Felhasználói szemszögből: a fájl összetartozó adatok egy kollekciója, amelyeket egy másodlagos tárban tárolunk. A fájl a felhasználó számára az adattárolás legkisebb allokációs egysége: felhasználói adatot a háttértáron csak valamilyen fájlban tárolhatunk. Az operációs rendszer támogatást nyújthat a fájl tartalmának kezelésében, a fájl szerkezetének (adatszerkezet) létrehozásában.
9 Elérési módok A korai operációs rendszerek csak egyféle fájlelérést biztosítottak: az ún. Szekvenciális elérést (Sequential access) Ez az elérési mód legjobban megfelelt az akkor használt adattárolók eszközöknek: lyukszalag, mágnesszalag, lyukkártyák. Az n-dik elemhez való elérés csak az előző (n-1) elem átlapozása után vált lehetségessé. Még gyakran a lapozás csak egyirányú lehetett: a következő elemre (pl. lyukszalagoknál, lyukkártyáknál). Később mágnesszalag esetén lehetett az előző elemre is lépni. Fő műveletek: open ennek a műveletnek az a célja, hogy az operációs rendszer felkészüljön a fájlkezelésre; delete fájl törlése;
10 create fájl létrehozása; reset (vagy rewind) az olvasó/író fej pozícionálása a fájl elejére read next következő (az olvasó/író fej aktuális pozíciójától kezdve) blokk / adat olvasása; write next következő blokk / adat írása; rewrite a létező fájl felülírása; close a fájl változtatásának véglegesítése (főleg a pufferek kiürítése); stb.
11 A mágneslemezek megjelenésével és elterjedésével lehetővé vált a fájlok elemeinek (bájtjainak vagy rekordjainak) nem csak természetes sorrendben történő olvasása/írása, hanem az ún. kulcs ( index vagy key ) alapú hozzáférés is. Azokat a fájlokat, amelyeknek elemei tetszőleges sorrendben kezelhetők, közvetlen elérésű fájloknak hívjuk vagy Direkt elérésű (Random access) fájloknak. A fő műveletek listája kiegészült a következő keresési (vagy pozicionálási ) művelettel: seek n (pozicionálás az n-edik rekordra) ahol n = a keresendő elem kulcsa (pl. sorszám, vagy valami más: az elem értéke alapján kiszámolt index vagy key )
12 Fájl attribútumok Az operációs rendszer a fájl kezeléséhez szükséges információkat (attribútumokat) is tárolja a háttértárban. Pl. egy elkülönített helyen, a szótárban, fájl jegyzékben directory-ban. - Név a fájl azonosítására szolgál (szimbolikus fájlnév, név hossza, osztott nevek, kisbetűk/nagybetűk szerepe). - Típus az egyes típusokhoz (szöveg, script, forráskód, bináris program, kép, média, adatbázis, stb.) különböző operációs rendszer szolgáltatásokat lehet rendelni. - Lokáció a fájl fizikai elhelyezkedésével kapcsolatos adatok (háttértár címek). - Méret aktuális / maximális méret (bájtokban, kilóbájtokban, stb.) - Védelem a fájlhoz történő hozzáférés vezérlése. - Idő, dátum létrehozási/módosítási időpont, - felhasználó azonosítás a felhasználó rendszerbeli neve.
13 Filename (Fájlnév) Az MS-DOS a fájlneveknél nem tesz különbséget kis és nagybetűk között. Betűkből csak angol ábécében szereplőket használhatjuk. Ezenkívül, a következő speciális karakterek: ~! @ # $ % ^ & ( ) _ { } ` UNIX esetén a fájlnevek hossza 255 karakter lehet, és a UNIX különbséget teszt kis és nagybetűk között. A WINDOWS kétféle elnevezést használ, a DOS kompatibilitás miatt. Van egy 8+3-as fájlnév és van egy 250 karakter hosszú fájlnév, ugyancsak maximum 3 karakteres kiterjesztéssel. A WIN alkalmazások ezt a hosszú nevet látják, ebből képezik a rövid nevet úgy, hogy eltávolítják a szóközöket majd az első 6 karakter után egy elválasztójelet ( ~ ) és egy sorszámot adnak. Pl: a c:\program Files\Borland\Projects\Az elso Delphi Alkalmazas.Exe helyett lesz AZELSO~1.EXE
14 Fájl műveletek A fájl műveleteket, mint egy absztrakt adattípuson végezhető műveleteket kell tekintenünk. Az operációs rendszer ezeket rendszer-hívások segítségével teszi elérhetővé. Alapműveletek: 1. Létrehozás (create) terület allokálás + új bejegyzés megfelelő könyvtárban; 2. Írás (write) adatok mentése az adattárolón; 3. Olvasás (read) adatok beolvasása az adattárolóról; 4. Újrapozícionálás (repositioning); 5. Törlés (deleting) a fájl megsemmisítése (leggyakrabban csak a megfelelő könyvtárhoz tartozó FAT rekord törölt állapotba való átállítása; 6. Csonkítás (truncate) levágás az aktuális pozíciótól kezdve; 7. stb.
15 További műveletek (stb.): bővítés (append), beszúrás (insert), átnevezés (rename), másolás (copy), áthelyezés (move), az attribútumok leolvasása (getattr) és megváltoztatása (setattr). Fájl típusok (kiterjesztés alapján) bat, exe, com, dll futtatható fájlok doc, rtf, txt, tex szöveges dokumentumok jpg, gif, bmp kép fájlok mp3, wav zene, hang fájlok avi, mpg, mpeg, mkv film fájlok epub, fb2, djvu, pdb elektronikai könyvek htm, html Internet web oldal fájlok pac, bas, c, cpp, ccs forráskódok
16 dat, dsk, iso, gbi, ncd, nrg, sli fbl, kml, map, ntm rar, zip, arj mps, lp lemez képfájlok navigáció, térképek tömörített fájl-csomagok mátrixok, lineáris programozási feladatok Fájl szerkezetek Általános esetben a fájl típusa indikálja a fájl struktúráját. A fájllétrehozónak és a fájlfeldolgozónak ezt ismernie kell. Pl. forrásnyelvi-, tárgynyelvi- (object), ill. végrehajtható (bináris) programokat tartalmazó állományok szerkezete kötött. Kérdés: Mennyire ismerje az operációs rendszer az egyes fájlok belső szerkezetét? Egy speciális szerkezetű fájlt (végrehajtható programokat) biztosan ismernie kell! Egyébként olyan mértékben ismeri, amennyire a fájlkezeléshez "központi támogatást" akar nyújtani.
17 MS-DOS (Windows) rendszerekben egy végrehajtható fájlt nem csak megfelelő kiterjesztésű (.com,.exe, stb.), hanem megfelelő struktúrájú is! ahol DOS header 64 bájtos mező 0x5A4D (magic number!) hexadecimális értékkel legelején, PE Portable Executable speciális formátumú szignatúra, a memóriába való feltöltéséhez, stb.
18 UNIX - minden fájlt bájtok egyszerű sorozatának tekint, ez a feldolgozó programoknak nagy flexibilitást, de minimális támogatást jelent. Szolgáltat ugyanakkor egy mechanizmust (rendszer hívás) a fájl típus meghatározására. (Pl.: magic number a futtatható fájltípus felismeréséhez használható numerikus azonosító). Csak a mágikus szám alapján a UNIX féle rendszer dönti, hogy az adott fájlt lehet-e végrehajtani.
19 Különböző típusú fájlok támogatása két szinten: 1. szint: operációs rendszer (főleg futtatható fájlok) 2. szint: alkalmazások, pl. - Avi média lejátszó, - Dbf adatbázis kezelés, - XLSX táblázatkezelés, - CS Visual Studio C#, - RAR WinRAR tömörítő program, stb.