LINUX: podrobnosti o datotečnih sistemih
Strukture datotečnega sistema UNIX prikazuje spodnja slika. Del teh struktur je rezidenčnih na disku, nekatere pa so v primarnem pomnilniku.
LINUX: Opis vsake odprte datoteke
LINUX: Opis datotek,
ki jih ima odprte dani proces.
Na posameznem disku imamo več področij. Na začetku je normalno zagonski
blok (bootstrap block). Ta vsebuje programsko kodo (zagonski nalagalnik,
bootstrap loader), ki jo računalnik bere in nato izvede ob svojem zagonu.
struct ext2_super_block
{
unsigned long s_inodes_count; unsigned long s_blocks_count; unsigned long s_r_blocks_count; unsigned long s_free_blocks_count; unsigned long s_free_inodes_count; unsigned long s_first_data_block; unsigned long s_log_block_size; long s_log_frag_size; unsigned long s_blocks_per_group; unsigned long s_frags_per_group; unsigned long s_inodes_per_group; unsigned long s_mtime; unsigned long s_wtime; unsigned short s_mnt_count; short s_max_mnt_count; unsigned short s_magic; unsigned short s_state; unsigned short s_errors; unsigned short s_pad; unsigned long s_lastcheck; unsigned long s_checkinterval; unsigned long s_reserved[238]; }; |
Temu sledi super-blok, ki določa
stanje datotečnega sistema. Pove velikost sistema, koliko datotek lahko
pomnimo, kje je še prostor na disku.
V superbloku so tudi podatki o geometriji diska (število glav, cilindrov,..), glava seznama i-vozlov in seznam prostih blokov. Na levi strani je struktura super-bloka za primer operacijskega sistema LINUX Podrobnosti o strukturi super-blok. |
Sledijo podatki o datotekah. Ti so spet shranjeni v dveh strukturah.
Prva je seznam i-vozlov (inode list), Drugo
pa predstavlja skupek podatkovnih blokov.
![]() |
Podatkovna struktura i-vozel
vsebuje podatke o lastništvu in zaščiti datoteke, o času zadnjega dostopa
in spremembe datoteke, pa tudi o tem, kje se nahajajo podatkovni bloki
datoteke. Kot že rečeno, lahko vsaki datoteki ustreza več imen, ki so z
vezmi (links) navezana na datoteko preko i-vozla. Imena datotek so pomnjena
v direktorijih, ki so tudi datoteke.
Linux: Podrobnosti strukture
i-vozla (VFS)
|
![]() |
Kako pridemo iz i-vozla do podatkov v sami datoteki. Pri
kratkih datotekah imamo direktno naslavljanje podatkovnih blokov, pri daljših
pa indirektno, indirektno-indirektno ali celo preko trojne indirekcije.
|
Zaradi večje učinkovitosti hrani sistem kopijo i-vozlov tudi v primarnem pomnilniku. Ta kopija ima še nekaj dodatnih informacij in sicer:
Ali je blok zaklenjen,
Ali čaka kakšen proces
na ta (zaklenjeni) blok,
Ali se kopija i-vozla razlikuje
od originalnega i-vozla,
Logično številko enote,
na kateri se nahaja datoteka,
Številko i-vozla (originalni
i_vozel tega nima, je element polja na disku),
Kazalce na ostale pomnilniške
(in core) i-vozle,
Števec, kolikokrat je dana
datoteka v danem trenutku odprta.
Poleg tega ima jedro tu še dva tipa podatkovnih struktur. Za vsak proces formira tabelo opisnikov datotek (User file descriptor table, UFD). Ta tabela vsebuje po en element za vsako datoteko, ki jo proces odpre ali tvori. Vsaka UFD ima najmanj tri elemente, ki ustrezajo standardnemu vhodu, standardnemu izhodu in standardnemu izhodu za obvestila o napakah. Poleg tega vzdržuje sistem še globalno tabelo datotek.