Gestiunea memoriei externe


Gestionarea datelor şi a memoriei externe

Datele constituie una dintre cele mai importante resurse ale unui sistem de calcul, în primul rând pentru cã activitatea de stocare, prelucrare şi transfer de date este activitatea care justificã existenţa sistemelor de calcul, în al doilea rând pentru cã, de cele mai multe ori, datele gestionate de o aplicaţie sunt de neînlocuit, în cazul pierderii lor.

Activitatea de gestionare a datelor sub controlul sistemului de operare constã în organizarea datelor pe suporţii de memorie externã în scopul stocãrii lor şi pentru a permite regãsirea lor, în vederea realizãrii schimbului de date cu celelalte componente ale sistemului de calcul.

Atât stocarea cât şi accesul utilizatorului la date trebuie sã se facã în mod unitar, indiferent de suportul de memorie externã folosit; în plus, sistemul de operare trebuie sã faciliteze accesul utilizatorului la date, acţionând ca un element de interfaţã între utilizator şi echipamentele care realizeazã stocarea datelor.

Fişierul reprezintã unitatea logicã de organizare a datelor pe suportul de memorie externã, în scopul realizãrii operaţiei de stocare a datelor şi de manevrare a lor între diferite dispozitive de memorie externã sau dispozitive de intrare/ieşire.
Componenta sistemului de operare care asigurã gestiunea datelor pe suporţii de memorie externã se numeşte sistemul de gestiune a fişierelor (SGF).
Sistemul de operare realizeazã o abstractizare a proprietãţilor fizice ale diferitelor echipamente periferice: dispozitive de memorie externã, pentru stocarea datelor, sau echipamente de intrare/ieşire, pentru realizarea schimbului de date între sistemul de calcul şi utilizatori. În acest scop, sistemul de operare defineşte unitãţi logice, corespunzãtoare acestor echipamente, unitãţi logice numite device-uri. Pentru fiecare tip de device, sistemul de operare furnizeazã câte un program de interfaţã numit driver.

Schimbul de date gestionat de SGF se realizeazã la nivel de fişier, prin cooperarea rutinelor SGF cu programele driver corespunzãtoare echipamentelor periferice implicate.

Funcţiile îndeplinite de SGF pentru gestionarea datelor stocate pe suporţii de memorie externã sunt:
  • funcţia de evidenţã a fişierelor, care trebuie sã ofere date despre fişiere şi despre modul de organizare a fişierelor pe suport cât şi despre drepturile de acces ale utilizatorilor la fişiere;
  • funcţia de alocare a memoriei externe, pentru stocarea fişierelor; pentru realizarea acestei funcţii, sistemul de operare trebuie sã realizeze şi o evidenţã a ocupãrii dispozitivelor de memorie externã;
  • funcţia de dezalocare a memoriei externe, prin eliberarea memoriei externe ocupate;
  • funcţia de acces la date, care trebuie sã faciliteze accesul utilizatorului la date, prin localizarea înregistrãrii dorite şi accesarea ei, conform drepturilor de acces.
Utilizând conceptul de fişier, se poate spune cã SGF este acea componentã a sistemului de operare care implementeazã operaţiile de creare, întreţinere şi exploatare a fişierelor.

Ţinând cont de funcţiile pe care trebuie sã le îndeplineascã în sistemul de calcul, SGF trebuie sã satisfacã urmãtoarele condiţii:
  • sã asigure un mecanism de lucru cu fişierele cât mai accesibil pentru utilizator;
  • sã permitã o utilizare cât mai eficientã a dispozitivelor de memorie externã;
  • sã asigure o independenţã maximã a programelor faţã de particularitãţile hardware ale sistemului de calcul;
  • sã permitã accesul concurent la fişiere;
  • sã asigure securitatea şi integritatea datelor memorate în fişiere.
  Evidenţa fişierelor

Funcţia SGF de evidenţã a fişierelor pe suporţii de memorie externã trebuie sã rezolve urmãtoarele probleme:
  • identificarea fişierului şi memorarea caracteristicilor generale ale sale;
  • organizarea unui sistem de cataloage pentru înregistrarea tuturor fişierelor de pe un dispozitiv de memorie externã.
Dintre toate dispozitivele de memorie externã, discurile magnetice necesitã cea mai complexã evidenţã a fişierelor pe care le memoreazã, pentru cã sunt dispozitive care permit stocarea simultanã a mai multor fişiere (dispozitive multifişier) şi sunt direct adresabile, deci modul de organizare a evidenţei fişierelor pe suport trebuie sã permitã accesul direct la fişiere.

Fiecare volum de disc conţine câte o tabelã cu informaţii despre fişierele memorate în volumul respectiv, tabelã numitã catalog de fişiere sau director. Accesul la fişiere se face pe baza datelor din aceastã tabelã; fiecare intrare în tabela director conţine câte un descriptor de fişier, ce cuprinde date despre fişier, şi anume:

  • identificatorul de fişier, format dintr-o pereche de valori, de forma (Nume,Indicativ), unde Nume este numele simbolic al fişierului, recunoscut de utilizator, iar Indicativ este un numãr prin care fişierul este identificat intern, de cãtre SGF;
  • informaţii de adresã care permit localizarea fişierului în disc; natura acestor informaţii diferã, în funcţie de modul de alocare a discului folosit pentru generarea fişierului;
  • informaţii pentru controlul accesului la fişier, prin care sistemul de operare realizeazã funcţia de protecţie a datelor:
  • atributele de fişier (de exemplu: fişier read-only, fişier sistem, fişier ascuns aplicaţiilor obişnuite)
  • utilizatorii şi drepturile de acces la fişier pe care le au (de exemplu: W acces în scriere, R acces în citire, A acces pentru modificare, D acces pentru ştergere)
  • drepturi de partajare a fişierului, de exemplu în cadrul unei reţele de calculatoare;
  • informaţii despre date calendaristice, de exemplu: data când a fost creat fişierul, data ultimei actualizãri, data ultimei consultãri;
  • alte informaţii despre fişier, de exemplu: modul de organizare, dupã modul de alocare a suportului (contiguã, înlãnţuitã, indexatã), tipul de fişier, dupã formatul articolului (cu format fix, variabil, nedeterminat), dupã modul de codificare a datelor (fişier binar, fişier text), dupã durata stocãrii pe suport (permanent, temporar, la termen), numãrul de accese la fişier, etc.

Modul de organizare a sistemului de fişiere în directori poate fi:

  • cu un singur nivel, definind un director unic pentru fiecare volum de disc; acest director are dimensiune fixã, deci numãrul de intrãri în director este fix, adicã numãrul maxim de fişiere care pot fi memorate în volumul de disc este limitat de aceastã valoare maximã. Pentru o astfel de organizare a sistemului de fişiere, pe un volum de disc poate fi un singur fişier cu un anumit nume (identificator);
  • cu douã niveluri, între care existã o relaţie de subordonare:

·   pe primul nivel se defineşte un director principal MFD (Master File Directory), având câte o intrare pentru fiecare utilizator; în felul acesta se asigurã protecţia datelor între utilizatori, pentru cã drepturile de acces ale unui utilizator se pot limita la fişierele din propriul sãu director;
·   pe al doilea nivel sunt definiţi directorii utilizatorilor, UFD (User File Directory), care conţin câte o intrare pentru fiecare fişier al utilizatorului respectiv. Pentru o astfel de organizare, pot exista pe un volum de disc mai multe fişiere cu acelaşi nume, cu condiţia sã aparţinã la UFD-uri diferite;

  • cu structurã de arbore, care extinde modul de organizare de mai sus la mai multe niveluri; fiecare volum conţine un director principal, numit rãdãcinã; intrãrile unui director conţine descriptori pentru toate fişierele pe care le include; un director este tot un fişier, care diferã de fişierele utilizator numai prin conţinut; rezultã cã un director poate conţine oricâţi directori sau oricâte fişiere, cu condiţia ca orice fişier sã se gãseascã într-un singur director;
  • cu structurã de graf aciclic, asemãnãtoare organizãrii în arbore de directori, dar cu deosebirea cã un fişier poate sã aparţinã la mai mulţi directori.

Evidenţa ocupãrii volumului de disc.

Pentru a realiza alocarea spaţiului din disc, sistemul de operare trebuie sã asigure o evidenţã a modului în care este ocupat fiecare volum şi a spaţiului liber din disc. În acest scop, volumul este împãrţit în unitãţi de alocare de lungime fixã, numite blocuri şi numerotate secvenţial; existã mai multe modalitãţi de realizare a evidenţei blocurilor libere şi a celor ocupate:
  • cu ajutorul tabelei de ocupare a volumului (TOV), care are atâtea poziţii câte blocuri are volumul; în fiecare poziţie se memoreazã câte un indicator, care este setat pe 0 dacã blocul nu este ocupat şi pe o valoare diferitã de 0 la ocuparea blocului;
  • cu ajutorul unei liste înlãnţuite a blocurilor libere; în directorul volumului se memoreazã un pointer la primul bloc liber de pe volum; fiecare bloc liber conţine un pointer la urmãtorul bloc liber; ultimul bloc liber conţine un indicator de sfârşit de listã; alocarea unui bloc se face cu scoaterea lui din listã (de obicei de la unul din capetele listei); eliberarea unui bloc se face cu inserarea blocului în listã; dezavantajul este cã pentru consultarea listei, de exemplu pentru a determina numãrul blocurilor libere din disc, trebuie încãrcate în memoria internã atâtea blocuri câte se consultã;
  • metodã mai eficientã este evidenţa printr-o listã înlãnţuitã şi indexatã a ocupãrii volumului; în primul bloc liber din volum se memoreazã câte adrese de blocuri libere încap; acest bloc se numeşte bloc de index; dacã numãrul blocurilor libere depãşeşte capacitatea blocului de index, pe ultima poziţie din blocul de index se memoreazã adresa unui nou bloc de index, şamd; în directorul volumului se memoreazã un pointer cãtre primul bloc de index; alocarea de blocuri libere ca şi inserarea unor blocuri eliberate în blocurile de index se realizeazã la nivelul ultimului bloc de index.
 Alocarea spaţiului pe disc

În funcţie de modalitatea de alocare a discului se determinã modul de acces la fişier şi informaţiile care se memoreazã în descriptorul de fişier, pentru a permite accesarea fişierului. Existã mai multe moduri de alocare a discului pentru generarea unui fişier:

  • alocarea este contiguã atunci când fişierul ocupã un set de adrese consecutive în disc; pentru a face posibil accesul la fişier, în descriptorul de fişier trebuiesc precizate: adresa de început a fişierului şi lungimea fişierului; în cazul utilizãrii alocãrii contigue poate sã aparã, în timp, o fragmentare a discului şi necesitatea compactãrii datelor din volum;
  • alocarea înlãnţuitã se realizeazã când blocurile fişierului alcãtuiesc o listã înlãnţuitã; acest mod de alocare permite numai accesul secvenţial la fişier; în descriptorul de fişier se memoreazã adresa primului bloc al fişierului, pentru a permite citirea fişierului şi adresa ultimului bloc, pentru a permite extinderea fişierului;
  • alocarea indexatã foloseşte un bloc suplimentar, numit bloc de index, care se genereazã odatã cu fişierul; în blocul de index se memoreazã, în ordinea alocãrii lor, adresele blocurilor fişierului; pentru fişiere mari, blocurile de index se pot înlãnţui; aceastã alocare permite accesul direct la un bloc de date din fişier; în descriptorul de fişier se memoreazã adresa primului bloc de index şi numãrul de blocuri alocate fişierului.