Uvod v datotečne sisteme


Atributi datotek

Datoteke so abstraktni podatkovni tipi, pravzaprav logične enote za pomnenje podatkov določenega tipa. Vsako datoteko opredeljujejo atributi, med katerimi tipično zasledimo naslednje:

Ime
Tip
Lokacija (kazalec na napravo in na lokacijo datoteke na tej napravi)
Velikost
Zaščita
Čas (tvorbe, zadnje spremembe ali zadnje uporabe)
Lastništvo


Operacije nad datotekami

Operacijski sistem normalno nudi na voljo sistemske klice za tvorbo, zapisovanje in branje, premeščanje po datoteki in brisanje datotek.

Tvorba datotek: Sistem mora najti prostor za novo datoteko in uvesti novo datoteko v ustrezno kazalo (direktorij). V kazalu pomnimo prej navedene atribute datoteke.

Zapisovanje: Sistem mora locirati datoteko . Pomniti mora kazalec na mesto bodočega zapisa v datoteko in ta kazalec po vsakem zapisu ustrezno povečati.

Branje: Je podobno zapisovanju. Pri branju in zapisovanju običajno uporabljamo isti kazalec, ki se pri vsaki operaciji ustrezno poveča.

Premeščanje: Temu ustreza datotečna operacija seek. Sam dostop do datoteke je enak kot pri zapisovanju ali branju, vendar tu s primernim sistemskim klicem le premestimo kazalec v datoteko in ne izvedemo nobene vhodno - izhodne operacije.

Odpiranje in zapiranje datotek: Da ne bi pri vsaki operaciji potrebovali zamudnega iskanja oziroma lociranja datoteke, moramo načeloma vsako datoteko najprej s primernim klicem odpreti. V jeziku C imamo v ta namen klic open ( ) . Tak klic tipično vrne kazalec na rubriko v tabeli odprtih datotek. V nadaljnjih datotečnih operacijah nato uporabljamo ta kazalec, kar je precej hitreje kot ponovno iskanje datoteke preko informacij v direktoriju. Ko datoteke ne potrebujemo več, jo z ustreznim sistemskim klicem (na primer close( ) ) zapremo. Pri sodobnih operacijskih sistemih Lahko odpre isto datoteko tudi več procesov hkrati. Tipično ima vsak proces svojo tabelo odprtih datotek. V taki tabeli pomnimo tiste podatke o (odprti) datoteki, ki so specifični za dani proces (na primer kazalec na trenutno pozicijo v datoteki). Poleg tega imamo običajno ąe eno, skupno tabelo vseh odprtih datotek. Tu so vsi ostali podatki o datoteki in še števec, ki pove, kolikokrat je datoteka trenutno odprta. Ta števec se poveča pri vsakem klicu open( ) in zmanjša pri vsakem klicu close( ).

Brisanje datoteke: Sistem mora preko informacij v direktoriju poiskati datoteko, sprostiti njene podatkovne bloke in končno sprostiti tudi rubriko njeno rubriko v direktoriju.


Tipi datotek

 
Eno od temeljnih vprašanj je, ali naj operacijski sistem razpozna vrsto datoteke in tako ustrezno ukrepa. Pogosto je tip datoteke razpoznaven iz njenega imena, lahko pa je tip skrit v kakšnem drugem atributu, ki se avtomatsko nastavi ob tvorbi datoteke. Tak atribut lahko uporabimo tudi za implicitno ponovno proženje programa (na primer urejevalnika ali programskega generatorja), ki je tako datoteko pripravil. 


Vrste direktorijev

Datoteke na diskih morajo biti primerno organizirane. V nekaterih primerih je disk razdeljen v več logičnih enot (ponekod na primer particij, ponekod na primer obsegov (volumes) ). Takim logičnim enotam lahko pravimo tudi virtualni diski. Vsak tak virtualen disk mora pomniti informacijo o datotekah, ki so tu spravljene. Tipično so podatki o datotekah podani v obliki simboličnih tabel oziroma direktorijev.

Pri organiziranju takih tabel je potrebno upoštevati operacije, ki pridejo v poštev. Te so:

Iskanje datoteke: Datoteke imajo pridruženo eno ali več simboličnih imen. Iz teh pa moramo priti do podatkovnih blokov.

Tvorba datotek: Dodajanje novih datotek v nek direktorij.

Brisanje datoteke iz direktorija

Preimenovanje datoteke. V nekaterih primerih pomeni to tudi premestitev imena datoteke iz enega direktorija v drugega.

Prehajanje po datotečnem sistemu: Imeti moramo dostop do vseh direktorijev in datotek nekega datotečnega sistema.
 
 
Zaradi velikega števila datotek mora datotečni sistem zagotavljati njihovo preglednost. Pogosto imamo zato direktorije organizirane drevesno, kot ilustrira leva slika:

 
Sodobni datotečni sistemi dopuščajo, da ima ista datoteka po več imen in da so ta v različnih direktorijih. To precej lajša souporabo datotek in direktorijev Imamo bolj splošno organizacijo direktorijev v obliki acikličnega grafa:

Pri nekaterih operacijskih sistemih (UNIX) dosežemo to tako, da dodajamo na isto datoteko nove simbolične vezi (symbolic links). Pri prehajanju po drevesu direktorijev operacijski sistem simbolične linke ignorira, saj bi lahko prišlo do cikliranja.

Ker je dostop do posameznih datotek tako možen preko več imen, mora biti zaradi konsistence datotečnega sistema brisanje datotek drugače urejeno. Datoteko lahko v resnici zbrišemo šele, ko brišemo zadnjo referenco nanjo. V ta namen imamo na primer pri sistemu UNIX za vsako datoteko števec povezav nanjo.