Hogyan csinálja a számítógép, hogy a FAT/MFT táblából vissza tudja keresni a fájlokat? Mi rá az eljárás?
Ez a téma nyilván összetettebb, mint hogy ide le lehessen írni. Nem kevés állomás van aközött, hogy C:\valami.txt és aközött, hogy a mágnesezhető felületen a polaritás hogyan alakul.
Szerintem gondolt újra azt a kijelentést, hogy "Ismerem a merevlemez működését" és nézz utána, hogy fizikailag hogyan működik! Aztán nézz utána a partíciós táblák, fájlrendszerek működésének.
Ha még mindig nem elég, akkor a neten ezer meg egy leírást találsz arról, hogy ténylegesen hogy működik a meghajtók vezérlése (olyan szintig, hogy a fejvezérlő tekercset mennyire kell gerjeszteni), milyen rétegek építik fel pl egy oprendszer fájlkezelő részét és hasonlók.
A c:\valami\izé\doksi.doc és a lemez mágneses felülete között több logikai réteg van, amik elég szigorúan definiáltak, és egymással kommunikálnak.
Most csak pongyolán fogalmazva írom le, nagyjából:
A legmagasabb szinten a fájlok a könyvtárstruktúrában vannak valahol, és összefüggő bájtfolyamként jelennek meg. A programok ezen a szinten látják a fájlokat, kb. így "kapják" meg az op.rendszertől, ill. az op.rendszeren keresztül írják, olvassák.
Az alcsonyabb szinteken már blokkokra vannak osztva, ami blokkok az írási-olvasási igénytől függően bekerülnek egy buffer memória területre. Az írás és olvasás első körben itt történik, és pl. íráskor innen kerül lemezre.
Még lejjebb menve eljutunk a fájlrendszerhez, ami ahány, annyiféle. Itt van kezelve a konkrét fájlrendszer szerinti könyvtárstruktúra, a különböző listák, adatstruktúrák, pl. egy könyvtárban lévő fájlok listája, mappák és fájlok egymásra hivatkozásai, stb. Pl. hogy hogy néz ki és hol van a gyökérkönyvtár a partíción, stb. (Amikor ez az alap struktúra létrejön a partíción, kb. azt hívjuk formázásnak.) Itt a fájlok is már darabokra lehetnek törve (ld. töredezettség), és itt dől el, hogy darabok hogyan állnak össze. Pl. FAT esetén (is) a FAT-táblában egy láncot alkotnak az egyen darabok, tehát az egyik darab bejegyzése hivatkozik a következőre, és ezen kell végigszaladni, hogy meglegyen minden darab. Ezt az op.rendszer, illetve az abba épített fájlrendszer kezelő "réteg" kezelő intézi.
Még lejjebb már bejön a képbe a lemez felépítése, tehát a szektorok, stb. Itt már figyelembe kell venni, hogy a fizikai lemez milyen módon érhető el, bár szerencsére szabványos felületűek. Szóval a lemezen lévő partíciós tábla alapján lehet tudni, hogy melyik szektortól meddig lehet garázdálkodni, és és ezekre kerülnek felírásra a darabokra szedett fájlok. A darabok szektor (vagy néha cluster) méretűek, és ilyen blokkok formájában írható olvasható a lemez. Kisebb darabokat nem lehet elérni. Ha egy fájl csak 5 bájt, akkor is be kell olvasni a teljes szektort, és magasabb szinten "kiszedni" belőle a szükséges részt.
Aztán hogy a lemezen hogyan tárolódik a digitális adat, az már egy még mélyebb szint:
Még pár olvasnivaló:
Egyébként ezt a témát így egyben szerintem nem igazán fogod megtalálni (főleg magyarul), mert a részei külön is elég nagy témakörök.
Csak hogy tudj mire keresni:
- Különböző operációs rendszerek alacsony szintű fájlkezelő API-ja, rendszerhívásai,
- operációs rendszerek fájl pufferelési technikái, buffer, cache, stb.
- fájlrendszerek felépítése a lemezen, fájlrendszer szolgáltatások, naplózó fájlrendszerek, adatvédelem, jogosultságok, stb,
- partíciók felépítése (főleg a DOS partíció)
- merevlemez felépítése, utasításkészlete, szabványok (ATA (IDE), SATA, SCSI, SAS,...), bár ez már átfolyik a buszok, interface-ek témakörbe,
stb....
Ennyi hülyeséget már rég olvastam.
Köszönöm a válaszadóknak, hogy megnevettettek. :)
A FAT fájlrendszer kb. a legegyszerűbb.
Ez annyiból áll, hogy a formázó program azonos blokkokra osztja fel a lemezt. Egy-egy blokk (szektor) 512 byte hosszú. Ezeket a blokkokat (szektorokat) a FAT táblában sorszámozva nyilvántartja.
A FAT tábla tartalma pedig egyszerűsítve ez:
zsuzsi.jpg____ 34
naked.jpg_____ 79
hazifelad.txt_ 96
ahol a számok adott file első blokkját (szektorát) jelzik.
A progi kiolvassa a FAT táblából, a zsuzsi.jpg file kezdő szektorát (34). Oda ugrik a 34. szektorra, beolvassa a teljes szektorhosszat (512 byte, és ez tartalmazza a file tartalmát (részben), plusz a végén a köv. szektort), majd a beolvasott adat végén lévő számot, amely a file következő szektorára mutat, ezt csinálja egészen addig, amíg az éppen beolvasott szektor utolsó byte-jai nem tartalmaznak egy file vége jelet (EOF), mert ez azt jelenti, hogy a filenak ott a vége. Ekkor megszakítja az olvasást.
Ennyi.
Nincs semmiféle fejvezérlő tekercs gerjesztés, meg egyéb hülyeség. Fejvezérlő tekercs egyébként sem található az adattárolókban. Ilyen alkatrész nem létezik.
A struktúrát meg úgy alakítják ki, hogy az adattárolókon van egy bios, amelynek elég 3 adatot megadni, ezek a C,H,S. Azaz: Cilynder, Head, Sector. (cilinder, fej, szektor) és ebből az adattároló (HDD) már tudja is, hogy melyik szektor adattartalmára kiváncsi a programozó, valamint azt is, hogy éppen írni, vagy olvasni kivánja azt.
A cilinder a fizikai, mágnesezhető korong amely az adatokat tartalmazza, a fej adott cilinderhez tartozik és alapban lehet alsó vagy felső (cilinder alja vagy teteje) és ehhez a szektor sorszáma, azaz a cilinder hanyadik blokkjára kiváncsi a fejlesztő, vagy későbbiekben az user.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!