[OSy] Re: OSY - dotaz na FAT filesystem

Petr Tuma petr.tuma at mff.cuni.cz
Mon Jun 6 15:08:18 CEST 2005


Dobry den,

> zkousela jsem vygooglit, jak presne funguje FAT filesystem. Sice uz 
> vim, co tam kde je, ale nikde se poradne nevysvetluje, jak to presne 
> funguje. Chtela bych se tedy zeptat, jestli chapu spravne
> nasledujici: - Kdyz chci najit volne misto, tak prochazim FAT tabulku
> sekvencne a hledam, kde je priznak volneho mista. Co jsem nepochopila
> je, jak presne jsou ulozeny soubory a adresare. Z toho, co jsem kde
> vycetla mi pripada, ze v Root directory jsou ulozeny sekvencne nejake
> entry, z nichz kazdy reprezentuje bud adresar nebo soubor (podle
> daneho atributu). Rozdily mezi adresari a soubory (krom daneho
> atributu) neexistuji. Jen root adresar by mel vypadat jinak (ale
> presne nevim jak). Jak se ale zohlednuje adresarova struktura? Zatim
> mi prijde, ze nijak.. Root directory ma pevnou velikost? Jak se do
> nej pridavaji adresare a soubory? A jak se v nem vyhledava soubor 
> podle zadane cesty?

Zkusim to v kostce popsat. System souboru FAT rozdeluje disk na dve 
vyznacne casti - samotnou tabulku FAT (ta je zpravidla ve dvou kopiich, 
ale to neni pro funkci zasadni) a datovou oblast. Datova oblast je 
rozdelena na clustery (napriklad po 4096 bajtech) a FAT tabulka ma tolik 
polozek, kolik ma datova oblast clusteru.

- Kdyz je nejaky cluster volny, v prislusne polozce FAT je tusim 0. Tedy 
kdyz chci najit volne misto, tak staci najit libovolnou polozku FAT, 
ktera je 0, odpovidajici cluster pak je volny.

- Soubory i adresare jsou ulozeny v nejakych clusterech. Kazdy soubor i 
adresar ma svou adresarovou polozku (soubor ma adresarovou polozku v tom 
adresari, ve kterem lezi, adresar ma adresarovou polozku ve svem 
nadrazenem adresari), v te adresarove polozce je poznamenano cislo 
prvniho clusteru, ve kterem je dany soubor nebo adresar ulozen.

- Kdyz tedy potrebuji cist data souboru nebo obsah adresare a uz mam 
jeho adresarovou polozku, vim z ni, kde lezi prvni cluster techto dat. 
Pokud jsou data delsi nez jeden cluster (delka je opet v adresarove 
polozce), podivam se do FAT tabulky. Polozka odpovidajici tomu prvnimu 
clusteru obsahuje cislo dalsiho clusteru, a tak dale.

- Vyjimkou je korenovy adresar, ten nema zadny nadrazeny adresar, u toho 
je pozice na disku i delka konstantni, takze se vzdy vi, kde lezi.

Ted k tem vasim otazkam:

- Co jsem nepochopila je, jak presne jsou ulozeny soubory a adresare.

Adresare i soubory jsou ulozeny stejne. Z hlediska ulozeni na disku je 
adresar proste soubor, jehoz obsahem jsou adresarove polozky. Vyjimka 
viz root adresar.

- Z toho, co jsem kde vycetla mi pripada, ze v Root directory jsou 
ulozeny sekvencne nejake entry, z nichz kazdy reprezentuje bud adresar 
nebo soubor (podle daneho atributu).

Presne tak. I v root adresari, i ve vsech ostatnich adresarich, jsou 
proste jen za sebou ulozeny polozky. Kazda polozka obsahuje jmeno 
souboru nebo adresare, ke kteremu se vztahuje, atributy rozlisujici 
napriklad prave adresare od souboru, delku, prvni cluster, atd.

- Rozdily mezi adresari a soubory (krom daneho atributu) neexistuji.

Ano.

- Jen root adresar by mel vypadat jinak (ale presne nevim jak).

Jediny rozdil mezi root adresarem a ostatnimi adresari je v tom, ze 
zatimco root adresar je ulozen pevne na zacatku datove oblasti disku a 
ma dany maximalni pocet polozek, ostatni adresare mohou byt v jakemkoliv 
clusteru a maji promennou delku.

- Jak se ale zohlednuje adresarova struktura? Zatim mi prijde, ze nijak.

Adresarova struktura je ulozena prave v jednotlivych adresarich. 
Napriklad, pokud je na disku soubor \FOO\BAR\SOUBOR.TXT, tak v korenovem 
adresari bude polozka FOO s atributem indikujicim, ze se jedna o adresar 
a s cislem prvniho clusteru adresare FOO, rekneme ze 123. V clusteru 123 
pak budou polozky adresare FOO, mezi nimi bude podobne polozka BAR pro 
adresar BAR a cislem prvniho clusteru adresare BAR, rekneme 456. A v 
clusteru 456 budou polozky adresare BAR, mezi kterymi bude i polozka 
SOUBOR.TXT ...

- Root directory ma pevnou velikost?

Ano.

- Jak se do nej pridavaji adresare a soubory?

Polozky root adresare, ktere nejsou pouzite, jsou oznacene jako prazdne 
(ale porad patri do root adresare, aby velikost zustala konstantni). 
Pridani pak pouzije nekterou prazdnou polozku. Pokud jsou jiz vsechny 
polozky plne, dalsi nelze pridat.

- A jak se v nem vyhledava soubor podle zadane cesty?

Postupne ... v root adresari se najde prvni podadresar cesty, v nem se 
najde druhy a tak dale.

Petr Tuma



More information about the NSWI004 mailing list