Fat fájlrendszer és adatok kezelése az MS-DOS
Általános jellemzői a FAT-rendszer
FAT-rendszer célja az volt, OS MS-DOS. Ez egy egyszerű fájlrendszert szegmentált elhelyezés nélkül multiplayer védelmet. Könyvtár struktúra - egy fa, és minden lemezkötetre hogy hozzon létre egy külön fát. teljes nevét lehet használni, hogy adja meg a fájl helyét. tartalmazó meghajtó betűjele, az utat a könyvtárszerkezetet és a tényleges fájl nevét, például: «C: \ UTILS \ ARCH \ RAR.EXE».
A Windows, akkor is használhatja FAT, különösen indokolt floppy. Mert merevlemezek, nagy mennyiségű FAT-rendszer nem lesz hatékony, és fokozatosan egy erősebb NTFS rendszerben.
adatszerkezeteket a lemezen
Ha formázni egy floppy lemez vagy merevlemez-partíció FAT rendszer, az összes lemezterületet van osztva a következő területeken ábrán látható. 3 # 8209; 2.
· BOOT-szektor tartalmazza az alapvető mennyiségi paraméterek lemez és a fájlrendszer, és lehet benne operációs rendszer boot program.
· Táblázat FAT (File Allocation Table) - információkat tartalmaz elhelyezése fájlokat és a szabad hely a lemezen. Mivel a kritikus fontosságú a táblázatból mindig tárolva van a két példányban, hogy azonosak [4]. Minden művelet, amely megváltoztatja a tartalmát a FAT, ugyanaz kell változtatni mindkét példányát.
· ROOT - a gyökérzet könyvtár, amely információkat tartalmaz a fájlok és alkönyvtárak a felső szinten, amelyek mindegyike viszont tartalmazhat fájlokat és alkönyvtárakat.
· Adatok terület - tömb klaszterek amely tartalmazza az összes fájlokat és könyvtárakat (kivéve a root).
Nézzük részletesen, hogyan kell tárolni az összes információt a fájlokat a FAT fájlrendszert.
Amikor létrehoz egy fájlt a fájlrendszerben könyvtár bejegyzést hoz létre, tárolása nagy részét az információt a fájlt. Minden könyvtár, a gyökér kivételével is egy különleges típusú fájlt, és tartalmaz egy rekordot a szülő könyvtár. Katalógus rekord mindig elfoglalja 32 bájt, felépítése táblázatban mutatjuk be. 3.1.
címtárbejegyzésre szerkezet FAT fájlrendszer
Mező mérete (bájt)
Amint az a táblázatból látható, a fájl neve nem lehet hosszabb, mint 8 karakter, plusz 3 karaktert kiterjesztése. A '80 -as évek elejétől úgy tűnt, hogy ez elég. Később ezt a korlátozást nevezte a „átok 8 + 3”, és tartsa ki a FAT fájlrendszer csak akkor lehetséges, Windows 95.
Byte attribútum egy olyan bitkészlet leíró a fájl tulajdonságait. Együtt a szinte használhatatlan attribútumok „rejtett”, „rendszer” és „archív”, és a benne szereplő „read-only”, „katalógus” és a „elnevezve.” Az attribútum „csak olvasható” megakadályozza, hogy a rendszer törli a fájlt, vagy nyissa meg az íráshoz. Képesség „könyvtár” azt jelzi, hogy a bejegyzés leírja nem normális fájl és könyvtár. Képesség „Volume Label” lehet jelen csak a gyökér könyvtárba, mint a rekord nem utal semmilyen fájlt, hanem tartalmazza a mezőket neve és kiterjesztése 11 karakteres címke (név) hozzárendelt lemezkötetet.
Általában a könyvtár bejegyzést tartalmaz szinte mindent, amit tudunk a fájlrendszer, és ha a fájl mérete kisebb, mint egy klaszter, akkor minden teljesen. Ha a fájl egynél több klaszter, majd a másik szobában megtalálható a FAT-tábla.
FAT tábla áll rekordok, amelynek száma megegyezik a klaszterek számát az adatterületen, és a mérete egy bejegyzés lehet egyenlő 12, 16 vagy 32 bit. Ennek megfelelően azt mondják fajok FAT-12 fájlrendszer, FAT-16 vagy FAT-32. Vedd mérete olyan legyen, hogy ez lehet tárolni a maximális klaszter szám. Például, egy hagyományos három-hüvelykes hajlékonylemezes 1,44 Mb elegendő használni FAT-12, mivel lehetővé teszi, hogy a 2 12 = 4096 klaszter (sőt, valamivel kevesebb), és még a klaszter mérete 1 szektor (512 bájt) több, mint elég: 4096 „2 = 512 MB.
Bejegyzések FAT «történelmi okokból” vannak számozva, kezdve 2 és egészen a maximális számát a klaszter, FAT-bejegyzés ismerteti az egyes klaszter megfelelő ugyanazt a számot. A felvétel a következő értékeket:
· Ha a klaszter tartozik egy fájlt (vagy könyvtár) és az utolsó (vagy egyetlen) ebben a fájlban, a FAT bejegyzés tartalmaz egy speciális jelentése - minden egység (FFF16 FAT-12 vagy FFFF16 FAT-16);
· Ha a klaszter tartozik egy fájlt (vagy könyvtár), de nem az utolsó a fájlt, a FAT-bejegyzés számát tartalmazza a következő klaszter ugyanazt a fájlt;
· Ha a klaszter ingyenes, a rekord minden nullák
· Ha a klaszter hibás (azaz ha a lemez ellenőrzés során kiderült, hogy ebben a csoportban legalább egy hibás szektor), a felvétel tartalmaz egy speciális jelentőséggel bír a FF716 FAT-12 vagy FFF716 FAT-16.
Most már tudjuk, hogy a FAT fájlrendszer információkat tárol a végeredmény egy szegmentált fájlt. Száma az első klaszter a fájl a könyvtárban tárolt bejegyzést, a többi klaszterek következetesen azonosítani FAT tábla rekordok.
Minden könyvtár, a gyökér kivételével az első két bejegyzés különleges nevek: a neve is jelzi, a könyvtár nevét, „..” - a szülő könyvtár „”.
Létrehozása és fájlok törlése
Hogy teljes legyen a tanulmány szerkezetének FAT rendszer az adatok, úgy, hogy ezek a struktúrák változnak műveletek létrehozásához és törölhet egy fájlt.
Ha az operációs rendszer funkciója, hogy létrehozza a fájlt a megadott néven a megadott könyvtárban, akkor először is, meg a könyvtárszerkezetet a fájlrendszer-könyvtár. (Mivel ez - elhagyjuk a rövidség Próbáld megérteni magát ..) Miután elolvasta a katalógus, a rendszer ellenőrzi, hogy ez már a felvétel a megadott néven (azaz van-e már ilyen fájl). Ha van, akkor nincs telepítve, ha azt „csak olvasható” attribútuma a fájlt? Ha be van állítva, akkor egy új fájl jön létre, nem lehet előzetesen el kell távolítani a tulajdonság. Ha nincs beállítva, a régi fájl törlésre kerül. Ezután a rendszer egy szabad könyvtár bejegyzést. Ha a könyvtár nem marad hely, akkor meg lehet hosszabbítani egy másik csoportot, ez a tény tükröződik a FAT-tábla. Végül találni egy üres helyet, a rendszer kitölti a mezőt felvétel egy új fájlt, a neve és kiterjesztése, a dátum és az utolsó módosítás ideje, attribútumok. A mérete és száma az első klaszter beállított nulla, mert fájlt, amíg az nem tartalmaz adatot.
A jövőben, amikor az első írni a fájlt, a rendszer talál szabad klaszter FAT tábla, jelölje meg a FAT az utolsó klaszter a fájl, töltse ki a sor első klaszter a katalógusban rekord, hogy rögzítse, és hozza a bájtok számát írt a fájl mérete a mező a katalógusban .
Ha töröl egy fájlt az első helyet a katalógusban bejegyzést ellenőrizzük, hogy azt el lehet távolítani (ha „csak olvasható” attribútuma nincs megadva), majd két dolgot:
· Az első bájt a neve a törölt fájl helyett egy speciális karaktert az E516-kód (ez jelenik meg, mint az orosz „X” betű, valószínűleg FAT rendszer a fejlesztők úgy gondolták, hogy a kód nem felel meg a fájl nevét);
· Minden bejegyzés a FAT megfelelő klaszterek fájl törlése tele vannak nullák, azaz A klaszterek mentesnek nyilvánították.
Mint látható a fenti eljárás idején a fájl adatait törlés nem törlődik a lemezről, de az információt forgalomba sérült fájlokat. Ha a fájl mérete meghaladja egyetlen klasztert, nincs garancia arra, hogy lehet visszaállítani esetén véletlen törlés, akkor is, ha a felhasználó ellenőrizni magát azonnal.
Fájlok az MS-DOS
Együttműködik a fájlokat és könyvtárakat FAT rendszer MS-DOS elegendően gazdag meg a funkciókat. Mindegyikük okozta beírja int 21h szoftver megszakítás, és egy adott funkció száma határozza meg a nyilvántartásban szereplő AH. Ezek a funkciók lehetővé teszik, különösen:
· Készítsen a fájlt, jelezve a teljes neve;
· Fájlok attribútumait;
· Nevezze át a fájlt vagy helyezze át egy másik könyvtárba ugyanazon a lemezen [5];
· Keresni egy adott könyvtár összes fájl, akiknek a neve megfelel egy adott mintát (pl minta «XYZ C *.» Match összes fájlt, akiknek a neve kezdődik «XYZ», és pontosan tartalmazza, 5 karakter, és a meghosszabbítás kezdődik «C» betű);
· Mappák létrehozása és törlése;
· Kérjen az aktuális meghajtó és aktuális könyvtár;
· Nyissa meg a fájlt elérésével az adatokat, és zárja be a fájlt.
Az MS-DOS, van két különböző funkciót, amely lehetővé teszi, hogy működjön együtt adatfájlokat. Egyikük alkalmazásán alapul egy fájl blokk (FCB), szinte senki sem használta az elmúlt 20 évben, de megtartotta a kompatibilitást az MS-DOS 1.0 verziója. A hagyományos módszer a dolgozó fájlok használatán alapul fogantyú [6].
A fogantyú - ez a szám, amelyet a rendszer visszatér a felhasználói program sikeres végrehajtását nyitásának vagy hozzon létre egy fájlt. Ennek jelentősége szám irreleváns a program. A lényeg az, hogy a következő hívás fájl megnyitása programot át kell mennie a kilincset a rendszer, mint a mutatót a fájl.
MS-DOS bőséges a funkciók munka nyitott fájlokat. Ez magában foglalja az olvasás és írás tetszőleges számú bájt, a funkció a mutatót a tetszőleges állományt pont beállítási funkció és kinyit a fájl töredékek kénytelen tisztító fájl cache-pufferek (általában tisztítás csak akkor kerül végrehajtásra, ha a fájl le van zárva, vagy ha a pufferek hiányának funkció cm. P.2.6 0,6; kénytelen tisztítás biztosítja az azonnali változtatások lemezre).
Ha hívja a funkció megnyitni egy fájlt, akkor adja meg a fájl nevét a név helyett bármilyen jellegű eszköz, például «PRN:». Azt is vissza a fogantyút, amely el tudja végezni írási műveletek ugyanúgy, mintha a fogantyút, hogy pont, hogy egy file. Természetesen, ha nem tudja megnyitni a nyomtató és olvasni nem tudja végrehajtani a mozgás a hátsó.
Ha olyan programot futtat kap „ajándékba” az MS-DOS-öt már megnyitott fülek számozott 0-tól 4 Ezek közül a legfontosabbak a kilincset 0, ami a definíció utal, hogy a standard input a program, és az 1 nyél - szabványos kimenetre. A 2 nyél egy szabványos eszköz kiadására hibaüzenetek kezelni 3 - szabványos eszköz soros input / output (COM-port), 4 fogantyú - szabványos nyomtató.
Fent c. 2.2, különböző meghatározás standard input és output, mint használt eszközök „default”. Nincs ellentmondás. Összeállítói programozási nyelvek, a kihívások az I / O eljárások meghatározása nélkül a fájlt, lefordítani őket hívások MS-DOS rendszer funkciói a fogantyút, illetve 0 vagy 1.
Ha a program fut az MS-DOS parancssort, akkor általában a kilincset 0 azt jelenti, hogy a billentyűzet (vagy pontosabban, a CON eszköz :) és az 1 nyél -. A képernyőn (CON ugyanazt az eszközt, de működik a kimenet). Azonban, akkor szimbólumai a standard bemenet átirányítása (a szimbólum "<») и вывода (знаки «>"És a" >> „). Például a program, amely indult a segítségével «MY_PROG csapat
Átirányítása standard input és output lehet végezni, és a felhasználói program. Ez általában úgy történik, mielőtt a program indul bármely más program, terjesztése átirányítani a standard fogantyúval.
adatstruktúra a memóriában
Ahhoz, hogy hozzáférést biztosít az MS-DOS nyitott fájlok rendszer táblák a két típust.
SFT táblázat (A rendszer File Table) tartalmazza a rekord összes fájlt nyitott felhasználói programok és az operációs rendszer maga. Ez a táblázat tárolja a rendszer memóriájában, a bejegyzések száma azt állapítjuk meg FILE paraméter CONFIG.SYS konfigurációs fájlban, de nem haladhatja meg a 255.
Ha ugyanazt a fájlt többször (akár azonos vagy különböző programok a második program) indult, nem lesz több bejegyzés SFT neki.
Minden bejegyzés tartalmaz információt a fájl, amely elegendő a műveletek elvégzése vele. Különösen az SFT bejegyzést tartalmaz:
· Egy példányát a katalógus fájl információt;
· A jelenlegi helyzetben az olvasó / író mutató;
· Hozzáférési mód megadott megnyitásakor.
Továbbá, a felvétel SFT tartalmazza a referencia száma ehhez a bejegyzéshez minden JFT asztalok, amelyet alább. Ha ez a számláló eléri a nullát, a bejegyzés SFT szabaddá válik, mert a fájl le van zárva.
Ellentétben egyetlen SFT, JFT asztal (Job File Table) jön létre az egyes programok futtatásához, így létezhet egyszerre több ilyen táblákat. (És hol egy-tasking MS-DOS vehet több program legegyszerűbb válasz: Ha egy program elindul egy másik, a memória két részleteket lásd a 4.4.3 ....) táblázat JFT egy egyszerű szerkezet: ez áll egy byte-os bejegyzés az érték minden egyes bejegyzés egy index (rekord szám) az SFT táblázatban. A fel nem használt bejegyzéseket értéket tartalmaznak FF16. Az alapértelmezett méret a táblázat 20 bejegyzés (bájt), de lehet növelni a 255.
Most körülbelül Handley. Alkalmazás kilincsek néhány feltételes számos nyitott fájlok, a konkrét érték egy fogantyú ugyanakkor nem játszik szerepet (kivéve a nyilvánvaló szabvány kezeli 0-4). Tény, hogy egy fogantyú érték nem más, mint az index a bejegyzés a táblázatban JFT a programot. Az első rekord a táblázat megfelel a kilincset 0.
Ábra. 3 # 8209; 3 közötti kapcsolatot mutatja Handley, asztalok JFT, SFT asztal, és a nyitott fájlok / eszközöket.
A bemutatott példában az ábra, normál kezeli eljárás A-t alkalmazunk, mint az alapértelmezett teszi MS-DOS: kezeli 0, 1 és 2 jelezve a rögzítés SFT, megfelelő konzol CON eszköz fogantyú 3 - a belépési COM1 eszköz fogantyúval 4 -on nyilván a nyomtató. A B eljárásnál a standard kimenetet a nyomtatóra továbbításra, amely tükröződik a elem értékét 1 JFT ezt a folyamatot. Fogantyúk a 3. és 4. a B folyamat nem látható annak érdekében, hogy ne rendetlenséget a rajzon. A többi elem ábrán JFT mind a folyamatok azt jelzik az SFT bejegyzést leíró nyitott fájlok a lemezen.
Megjegyezzük, hogy a társított fájl PICTURE.BMP két SFT bejegyzést a táblázatban. Ez azt jelenti, hogy ez a fájl megnyitását az egyes folyamatokhoz külön (de nyilvánvaló, segítségével az egyik fájlmegosztó módban).
Mi az értelme egy ilyen kétlépcsős rendszer? Függetlenül attól, hogy könnyebb volt a fogantyú mutató közvetlenül a bejegyzés SFT? Idézhetjük legalább két nyilvánvaló oka a JFT.
· A JFT teszi külön logikai fogalom szabványos eszköz (különösen a standard input - kezelni 0 és szabványos kimenet - 1 fogantyú) a meghatározott eszközök. Átirányítása szabványos készülékek valósítjuk megváltoztatásával az értékeket a megfelelő elemek JFT.
Új változat a FAT-rendszer
A Windows 95 már legyőzni egy szerencsétlen korlátozása a hossza a fájl nevét - a híres szabály „8 + 3”. Úgy tűnik, hogy ha akkora, mint egy könyvtár bejegyzést a 32 bájtos nehéz remény hosszú fájlneveket. Ugyanakkor azt találtuk, szórakoztató megoldás erre a problémára.
A Microsoft a fejlesztők észrevették, hogy a feljegyzések könyvtár, amely megfelel értelmetlen bitmintákkal attribútum „rejtett + rendszer + + írásvédett kötetcímkét” egyszerűen figyelmen kívül hagyja a MS-DOS rendszer programok és segédprogramok közös más fejlesztők számára. Ez lehetővé tette, hogy használja a felvétel egy ilyen kombináció tárolására hosszú fájlnév. Mint korábban, az egyes fájlok a könyvtárban van egy mester rekordot a közönséges, a régi formátumban tartalmazó fájl attribútumokat, a szám az első klaszter és kötelező „rövid” nevet. Azonban, ha a felhasználó létrehozásakor a fájl nevét adja meg nem fér bele a szabványos „8 + 3”, illetve tartalmaz kisbetűk, majd mielőtt a tényleges felvétel kell illeszteni a kívánt számú kiegészítő nyilvántartást megrontattok „hosszú név” a unicode kódolás (2 bájtot karakter amely lehetővé teszi a használatát bármely ismert ábécé). A hossza a nevét, a dokumentáció szerint, lehet akár 255 karakter (sőt, egy kicsit kevesebb).
Kezdve a Windows 98, lehetséges, hogy egy újfajta fájlrendszer - FAT-32. Ez eltér a FAT-12 és FAT-16 nem csak a nagyobb kapacitás a klaszter szám (bár ez nagyon fontos a nagy lemez), hanem az a tény, hogy a Microsoft végül úgy döntött, hogy egy 10-os tartalék, amelyről nem ismert, bármilyen célkitűzések maradt üresen az egyes címtárbejegyzésre. Ennek köszönhetően ott volt a lehetőség, hogy adjunk a dátum / idő utolsó módosítása két időbélyeg: létrehozás dátuma / ideje (sőt, ez a dátum / idő utolsó módosítása katalógus rekord), és a dátum az utolsó hozzáférés.