Gestiunea informatiei
Se considera ca informatia, care circula intr-un sistem de calcul consta din obiecte; obiectele sunt entitatile asupra carora sunt efectuate anumite operatii. Toate operatiile pot fi clasificate in patru categorii: a) de creare; b) de modificare, c) de cautare, d) de distrugere a obiectelor.
Fiecare obiect are o reprezentare externa (in afara calculatorului) si una interna, determinata de suportul fizic. Un obiect poate fi accesat cu ajutorul functiilor de acces.
5.1. Principiile gestiunii informatiei
5.1.1. Definitii generale
Programul unui sistem utilizeaza nume pentru a desemna obiectele acestui sistem. Numele unui obiect este o informatie cu functie dubla: pe de o parte permite sa se faca distinctia obiectului dat de alte obiecte; pe de alta parte, el serveste ca si cale de acces la obiect, adica el poate fi interpretat in scopul efectuarii unor actiuni asupra obiectului. Numele respecta anumite reguli proprii limbajului de programare. Nume sunt identificatorii, care desemneaza variabilele si procedurile intr-un limbaj de programare sau fisierele intr-un limbaj de comanda. Trecerea de la identificator la obiectul propriu-zis se realizeaza prin compunerea functiilor de acces, obtinand calea de acces la un obiect. Obiectele constituite din mai multe obiecte de acelasi tip sau de tip diferit (masive, fisiere, structuri) se numesc obiecte compuse. Numele obiectului compus se afla intr-un amplasament al carui continut este un descriptor. Descriptorul, fiind reprezentarea interna a unui obiect compus, defineste tipul, numarul componentelor obiectului, o eventuala ordine a acestora, precum si amplasamentele in care se afla aceste componente. Numim obiect accesibil un obiect caruia i s-a asociat o cale de acces. Numim obiect partajat orice obiect care este accesibil mai multor utilizatori (eventual cu drepturi de acces diferentiate). Numim durata de existenta sau de viata a unui obiect perioada de timp in care acesta este accesibil. Sistemul de operare si tipul obiectului determina durata de existenta a obiectului.
5.1.2. Interpretarea numelor
Stabilirea caii de acces la un obiect prin compunerea functiilor de acces atasate se numeste legare. Se spune ca un obiect este legat atunci cand pentru el este stabilita calea de acces. Metoda substitutiei stabileste o noua functie de acces F3, o3 fiind accesat direct de la o1: o1F3o3. Metoda are avantajul ca accesul este rapid, dar si dezavantajul ca o2 este iremediabil pierdut.
Metoda inlantuirii cere ca la fiecare accesare a obiectului o3 pornind de la o1 sa fie parcursa calea o1F1o2F2o3. Nu se pierde nici o informatie, dar accesul este mai lent. Operatia de legare a externilor se numeste editare de legaturi. La acest nivel prin segment subintelegem un ansamblu de amplasamente consecutive in care se reprezinta obiecte de acelasi tip, cu aceeasi durata de existenta si cu acelasi grad de protectie. Segmentul este cea mai mica unitate care poate fi partajata si poate contine obiecte compuse - un masiv, un fisier, o stiva sau o procedura - accesibile unui proces la un anumit moment. Obiectului procedura ii sunt asociate mai multe notiuni: modul sursa, modul obiect sau modul executabil. Modulul sursa al unei proceduri este textul acesteia scris de catre programator intr-un limbaj de programare si care va fi tratat de catre compilator. Modulul obiect al procedurii este obtinut la iesirea compilatorului, deci este un produs al compilatorului. Memorie fictiva: memorie operativa ipotetica suficient de mare pentru a contine toate obiectele sistemului. Memoria fictiva este asociata sistemului, iar memoria virtuala este proprie procesului.
5.1.2.2. Structura reprezentarilor. Descriptori
Utilizarea unui descriptor pentru a accesa un obiect impune trecerea printr-un program de accesare care va interpreta acest descriptor si prezinta urmatoarele avantaje:
1) in cazul in care obiectul este pasat ca parametru unei proceduri este suficient sa fie transmis descriptorul sau adresa acestuia: este mult mai simplu sa administrezi informatii de volum fix si cunoscut,
2) descriptorul constituie un “punct de trecere” impus pentru accesarea reperata a obiectului si, ca rezultat, poate servi la implementarea unor controale ale accesarii, de masurare, etc.,
3) descriptorul asigura un acces indirect la obiectul reperat, ceea ce permite modificarea dinamica a caii de acces (substituirea unui obiect printr-un alt obiect) sau deplasarea unui obiect in memorie fara recompilarea modulului sursa,
partajarea obiectelor intre mai multi utilizatori cu drepturi sau proceduri de accesare diferite poate fi realizata construind tot atatia descriptori, cati utilizatori exista; acesti descriptori repereaza acelasi obiect si au aceleasi informatii de localizare fizica.
5.1.2.3. Contexte si medii
Vom numi lexica o multime de identificatori. Multimea obiectelor, desemnate de identificatorii lexicii la un moment de timp dat, se numeste context asociat la aceasta lexica (adica multimea obiectelor pentru care exista o cale de acces pornind de la unul dintre acesti identificatori). Starea de executie a unui context este starea multimii obiectelor, care constituie acest context. Vom numi mediu multimea formata dintr-o lexica si informatiile (programe, date, reguli de interpretare) necesare la utilizarea acestei lexici. Vom numi accesibilitate a unui identificator intr-un program regiunea programului in care acest identificator este valid, adica poate fi utilizat ca origine a unei cai de acces. Notiunea de durata de existenta sau de viata a unui obiect poate fi extinsa si pentru caile de acces, intelegand prin aceasta perioada de timp in care acestea exista (intervalul de timp care separa crearea de distrugere).
5.1.3. Legarea
Numim legare procesul construirii unei cai de acces.
Legarea obiectelor unui program poate fi efectuata la diferite momente de viata a programului in sistem:
In momentul scrierii programului. La una din fazele de translatare (asamblare sau compilare). La o faza de incarcare si editare a legaturilor. In timpul executiei; legatura este numita in acest caz dinamica.
5.1.4. Protectia
Vom intelege prin termenul protectie multimea metodelor si mecanismelor, care vizeaza specificarea regulilor de utilizare a obiectelor si garanteaza respectarea acestor reguli. Protectia este asigurata de o combinatie de dispozitive fizice si logice.
5.1.4.1. Domenii si drepturi de acces
Regulile de utilizare pot fi exprimate specificand drepturile de acces ale fiecarui obiect activ, adica multimea de operatii pe care obiectele active sunt autorizate sa le execute asupra altor obiecte.
Un domeniu defineste:
Ø o multime de obiecte accesibile sau context,
Ø pentru fiecare dintre aceste obiecte, o multime de operatii permise (drepturi),
Ø un mecanism, care asigura accesul la aceste obiecte, respectand restrictiile de mai sus.
Regulile de protectie pot fi reprezentate sub forma unui tablou bidimensional, numit matricea drepturilor.
Alte forme de reprezentare a matricei drepturilor:
1) Reprezentarea coloanelor: lista de acces
Lista de acces, asociata unui obiect este o lista (Di, <di>), unde Di este un domeniu, care contine obiectul, iar <di> este multimea drepturilor acestui domeniu asupra lui.
2) Reprezentarea liniilor: lista de drepturi si capacitati
Lista drepturilor asociata unui domeniu este o lista (Oj, <dj>) in care Oj desemneaza un obiect, care figureaza in contextul domeniului, iar <dj> este multimea drepturilor domeniului asupra lui Oj.
Capacitatea - reuneste intr-o structura unica de date, interpretata la fiecare accesare, adresa unui obiect si multimea drepturilor permise.
5.1.4.3. Problemele protectiei
1) Protectie ierarhizata
2) Subsisteme reciproc suspicioase
3) Acordarea si retragerea drepturilor de acces
5.2. Desemnarea si legarea fisierelor si intrarilor-iesirilor
5.2.1. Cai de acces la un fisier
Acest nume al descriptorului, de obicei necunoscut de utilizatori si rezervat doar pentru sistemul de operare, este numit nume intern al fisierului. Descriptorul si numele intern al fisierului sunt unice. Structurile de date, care permit construirea caii de acces la un fisier pornind de la unul din numele sale externe, sunt numite cataloage sau directorii. In afara numelor interne si externe, adesea mai este definit un nume, zis local sau temporar. Un nume local este definit intr-un mediu propriu unui utilizator si are o existenta doar temporara.
5.2.2. Desemnarea externa a fisierelor. Cataloage
5.2.2.2. Organizarea arborescenta
Exista un catalog, si numai unul singur, numit radacina, care nu are tata. Orice alt catalog are un tata, si doar unul singur. . Mediul si numele asociate catalogului radacina se numesc universale.
5.2.3. Legarea fisierelor cu fluxurile de intrare-iesire
Un flux de intrare-iesire este un obiect, care poseda toate caracteristicile unui periferic de intrare-iesire (nume, operatii de acces), dar care nu are o existenta reala. Pentru a fi efectiv utilizat in transferul informatiilor, un flux trebuie sa fie in prealabil legat, cu ajutorul unei operatii, numite asociere, cu un fisier sau periferic.
5.3. Legarea programelor si datelor
5.3.2. Functionarea unui incarcator
Un incarcator este destinat sa puna in forma absoluta un program (sau modul) obiect in adrese relative. Aceasta operatie consta in inlocuirea tuturor adreselor relative la originea modulului prin adrese absolute. Incarcatorul utilizeaza metoda substitutiei: orice adresa relativa a este inlocuita prin adresa absoluta a+originea, unde originea este adresa absoluta incepand cu care este incarcat modulul.
5.3.3. Functionarea unui editor de legaturi
Editorul de legaturi primeste la intrare un set de module obiect translatabile si construieste la iesire un modul obiect absolut. El este obligat, deci, pentru fiecare modul obiect:
1) sa determine adresa de implantare a acestuia,
2) sa indeplineasca modificarile informatiilor translatabile,
3) sa realizeze legarea referintelor externe.
Prin definitie, un modul A utilizeaza un modul B daca programul lui A face referinte la obiecte, continute in B. Deoarece graful relatiei utilizeaza poate contine circuite, editarea legaturilor foloseste un algoritm in doi pasi. Primul pas construieste planul implantarii modulelor si determina adresa absoluta a tuturor obiectelor externe; al doilea pas solutioneaza referintele la aceste obiecte.
Fiecare modul contine un tabel, numit vector de transfer, care are cate o intrare pentru o referinta externa.
5.4. Mecanisme de gestiune a obiectelor
Un segment este p multime de informatii considerata ca o unitate logica si desemnata de un nume; reprezentarea sa ocupa o multime de amplasamente adiacente (contigue). Un segment poate fi de lungime variabila. In interiorul unui segment informatiile sunt desemnate cu ajutorul unei deplasari, care este o adresa relativa in raport cu inceputul segmentului. O informatie este desemnata de un cuplu (nume de segment, deplasare), care se numeste adresa segmentata.
Segmentele sunt utilizate:
· ca unitati de sectionare logica a unui program, pentru reprezentarea, de exemplu, a diferitor proceduri, module, date legate logic (tabele, structuri),
· ca unitate de partajare intre mai multi utilizatori,
· ca unitate de protectie (consecinta a partajarii): segmentul este entitatea la care sunt atasate drepturile de acces.
Gestiunea fisierelor
6.1.1. Functiile unui sistem de gestiune a fisierelor
6.1.2. Organizarea generala a unui sistem de gestiune a fisierelor
6.2. Organizarea logica a fisierelor
6.3. Organizarea fizica a fisierelor
6.3.1. Implantare secventiala
6.3.2. Implantare non contigua
6.3.3. Alocarea memoriei secundare
4. Realizarea functiilor de acces elementar
6.4.1. Organizarea descriptorilor
6.4.2. Crearea si distrugerea
6.4.2.1. Crearea
6.4.2.2. Distrugerea
6.4.3. Deschiderea si inchiderea
6.4.3.1. Deschiderea
6.4.3.2. Inchiderea
6.5. Securitatea si protectia fisierelor
6.5.1. Despre securitate si protectie
6.5.2. Securitatea fisierelor
6.5.3. Protectia fisierelor
Gestiunea fisierelor
6.1. Notiuni generale
6.1.1. Functiile unui sistem de gestiune a fisierelor
Numim fisier o multime de informatii, formate cu scopul pastrarii si utilizarii lor in cadrul unui sistem informatic. Fisierele au de obicei o durata de viata superioara timpului de executie a unui program sau duratei unui ciclu de lucru: ca rezultat, suportul lor permanent este memoria secundara. Fisierul este un obiect: el poseda un nume, care permite desemnarea sa, are asociate functii de acces, adica operatii, care permit crearea sau distrugerea, consultarea sau modificarea informatiilor, etc. Componentele unui sistem de operare, care asigura posibilitatea pastrarii fisierelor si realizeaza functiile de acces se numeste sistem de gestionare a fisierelor (SGF). Utilizatorul unui sistem informatic organizeaza informatiile fisierelor conform necesitatilor proprii, impunandu-le o structura sau organizare, numita logica; functiile de acces sunt exprimate cu ajutorul acestei structuri. Reprezentarea informatiilor fisierelor in memoria secundara (adresa de implantare, codificarea informatiei) determina organizarea fizica a fisierelor. Reprezentarea structurii logice a fisierelor printr-o organizare fizica este sarcina SGF. Adesea un fisier este definit ca o colectie de informatii elementare de aceeasi natura, numite inregistrari sau articole.
Functiile principale, asigurate de un sistem de gestiune a fisierelor sunt:
· crearea unui fisier (definirea numelui, alocarea eventuala a spatiului),
· distrugerea unui fisier (eliberarea numelui si a spatiului, alocat fisierului),
· deschiderea unui fisier (declararea intentiei de a folosi fisierul cu ajutorul functiilor de acces si a drepturilor specificate),
· inchiderea unui fisier deschis (interzicerea oricarui acces ulterior),
diverse functii de consultare si modificare: citire, scriere, modificarea lungimii, etc.
6.1.2. Organizarea generala a unui sistem de gestiune a fisierelor
SGF realizeaza corespondenta intre organizarea logica si organizarea fizica a fisierelor. Organizarea logica, unica cunoscuta de utilizator, este determinata de consideratii de comoditate si universalitate; organizarea fizica, legata de suporturile de memorie utilizate, este determinata de considerente de economisire a spatiului si eficacitatea accesului.
6.2. Organizarea logica a fisierelor
Un fisier este o multime de inregistrari (articole). Fiecarui articol ii este asociat un numar constant de n atribute, aceleasi pentru toate articolele. Un atribut este definit printr-un nume si un domeniu de valori. Numele este pentru desemnarea atributului; doua atribute distincte au nume diferite. Domeniul de valori specifica valorile pe care le poate lua atributul.
In cadrul unei organizari secventiale inregistrarile sunt ordonate si pot fi desemnate de valori intregi consecutive.
In cadrul organizarilor cu acces direct functiile de acces sunt exprimate ca functii ale atributelor inregistrarilor; aceste atribute sunt valori ale diferitor campuri. Se numeste cheie orice camp al unei inregistrari valoarea caruia poate servi la identificarea inregistrarii. Conform organizarii adoptate, una sau mai multe campuri pot servi drept cheie.
Intr-un fisier cu cheie unica fiecare inregistrare contine o singura cheie, care identifica inregistrarea fara ambiguitate; restul inregistrarii este informatia propriu-zisa.
Relatia dintre cheie si adresa logica este materializata printr-un tabel, numit tabel al indicilor, in care ordinea cheilor este semnificativa. Atunci cand un fisier cu acces direct trebuie sa poata fi utilizat in egala masura si in acces secvential, fisierul poate fi organizat conform unei scheme mixte, numita secvential indexata, care contine un tabel al indicilor la diferite nivele la care exista adrese fizice directe.
Este cazul cand pot fi utilizate mai multe chei pentru a desemna o inregistrare. In caz general, pot exista mai multe inregistrari pentru care o cheie particulara are o valoare data. O cheie, valoarea careia determina inregistrarea in mod univoc, se numeste cheie primara; acest termen este aplicat, prin extensie, si pentru o combinatie de chei.
Se poate crea cate un indice distinct pentru fiecare camp; reprezentarea inregistrarilor va contine doar pointeri si toata informatia se contine doar in tabelele indicilor. Un fisier reprezentat in acest mod se numeste inversat.
6.3. Organizarea fizica a fisierelor
6.3.1. Implantare secventiala
In acest caz fiecare fisier ocupa o multime de blocuri consecutive in memoria secundara. Este unicul mod de implantare in cazul unei benzi magnetice: fisierele sunt aranjate consecutiv pe banda, fiecare fiind separat de urmatorul cu ajutorul unui simbol, numit sfarsit de fisier. Descriptorul unui fisier este plasat la inceputul fisierului si, adesea, repetat la sfarsitul fisierului.
6.3.2. Implantare non contigua
Daca abandonam restrictia contiguitatii implantarii, memoria secundara se transforma intr-o resursa banalizata, blocurile memoriei secundare fiind echivalente din punctul de vedere al alocarii lor. Blocurile fizice, care contin amplasamente logice consecutive sunt inlantuite intre ele; pentru aceasta inlantuire trebuie sa fie rezervat in fiecare bloc un pointer. Descriptorul contine un pointer la primul si ultimul bloc si numarul blocurilor ocupate. Ultimul bloc, care poate fi utilizat partial, trebuie sa contina indicatii despre numarul de amplasamente ocupate. Deci, este necesar un amplasament in fiecare bloc pentru aceasta informatie sau cel putin un bit (indicator) pentru marcarea ultimul bloc. Deoarece exista un pointer la ultimul bloc este simplu sa extindem un fisier, adaugand informatii la sfarsit.
6.3.3. Alocarea memoriei secundare
Problema alocarii memoriei secundare poate fi pusa in termeni similari cu cea a memoriei principale; restrictiile principale sunt:
· alocarea prin blocuri de lungime fixa,
· costul ridicat al accesului,
· caracteristicile proprii fiecarui suport: organizarea pe piste, dispozitive de citire-scriere mobile sau fixe.
4. Realizarea functiilor de acces elementar
6.4.1. Organizarea descriptorilor
Un descriptor de fisier trebuie sa contina informatii de tipuri diverse:
· informatii pentru localizarea fizica,
· informatii referitor la utilizare,
· informatii asociate protectiei si securitatii.
Informatiile, legate de utilizarea unui fisier pot fi clasificate dupa cum urmeaza:
Informatii de stare. Informatii despre continutul fisierului. Informatii despre structura logica. Informatii despre utilizarile precedente.
6.4.2. Crearea si distrugerea
6.4.2.1. Crearea
1) Specificarea interfetei
Parametrii furnizati sunt:
numele fisierului
tipul (optional)
lungimea (optional)
starea initiala (optional)
2) Operatii
· sa se creeze un descriptor pentru fisier, obtinem astfel un nume intern,
· daca numele furnizat este un nume extern, sa se creeze o intrare a acestui nume in catalogul curent,
· sa se aloce memorie fisierului; chiar daca lungimea sa este nula, un fisier contine un antet, care ocupa primul sau bloc,
· sa se initializeze descriptorul cu informatiile de localizare, lungime, protectie (lista drepturilor initiale de acces),
daca descriptorul nu se contine direct in catalog, sa se introduca o intrare in catalog cu numele intern al fisierului
3) Cazuri anormale
· nume furnizat incorect (incorect construit sau care desemneaza un fisier deja existent);
· memorie insuficienta in memoria secundara.
6.4.2.2. Distrugerea
1) Specificarea interfetei
2) Operatii
· sa se elibereze toata memoria, care a fost alocata fisierului;
· sa se elibereze memoria alocata descriptorului si numele intern sa devina reutilizabil (sau invalidat definitiv);
· suprimarea numelui extern al fisierului in catalogul, care-l include, de asemenea, daca este cazul, in tabelul numelor locale.
6.4.3. Deschiderea si inchiderea
6.4.3.1. Deschiderea
1) Specificarea interfetei
Parametrii operatiei de deschidere sunt:
· numele fisierului
· conditiile de utilizare:
§ modul de acces (citire, scriere, executie, etc.)
§ procedurile de acces (secvential, direct, sincron, etc.)
§ parametrii de transfer (tampoane, etc.)
2) Operatii
La deschidere vor fi realizate urmatoarele operatii:
· localizarea fisierului si, eventual, transferarea lui pe un suport mai rapid; cerere eventuala de montare a acestuia,
· controlarea dreptului utilizatorului de a deschide fisierul in modul specificat (consultand lista de acces),
· crearea unui descriptor local (daca fisierul nu poseda deja unul in mediul curent) si atribuirea unui nume local,
· alocarea eventuala a memoriei pentru zonele tampon de intrare-iesire; in unele cazuri programul de intrare-iesire al canalului poate fi construit in dependenta de conditiile specificate pentru transfer.
3) Cazuri anormale
· conditii de deschidere incompatibile cu drepturile utilizatorului,
· imposibilitatea deschiderii, datorata restrictiilor specificate pentru partajare (de exemplu, restrictii de tipul cititor-redactor),
· lipsa spatiului in memorie pentru descriptorul local sau zonele tampon.
6.4.3.2. Inchiderea
1) Specificarea interfetei
2) Operatii
La inchiderea unui astfel de fisier, utilizatorul are de ales intre doua posibilitati:
· sa catalogheze fisierul, atribuindu-i un nume extern; fisierul va fi in acest caz salvat.
· (implicit) sa nu faca nimic, fisierul fiind distrus in acest caz.
3) Cazuri anormale
Pentru garantarea coerentei fisierului, in timpul inchiderii nu trebuie sa aiba loc operatii de transfer(a descriptorului sau a fisierului).
6.5. Securitatea si protectia fisierelor
6.5.1. Despre securitate si protectie
Cu titlul securitate vom ingloba multimea metodelor, care sunt chemate sa garanteze executia tuturor operatiilor asupra unui fisier in conformitate cu specificatiile lor, chiar in cazul unor defecte in cursul executiei, si ca informatiile continute intr-un fisier nu sunt alterate, daca nici o operatie nu a fost executata. Prin protectie vom intelege multimea metodelor chemate sa specifice regulile de utilizare si sa garanteze respectarea lor.
6.5.2. Securitatea fisierelor
Securitatea fisierelor este asigurata, dupa cum a fost mentionat, prin redundanta informatiilor. Redundanta poate fi introdusa in doua moduri: salvarea periodica a unor informatii, pentru a putea restabili o stare anterioara in caz de distrugere, si redundanta interna, care permite reconstituirea unor informatii devenite incoerente din cauza unui accident de origine fizica sau logica, care a provocat o alterare partiala.
6.5.3. Protectia fisierelor
Protectia fisierelor foloseste principiul listelor de acces. O lista de acces, asociata unui fisier, contine drepturile fiecarui utilizator asupra fisierului, adica multimea operatiilor care ii sunt permise.