16
Sisteme de Operare Curs nr. 10 5. Gestiunea sistemului de fişiere. Gestiunea fişierelor este serviciul cel mai vizibil oferit utilizatorului de către un sistem de operare. Informaţia poate fi stocată pe diverse suporturi, poate fi tipărită sau poate fi afişată pe ecran. 5.1. Gestiunea fişierelor privită de utilizator Aplicaţiile necesită modalităţi de stocare şi regăsire a informaţiei. Chiar dacă în timpul rulării un proces poate memora date în propriul spaţiu de adresare, există situaţii în care acest lucru nu mai este convenabil din punct de vedere al ocupării memoriei (cazul în care sunt manipulate cantităţi mari de date). O altă cerinţă a aplicaţiilor este stocarea pe termen lung a informaţiei precum şi refacerea datelor în cazul unor accidente (căderi de tensiune, distrugeri fizice, erori software). Typical capacity Main memory Secondary Storage: Disks Off-line Storage: Tapes, CDs, etc Fig. 5.1-1. Ierarhia memoriei într-un sistem de calcul Fig. 5.1-2. Structura internă a unui disc

SO-Curs10

Embed Size (px)

DESCRIPTION

sisteme operare

Citation preview

  • Sisteme de Operare

    Curs nr. 10

    5. Gestiunea sistemului de fiiere.

    Gestiunea fiierelor este serviciul cel mai vizibil oferit utilizatorului de ctreun sistem de operare. Informaia poate fi stocat pe diverse suporturi, poate fi tipritsau poate fi afiat pe ecran.

    5.1. Gestiunea fiierelor privit de utilizator

    Aplicaiile necesit modaliti de stocare i regsire a informaiei. Chiar dacn timpul rulrii un proces poate memora date n propriul spaiu de adresare, existsituaii n care acest lucru nu mai este convenabil din punct de vedere al ocupriimemoriei (cazul n care sunt manipulate cantiti mari de date). O alt cerin aaplicaiilor este stocarea pe termen lung a informaiei precum i refacerea datelor ncazul unor accidente (cderi de tensiune, distrugeri fizice, erori software).

    Typical capacity

    Main memory

    SecondaryStorage: Disks

    Off-line Storage:Tapes, CDs, etc

    Fig. 5.1-1. Ierarhia memoriei ntr-un sistem de calcul

    Fig. 5.1-2. Structura intern a unui disc

  • Sisteme de Operare

    Gestionarea n mod transparent pentru utilizator a accesului la entitile destocare a datelor este lsat n grija sistemului de operare, care realizeaz acest lucruprin intermediul sistemului de gestiune a fiierelor ( SGF ).

    Operaiile realizate de un sistem de fiiere se refer la:- denumirea i manipularea fiierelor, accesibile utilizatorilor ca entiti cu

    nume i asupra crora se pot efectua operaii (citire, scriere, execuie);- asigurarea persistenei datelor care presupune o independen fa de

    crearea sau distrugerea proceselor din sistem (regsirea dup intervalemari de timp), posibilitatea refacerii structurii i coninutului n caz deaccidente;

    - asigurarea mecanismelor de acces concurent al proceselor din sistem lainformaiile stocate.

    5.2. Conceptul de fiier

    Informaiile sunt grupate de ctre SO n ansambluri distincte numite fiiere.Prin intermediul programelor, un utilizator are acces la un moment dat la o micentitate din cadrul unui fiier, numit i articol sau nregistrare (este dificil definireaexact a unui articol n cadrul unui fiier).

    Din punct de vedere al structurii avem mai multe categorii de fiiere:- secvena de octei: fiierul se prezint ca o secven de octei a

    crei interpretare este lsat la latitudinea programelor utilizator;ofer un grad maxim de flexibilitate n reprezentarea datelor (UNIX, Windows etc.);

    Fig. 5.1-3. Elementele sistemului de gestiune a fiierelor

  • Sisteme de Operare

    - secvena de nregistrri: fiierul este organizat ca o succesiune denregistrri de lungime fix; operaiile de citire i scriere se fac lanivel de nregistrare (a aprut datorit cartelelor perforate i nu maisunt folosite n prezent);

    - structura arborescent: fiierul este format din nregistrri, careconin att informaia propriu-zis, ct i un cmp cheie (situat pe opoziie prestabilit n cadrul fiecrei nregistrri). Valoareacmpului cheie este folosit de ctre sistemul de operare pentrugestionarea unei structuri logice interne de tip arbore a fiierelor(este folosit n calculatoarele dedicate procesrii de date).

    Din punct de vedere al tipului avem urmtoarele categorii:- fiiere normale (regular files): conin informaii utilizator;- directoare (directories): fiiere sistem destinate gestionrii

    structurii sistemului de fiiere;- fiiere speciale de tip caracter/bloc ( character/block special files):

    destinate utilizrii n conjuncie cu dispozitivele periferice;- legturi simbolice (symbolic links): furnizeaz posibilitatea

    accesrii unui acelai fiier fizic pe ci logice multiple.Fiierele normale sunt i ele de dou tipuri:

    - ASCII: fiierul este format din linii de text terminate cu caracterelede control CR (cariage return) i/sau LF (line feed);

    - binare: fiierul este organizat ca secven de octei, dar cruiasistemul de operare i asociaz o anumit structur intern (fiiereleexecutabile i arhivele).

    5.3. Aciunile sistemului de gestiune a fiierelor la nivel de fiier

    Una din principalele funcii ale sistemului de operare este implementarea uneimaini virtuale, concretizate n cazul fiierelor prin asigurarea unor primitive demanipulare a fiierelor la un nivel ct mai abstract, care s nu implice cunotinelegate de modul de stocare. Astfel, utilizatorul manipuleaz fiierele ca pe o secvencontigu de octei n cadrul creia se poate poziiona oriunde, poate citi sau scrie,chiar dac alocarea spaiului pe disc se face la nivel de blocuri (de regul, dedimensiune fix cuprins ntre 512 octei i 4k octei).

    Descriptorul de fiier:Informaiile de descriere a unui fiier sunt coninute ntr-un articol special

    numit descriptor de fiier. De regul, acesta nu este memorat la un loc cu articolele deinformaie ale fiierului, ci n directorul de fiier.

    Descriptorul de fiier conine patru grupe de informaii: - identificarea fiierului: de obicei este compus dintr-o pereche ( N, I ),

    unde N este numele simbolic al fiierului i I este un numr prin caredescriptorul este reperat pe disc n mod direct (este numit n diversemoduri: i-node (UNIX), handle (MSDOS)). Prin N, SGF realizeazlegtura cu utilizatorul i prin I cu celelalte componente ale SO. Mai estefolosit si de utilitarele de refacere a unei structuri de fiiere compromise.

    - informaiile privind adresele fizice disc pe care le ocup: aici vor fimemorate informaiile necesare regsirii articolelor fiierului pe disc.

  • Sisteme de Operare

    - informaii de control al accesului la fiier: Aici sunt precizate informaiilelegate de cine i ce drepturi are pentru a accesa fiierul. Tot aici sunttrecute informaii legate de reglementarea multiaccesului simultan la fiier.

    - informaii de organizare i calendaristice: Aici se afl informaii legate demodul de organizare al fiierului (secvenial, secvenial-indexat, nlnuit,etc); formatul articolelor (fix, variabil, fiier text i standardul decodificare); data i ora crerii (ultimei actualizri, ultimei citiri), numrultotal de consultri a fiierului; dispoziii de pstrare a fiierului(permanent, temporar, pstrabil un numr de zile etc)

    Setul de operaii pentru care sistemul de operare asigur primitive destinatelucrului cu fiiere cuprind urmtoarele funcii de bibliotec:

    - create : crearea unui nou fiier;- delete : tergerea fiierului;- open : indic SO intenia unui proces de a accesa date coninute ntr-un

    fiier existent;- read : citirea din fiier a unui numr specificat de octei, ncepnd de la

    poziia curent, n spaiul de adresare al procesului care a iniiat operaia;- write : nscrierea n fiier a unui numr specificat de octei ncepnd de la

    poziia curent, cu date coninute n spaiul de adresare al procesului care ainiiat operaia;

    - append : adugarea de date la sfritul unui fiier existent;- close : eliberarea structurilor de date sistem, ca urmare a terminrii

    operaiilor pe care un proces le-a executat asupra unui fiier;- seek : seteaz poziia curent n fiier;- rename : redenumete un fiier existent;- setattributes, getattributes : operaii de setare i citire a atributelor asociate

    unui fiier.

    Operaia open: - informeaz SO c un anume fiier va deveni activ. Prima sarcin a deschiderii este de a face legtura ntre informaiile de

    identificare a fiierului i variabila din program prin care utilizatorul se refer la fiier.n funcie de condiiile de deschidere avem:A. Pentru un fiier care exist deja pe disc:1. Realizeaz legtura dintre variabila din program ce indic fiierul, suportul

    pe care se afl fiierul i descriptorul de fiier aflat pe disc.2. Verific, pe baza informaiilor de acces, dac utilizatorul are sau nu drept

    de acces la fiier.

    B. Pentru un fiier nou, ce urmeaz a fi creat1. Aloc spaiul pe disc pentru memorarea viitoarelor articole ale fiierului.

    n funcie de tehnica de alocare folosit, se poate aloca ncepnd de la osingur unitate de alocare (sector, bloc, cluster) i terminnd cu cantitateamaximal de spaiu estimat de utilizator pentru fiierul n cauz.

    C. Att la fiier nou, ct i la fiier deja existent1. Aloc memorie intern pentru zonele tampon necesare accesului la fiier.2. ncarc rutinele de acces la articolele fiierului i execut instruciunile lor

    de iniializare.

  • Sisteme de Operare

    3. Genereaz o form cadru a instruciunilor de comand a canalului I/O.4. Memoreaz unele dintre datele obinute la A, B, C i cele din descriptorul

    fiierului ntr-o structur de date n memoria intern cunoscut sub numelede bloc de control al fiierului (File Control Bloc sau FCB). De regulfiecare utilizator are pentru fiecare fiier, propriul sau FCB (la unele SOeste n zonele gestionate de sistem sau n monitorul sistemului)

    Operaia close:- informeaz SO c un fiier nceteaz a mai fi activ.Unele SO cer anunarea explicit a nchiderii, altele efectueaz automat

    nchiderea la sfritul programului. La nchidere, se reactualizeaz informaiilegenerale despre fiier (lungime, adrese de nceput i sfrit, data modificrii etc).

    n funcie de condiiile de nchidere avem:A. Pentru fiiere temporare, create n programul curent i de care nu mai este

    nevoie n continuare:1. terge fiierul i elibereaz spaiul disc ocupat.

    B. Pentru fiiere nou create i care trebuie reinute:1. Creeaz o nou intrare n directorul discului

    C. Pentru toate fiierele care trebuie reinute:1. Insereaz, dac este cazul, marcajul EOF dup ultimul articol al fiierului.2. Golete (pune pe suport), dac este cazul, ultimele informaii existente n

    zonele tampon.3. Pune la zi grupele de informaii din descriptorul de fiier cu valorile

    curente4. Dac fiierul a fost modificat, marcheaz acest lucru i eventual pune

    numele fiierului ntr-o list a sistemului. Acest lucru trebuie fcut neventualitatea unei salvri automate de ctre SO a tuturor fiierelormodificate.

    D. pentru toate fiierele, permanente sau temporare:1. Aduce capul de citire al discului n poziia zero2. Elibereaz spaiul de memorie ocupat de FCB.3. Elibereaz spaiile ocupate de zonele tampon n memoria operativ.4. Elibereaz (eventual) perifericul sau perifericele pe care a fost montat

    suportul fiierului.

    Alte operaii, asociate unor comenzi, permise de sistemul de operare asuprafiierelor sunt: copierea, concatenarea, compararea, listarea, sortarea (ordonarea).

  • Sisteme de Operare

    5.4. Moduri de organizare ale fiierelorOrganizarea fiierelor este modalitatea n care sunt aranjate articolele sau

    unele pri din ele astfel nct s permit modurile de acces dorite. Din acest punct devedere avem urmtoarele situaii:

    Fiiere de tip pile(grmad): - datele sunt colectate n ordinea n care apar;- scopul este acumularea i salvarea unei cantitide date;- nregistrrile pot avea cmpuri diferite;- nu au o structur bine definit;- accesul la o nregistrare poate fi foarte costisitordin punct de vedere al timpului.

    Fiiere cu organizarea secvenial:- nregistrrile au un format fix (dimensiunea siordinea articolelor este fix, nregistrrile suntstocate n ordine pe baza unei chei este uncmp particular n cazul unei nregistrri);- cutarea ntr-un astfel de fiier implicprocesarea tuturor nregistrrilor;- este dificil inserarea unor articole noi, deobicei fiind pstrate ntr-un fiier separat (log filesau transaction file);- o soluie ar fi folosirea de liste nlnuite pentruorganizarea structurii fiierului.

    Fiiere cu acces direct prin poziie:- un astfel de fiier are, de regul, articole cu format fix, care sunt plasate n

    sectoare vecine. Exist posibilitatea de a avea acces direct la orice sector de discalocat fiierului n cauz.

    - soluia se poate extinde cu mici modificri i la fiierele cu format variabil(de regul, se reine fie lista adreselor disc la care ncepe fiecare articol, fie listalungimilor acestor articole).

    - majoritatea implementrilor de limbaje de programare de nivel nalt aumecanisme pentru acces direct prin poziie pentru articole cu format fix (limbajul Cofer funcia fseek ).

    Fiiere inverse:La crearea unui fiier, pe lng fiierul de baz se creeaz automat un aa-

    numit fiier invers, care conine pentru fiecare cheie specificat de utilizator, adreseledisc la care se afl articolele care conin cheia respectiv. Att fiierul de baz, ct icel invers se creeaz i se actualizeaz simultan. Un astfel de fiier permite un modfoarte natural de organizare pentru a se realiza acces direct prin coninut i este folositla unele SGBD-uri (SOCRATE).

    Fig. 5.4-1. Fiier de tip pile

    Fig. 5.4-2. Fiier cu organizare secvenial

  • Sisteme de Operare

    Fiiere multilist:Dac fiierul de baz este foarte mare, atunci folosirea fiierelor inverse este

    ineficient, deoarece articolele fiierului invers devin foarte lungi i greu demanipulat. Acest lucru este nlturat prin fiierele multilist, dar accesul estesecvenial. Pentru a putea realiza astfel de fiiere, utilizatorul definete o serie deatribute i o serie de valori ale acestora care vor reprezenta cheile fiierului.

    Fiecrei chei dintr-un articol i este ataat un pointer ctre articolul urmtorcare conine aceeai cheie. Astfel, articolele fiierului de baz sunt legate prin attealiste cte chei sunt n fiier.

    Acest mod de organizare se preteaz pentru acces direct prin coninut.

    Fiiere secvenial indexate:Acest tip de organizare a fiierelor este cel mai des folosit pentru accesul

    direct prin coninut. Articolele vor fi scrise pe suport n acces secvenial i plasate nordinea cresctoare a indexului (unic pentrufiecare articol). Articolele sunt grupate nblocuri de informaii numite pagini rezult ctoate valorile indexului dintr-o pagin sunt maimari sau mai mici dect valorile indexului dinalt pagin.

    mpreun cu fiierul se creeaz i otabela de indeci, n care se va trece pentrufiecare pagin, adresa disc a paginii i valoareacelui mai mare index din pagin. n funcie dedimensiunea fiierului, dac tabela de indecieste prea mare se poate reorganiza sub formaunui arbore.

    Actualizarea unui astfel de fiier se faceastfel: articolele fiierului se leag ntre eleprintr-o list simplu nlnuit. Articolul inserateste memorat pe disc ntr-o alt zon numitparte de depire (overflow file) i va face parte mpreun cu precedentul i cusuccesorul din aceeai list simplu nlnuit.

    Dac se fac mai multe inserri ntre dou chei vecine din partea principal,atunci lista va lega mai multe articole n partea de depire scznd randamentulaccesului la disc. tergerile contribuie i ele la scderea randamentului, deoarecermne loc nefolosit n partea principal. Din aceste motive este necesarreorganizarea frecvent a unui astfel de fiier.

    Acest tip de fiiere se regsesc la sistemele de operare RSX i CP/M.

    (articol1 articol2 ) a11(articol1 articol2 ) a21

    ..(articol1 articol2 ) ap1 ..

    ..a11 a12 a1n1

    ..ap1 ap2 apnp

    Fig. 5.4-3. Fiier multilist

    Fiier de chei Fiier de baz

    Fig. 5.4-4. Fiier secvenial-indexate

  • Sisteme de Operare

    Fiiere selective:Acest tip de fiiere a aprut aproximativ n acelai timp cu cele secvenial-

    indexate ca o replic a acestora n urmtorul sens: dac fiierele secvenial-indexateau funcia de regsire materializat n tabelele de index, fiierele selectivematerializeaz funcia de regsire printr-un simplu calcul efectuat de CPU. Se eliminastfel accesele la disc de cutare n tabele, dar funcia de regsire este dependent dedatele ce vor fi nmagazinate n fiierul respectiv. Este folosit tot pentru acces directprin coninut.

    Organizarea de acest tip const n urmtoarele:- se presupune c datele care se vor nregistra permit existena unui atribut

    de valori unice pentru fiecare articol (un index);- se poate defini o funcie: f: {valori_posibile_index} {0, 1, , n-1}

    numit funcie de randomizare sau funcie hash; definirea ei se face deutilizator; n numrul de clase n care se mpart articolele; toate articolelepentru care se obine aceeai valoare a funciei se spune c sunt sinonime;

    - se recomand ca numrul de articole sinonime s fie apropiat de numrulde articole care ncap ntr-un bloc de informaie (pagin);

    - scrierea se face astfel: se aplic funcia de randomizare valorii indexului ise obine numrul clasei n care se afl articolul. Partea principal afiierului este format din cte o pagin pentru fiecare clas. Dac paginadin partea principal nu este nc plin, articolul se pune n paginarespectiv; dac este plin se pune n partea de depire. Articolul estelegat printr-o list simplu nlnuit de ultimul articol sinonim cu el dinpartea principal.

    - Pentru citire, se furnizeaz indexul articolului dorit cruia i se aplicfuncia de randomizare, determinnd clasa de sinonime din care face parte.n cadrul clasei cutarea articolului se face secvenial.

    Utilizarea acestui tip de fiier este puternic dependent de datele pe care lenglobeaz i din acest motiv este mai puin folosit.

    Fiiere organizate folosind B-arbori:Aceast tehnic a fost adoptat datorit faptului c tabelele de indeci pot fi

    foarte mari, precum i datorit nevoii de a reduce numrul de accese la disc.Un B-arbore este un arbore organizat astfel: fiecare nod este prevzut cu m

    locuri n care pot fi memorate m chei. Se presupune c aceste chei sunt valori ale unuiindex al unui fiier. n fiecare nod pot fi maxim m chei i minimum m/2 chei (nodurilesunt cel puin jumtate pline). n cadrul nodului ele apar n ordine cresctoare. Odatcheile se memoreaz i adresele corespunztoare din fiierul de baz.

    naintea primei chei, ntre dou chei din nod i dup ultima cheie se aflpointeri spre nodurile subordonate. Pointerul dinaintea primei chei indic subarborelen care se afl toate cheile mai mici dect prima cheie din nod. Pointerul de dupultima cheie indic subarborele care conine toate cheile mai mari dect ultima cheiedin nod. Pointerul dintre dou chei indic subarborele care conine toate cheile cuvalori ntre cele dou chei din nod.

  • Sisteme de Operare

    Inserarea n B-arbore se face astfel nct el rmne echilibrat, adic pe toateramurile lui exist acelai numr de nivele, iar fiecare nod este ncrcat cel puin lajumtate. Astfel, dac un nod este prea plin (ar trebui s conin m+1 chei), B-arborelese autoreconfigureaz. Mai nti, se ncearc o migrare de chei ntre dou nodurivecine, trecnd prin printele lor, pentru ncrcarea aproximativ egal a celor doivecini. n ultim instan, un nod prea plin se desparte n dou noduri pe jumtatepline.

    tergerea pstreaz i ea calitatea de B-arbore. Cnd un nod este prea gol (artrebui s conin m/2-1 chei), se ncearc o migrare de chei ntre dou noduri vecine.n ultim instan, din doi vecini, unul jumtate plin i altul mai puin de jumtateplin, se formeaz un singur nod.

    Dezvoltarea unui astfel de arbore se face mai mult n lime dect nnlime. Dac un B-arbore conine n total N chei, atunci numrul lui maxim denivele este 1+ log[m/2] ( ( N+1 ) / 2 ). De exemplu pentru m = 42 i N = 65535, B-arborele poate avea cel mult 4 nivele. n condiia ca nodul rdcin s se afle nmemorie de la deschidere i pn la nchidere sunt necesare doar trei accese la discpentru a gsi oricare din cele N chei.

    Aceast calitate asigur un numr minim de accese la disc pentru regsireaunei chei; n plus, frecvena dispariiei de noduri la tergere este foarte mic ncomparaie cu micrile de chei.

    30 65

    15 21 41 78

    2 7 16 20 22 29 35 37 42 50 67 77 80 91

    20

    8 5 5

    2 2 2 2 2 2 2

    Fig. 5.4-5. Exemplu de B-arbore pentru m=2

    30 67

    15 21 36 41 78

    2 7 16 20 22 29 35 37 77 80 91

    20

    8 6 4

    2 2 2 1 1 1 2

    Fig. 5.4-6. Inserarea i tergerea ntr-un B-arbore pentru m=2

    2

    36 65

    42 50

    2

  • Sisteme de Operare

    Un fiier bazat pe B-arbore este net superior unuia secvenial indexat dinurmtoarele motive:

    - cheile pot fi furnizate n orice ordine, nu neaprat n ordine cresctoare;- dispare zona de depire, performanele de regsire rmnnd aceleaiindiferent de numrul adugrilor i tergerilor;- cutarea se face strict n acces direct, eliminndu-se cutarea secvenial ncadrul unei pagini.Totui B-arborii nu permit i accesul secvenial n ordinea cresctoare a

    cheilor. Din acest motiv au fost introduse dou noi variante ce permit i acest lucru:B+-arborele i B-arborele extins.

    B+-arborele: - acest tip de arbore conine chei (i pointeri la fiierul de baz) numai n

    nodurile terminale (frunz) ale arborelui. Nodurile interioare, organizate ca un B-arbore, au doar rolul de a indica nodul terminal ce conine cheia cutat.

    Nodurile terminale se leag ntreele printr-o list nlnuit, simpl saudubl, permind astfel i accesulsecvenial ntr-un mod foarte eficient.

    B-arborele extins:Din raiuni practice a aprut problema realizrii accesului relativ ntr-un B-

    arbore, altfel spus, dac la un moment dat ne aflm pe cheia c (cheie curent) n B-arbore, cum s-ar putea ajunge n mod direct la o cheie k (cheie nou) aflat cu n chei(n ordine cresctoare) nainte sau dup cheia c.

    Soluia const n adugarea unei informaii de zestre pe lng fiecarepointer din B-arbore, informaie ce const dintr-un numr ntreg care reine cte chei

    conine subarborele indicat depointer (sunt cele trecute alturi desgeile din fig. 5.4-5 i 5.4-7).Pentru realizarea accesului relativ,trebuie efectuate n plus ctevaoperaii de adunare i scdere.

    Pentru trecerea de la cheia curent la o cheie nou, se parcurg nodurile B-arborelui de la strmoul comun al celor dou chei i pn la cel ce conine cheianou.

    Index n B-arbore

    Fig. 5.4-7. Un B+-arbore

    Rdcina

    Strmo comun

    Cheia curent c k Cheia nou

    Fig. 5.4-8. Acces relativ n B-arbori extini

  • Sisteme de Operare

    5.5. Aciunile sistemului de gestiune a fiierelor la nivel de suport disc

    La acest nivel, SGF are trei sarcini principale: - implementarea unui sistem de regsire a fiierelor aflate pe volumul de

    disc respectiv; - evidena spaiului neutilizat pe disc - punerea la dispoziia componentelor, care creeaz sau extind fiiere, a

    acestui spaiu atunci cnd este nevoie (alocarea spaiului pentru fiiere pedisc).

    5.5.1. Sisteme de directoare (cataloage)Directoarele rezolv o problem fundamental a sistemului de fiiere:

    realizarea legturii ntre numele atribuit de utilizator unui fiier i localizarea fizic pedisc a informaiei asociate fiierului respectiv, operaie numit mapare.

    Structura unui director poate fi asimilat cu aceea a unei tabele n care fiecareintrare este asociat unui fiier i conine informaiile necesare accesului: numelefiierului i adresa unei structuri de date sistem care conine atributele fiierului iinformaii despre localizarea acestuia pe disc.

    O intrare ntr-un director poate indica un alt director, ceea ce conduce la oorganizare arborescent a sistemului de fiiere, n care frunzele sunt fiierelepropriu-zise, iar nodurile intermediare i nodul rdcin directoare. n acest caz,identificarea unui anumit fiier se face enumernd directoarele ce trebuie parcurse dela nodul rdcin i pn la fiierul respectiv.

    Operaiile asigurate de sistemul de operare pentru lucrul cu directoare sunt:- create: crearea unui director;- delete: tergerea unui director;- open: deschiderea unui director, de exemplu n scopul citirii i afirii

    intrrilor;- close: elibereaz structurile de date sistem care au fost alocate unui

    director ca urmare a unei operaii open;- readdir: returneaz urmtoarea intrare ntr-un director. Coninutul

    directoarelor poate fi citit i utiliznd operaia read (definit pentru fiiere)dar aceasta trebuie s aib ca rezultat returnarea ntregii tabele asociatedirectorului respectiv, oblignd utilizatorul s cunoasc structura acesteian scopul regsirii informaiilor cutate;

    - rename: d posibilitatea redenumirii unui director;- link: d posibilitatea stabilirii unei legturi simbolice care are ca efect

    apariia numelui unui acelai fiier n mai multe locuri n cadrul sistemuluide fiiere;

    - unlink: are ca efect tergerea unei intrri ntr-un director.

    Sunt cunoscute patru tipuri de structuri logice ale unui sistem de directoare:- directoare cu un singur nivel: este cea mai simpl structur. Toate fiierele

    de pe disc sunt n acelai director, fapt ceimpune anumite restricii asupra numelui inumrului fiierelor. Astfel, numrul deintrri n tabel este limitat de dimensiuneatabelei director i nu pot exista dou fiierecu acelai nume chiar dac aparin lautilizatori diferii. Acest sistem era folosit

    Fig. 5.5.1-1. Directoare cu un singur nivel

  • Sisteme de Operare

    la sistemele de operare CP/M i SIRIS.- directoare cu dou nivele: O astfel de organizare elimin neajunsul

    unicitii numelui de fiier. O astfel de structur conine la nivel superiordirectorul Master ( MFD MasterFile Directory ). Acesta conine cteo intrare pentru fiecare utilizator alsistemului, intrare care pointeazctre un director Utilizator ( UFD User File Directory ). Din fiecareUFD se pointeaz ctre fiiereleutilizatorului respectiv. Acest sistema fost folosit la sistemele de operareSIRIS i RSX.

    - directoare cu structur de arbore: reprezint extinderea cea mai fireasc astructurii cu dou nivele. A nceput s fie folosit la SO UNIX i la MS-DOS de la versiunea 2, singura deosebire ntre cele dou fiind caracterulde separare ntre numele de directori care este / pentru UNIX i \pentru MS-DOS.

    - directoare cu structur de graf aciclic: acest tip de structur este utildeoarece directoarele cu structur de arbore nu permit ca anumite fiieresau directoare s fieaccesibile din mai multedirectoare printe, lucru careeste util cnd se doretepartajarea unei poriuni astructurii de fiiere ntre maimuli utilizatori.

    Fig. 5.5.1-2. Directoare cu dou nivele

    Fig. 5.5.1-3. Directoare cu structur de arbore

    Fig. 5.5.1-3. Directoare cu structur de graf aciclic

  • Sisteme de Operare

    5.5.2. Alocarea spaiului pentru fiiere pe discn general, problemele de la alocarea memoriei se pot extinde i la alocarea

    fiierelor. Putem avea:- alocare static (prealocare): n care trebuie specificat dimensiunea

    spaiului ce va fi ocupat de fiier, lucru destul de greu de estimat, dar careva conduce la o alocare contigu pe disc a fiierului;

    - alocare dinamic: n care fiierul va ocupa att spaiu ct este necesar, darpe disc nu vom mai avea locaii contigue.

    Este necesar folosirea unei tabele de alocare a fiierelor ( File AllocationTable ) care va pstra informaiile legate de spaiul alocat fiecrui fiier.

    Cele mai cunoscute metode de alocare a spaiului pentru fiiere sunt: alocareacontigu, alocarea nlnuit i alocarea indexat.

    Alocarea contigu: un fiier pe disc trebuie s ocupe un set de adreseconsecutive pe disc. n descriptorul de fiier se pun adresa de nceput i lungimeazonei alocate.

    Problemele ridicate de acest mod de alocare coincid cu cele care apar laalocarea memoriei cu partiii variabile: apare fenomenul de fragmentare i seefectueaz compactarea.

    Acest tip de alocare a fost folosit la SO SIRIS (aloc un numr ntreg decilindri pentru fiecare fiier) i parial la SO RSX.

    Alocarea nlnuit: se folosete pentru a se evita fenomenul de fragmentare.Fiecare fiier este nregistrat ntr-un ir de blocuri legate ntre ele printr-o listnlnuit. Aceast metod este foarte bun pentru accesul secvenial la fiiere.

    Fig. 5.5.2-1a. Alocare contigu Fig. 5.5.2-1b. Alocare contigu (dup compactare)

    Fig. 5.5.2-2a. Alocare nlnuit Fig. 5.5.2-2b. Alocare nlnuit (dup compactare)

  • Sisteme de Operare

    Acest mod de alocare este utilizat la fiierele secvenial-nlnuite. Sistemul defiiere de la MSDOS FAT12/16/32 folosete o variant a acestui mod de alocare.

    Alocarea indexat: deoarece alocarea nlnuit nu permite accesul direct,aceast problem este rezolvat prin alocarea indexat. Acest tip de alocare, pe lngblocurile ataate fiierului, la crearea fiierului respectiv, creeaz un bloc special,numit bloc de index. n acest bloc, se trec n ordine adresele tuturor sectoarelorocupate de fiierul respectiv.

    n descriptorul fiierului (din director) exist un pointer ctre blocul de index.Dac fiierul este mare i ocup mai multe adrese dect ncap ntr-un bloc, atunci seadopt una din soluiile urmtoare:

    - se creeaz mai multe blocuri de index, legate ntre ele sub forma unei listesimplu nlnuite;

    - utilizarea unor blocuri index multinivel, numrul de nivele va depinde dect de mare se va dori a fi dimensiunea unui fiier;

    Fig. 5.5.2-3a. Alocare indexat cu o lungime fix a blocurilor

    Fig. 5.5.2-3b. Alocare indexat cu o lungime variabil a blocurilor

  • Sisteme de Operare

    - utilizarea unei combinaii ntre cele dou soluii.Aceast schem de alocare este foarte flexibil i este folosit cel mai mult n

    diverse sisteme de operare ( UNIX adopt o schem de alocare indexat cu treinivele).

    5.5.3. Evidena spaiului liber de pe discPrincipala problem care se pune la alocarea spaiului pe disc este utilizarea

    eficient a spaiului i informaiile s fie introduse/obinute rapid. Rezolvarea acestorapresupune, pe lng o alocare eficient a spaiului i o parte de eviden a spaiuluiliber de pe disc.

    Metodele de eviden a spaiului liber de pe disc sunt bazate pe fiiere inversei pe liste nlnuite.

    Evidena spaiului prin fiiere inverse:n directorul volumului, exist o zon rezervat pentru ocuparea volumului,

    numit i tabela de ocupare a volumului ( TOV ), n care este rezervat cte un bitpentru fiecare bloc de pe disc. Dac blocul este liber atunci bitul este zero, n cazcontrar este unu.

    Exemplu: 00111000011111000011111111111011000

    La alocarea unui fiier se caut i se ocup attea blocuri cte sunt necesarefiierului, dup care toi biii corespunztori primesc valoarea unu. La tergereafiierului biii corespunztori se pun pe zero.

    Acest mod de eviden este folosit: la CP/M, unde TOV se afl pe pista 2, laRSX, unde este ntr-un fiier BITMAP.SYS.

    Evidena spaiului prin list nlnuit:n directorul volumului, exist un pointer ctre primul sector liber, care la

    rndul lui conine un pointer la urmtorul sector liber .a.m.d. Ultimul sector arepointer de valoare zero.

    0

    Fig. 5.5.3-1. Evidena spaiilor libere folosind o list nlnuit (nceputul listei pointeaz spre primul bloc)

  • Sisteme de Operare

    Ordinea apariiei blocurilor libere n list este dat de cererea i eliberarea deblocuri pn n momentul respectiv. Astfel, dac se cere ocuparea a p blocuri, se vorocupa primele p poziii din list, dup care al p+1 lea bloc liber din list va deveniprimul liber. Cererea de eliberare se face nominal pentru fiecare bloc, listaactualizndu-se conform tergerii dintr-o list simplu nlnuit.

    Aceast schem nu este foarte eficient, deoarece pentru ocuparea unorsectoare este necesar un consum mare de timp pentru operaiile de I/O care cautspaiu liber.

    Evidena spaiului prin list nlnuit i indexat:Aceast metod este o mbuntire a metodei anterioare i const n

    urmtoarele. Presupunem c ntr-un bloc pot fi nregistrate n adrese de blocuri disc. nprimul bloc liber, indicat din director, se memoreaz adresele a n blocuri libere.Primele n-1 sunt adrese de sectoare efectiv libere, iar ultima adres pointeaz la unbloc liber care conine, iari, adresele a n blocuri libere .a.m.d. Astfel numrul deoperaii de I/O necesare pentru cutarea de spaiu liber se micoreaz n medie de n-1ori.

    Ca urmare procedurile de eliberare i alocare de blocuri vor fi complicate, daracest lucru este compensat de reducerea masiv a numrului de accese la disc. Maimult, de aici se poate face uor i evidena spaiului liber ntr-o structur arborescent.

    Fig. 5.5.3-2. Evidena spaiilor libere folosind o list nlnuit i indexat

    0

    5.5.1. Sisteme de directoare (cataloage)