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
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.
![]() |
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. |
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.