[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