Sunteți pe pagina 1din 37

Proiectarea i analiza sistemelor de operare 1.

Introducere Scopul lucrrii este expunerea bazelor contemporane ale metodelor i mijloacelor de elaborare a resurselor program de sistem (inclusiv, operaii asincrone, tratarea ntreruperilor, interfeele sistemelor de operare, compromisele dintre dispozitivele tehnice i resursele program) i pregtirea cititorului pentru proiectarea i analiza sistemelor de operare (S.O.). Resursele fizice ale sistemelor de calcul contemporane posed caracteristici tehnice extraordinare i pot fi utilizate n cele mai diverse scopuri. ns aceste resurse fr compartimentul logic de sistem (software de sistem) ntmpin dificulti majore n relaiile cu mediul n care trebuie s funcioneze. Acesta este motivul principal al crerii sistemelor de operare, destinaia crora este administrarea (gestiunea, controlul) resurselor tehnice principale i asigurarea unei interfee comode (plcute, prieteneti) ntre utilizator i calculator (fig.1.1) [1].
Utilizatori Aplicaii Depanatoare Translatoare Aplete Macroprocesoare Asambloare S i s t e m u l de o p e r a r e Editoare ncrctoare

Administ rarea memoriei

Administ rarea procesoar elor

Administ rarea dispoziti velor

Gestiune a informai ei

Calculatorul gol

Fig.1.1. Relaia dintre un sistem de operare i componentele unui calculator Exist mai multe motivaii ale necesitii studierii sistemelor de operare, cele mai importante fiind urmtoarele: pentru utilizarea resurselor hardware n scopuri speciale poate fi necesar s se creeze un sistem de operare propriu sau s se introduc modificri n sistemul existent; de alegerea corect a sistemului de operare i a versiunii concrete poate depinde viabilitatea i eficacitatea sistemului de calcul;

este ideal ca utilizatorul s interacioneze cu sistemul de operare cunoscnd toate subtilitile ultimului, deoarece sistemul de operare este un intermediar ntre calculator i utilizator; multe metode i concepte, utilizate n domeniul sistemelor de operare, pot fi implementate cu succes i n alte domenii (ultima motivaie conform ordinii de expunere, dar nu i ultima ca importan). Prin noiunea sistem de operare nelegem modulele program ale unui sistem de calcul, care administreaz resursele tehnice (procesoare, memoria operativ i secundar, dispozitive de intrare/ieire, fiiere). Modulele n cauz soluioneaz situaiile de conflict, optimizeaz productivitatea sistemului, sporesc eficiena utilizrii lui. Ele sunt un fel de intermediar (interfa) ntre programele utilizatorului i componentele tehnice ale calculatorului. Alte denumiri istorice: program de administrare, monitor, supervizor. Modulele destinate unor domenii anume, cum ar fi translatoarele, depanatoarele, bibliotecile, mediile integrate (Visual) etc. nu sunt incluse n definiia unui sistem de operare, fiind considerate i ele utilizatori ai sistemului de operare. Noiuni de baz i clasificri Un calculator const dintr-un ansamblu de componente funcionale fizice i logice, care coopereaz n satisfacerea cerinelor utilizatorilor privind introducerea, stocarea, prelucrarea, transmisia i regsirea informaiilor. Aceste componente funcionale sunt structurate pe niveluri, care interacioneaz prin interfee bine definite. Suportul fizic (resurse tehnice, hardware) constituie nivelul inferior al sistemului de calcul construit pe baza unor componente electronice, magnetice, optice, mecanice etc., mai mult sau mai puin sofisticate n funcie de stadiul de dezvoltare a tehnologiilor respective. Noiuni i termeni din domeniul resurselor tehnice Pentru a trece la noiunile principale, legate de hardware, vom face cunotin mai nti cu funciile de baz ale unui calculator. Pot fi evideniate cinci funcii eseniale [2]: iniializarea (bootup), introducerea datelor, procesarea datelor, stocarea datelor i extragerea rezultatelor: Iniializarea implic testarea prilor importante ale calculatorului, rularea fiierelor de pornire i ncrcarea altor fiiere necesare, cum ar fi driverele de dispozitive; Introducerea reprezint transferul datelor dintr-o surs extern n calculator. Surse externe pot fi dischetele, tastatura, mouse-ul etc.; Procesarea se refer la manipularea datelor introduse, n scopul producerii unui rezultat (ieirea); Stocarea constituie procesul salvrii informaiilor (date sau programe) ntr-un dispozitiv de pstrare, de exemplu discul fix, pentru recuperarea ulterioar. Prin structura unui calculator vom subnelege componentele (dispozitivele) care formeaz calculatorul i legturile dintre ele. Componentele principale sunt: procesorul, memoria, unitile de stocare pe termen lung, dispozitivele de intrare-ieire (tastatura, display-ul, mouse-ul etc.). Relaiile (legturile) dintre aceste componente pot fi foarte variate, dar, istoric prima i, devenit mai apoi clasic, este structura John von Neumann, prezentat n fig.1.2.

Hard disc

Plac PC Controler HDD Port paralel

Unitatea de control (UC) Unitatea logicoaritmetic (ULA) Bus de exte nsie Unitatea central de prelucrare (UCP)

Imprimant Plac PC Controler I/O Modem Port serial

Monitor (ieire)

Plac PC Controler de afiaj

Controler de tastatur Memoria central

Tastatur (Intrare) 2

Fig.1.2. Structura unui calculator Componentele principale se conecteaz la placa de baz (motherboard) direct sau prin conectoare speciale, numite plci de extensie (daughterboards). Unitatea central de procesare procesorul (CPU) se gsete ntr-un singur circuit integrat (cip) incorpornd unitatea de comand (Control Unit, CU) i unitatea logico-aritmetic (Arithmetic Logical Unit, ALU). Unitatea de comand controleaz funcionarea unitii logico-aritmetice. Memoria este o zon de lucru de mare vitez, unde CPU stocheaz datele i programele pentru a le consulta n mod rapid. Memoria poate fi organizat n mod ierarhic, caz n care exist cel puin dou nivele de ierarhie memoria central (operativ) i memoria secundar (extern, de lung durat). Memoria operativ este electronic sub form de cipuri, de obicei cu acces aleator (RAM Random Access Memory) i trebuie s fie alimentat cu tensiune pentru a pstra datele. Pentru salvarea datelor atunci cnd se ntrerupe alimentarea sau pentru pstrare de lung durat, datele sunt stocate n memoria secundar, care le reine orict de mult timp. Dispozitivele cele mai obinuite de introducere a datelor sunt tastatura i mouse-ul, iar dispozitivul de ieire cel mai utilizat este monitorul. Procesorul i memoria operativ formeaz nucleul calculatorului, toate celelalte dispozitive fiind cunoscute sub denumirea de periferie (dispozitive periferice). Instruciunile care vor fi ndeplinite de calculator sunt stocate n memorie sub form de programe. Unitatea de comand ine evidena i interpreteaz instruciunile dintr-un program, fiind responsabil cu transmiterea de sarcini specifice diferitelor elemente ale calculatorului. CU controleaz n principal funciile I/O, de memorie i stocare, colaboreaz cu ALU, care rspunde de efectuarea operaiilor de calcul. Mai menionm noiunile: mrimea magistralelor interne i externe de date, mrimea adresei de memorie, frecvena ceasului. Mrimea magistralei interne de date - procesoarele pstreaz datele n locaii temporare, numite registre. Datele sunt transferate ntre registre, CU, ALU i alte componente ale procesorului prin intermediul unei magistrale realizate n circuitele procesorului. Numrul de linii n aceast magistral ofer o msur a cantitii de date pe care procesorul o poate transfera ntr-o singur operaie. Valoarea ei poate varia ntre 8 i 32 de bii (n scopuri speciale 64 sau 128). Mrimea magistralei externe de date msoar cte date pot fi transferate ntre procesor i dispozitivele periferice ntr-o singur operaie. Magistrala este un sistem de conectri i cablri ce distribuie datele prin calculator. Cu ct magistrala de date e mai mare, cu att performanele calculatorului se mbuntesc. Numrul de linii i aici variaz ntre 8 i 32 de bii. Mrimea adresei de memorie determin volumul de memorie care poate fi gestionat de ctre calculator fr eforturi speciale. Un ceas electronic asigur coordonarea corespunztoare a numeroaselor elemente ale calculatorului. Componentele calculatoarelor cu performane superioare pot opera la frecvene de ceas mai mari.

Frecvena ceasului indic viteza de operare a CPU. Ea se msoar n milioane de impulsuri de ceas pe secund, adic n megahertzi (MHz). Noiuni i termeni din domeniul sistemelor de operare Un sistem de operare este un ansamblu de programe de control i de serviciu care ghideaz un calculator n executarea sarcinilor sale i asist programele de aplicaie i utilizatorul prin intermediul anumitor funciuni. Natura funciilor i modul n care acestea sunt realizate determin atributele care caracterizeaz un sistem de operare: timpul de rspuns, simultaneitatea utilizrii, eficiena, partajarea i protecia, generalitatea, flexibilitatea, extensibilitatea, fiabilitatea i disponibilitatea, transparena i vizibilitatea [3]. Timpul de rspuns exprim durata intervalului delimitat de lansarea unei cereri de serviciu i achitarea acesteia de ctre sistem. Are dou componente: timpul de ateptare pentru ca cererea respectiv s fie luat n consideraie i timpul de execuie a acestei cereri. Simultaneitatea utilizrii msoar gradul n care un sistem poate s execute n acelai timp mai multe lucrri. Eficiena msoar proprietatea unui sistem de a folosi n mod optim resursele de care dispune. Partajarea i protecia caracterizeaz nivelul la care utilizatorii au posibilitatea s utilizeze n comun informaia prezent n sistem i nivelul la care pot s comunice ntre ei, n deplin siguran (n sensul evitrii accesului neautorizat i/sau alterrii intenionate sau accidentale a informaiei).
User Task Creat de utilizator sau de mediul integrat Creat de sistem Pas de task . . . . . Pas de task

Proces Componente standard ale sistemului de operare Regulator Planificator Sistem de fiiere ... Componente definite de utilizator Program Main Subprogram A Subprogram B ... Spaiu de adresare (procesCPU)

. . . . .

Proces Regulator I/O Planificator I/O ... Sistem de fiiere Program de iniiere I/O Bufere date ... Spaiu de adresare (proces I/O)

Fig.1.3. Relaia dintre utilizator, sarcin, pas de task, proces i spaiu de adrese Generalitatea, flexibilitatea, extensibilitatea msoar gradul n care un sistem poate fi folositor i adaptabil unui context specific (exprimat prin nivelul de limitare impus programelor utilizatorului), precum i gradul n care se pot include n sistem noi componente hardware i software fr eforturi de proiectare i programare suplimentare. Fiabilitatea i disponibilitatea exprim proprietatea unui sistem de a cdea foarte rar n pan i de a evita goluri n funcionare din cauza defectrii uneia sau mai multor componente ale sale.

Transparena i vizibilitatea exprim pe de o parte proprietatea unui sistem de a face invizibil utilizatorului ceea ce se afl sub interfaa de utilizare care i se ofer i, pe de alt parte, capacitatea de a permite utilizatorilor si s obin anumite informaii despre modul cum el lucreaz, informaii de care n mod teoretic ei nu au nevoie pentru a beneficia de o utilizare complet, ns care ar putea s-i ajute la obinerea unei utilizri mai eficiente [3]. Resursele program reprezint seturi de programe i date utilizate pentru soluionarea anumitor probleme. Programul este transcrierea ntr-un limbaj de programare a unui algoritm, altfel programul este o secven de instruciuni sau simplu cod. Utilizatorul (user) este oricare doritor s ndeplineasc anumite lucrri la calculator. Prin lucrare (sarcin, task) vom subnelege un set de aciuni, necesare pentru ndeplinirea unui lucru anume. Sarcina poate conine mai muli pai. Pai de task sunt uniti de lucru, care vor fi ndeplinite consecutiv, de exemplu trei pai compilare, ncrcare i executare. Primind un task de la utilizator, sistemul de operare poate crea cteva procese. Pn la tehnologia Win32 prin proces se considerau calculele care puteau fi efectuate paralel cu alte calcule. Relaia dintre un user, task, proces i spaiu de adrese este prezentat n fig.1.3. Procesul mai poate fi definit drept traiectoria procesorului, atunci cnd ultimul ndeplinete un set oarecare de programe. Ansamblul programelor i datelor accesate n timpul procesului, formeaz spaiul de adrese. n fig.1.3 sunt aduse dou exemple de spaii de adrese unul pentru procesul de intrare/ieire (input/output, I/O) i altul pentru procesul unitii centrale. Una din destinaiile sistemului de operare este de a asigura proiectarea spaiului de adrese a unui proces n memoria fizic. Pentru rezolvarea acestei probleme sunt utilizate att resurse tehnice (sisteme cu organizarea memoriei pe segmente sau pe pagini), ct i resurse program speciale. Multiprogramarea este un termen utilizat n cazul unui sistem n care pot exista simultan cteva procese n stare de execuie. Un proces se consider n stare de execuie, dac calculele au nceput, dar la momentul considerat nu au fost terminate sau ntrerupte (terminare din cauza unei erori sau din alte motive). Nu este obligatoriu ca un proces care se afl n starea de execuie s fie i executat de procesor la un moment dat. Resursele hardware de protecie sunt utilizate cel mai des pentru controlul accesrii memoriei. Resursele hardware de ntrerupere permit sistemului de operare s coordoneze operaiile care au loc n acelai timp; pot fi utilizate i pentru a schimba ordinea de execuie a programelor. ntreruperea este un mecanism care impune procesorul s observe anumite evenimente. Pot exista mecanisme care permit s nu se acorde atenie unei anume ntreruperi ntrerupere mascat. Tipuri de sisteme de operare, obiective i funcii Valorile concrete ale atributelor sistemelor de operare i combinaii ale acestora determin diverse tipuri de sisteme i restriciile de implementare. Conform acestor atribute pot fi evideniate sisteme de operare [3]: secveniale cu multiprogramare cu prelucrare multipl n timp real, etc. Majoritatea sistemelor de operare recunosc programul ca cea mai mic unitate de prelucrare, creia i se atribuie o identitate i pe care un utilizator o poate prezenta spre execuie. Unele sisteme permit ca un program s fie considerat ca un ansamblu de sarcini ale cror execuii (inclusiv n paralel) contribuie la atingerea obiectivului urmrit de acest program. Un sistem secvenial (tratare pe loturi, batch processing, traitement par lots) execut la un moment dat un singur program, care trebuie terminat nainte de a lua un alt program n consideraie. Sistemele cu multiprogramare accept la un moment dat mai multe programe n memoria central, acestea aflndu-se n diverse stadii de execuie. Un sistem de calcul cu prelucrare multipl dispune de mai multe procesoare, care pot s execute simultan unul sau mai multe programe. Utilizarea efectiv a prelucrrii multiple necesit atributul de multiprogramare. Execuia simultan a unui singur program de ctre mai multe uniti presupune existena posibilitii de a descompune acest program n mai multe sarcini (multitasking) sau mai multe procese.

Sistemele n timp real sunt dedicate, de obicei, funcionrii n cadrul unor sisteme de comand i este necesar ca valorile anumitor atribute s se ncadreze n limite destul de restrictive, dictate de dinamica proceselor comandate. Tipurile de sisteme de operare enumerate mai sus nu sunt nici disjuncte i nici exhaustive. Majoritatea sistemelor existente pot fi ncadrate n mai multe clase, atunci cnd se face o analiz prin prisma obiectivelor pe care le urmresc. La capitolul obiective vom aminti n primul rnd maximizarea eficienei sistemului de calcul i a satisfaciei utilizatorilor. Tot la obiective poate fi trecut i cererea de minimizare a posibilitii de apariie a unor erori i de maximizare a transparenei sistemului de operare, garantarea securitii datelor, optimizarea controlului comunicaiilor n cazul unei reele de calculatoare. Un obiectiv foarte important este necesitatea de minimizare a efortului concepie-realizare a sistemului, ultim n enumerare, dar poate cel mai important pentru specialiti. Toate aceste obiective sunt consecine ale dezideratului principal: un sistem de operare este destinat s administreze resursele sistemului de calcul i anume memoria, procesorul (procesoarele), dispozitivele i informaia. Un sistem de operare este obligat: s pstreze informaia despre starea fiecrei resurse s ia decizia crui proces s i se aloce resursa, n ce cantitate i cnd s aloce resursa i la momentul respectiv s o retrag. Exemple de sisteme de operare Exemplele care urmeaz [6] vor ilustra diversitatea funciilor ndeplinite de ctre un sistem de operare, fr pretenii de exhaustivitate. Pentru fiecare exemplu vom indica funciile puse n arja sistemului de operare i caracteristicile principale ale acestuia. Cazul calculatoarelor personale Configuraia cea mai simpl a unui calculator personal (PC) include o unitate central, o memorie principal, un display, o tastatur i un mouse. Aceast configuraie de obicei este completat de o memorie secundar i o imprimant (fig.1.4).
Memoria secundar Imprimant a

Procesorul

Memoria principal

Display

Tastatura

Mouse

Fig.1.4. Configuraia unui calculator personal

Utilizatorul unui atare sistem va cere minimum urmtoarele dou tipuri de servicii: identificarea i crearea unor fiiere sau mulimi structurate de informaii; stocarea acestor fiiere n memoria secundar; transferarea informaiilor ntre fiiere i dispozitivele de intrare/ieire; executarea unor programe existente n PC sau introduse sub form de fiiere; introducerea datelor necesare executrii programului (de la tastatur, din fiier sau de la alte surse); listarea rezultatelor la display, imprimant sau copierea lor ntr-un fiier. Sistemul de operare va acorda aceste servicii prin intermediul unui limbaj special, numit limbaj de comand, introducndu-se de la tastatur instruciuni de forma <aciune> <parametri>, sau utiliznd

mouse-ul i o interfa grafic a utilizatorului (GUI - graphical user interface), acionrile mouse-lui fiind imediat interpretate de sistem. Iat dou exemple de secvene tipice de activiti n cazul unui PC: elaborarea unui program; introducerea programului cu ajutorul tastaturii i a unui editor de texte; executarea programului introducndu-se datele necesare de la tastatur i extrgnd rezultatele la display sau imprimant; modificarea programului, dac rezultatele nu sunt satisfctoare i repetarea execuiei; perfectarea versiunii finale a programului, inclusiv documentarea la necesitate a acestuia; exploatarea unui program; cererea de executare a unui program deja existent. Vor fi pregtite n prealabil date de intrare sau vor fi introduse in mod interactiv aceste date la cerere cu ajutorul tastaturii; afiarea rezultatelor pe ecran, listarea la imprimant sau copierea lor ntr-un fiier pentru o utilizare ulterioar. ntr-un atare sistem funcia partajare a resurselor este lips, or PC este folosit de un singur utilizator care are controlul total asupra acestuia. Alocarea resurselor este legat de gestionarea memoriei i administrarea fiierelor. Funciile principale vizibile ale sistemului de operare constau n administrarea fiierelor, realizarea operaiilor de intrare/ieire i interpretarea comenzilor provenite de la interfaa utilizator-sistem de operare. Pentru acest tip de sisteme cele mai importante caracteristice sunt: fiabilitatea; eficacitatea; simplitatea utilizrii; facilitatea extensibilitii prin adugarea unor utilite noi sau adaptarea la periferice noi. Ultimele dou aspecte pun n eviden importana interfeelor oferite de sistem (limbajul de comand sau GUI). Comanda unor procese industriale La o uzin chimic sunt utilizate doua produse iniiale A i B pentru sinteza produsului C conform fig.1.5. Procesul de fabricaie este comandat de un calculator care ndeplinete urmtoarele funcii: Reglare. Pentru o derulare bun a procesului de fabricaie parametrii de funcionare (temperatura, presiunea, concentraia, etc.) trebuie s se afle ntr-o plaj de valori predefinite. Pentru aceasta va fi acionat debitul de intrare a materiilor prime A sau B. Parametrii de funcionare sunt msurai cu ajutorul unor captoare. Calculatorul preia aceste msurri i, n dependen de algoritmul de comand, acioneaz robinetele de intrare. nregistrare. Rezultatele msurrilor sunt periodic nregistrate; valorile lor sunt afiate pe un tablou de bord i recopiate ntr-un fiier ("jurnal de bord") n scopul unor prelucrri ulterioare (date statistice). Securitate. n cazul n care unul dintre parametrii msurai depete o valoare critic predefinit reactorul trebuie oprit imediat.
Reactor A B Semnale de msur Semnale de comand nregistrri Calculator Robinete Captoare

Acest mod de funcionare introduce unele restricii, descrise mai jos. Msurrile sunt fcute periodic; fie T valoarea intervalului de timp dintre dou msurri consecutive (perioada de eantionare), iar t - timpul total de prelucrare a datelor de ctre calculator (msurarea propriu-zis a semnalelor observate, nregistrarea, calcularea semnalelor de comand i comanda robinetelor). Sistemul va funciona doar n cazul respectrii relaiei de restricionare t T. Securitatea sistemului are prioritate maxim. Depirea unor valori critice trebuie s fie detectat n orice moment i tratarea acestor accidente va ntrerupe toate operaiile n curs de execuie. Funciile principale ale sistemului de operare sunt: acionarea organelor externe (citirea semnalelor captoarelor, comanda robinetelor); evidena timpului real (declanarea periodic a ciclului de calculare a semnalelor de comand); reacia la evenimentele exterioare (oprire de urgen); gestiunea informaiilor (pstrarea i ntreinerea fiierului jurnalului de bord). Existena unor restricii stricte a duratei de prelucrare a informaiilor, noiunea de tratare prioritar, conectarea la nite dispozitive exterioare de msurare i acionare, sunt caracteristice aplicaiilor informatice "n timp real". Pot fi menionate i alte domenii cu comand n timp real: centralele telefonice, comanda aparatelor de zbor, robotica, monitoringul medical, etc. n cazul acestor sisteme caracteristica principal este fiabilitatea, or rezultatele unei funcionri neadecvate pot fi catastrofale. Sistemul trebuie s garanteze un serviciu minim n cazul unor cderi n pan a dispozitivelor tehnice, unor evenimente accidentale sau erori umane. Sisteme tranzacionale Caracteristicile principale ale sistemelor cu tranzacii sau tranzacionale sunt urmtoarele: sistemul gestioneaz un set de informaii sau baze de date, care pot atinge volume importante; asupra acestor informaii pot fi executate un anumit numr de operaii predefinite, sau tranzacii, adesea interactive; sistemul este dotat cu un mare numr de puncte de acces i un mare numr de tranzacii se pot derula simultan. Ca exemplu pot fi menionate sistemele de rezervare a biletelor de tren sau avion, de gestionare a conturilor bancare, de arhivare i consultare a documentelor. Restriciile sunt n primul rnd legate de integritatea i coerena intern a informaiilor, care formeaz bazele de date. Aceste restricii depind, evident de aplicaie. De exemplu, numrul de locuri rezervate ntr-un avion nu poate depi numrul locurilor disponibile, un loc distinct poate fi atribuit unei singure persoane, etc. Calitile obligatorii ale unui sistem tranzacional sunt disponibilitatea i fiabilitatea; pentru unele sisteme poate fi important i tolerana la defeciuni. O caracteristic important ale sistemelor tranzacionale este multitudinea activitilor paralele, iar n multe cazuri i repartizarea geografic a componentelor. Sisteme n timp partajat Destinaia principal a unor astfel de sisteme este furnizarea serviciilor necesare unei mulimi de utilizatori, fiecare dintre ei beneficiind: de servicii echivalente serviciilor unui calculator individual; de servicii legate de existena unei comuniti de utilizatori: partajarea informaiilor, comunicaii ntre utilizatori. Problemele care apar datorit conceptului de partajare a timpului sunt o combinaie a problemelor existente n cazul unui calculator individual cu cele din sistemele tranzacionale i pot fi clasificate dup cum urmeaz: definirea mainii virtuale oferite fiecrui utilizator; partajarea i alocarea resurselor fizice comune: procesoare, memorii, organe de comunicaie; gestionarea informaiilor partajate i a comunicaiilor.
8

Fig.1.5. Schema unui proces chimic

Caracteristicile obligatorii unui atare sistem combin n egal msur calitile unui sistem de operare al unui calculator individual i al unui sistem tranzacional: disponibilitatea, fiabilitatea, securitatea, exploatarea optim a caracteristicilor resurselor fizice, calitatea interfeei i serviciilor utilizatorului, facilitatea adaptrii i extensibilitii. Sistemul de operare i procesele Noiunea de proces, introdus mai sus, este asociat conceptului de lucrare (pentru a lua n considerare aspectele dinamice) i poate fi definit altfel ca o suit temporal de execuii de instruciuni, fiind o entitate de baz n descrierea sau analiza funcionrii unui sistem. Evoluia n timp a unui proces presupune un consum de resurse, dictat de natura i complexitatea instruciunilor de executat. Orice utilizare a unei resurse este asociat, la un moment dat, unui proces i procesul respectiv i asum rspunderea utilizrii acestei resurse. n particular, rezult c ori de cte ori se execut procedurile de sistem, resursele pe care le utilizeaz acesta intr n administrarea procesului (fie el i al utilizatorului), care a cerut serviciul. Resursele (procesorul, memoria central, informaia, dispozitivele) alocate unui proces variaz n timp (dinamica procesului). Anterior un sistem de operare a fost definit ca un set de programe destinat s administreze resursele. Care sunt relaiile dintre programele sistemului de operare? Atunci cnd un proces este creat, care este ordinea de utilizare a unui program anume? Pentru a rspunde la aceste ntrebri (i la altele) vom face cunotin cu ciclul de via a unui proces. n fig.1.6 sunt prezentate trei procese (trei sarcini ale utilizatorilor) existente ntr-un sistem cu multiprogramare.
Procesul 1 Procesul 2 Procesul 3 Sistemul de operare

Fig.1.6. Trei procese ntr-un sistem cu multiprogramare Ciclul de via a unui proces poate fi reprezentat printr-un set de stri ale procesului i trecerea de la o stare la alta. Vom evidenia trei stri elementare ale unui proces: proces ales (sau exe) procesului i sa alocat un procesor, este n curs de execuie, proces blocat procesul ateapt s se produc un anumit eveniment, a crui apariie este indispensabil, proces eligibil procesul are la dispoziie toate resursele necesare lips fiind doar procesorul, adic este pregtit s se execute din momentul alocrii unitii centrale (fig.1.7).

Procesului i s-a alocat procesorul

Ales

Procesul ateapt terminarea operaiei I/O

Operaia de I/O s-a

terminat

Eligibil

Blocat

Fig.1.7. Ciclul de via a unui proces Ciclul de via a unui proces, prezentat n fig.1.7 sugereaz existena venic a proceselor. Mai aproape de realitate un proces este reprezentat n fig.1.8. Aici norii semnific componentele sistemului

de operare, care trateaz evenimentele respective, iar pentru modelarea procesului real au fost adugate trei stri suplimentare: prezentare utilizatorul prezint sistemului sarcina, sistemul trebuie s reacioneze la cererea utilizatorului, pstrare sarcina este reprezentat n form intern, dar resursele nu sunt nc alocate, terminare calculele corespunztoare procesului au luat sfrit, toate resursele alocate procesului pot fi eliberate i ntoarse sistemului. Sistemul de operare este acea component, care va ghida procesul prin toate aceste stri. n fig.1.8 este prezentat una din variantele posibile ale ciclului de via a procesului. Pot exista abateri de la acest model att n sensul complexitii, ct i n direcie opus. Oricum, acest model este foarte util pentru rezolvarea problemei proiectrii sistemelor de operare. Main ierarhic i main extins Astzi este greu de nchipuit c doar cu cteva decenii n urm un utilizator era nevoit s programeze n zerouri i uniti, utiliznd un calculator fr hainele program (maina goal). Chiar i specialitii nu prea iubesc s scrie programe ntr-un limbaj de asamblare sau (i mai evident) utiliznd doar instruciuni din setul, garantat de hardware. Un program elaborat de un specialist poate fi de forma [1]: 1 Transfer C, B Stabilete C=B 2 Gsete zona 80, X S se gseasc 80 de octei de memorie liberi i s se plaseze adresa zonei n X 3 Introdu date n X S se citeasc datele indicate n zona X 4 Compar X(2), /* Coincide coninutul primilor 2 octei ai zonei X cu /*? 5 Dac da, stop Dac coincid, salt la STOP

Administrarea memoriei Expirarea intervalului de timp Starea procesorulu i Administrarea dispozitivelor Eliberar ea memoriei Eliberarea dispozitivelor Ales Administrarea procesoarelor Eliberar ea procesorulu i Terminare Cerere de citire informaii Eligibil Blocat Gestiunea informaiei Administrarea resurselor Administrarea procesoarelor Toate dispozitivele sunt MO este accesibil? alocate? Gestiunea informaiei Administrarea memoriei Administrarea dispozitivelor Administrarea procesoarelor Iniiere I/O Administrarea dispozitivelor Creare proces I/O Semnal Administrarea procesoarelor 10

Administrarea procesoarelor Administrarea procesoarelor

Prezentare

Pstrare

Fig.1.8. Schimbarea strilor unui proces i componentele SO responsabile de aceste schimbri Instruciunile 1, 4 i 5 sunt instruciuni standard n multe calculatoare contemporane. ns execuia corect i eficient a instruciunilor 2 i 3 poate necesita ndeplinirea a zeci, sute sau chiar mii de comenzi din setul standard, deoarece aceste instruciuni cer interaciunea cu unele resurse cheie, cum ar fi memoria operativ i dispozitivele de intrare-ieire. Sistemul de operare asigur instruciuni pentru realizarea unor astfel de funcii de administrare a resurselor. Din aceast cauz, instruciunile 2 i 3 sunt instruciuni ale mainii extinse, ele neavnd echivaleni n setul de instruciuni hardware. Sistemul de operare completeaz setul standard, realizat hardware, cu instruciuni de acest gen. Setul de instruciuni realizat hardware mpreun cu instruciunile suplimentare ale sistemului de operare formeaz sistemul de comenzi al mainii extinse. Grafic conceptul de main extins poate fi reprezentat conform fig.1.9. Nucleul sistemului de operare va fi executat pe maina goal, iar programele utilizatorului pe maina extins. S facem cunotin acum cu modul n care sunt organizate ntr-un tot ntreg componentele sistemelor de operare. Primele sisteme de operare erau formate dintr-un singur program mare. Dar, odat cu sporirea complexitii sistemelor, aceast abordare liniar conducea la dificulti serioase i s-a propus s se utilizeze i n acest domeniu conceptul de main extins. Acest concept, n cazul sistemelor de operare, poate fi utilizat n dou nivele (fig.1.10.) i conduce la noiunea de main ierarhic [4]: Primul nivel - funciile cheie, utilizate de majoritatea modulelor de sistem, pot fi realizate n cadrul unei maini extinse interne i
Procesul 1 Maina extins Procesul 2

Componente ale S.O. Maina goal Sistemul de operare Procesul A Procesul 1 Procesul 4 Sistemul de operare Procesul B Programele utilizatorului (procese) Procesul 2 Procesul 3

Maina extins Sistemul de extern operare Maina extins intern Fig.1.9. Maina extins Maina goal

Programele utilizatorului (procese)

Nivelul doi - unele module pot fi executate n cadrul unei maini extinse externe, analogic proceselor Funcii cheie ale utilizatorului. S.O.
Procesul 4 Alte funcii ale S.O. Procesul 3 11

Fig.1.10. Ilustrarea conceptului de main ierarhic

n aceast abordare ierarhic apare imediat problema alegerii corecte a nivelului de ierarhie pentru fiecare modul al sistemului de operare (n maina extins intern, extern sau va fi prezent n calitate de proces extern). Pot fi evideniate subnivele ale celor dou maini extinse, iar interaciunea proceselor sistemului de operare ne conduce la necesitatea introducerii mai multor straturi ale proceselor. Modulele sistemului, plasate n cadrul mainii extinse, spre deosebire de modulele care aparin
12

straturilor proceselor, formeaz nucleul sistemului de operare. Concepia mainii ierarhice este pe larg utilizat n proiectarea programelor mari utiliznd metodele, cunoscute sub denumirea programare modular sau programare structural. Nu exist reguli stricte n privina numrului de nivele, amplasrii modulelor pe nivele, componena nucleului. De obicei, nucleul conine doar cele mai necesare i evidente funcii, celelalte, atunci cnd este posibil, vor fi prezente ca procese de sistem separate. O detalizare a conceptului de main ierarhic este adus n fig.1.11. Procesele (incluse n dreptunghiuri) se adreseaz ctre funciile nucleului i utilizeaz mpreun toate resursele sistemului. Unele procese genereaz sau comand alte procese (grania dintre ele este prezentat de liniile n zigzag, care separ diferite straturi ale proceselor). ntr-o realizare strict ierarhic modulele, situate ntr-un nivel oarecare, pot accesa (se pot adresa) numai resursele nivelelor inferioare.
Taskuri

Planificator taskuri

Procesul 1 I/O de sistem

Procesul 2 Procesul 3 Procese de I/O care deservesc procesul 3 al utilizatorului Stratul 2

Proces creat de utilizator Proces de I/O

Nivelul 5 Stratul 1 Nivelul 4 Nivelul 3 Nivelul 2 Nivelul 1 Maina goal Administrare procesoare (P,V), planificare procese
Administrare memorie Administrare procesoare (nivel superior, mesaje, creare i distrugere procese)

Stratul 0

Administrare dispozitive Administrare informaie

13

La nivelul 1 (nivelul cel mai inferior) sunt situate funciile de care au nevoie toate componentele administrrii resurselor. Una dintre acestea este funcia care urmrete repartizarea resurselor, funcie, care la rndul su, necesit anumite mijloace de sincronizare. Aceste operaii elementare sunt numite Poperator (ocuparea resursei sau cererea de acces) i V-operator (eliberarea resursei). Sincronizarea se face printr-o tehnic de programare, numit semafor. Pot fi semafoare simple (binare) sau polivalente (care pot avea mai multe valori). Fiecrei resurse i este ataat un semafor. Atunci cnd n sistem apare o cerere pentru o resurs oarecare, pentru testarea semaforului respectiv este utilizat P-operatorul; dac semaforul este pe verde (resursa este liber), P-operatorul l trece pe rou (l nchide) i returneaz comanda. n caz contrar, procesul care a generat cererea este trecut n stare de ateptare, pentru ca mai trziu, atunci cnd V-operatorul va elibera resursa i va trece semaforul pe verde, s acceseze resursa. Amplasarea funciilor elementare pe nivele poate fi fcut n felul urmtor: Nivelul 1. Administrarea procesoarelor (nivelul inferior) P-operatorii de sincronizare V-operatorii de sincronizare planificarea proceselor (aparatul de multiprogramare) Nivelul 2. Administrarea memoriei alocarea memoriei eliberarea memoriei Nivelul 3. Administrarea procesoarelor (nivelul superior) crearea i distrugerea unui proces transmiterea i recepionarea mesajelor ntre procese lansarea unui proces oprirea unui proces Nivelul 4. Administrarea dispozitivelor urmrirea strilor tuturor dispozitivelor periferice planificarea intrrilor/ieirilor iniierea operaiilor de intrare/ieire Nivelul 5. Administrarea informaiei crearea i distrugerea unui fiier deschiderea i nchiderea unui fiier citirea i nscrierea unui fiier. Nucleul sistemului de operare este format de subprogramele, care asist execuia proceselor. Pentru a decide care funcii pot fi realizate n form de procese separate este necesar s se stabileasc funciile care pot fi executate independent i n mod paralel cu procesele utilizatorului (nu se va ctiga nimic evideniind n procese separate funcii care trebuie s fie ndeplinite secvenial). Sistemele avansate permit crearea oricrui numr de procese, ceea ce este foarte comod pentru organizarea calculelor paralele sau a regimurilor de timp real. n cadrul tehnologiilor noi (Win32, de exemplu) noiunea de proces a fost substanial modificat, introducndu-se alte concepte (thread-uri), care exploateaz ntr-un mod mai eficient ideile multitasking-ului i multiprogramrii. Alte puncte de vedere asupra sistemelor de operare n compartimentele precedente au fost tratate sistemele de operare din diferite puncte de vedere, cum ar fi SO i procesele, SO i maina extins sau SO i maina ierarhic. Exist i alte puncte de vedere asupra sistemelor de operare pe care un specialist ar trebui s le cunoasc. Abordare funcional Pentru un utilizator obinuit, convins c un calculator este doar un instrument care l ajut n rezolvarea unor probleme din domeniul su de activitate, noiuni cum ar fi administrarea memoriei cu paginaie sau driverele dispozitivelor nu semnific prea multe. Destinaia principal a unui sistem de operare pentru aceast categorie de utilizatori este punerea la dispoziie a unui set de programe care ar ajuta n formularea i rezolvarea problemelor concrete. Abordarea sistemelor de operare din acest punct de

Fig.1.11. Structura ierarhic a sistemului de operare

14

vedere (abordare funcional) poate conduce la confundarea lor cu unele programe, utile i foarte importante (translatoare, biblioteci, medii integrate, etc.). Pentru a evita posibilitatea apariiei unei astfel de probleme aceste programe, de obicei, nu sunt considerate componente ale sistemului de operare. Abordare din punctul de vedere al interfeei cu utilizatorul Interfaa sistemului de operare cu utilizatorul prezint un interes aparte. Progresul n acest domeniu este spectaculos, dac vom lua n consideraie c n primele sisteme utilizatorul era obligat s indice n mod explicit i manual fiecare pas, orict de nesemnificativ ar fi prut. Formularea pailor cu ajutorul Job Control Language (JCL) nu a schimbat substanial situaia. Acest limbaj, nefiind agreat de utilizatorii simpli, care l-au denumit limbaj psresc, aa i nu a fost acceptat n cunotin de cauz de ctre acetia. Conform JCL utilizatorul trebuie s ncorporeze programul propriu ntr-un set de instruciuni, care indicau nceputul, sfritul programului i al datelor de intrare, paii i coninutul concret al pailor. JCL n principiu era un metalimbaj de programare (programare la nivel macro). Pentru mijloacele tehnice de la acea perioad JCL a sporit substanial eficiena sistemelor de calcul, dei au existat multe inconveniente, principala fiind lipsa posibilitii lucrului interactiv. Microprocesoarele i memoriile anilor 70 au pus problema lansrii pe pia a calculatoarelor personale (PC) cu toate consecinele respective. Una din consecine este i interfaa utilizator-calculator, sistemul de operare devenind pn la urm responsabil de aceasta. Interfaa grafica a utilizatorului (Graphical User Interface - GUI) a aprut mai nti ca un complement al sistemului de operare (pentru MS DOS Windows 1, Windows 2 sau chiar Windows 3, de exemplu), pentru ca mai apoi s fie integrat n cadrul sistemului (Windows 95, Windows NT, etc.). Un sistem de operare nu este, n principiu, obligat s posede o interfa sofisticat, totul este determinat de baza tehnic utilizat i de necesitile concrete. Oricum, un specialist trebuie s disting aceste dou noiuni sistemul de operare i interfaa utilizatorului. Evoluia sistemelor de operare O analiz cronologic a dezvoltrii sistemelor de operare este greu de realizat, deoarece multe din principiile foarte importante au fost realizate pentru prima dat cu mult nainte de a deveni unanim acceptate. De exemplu, conceptele de memorie paginat i memorie virtual au fost realizate pentru prima dat n 1959 n cadrul sistemului Atlas [5], fiind utilizate la mijlocul anilor 60 n unele sisteme cu destinaie special, pentru ca n 1972 s fie preluate de firma IBM n cadrul familiei de calculatoare mari. Primele sisteme erau caracterizate prin prelucrarea secvenial a taskurilor. Timpul de execuie a programelor era relativ mare, instrumentele de depanare primitive, fiecare programator i ncrca n mod individual programul (pachetul de cartele perforate), apsa butoane, controla coninutul locaiunilor de memorie, etc. (1950 1956). Sporirea vitezei de calcul, dar i a preului calculatoarelor cerea o utilizare mai eficient a timpului de calculator. Nu putea fi tolerat situaia ca un calculator s nu fac nimic, atunci cnd utilizatorul i ncarc n mod manual programul. Au fost propuse programe de monitorizare (monitoare), care treceau de la o lucrare la alta n mod automat, utilizatorul fiind responsabil de organizarea corect a programelor n cadrul unui pachet primele ncercri de prelucrare pe loturi (1956 1959). Odat cu creterea complexitii calculatoarelor, ndeosebi n ceea ce consta administrarea dispozitivelor periferice, au fost propuse sisteme supervizoare (executive), care se aflau n memoria calculatorului n mod constant i acordau utilizatorilor servicii n gestiunea operaiilor de intrare/ieire (1959 1963). n aceste sisteme mai erau realizate i o serie de faciliti noi, cum ar fi controlul unor posibile ncercri din partea programului de a nclca restriciile existente n sistem, culegerea informaiilor de eviden, etc. Au urmat apoi sistemele cu multiprogramare, menite la nceput s rezolve problema concordrii vitezei de calcul a unitii centrale i a perifericelor. Drept consecin, au aprut o mulime de limbaje de control a lucrrilor, a fost realizat o standardizare substanial a operaiilor de intrare-ieire. Dup 1965 au aprut primele sisteme cu partajare a timpului (time sharing), au fost propuse sisteme sofisticate de administrare a informaiei (sisteme de gestiune a datelor sau sisteme de fiiere, File

15

Systems). Principiul time sharing oferea posibilitatea lucrului interactiv a mai multor utilizatori pe un singur calculator, fiecrui utilizator n mod ciclic acordndu-i-se un interval anume de timp (cuant de timp) i, datorit vitezei mari de calcul a unitii centrale, crendu-i-se impresia posesiei tuturor resurselor calculatorului. Memoria virtual i mainile virtuale sunt nite principii care nici pn astzi nu au fost exploatate pn la capt. Progresele ultimilor ani n domeniul resurselor tehnice au permis implementarea acestor principii nu numai n cadrul sistemelor de calcul mari, ci i pentru calculatoarele personale. Specificaiile sistemelor de operare au fost n mare msur standardizate, diversitatea SO devine tot mai mic, muli specialiti exprimndu-i ngrijorarea de o posibil monopolizare a domeniului n viitorul apropiat. Evident, aceasta nu poate s sugereze nici ntr-un caz ideea c studierea principiilor de baz (mai vechi i mai noi) ale sistemelor de operare ar fi de prisos, ca i familiarizarea sau chiar cercetarea minuioas a unor sisteme existente, nicidecum nu poate nsemna, n special pentru un specialist, pierderea interesului fa de analiza i concepia sistemelor de operare. O prezentare succint a evoluiei sistemelor de operare faciliteaz nelegerea caracteristicilor actuale ale acestora i a termenilor deja introdui. De la "poart deschis " la tratarea pe loturi Primele calculatoare nu dispuneau de sisteme de operare. Fiecrui utilizator i se rezerva pentru un timp determinat calculatorul cu toate resursele acestuia. Interaciunea era direct, programul i datele fiind introduse n mod manual sub form de zerouri i uniti. Utilitele care au aprut aveau destinaia de a asista elaborarea programelor (asambloare, compilatoare, etc.) sau de a facilitata operaiile de intrareieire. Acest mod de exploatare, numit "poart deschis" [6], era de o eficacitate minim, dispozitive foarte costisitoare fiind utilizate ineficient. Din aceast cauz la sfritul anilor '50 au aprut primele "monitoare de nlnuire" - programe care permiteau executarea secvenial a unui set de lucrri, pregtite anticipat, trecerea de la o lucrare la alta fiind automatizat. Funcia principal a unui atare sistem era gestiunea resurselor: memoria, procesorul, intrarea-ieirea. Automatismul acestei gestionri implic o funcie de protecie a setului de lucrri contra unor riscuri perturbatorii in caz de eroare: limitarea timpului de ocupare a procesorului pentru a evita blocarea sistemului atunci cnd un program conine o bucl infinit; administrarea corect a intrrilor-ieirilor pentru a evita buclele n utilizarea perifericelor; protecia zonei de memorie rezervate monitorului pentru a mpiedica modificarea accidental a acestuia. Dei utilizarea monitoarelor de nlnuire a ameliorat notabil randamentul utilizrii procesorului, acest randament rmnea foarte sczut din cauza c procesorul nu era eliberat n timpul operaiilor de intrareieire. O soluionare ar fi constat n utilizarea a dou calculatoare - unul (principal) pentru executarea programelor i altul (auxiliar) pentru operaiile de intrare-ieire. O planificare adecvat a executrii lucrrilor permitea utilizarea celor dou calculatoare n paralel, dnd posibilitatea sporirii la maximum a randamentului calculatorului principal. Multiprogramarea i partajarea timpului Progresul tehnologic i conceptual al anilor '60 - '70 a permis excluderea unor limitri caracteristice sistemelor de prelucrare pe loturi. Astfel, au fost introduse procesoare specializate pentru operaiile de intrare-ieire (unitile de schimb sau canalele), care permitea eliberarea procesorului central de gestionarea dispozitivelor de intrare-ieire. Utilizarea principiului multiprogramrii sau partajarea memoriei ntre mai muli utilizatori a permis o utilizare i mai bun a procesorului central. Exploatarea unui calculator conform principiului timpului partajat ofer utilizatorilor posibiliti analogice unui calculator individual, permind beneficiul unor servicii comune la un pre redus. Organizarea intrrilor - ieirilor n memorii tampon Un canal este un procesor specializat n executarea autonom a operaiilor de intrare-ieire, paralel cu procesul de prelucrare a informaiilor. Viteza de lucru a organelor periferice este relativ mic din cauza
16

unor dispozitive mecanice care intr n componena acestora. Pentru excluderea influenei perifericelor asupra vitezei de lucru a sistemului de calcul s-a propus s se pstreze n memorie n anumite zone tampon datele de intrare (care vor fi utilizate la necesitate) i rezultatele (care vor fi imprimate n mod autonom) mai multor lucrri. Aceast situaie este prezentat n fig.1.12.
Lucrri la intrare Intrri Debit jos Prelucrarea informaiilor Fig.1.12. Buferizarea intrrilor-ieirilor Debit jos Debit nalt Rezultate la ieire Ieire

Pentru a exclude utilizarea ineficient a memoriei operative prin formarea zonelor-tampon, acestea erau organizate n memoria secundar de capacitate nalt, transferurile ntre aceste dou nuvele ale memorie fiind de asemenea comandate de un canal. Dei utilizarea memoriilor tampon prezint o serie de avantaje n vederea sporirii randamentului dispozitivelor calculatorului, totui dou momente negative pot fi menionate: atunci cnd lucrarea n curs de execuie are nevoie de nite date unitatea central rmne inactiv pe toat perioada citirii acestora; o lucrare de scurt durat, sosit n timpul execuiei unei lucrri "lungi", trebuie s atepte terminarea acesteia din urm. Multiprogramarea Ultimele dou momente au condus la ideea utilizrii unui mod de funcionare a SO n care: o lucrare aflat n starea blocat ar putea folosi unitatea central, eliberat de o lucrare care este n ateptarea datelor, unitatea central ar putea schimba timpul su de alocare nainte de terminarea unei lucrri n scopul satisfacerii cerinelor legate de timpul de rspuns. n acest caz este necesar ca valoarea timpului de realocare a unitii centrale s fie mai mic n raport cu durata unui transfer ntre nivelele memoriei. Aceasta implic prezena simultan n memoria operativ a mai multor programe sau pri de programe. Acest mod de funcionare este numit multiprogramare [6] i este prezentat n fig.1.13.

Unitatea central Execuie

17

Citire

Imprimanta

Memoria operativ Canal Canal

Citire

Imprimare

Memoria secundar

Fig.1.13. Fluxul informaional ntr-un sistem cu multiprogramare

Aceast schem evideniaz dou momente importante: rolul principal al memoriei operative (n sistemele anterioare acest rol era deinut de ctre unitatea central) i fluxul informaional ntre memoria operativ i cea secundar. Drept consecin, volumul memoriei operative i viteza de transfer ntre aceste dou nivele ale memoriei devin caracteristici determinante ale performanei sistemului. Principalele avantaje i restricii ale multiprogramrii pot fi prezentate n rezumat dup cum urmeaz: un sistem cu multiprogramare este mai complicat pentru c el trebuie s asigure partajarea memoriei i protecia reciproc a programelor; multiprogramarea necesit dispozitive speciale pentru reactivarea programelor i protecia memoriei; un sistem cu multiprogramare asigur o utilizare mai uniform a diferitor resurse: unitatea central, memoria, organele de intrare-ieire; multiprogramarea permite reducerea timpului de rspuns n cazul lucrrilor de durat mic ntr-un sistem cu prelucrare secvenial. Sisteme cu timp partajat Un sistem de operare cu partajarea timpului trebuie s garanteze fiecrui utilizator un timp acceptabil de rspuns. Acest rezultat este obinut prin alocarea succesiv a procesorului pentru trane de timp foarte mici (cuante) programelor utilizatorilor. Viabilitatea unei asemenea tehnici este legat de caracteristicile lucrului interactiv. Activitatea unui utilizator conine dou componente: timpul de reflecie (gndire), n care utilizatorul elaboreaz, propune subiecte de lucru, introducnd n calculator informaii i timpul de ateptare, cnd ateapt executarea de ctre sistem a serviciului cerut. Prima component este de o durat medie mult mai mare dect a doua i sistemul poate s serveasc simultan mai muli utilizatori, folosind timpul mort, datorat perioadei de reflecie. Ca exemplu, fie un sistem cu partajarea timpului, care deservete 1000 utilizatori cu un comportament mediu identic. Admitem c durata timpului de gndire este n medie de 9 ori mai mare dect a timpului de ateptare, acesta din urm reprezentnd 10% din timpul total. Avem, deci, n medie 100 utilizatori activi (care se afl n ateptarea unui rspuns la un serviciu cerut). Presupunem c valoarea cuantei este de 5 ms. Dac executarea unei cereri dureaz o cuant, timpul de rspuns va fi de ordinul unei jumti de secund. Am admis n acest exemplu c toate programele utilizatorilor activi se afl n memoria principal: timpul de comutare ntre programele a doi utilizatori se reduce la timpul de realocare a unitii centrale, care este neglijabil n comparaie cu valoarea cuantei. Multiprogramarea devine obligatorie, dac inem cont de raportul dintre acest timp i timpul necesar pentru ncrcarea unui program din memoria

18

secundar. Situaia este de fapt i mai complicat: volumul memoriei principale nu permite aflarea aici a tuturor programelor utilizatorilor activi. Este posibil ca o informaie s fie lips n memoria operativ atunci cnd unitatea central are nevoie de ea. Rolul sistemului de operare este de a minimiza pe ct este posibil probabilitatea apariiei unui atare eveniment. Dezvoltarea sistemelor de operare cu partajarea timpului a pus n eviden importana interaciunii omcalculator. Acest aspect a fost mult timp neglijat, dar cei care nu au fcut acest lucru au avut doar de ctigat. Apariia microprocesoarelor cu posibiliti mari de calcul i de preuri tot mai mici a permis pe de o parte utilizarea la scar larg a calculatoarelor personale, iar pe de alt parte, satisfacerea cerinelor utilizatorilor sistemelor informatice de partajare a resurselor fizice i logice distribuite geografic. Au aprut noi tipuri de sisteme informatice: calculatoarele personale, reelele locale i reelele globale. Conceptele i tehnicile elaborate pentru sistemele centralizate au rmas valabile i n cazul serverelor sau sistemelor de operare pentru calculatoarele personale. Repartizarea distribuit a informaiei, precum i transmiterea ei la distane mai mari sau mai mici a ridicat probleme noi, cum ar fi coordonarea activitilor la distan sau meninerea coerenei informaiilor distribuite. Toate acestea au trebuit s fie luate n consideraie la elaborarea sistemelor de operare pentru sistemele informatice ale anilor care au urmat. Realizri conceptuale Paralel cu evoluia tehnic i funcional a sistemelor de operare a avut loc i o important evoluie conceptual, care a permis o mai bun nelegere a funcionrii sistemelor de operare i a condus la elaborarea unor metode proprii de concepere. Debutul unei cercetri tiinifice a sistemelor de operare poate fi considerat anul 1964, care a succedat o etap important de dezvoltare tehnic: primele sisteme cu partajare a timpului (Thor, CTSS), anunarea seriei IBM 360 i introducerea canalelor de intrare-ieire, prima memorie paginat (Atlas), etc. n perioada 1965-1968 au fost elaborate noiunile necesare contientizrii gestionrii activitilor fizice sau conceptuale paralele: proces secvenial, formularea i soluionarea unor probleme de excludere mutual, sincronizarea i inventarea semaforului. Acestea au fost aplicate cu succes n elaborarea sistemelor de operare: sistemul THE (1967) utilizeaz semafoarele, sistemul Multics (1964-1970) conine un nucleu de gestionare a proceselor. Metode i utilitare destinate sistemelor distribuite sunt propuse la sfritul anilor '70. Utilite de sincronizare ncep s fie introduse n limbajele de programare. Sunt propuse primele metode de specificare i control al validitii sincronizrilor. Problema definirii informaiei a fost pus iniial n seama limbajelor de programare: fiecare limbaj definea universul su de obiecte accesibile i mijloacele efective de accesare. Sistemul de operare trebuia doar s implementeze obiectele definite de limbajul de programare in memoria fizic, direct adresabil. Restriciile de capacitate i pre a memoriei principale a condus foarte repede la apariia necesitii unei memorii secundare i a unor mecanisme de schimb de informaii ntre aceste dou nivele ale memoriei. Prima memorie paginat apare n 1962 (Atlas), tot atunci compilatoarele limbajului Algol 60 folosesc paginaia virtual pentru gestionarea programelor n curs de execuie. n 1965 este fundamentat noiunea de segmentare, dei nc n 1962 sistemul Burroughs B5000 utiliza un mecanism de adresare logic prin uniti de volum variabil sau segmente. n 1966 este propus un model de arhitectur pentru calculatoare cu partajare a timpului, implementat n IBM 360/67. n acest calculator segmentele sunt doar simulate printr-o dubl paginaie, din care cauz noiunea de segmentare va rmne pentru mult timp puin neleas de comunitatea informatic. Problemele partajrii i proteciei informaiei, alocrii resurselor conduc la noiunea de memorie virtual, care permite izolarea mecanismelor de gestionare a ansamblului memorie principal memorie secundar, lsnd utilizatorilor simpli impresia unui spaiu de adresare uniform (contiguu). Au fost introduse noiunile de modularitate i structurare ierarhic, obiect, etc.

19

Windows, Unix i alte sisteme Paralel cu evoluia tehnic i funcional a sistemelor de operare a avut loc i o important evoluie conceptual, care a permis o mai bun nelegere a funcionrii sistemelor de operare i a condus la elaborarea unor metode proprii de concepere. Debutul unei cercetri tiinifice a sistemelor de operare poate fi considerat anul 1964, care a succedat o etap important de dezvoltare tehnic: primele sisteme cu partajare a timpului (Thor, CTSS), anunarea seriei IBM 360 i introducerea canalelor de intrare-ieire, prima memorie paginat (Atlas), etc. n perioada 1965-1968 au fost elaborate noiunile necesare contientizrii gestionrii activitilor fizice sau conceptuale paralele: proces secvenial, formularea i soluionarea unor probleme de excludere mutual, sincronizarea i inventarea semaforului. Acestea au fost aplicate cu succes n elaborarea sistemelor de operare: sistemul THE (1967) utilizeaz semafoarele, sistemul Multics (1964-1970) conine un nucleu de gestionare a proceselor. Metode i utilitare destinate sistemelor distribuite sunt propuse la sfritul anilor '70. Utilite de sincronizare ncep s fie introduse n limbajele de programare. Sunt propuse primele metode de specificare i control al validitii sincronizrilor. Problema definirii informaiei a fost pus iniial n seama limbajelor de programare: fiecare limbaj definea universul su de obiecte accesibile i mijloacele efective de accesare. Sistemul de operare trebuia doar s implementeze obiectele definite de limbajul de programare in memoria fizic, direct adresabil. Restriciile de capacitate i pre a memoriei principale a condus foarte repede la apariia necesitii unei memorii secundare i a unor mecanisme de schimb de informaii ntre aceste dou nivele ale memoriei. Prima memorie paginat apare n 1962 (Atlas), tot atunci compilatoarele limbajului Algol 60 folosesc paginaia virtual pentru gestionarea programelor n curs de execuie. n 1965 este fundamentat noiunea de segmentare, dei nc n 1962 sistemul Burroughs B5000 utiliza un mecanism de adresare logic prin uniti de volum variabil sau segmente. n 1966 este propus un model de arhitectur pentru calculatoare cu partajare a timpului, implementat n IBM 360/67. n acest calculator segmentele sunt doar simulate printr-o dubl paginaie, din care cauz noiunea de segmentare va rmne pentru mult timp puin neleas de comunitatea informatic. Problemele partajrii i proteciei informaiei, alocrii resurselor conduc la noiunea de memorie virtual, care permite izolarea mecanismelor de gestionare a ansamblului memorie principal memorie secundar, lsnd utilizatorilor simpli impresia unui spaiu de adresare uniform (contiguu). Au fost introduse noiunile de modularitate i structurare ierarhic, obiect, etc. Astzi sistemele de operare n sensul tradiional de concepere sunt obiectul unor elaborri industriale, dect de cercetare. Chiar i lucrrile care au avut loc sau mai deruleaz n SUA capt tot mai multe trsturi de lucrri semiindustriale. Aceasta este datorat att de achiziionrii unei rezerve extraordinare de metode i algoritmi, ct i standardizrii stricte a funciilor i interfeelor sistemelor de operare. Au totui loc unele activiti de cercetare, ca de exemplu cercetrile din domeniul mediilor operaionale obiect-orientate. S UNIX i standardele sistemelor deschise Sistemul de operare UNIX, primul sistem mobil care asigur un mediu fiabil de dezvoltare i utilizare a softului de aplicaie, este fundamentul practic de elaborare a sistemelor fizico-logice deschise. Implementarea larg a sistemului de operare UNIX a permis trecerea de la declararea sistemelor deschise la dezvoltarea practic a acestui concept. Este greu de supraestimat i influena activitilor de standardizare a interfeelor SO UNIX asupra dezvoltrii domeniului sistemelor deschise. Cu toate acestea, pot fi evideniate cteva versiuni ale SO UNIX, care difer att prin realizare, ct i prin interfee i semantic (dei, odat cu dezvoltarea procesului de standardizare, aceste diferene devin tot mai nesemnificative). Modulele surs ale SO UNIX au fost scrise de ctre colaboratorii companiei AT&T i timp ndelungat drepturile de autor, ca i drepturile de liceniere, au aparinut acestei companii. Mai trziu, din mai multe motive (complexitate tehnic n elaborarea i ntreinerea acestui produs program complicat, unele dificulti juridice, etc.), compania AT&T a creat compania USL (UNIX System Laboratories), care avea n arj exclusiv dezvoltarea i susinerea modulelor surs ale SO UNIX.

20

Compania USL a propus versiunea UNIX System V 4.0, care a devenit standardul de-facto i baza mai multor versiuni UNIX, create de productorii de staii de lucru i servere. n ultimul succes al USL n calitate de filial a firmei AT&T, versiunea SVR 4.2, pentru prima oar n istoria sistemelor de operare UNIX a fost realizat mecanismul proceselor legere (thread, fire), care erau executate n baza unei memorii virtuale comune i permitea utilizarea posibilitilor dispozitivelor fizice, numite arhitectura multiprocesoral simetric n care mai multe procesoare au drepturi egale de accesare a memoriei centrale comune. n 1993 compania USL a fost absorbit de compania Novell, astzi departament al acesteia, marca nregistrat UNIX fiind cedat consoriumului X/Open. La nceputul anului 1995 compania Novell a anunat o variant nou a SO UixWare 2.0 bazat pe System V 4.2. Era un sistem de operare cu un sistem de fiiere foarte fiabil, fiind admis accesul la fiierele pstrate pe serverele NetWare, administratorul avea la dispoziie o interfa grafic bine pus la punct, etc. Pe parcursul a mai multor ani sistemul de operare de baz al companiei Sun a fost UNIX BSD. ns, ncepnd cu SunOS 4.0, s-a trecut la System V 4.0, firma Sun introducnd o serie de modificaii i extensii n aceast versiune. Ca exemplu, Sun a implementat paralelizarea programelor pentru sistemele multiprocesorale simetrice. Solaris este un mediu de interfaare a lui SunOS cu mijloace suplimentare GUI i resurse de nivel nalt pentru organizarea lucrului n reea (de exemplu, apelarea procedurilor la distan RPC). i la baza SO HP/UX, DG/UX i AIX se afl SVR 4.x din care cauz setul de baz al funciilor de sistem i biblioteci este acelai. Variantele SO UNIX, propuse de compania SCO i destinate exclusiv platformelor Intel, sunt bazate pe modulele iniiale ale System V 3.2, fiind total compatibile cu toate standardele de baz OSF-1 i alte variante UNIX Open Software Foundation (OSF) a fost prima companie comercial, care a ncercat elaborarea SO UNIX n baza micronucleului Mach. A fost creat sistemul de operare OSF-1, care nu era n sens de liceniere curat, deoarece folosea o parte a modulelor iniiale din SVR 4.0. Variantele SO UNIX, propuse de Universitatea din California, sunt o alternativ real pentru UNIX AT&T. De exemplu, UNIX BSD 4.2 era pus la dispoziie n module iniiale i folosit chiar n fosta URSS pe calculatoarele de tip DEC. Grupul BSD a influenat enorm dezvoltarea sistemelor de operare UNIX, printre realizri amintim mult controversatul SO UNIX BSD 4.4, construit n baza principiilor micronucleare, sistemul FreeBSD i altele. Nu putem s nu amintim aici i de realizarea original a SO UNIX pentru platformele Intel, propus de Torvald Linus LINUX. Este un sistem de operare foarte popular n mediul studenesc, care are i una din cele mai populare teleconferine n Internet. Odat cu ieirea SO UNIX pe pia i creterea substanial nu numai a numrului de utilizatori, ci i a numrului de specialiti din toate colurile lumii, care propuneau modificri i chiar variante proprii, a aprut necesitate elaborrii unor standarde, care ar conduce la sisteme compatibile. Prin standard al unei interfee al SO subnelegem un set de proprieti, mai mult sau mai puin formale, sintactice sau semantice ale componentelor sistemului de operare. Activitatea de standardizare a nceput cu mai mult de 10 ani n urm, dar este puin probabil s se ajung la fini ntr-un viitor apropiat. Totui rezultatele sunt mai mult dect vizibile, permind elaborarea unor sisteme de operare mobile. Standarde UNIX Unul dintre primele standarde de-facto a fost cel publicat de USL pentru versiunea SO UNIX System V Release 4 - System V Interface Definition (SVID). Majoritatea variantelor comerciale respectau standardul SVID. Evident, SVID fiind un document de firm, publicat fr discuii publice nu putea fi adoptat standard oficial. Paralel exista direcia BSD (Berkeley Standard Distribution), susinut de comunitatea universitar. Dei majoritatea realizrilor comerciale se baza pe Sistem V, UNIX BSD era foarte popular n universiti din care cauz a fost elaborat un standard, care a unit practic AT&T cu BSD. Acest lucru a fost nceput de asociaia programatorilor profesionali din cadrul UniForum (Sistemele Deschise) i

21

continuat de grupurile de lucru POSIX (Portable Operating System Interface). Cel mai popular standard, adoptat de ISO la recomandarea IEEE, POSIX 1003.1 definete cerinele minime pentru componentele unui sistem de operare. Organizaia internaional X/Open, care activeaz n domeniul elaborrii i propagrii ideilor sistemelor deschise, culege i sistematizeaz standardele de-jure i de-facto de importan industrial n aa numitul X/Open Common Application Environment (CAE). Specificaiile interfeelor resurselor, care formeaz CAE, sunt publicate n X/Open Portability Guide (XPG). Pentru lumea UNIX este foarte important i standardul limbajului de programare C, adoptat mai nti de ANSI i apoi de ISO. n acest standard sunt specificate, n afara limbajului C, bibliotecile necesare ntro realizare standard. Deoarece chiar de la apariie limbajul C i sistemele de programare respective erau strns legate de UNIX, componentele bibliotecilor standard corespundeau exact mediului standard al SO UNIX. Mai menionm standardul de-facto SPARC Complience Definition, propus de organizaia SPARC International, propunerea organizaiei 88/Open pentru procesoarele RISC Motorola, standardul sistemului de ferestre, susinut de X Consorium (Institutul de Tehnologie din Massachussets) i OSF/Motif, elaborat de Open Software Foundation. Sisteme de operare cu micronucleu Micronucleul este partea minim principal a unui sistem de operare, folosit pentru asigurarea modularitii i transportabilitii. Noiunea de micronucleu a fost introdus de compania Next prin sistemul de operare cu micronucleul Mach. Nucleul acestui sistem de operare, de dimensiuni mici, n jurul cruia se situau subsistemele executate n regim user, trebuia s asigure o flexibilitate i modularitate foarte nalt. Dar n realitate acestea au fost umbrite de prezena serverului monolit, care realiza sistemul de operare UNIX BSD 4.3, ales de compania Next n calitate de nivel superior pentru micronucleul Mach. Totui, utilizarea micronucleului Mach a permis introducerea administrrii mesajelor i a unei serii de funcii de serviciu orientate pe obiecte, n baza crora a fost creat o interfa grafic elegant a utilizatorului cu mijloace simple de configurare, administrare i dezvoltare program. Urmtorul SO cu micronucleu a fost MS Windows NT, n care momentul principal era declarat, n afara modularitii, transportabilitatea. Acest sistem de operare poate fi utilizat n sistemele mono- i miltiprocesor, bazate pe procesoarele Intel, Mips, i Alpha. Mai mult, deoarece NT trebuia s execute i programele scrise pentru DOS, Windows, OS/2 i SO, compatibile cu standardele Posix, compania Microsoft a folosit modularitatea abordrii micronucleare pentru crearea unei structuri generalizate, care nu repet sistemele de operare existente, fiecare SO fiind emulat printr-un modul separat sau printrun subsistem. Au aderat la tehnologia micronuclear i companiile Novell/USL, Open Software Foundation (OSF), IBM, Apple i altele. Unul din concurenii principali ai lui NT n domeniul SO cu micronucleu sunt Mach 3.0, creat n Universitatea Carnegy-Mellon, i Chorus 3.0 al companiei Chorus Systems. Baze de date Sistemele informaionale sunt orientate, n linii mari, spre pstrarea, accesarea i modificarea informaiilor existente. Structura informaiilor este adesea foarte complicat, i, dei structurile datelor difer de la sistem la sistem, ele au foarte multe momente comune. La etapa iniial de folosire a tenicii de calcul n gestiunea informaiei problemele structurrii datelor erau rezolvate n mod individual pentru fiecare sistem informaional. Erau elaborate aplicaii speciale pentru sistemele de gestiune a fiierelor (biblioteci de programe), la fel cum se procedeaz n cazul compilatoarelor, editoarelor, etc. Dar, fiindc sistemele informaionale necesit structuri de date complicate, aceste resurse suplimentare de gestiune a datelor formau partea principal a sistemelor, repetndu-se de la un sistem la altul. Tendina de evideniere i generalizare a acestei pri comune a sistemelor informaionale, responsabile de gestiunea datelor structurate, a fost prima cauz de creare a sistemelor de gestiune a bazelor de date (SGBD). Foarte repede a devenit clar imposibilitatea rezolvrii problemei doar cu ajutorul unei

22

biblioteci de programe, care ar realiza metode mai complicate de manipulare a datelor prin intermediul SGF. Vom exemplifica prin urmtoarea situaie. Presupunem c dorim s realizm un sistem informaional simplu, care ar duce evidena colaboratorilor unei organizaii. Sistemul va ndeplini urmtoarele funcii: s formeze lista colaboratorilor unei secii, s permit transferul unui colaborator dintr-o secie n alta, s asigure primirea la lucru a colaboratorilor i eliberarea acestora. Pentru fiecare secie trebuie susinut posibilitatea aflrii numelui efului acestei secii, numrului total de colaboratori din secie, valoarea ultimului salariu total, etc. Pentru fiecare colaborator trebuie s existe posibilitatea aflrii numrului legitimaiei de serviciu folosind numele i prenumele colaboratorului i invers, s se obin informaii despre faptul dac colaboratorul dat corespunde postului ocupat, nivelul salariului, etc. Presupunem c am hotrt s bazm acest sistem informaional pe Sistemul de Gestiune a Fiierelor (SGF) i s utilzm pentru aceasta un singur fiier, extinznd posibilitile de baz ale SGF, crend o bibliotec special de funcii. Unitatea informaional minimal n acest caz este colaboratorul din care cauz vom cere ca n acest fiier s existe o nregistrare pentru fiecare coalborator. Care vor fi cmpurile acestei nscrieri? Numele complet al colaboratorului (COL_NUME), numrul legitimaiei (COL_NR_LEGIT), informaia depsre corepunderea postului ocupat ((COL_STARE), pentru simplitate, da sau nu), mrimea salariului (COL_SAL), numrul seciei (COL_NR_SEC). Deoarece dorim s avem un singur fiier, aceeai nregistrare trebuie s conin i numele efului seciei (COL_SEF_SEC). Reieind din funciile sistemului nostru informaional, trebuie s fie asigurat accesul multicriterial la acest fiier utiliznd cheile unice (care nu sunt repetate n diferite nregistrri) COL_NUME i COL_NR_LEGIT. n afar de aceasta mai este necesar s putem selecta toate nregistrrile, care conin aceeai valoare COL_NR_SEC (colaboratorii unei secii), adic s existe acces conform unei chei multiple. Mai mult, pentru a obine numrul de colaboratori dintr-o secie sau salariul total, sistemul informaional va trebui de fiecare dat s acceseze fiecare colaborator al seciei i s calculeze valorile respective. Observm, c chiar penru un astfel de sistem simplu, realizarea n baza SGF cere (1) - crearea unei infrastructuri complicate pentru accesul multicriterial, i (2) - genereaz o metod de pstrare evident redundant (repetarea numelui efului seciei pentru fiecare colaborator) i executarea selectrii i calculelor masive pentru obinerea informaiilor sumare despre secii. n afar de aceasta, dac dorim, de exemplu, s tiprim lista colaboratorilor, care au un salariu dat, va trebui s cercetm tot fiierul sau s-l restructurm n aa mod nct cmpul COL_SAL s devin cheie. Prima propunere ar fi s crem dou fiiere cu chei multiple: COLABORATORI i SECII. Primul fiier va conine cmpurile COL_NUME, COL_NR_LEGIT, COL_STARE, COL_SAL i COL_NR_SEC, iar al doilea SEC_NR, SEC_SEF, SEC_SAL (slariul total) i SEC_NR_COL (numrul de colaboratori dintr-o secie). Majoritatea inconvenienelor de mai sus vor fi depite. Fiecare fiier va conine doar informaii nedublate, nu sunt necesare calcule suplimentare pentru a afla informaii de tipul salariului total. Dar n acest caz sistemul nostru capt proprieti noi, care l apropie de un Sistem de Gestiune a Bazelor de Date (SGBD). Mai nti de toate, sistemul trebuie n acest caz s tie c lucreaz cu dou fiiere legate (este primul pas n direcia schemei bazelor de date), s cunoasc structura i sensul fiecrui cmp (de exemplu, c COL_NR_SEC n fiierul COLABORATORI i SEC_NR n fiierul SECII nseamn acelai lucru), i s neleag c n unele cazuri modificarea informaiei ntr-un fiier trebuie s genereze modificarea automat n cellalt fiier, pentru ca s fie coordonat (nu sunt sigur c este corect spus romnete, am fcut facultatea n limba rus) coninutul lor. De exemplu, dac la lucru este primit un nou colaborator, se va aduga o nregistrare n fiierul COLABORATORI, vor fi schimbate i cmpurile SEC_SAL i SEC_NR_COL n nregistrarea din fiierul SECII, care descrie secia colaboratorului dat.

23

Noiunea de coordonare(?) a datelor este o noiune cheie a bazelor de date. De fapt, dac un sistem informaional (chiar la fel de simplu ca i n exemplul nostru) susine modul coordonat de pstrare a informaiilor n cteva fiiere, putem afirma c sistemul susine o baz de date. Iar dac un sistem auxiliar de gestiune a datelor permite lucrul cu mai multe fiiere, asigurnd coordonarea lor, acesta poate fi numit sistem de gestiune a bazelor de date. Deja singur cererea de susinere a coordonrii datelor n cteva fiiere nu ne mai permite s ieim din situaie doar cu ajutoul unei biblioteci de funcii: un atare sistem trebuie s posede i unele date proprii (metadate) i chiar valori, care definesc integritatea datelor. Dar aceasta nc nu este totul ce este cerut de la un SGBD. n primul rnd, chiar i n exemplul nostru este incomod ndeplinirea unor interpelri de tipul s se pun la dispoziie numrul de colaboratori din secia n care lucreaz Maria Mirabela Popescu. Ar fi mult mai simplu dac SGBD ar permite formularea unor astfel de interpelri ntr-un limbaj apropiat de cel natural. Astfel de limbaje se numesc limbaje de interpelare a bazelor de date. De exemplu, n limbajul SQL interpelarea noastr poate fi exprimat astfel: SELECT SEC_NR_COL FROM COLABORATORI, SECII WHERE COL_NUME = "Maria Mirabela Popescu" AND COL_NR_SEC = SEC_NR Formularea unei interpelri n SQL permite s nu ne deranjeze modul cum va fi ndeplinit aceast interpelare. Printre metadatele acesteia va fi prezent informaia conform creia cmpul COL_NUME este cmp cheie pentru fiierul COLABORATORI, iar SEC_NR pentru fiierul SECII i sistemul se va folosi de aceasta. Dac va fi necesar s obinem lista colaboratorilor, care nu corespund postului ocupat vom proceda astfel: SELECT COL_NUME, COL_NR_LEGIT FROM COLABORATORI WHERE COL_STARE = "nu", i sistemul va ndeplini cutarea necesar n fiierul COLABORATORI, deoarece cmpul COL_STARE nu este cmp cheie. Acum s ne nchipuim, c n prima realizare a sistemului informaional, bazat pe utilizarea unor biblioteci de extensii a metodelor de accesare a fiierelor, are loc operaia de nregistrare a unui nou colaborator. Conform proprietii de modificare coordonat, sistemul a introdus o nou nregistrare n fiirerul COLABORATORI i trebuia s treac la modificarea nregistrrii fiierului SECII, dar anume n acest moment a avut loc decontectarea accidental a alimentrii cu curent electric. Evident, dup relansarea sistemului baza de date se va afla ntr-o stare necoordonat. Va fi necesar s controlm n mod explicit fiierele noastre i s introducem modificrile necesare. O aplicaie poate su nu-i fac griji n acest sens, dar SGBD-urile adevrate au n arj astfel de funcii. Mai mult, sistemele de gestiune a bazelor de date rezolv o serie de probleme, care nu pot fi n principiu rezolvate cu ajutorul sistemelor de gestiune a fiierelor (accesarea paralel a informaiilor, de ex.). Ca i concluzie: exist aplicaii pentru care sunt suficiente fiierele, aplicaii pentru care trebuie s hotrm care este nivelul necesar de lucru cu datele n memoria extern, i aplicaii care au evident nevoie de baze de date. 2. Funciile unui SGBD. Organizarea-tip a SGBD Dup cum am observat, posibilitile tradiionale ale sistemelor de gestiune a fiierelor sunt insuficiente pentru construirea unor sisteme informaionale, chiar foarte simple. Aceasta este cauza principal a apariiei SGBD.

24

2.1. Funciile principale ale unui SGBD 2.1.1. Administrarea explicit (direct) a datelor n memoria extern Aceast funcie presupune susinerea structurilor necesare n memoria extern att pentru pstrarea datelor care sunt parte component a BD, ct i pentru scopuri de service, de exemplu, pentru accelerarea accesului la date (de obicei sunt utilizai idicii n acest scop). n unele realizri ale SGBD pentru aceasta sunt utilizate posibilitile SGF, altele pot lucra chiar i cu dispoziltivele de memorie extern. Utilzatorii nu sunt obligai s cunoasc dac un SGBD utilizeaz SGF i, n caz afirmativ, cum sunt organizate fiierele. SGBD susine un sistem propriu de desemnare a obiectelor BD. 2.1.2. Administrarea tampoanelor (buferelor) din memoria operativ SGBD lucreaz cu BD de dimensiuni semnificative, de obicei cel puin aceste dimensiuni sunt mult mai mari dect volumul memoriei operative prezente. Evident, dac la accesarea fiecrui element de date va fi nevoie de schimb de informaii cu memoria extern, tot sistemul va lucra cu viteza suportului extern de memorie. Unica posibilitate de sporire a acestei viteze este buferizarea datelor n memoria operativ. Chiar dac SO execut buferizarea de sistem (cum este n cazul SO UNIX), aceasta nu este suficient pentru scopurile SGBD. Din aceast cauz SGBD concurente susin un set propriu de bufere n memoria operativ cu propriul algoritm de dispecerizare. Notm, c exist o direcie ntreag n domeniul SGBD, dedicat prezenei constante a ntregii BD n memoria operativ (cazul sistemelor de cutare, tranzacionale n Internet, de exemplu). Aici presupunem c capacitatea memoriei operative poate fi suficient de mare i nu trebuie s ne facem probleme cu buferizarea. 2.1.3. Administrarea tranzaciilor Tranzaciile sunt o succesiune de operaii asupra BD, considerate de SGBD un tot ntreg. Dac tranzacia este executat n totalitate SGBD fixeaz (COMMIT) modificrile n BD, n caz contrar nu are loc nici o modificare. Noiunea de tranzacie este necesar pentru asigurarea integritii logice a BD. n exemplul precedent atunci cnd este ndeplinit operaia de primire la lucru a unui colaborator nou, aceast operaie este uniunea operaiilor elementare asupra fiierelor COLABORATORI i SECII ntro tranzacie. Noiunea dat este i mai important pentru SGBD multiuser. Proprietatea c fiecare tranzacie ncepe atunci cnd starea BD este consistent i las aceast stare la fel consistent dup terminarea sa, face folosirea noiunii tranzacie n calitate de unitate de activitate a user-ului. Dac tranzaciile sunt gestionate corect de ctre SGBD, fiecare utilizator are impresia c este singurul care folosete baza de date (dac nu-s prea muli, evident!). Strns legate de administrarea tranzaciilor n SGBD multiuser sunt noiunile de serializare a tranzaciilor i planul secvenial (serializat) de ndeplinire a tranzaciilor. Prin serializarea unor tranzacii care ar trebui s fie ndeplinite n mod paralel nelegem o astfel de planificare a executrii lor, n care efectul final este acelai, dei tranzaciile nu sunt ndeplinite paralel, ci secvenial (din cauza resurselor limitate, de exemplu). 2.1.4. Jurnalizarea Una din proprietile de baz ale SGBD este fiabilitatea pstrrii datelor n memoria extern, prin aceasta nelegndu-se c, dac a avut loc orice cdere hardware sau software, SGBD-ul trebuie s fie n stare s restabileasc ultima stare coordonat a BD. Evident, pentru a restabili BD trebuie s existe nite informaii suplimentare. Altfel spus, susinerea fiabilitii pstrrii datelor n BD necesit o redundan a informaiilor, iar aceea parte a informaiilor, care este folosit pentru restabilire trebuie pstrat extrem (stranic!) de fiabil. Cea mai rspndit metod de susinere a unei astfel de redundane este ntreinerea unui jurnal de bord n care s fie fixate schimbrile BD. Jurnalul este o parte special a BD, inaccesibil utilizatorilor BD i ntreinut n mod foarte pedant (adesea exist dou copii ale jurnalului, care se afl pe discuri fizice diferite), n care vin informaiile despre toate nscrierile n BD (partea
25

principal, fr Jurnal, adic). n dependen de SGBD i nscrierile n jurnal se fac n mod diferit. n unele cazuri nscrierea n jurnal corespunde unei operaii logice oarecare (eliminarea unei linii, de ex.), n alte cazuri unei operaii interne minime de modificare a unei pagini de memorie extern, sau combinaia acestora. n toate cazurlie este utilizat strategia nscrierii profilactice n jurnal (protocolul Write Ahead Log - WAL). n linii mari asta ar nsemna, c nscrierea despre modificarea oricrui obiect al BD trebuie s nimereasc n memoria extern a jurnalului nainte ca obiectul modificat s ajung n memoria extern a prii principale a BD. Dac SGBD-ul respect protocolul WAL, jurnalul permite rezolvarea tuturor problemelor de restabilire a BD dup oricare tip de cdere. 2.1.5. Susinerea limbajelor BD Pentru lucrul cu bazele de date sunt utilizate limbaje speciale, numite limbaje ale bazelor de date. n SGBD-urile timpurii erau susinute cteva limbaje specializate funcional. Cel mai frecvent importante erau dou limbaje limbajul de definire a schemei BD (SDL - Schema Definition Language) i limbajul de manipulare a datelor (DML - Data Manipulation Language). Primul era utilizat pentru determinarea structurii logice a BD (cum i nchipuie utilizatorul baza de date). DML coninea instruciuni de manipulare a datelor (introducerea datelor n BD, eliminarea, modificarea sau selecatarea datelor existente). n SGBD contemporane este susinut un limbaj integrat unic. Cel mai rspndit este limajul SQL (Structured Query Language). Acest limbaj combin posibiltile SDL i DML. Desemnarea obiectelor BD (desemnarea tabelelor i coloanelor lor, n cazul unor BD de tip relaional) este susinut la nivelul limbajului n sens c compilatorul SQL transform numele externe ale obiectelor n identificatori interni n baza unor tabele-catalog de serviciu. Nucleul SGBD n genere nu are treab cu numele tabelelor i coloanelor acestora. Limbajul SQL conine resurse speciale pentru determinarea resticiilor de consisten a BD. Aceste restricii sunt pstrate n tabele-catalog speciale, iar garantarea consistenei are loc la nivel de limbaj, adic la compilarea instruciunilor de modificare a BD compilatorul SQL n baza restriciilor de consisten genereaz codul respectiv. Autorizarea accesului la BD la fel se realizeaz cu ajutorul unui set de instruciuni SQL, fiind posibil accesul difereniat n dependen de statutul utilizatorului. 2.2. Organizarea tipic a unui SGBD concurent Organizarea unui SGBD tip i setul de componente ale acestuia corespunde funciillor stabilite mai sus. Noi am stabilit urmtoarele funcii de baz: administrarea datelor n memoria extern, administrarea buferelor n memoria extern, adminstrarea tranzaciilor, jurnalizarea i restabilirea BD dup cderi, susinerea limbajelor BD. La nivel logic n cadrul unui SGBD concurent putem evidenia nivelul cel mai intern nucleul SGBD (numit adesea Data Base Engine), compilatorul SGBD (de obicei SQL), subsistemul Run-Time i un set de utilitare. Nucleul SGBD este responsabil de administrarea datelor n memoria extern, gestiunea buferelor memoriei operatve, adminstrarea tranzaciilor i jurnalizare. Respectiv, pot fi evideniate astfel de componente ale nucleului cum ar fi managerul datelor, managerul buferelor, managerul tranzaciilor i managerul jurnalului. Funciile acestor componente sunt interdependente din care cauz ele trebuie s funcioneze i s interacioneze conform unor protocoale bine gndite i strict validate. Nucleul SGBD posed o interfa proprie, dar care este utilizat doar de programele SQL i utilitarele BD. Nucleul SGBD este partea rezident principal a sistemului de gestiune a BD. n arhitectura client-server nucleul este componenta principal a prii server a sistemului. Destinaia principal a compilatorului este translatarea instruciunilor scrise n limbajul BD n cod executabil. Problema principal const n faptul c aceste limbaje (de obicei SQL) sunt
26

neprocedurale, adic n operatorul unui atare limbaj sunt specificate nite aciuni asupra BD, dar aceast specificare nu este procedur, ci doar descrie ntr-o form oarecare condiiile de ndeplinire a aciunii dorite. Compilatorul trebuie s hotrasc cum s execute operatorul limbajului naintea generrii codului executabil. n rezultatul compilrii se obine un program executabil, reprezentat de obicei n cod intern independent de main. n acest caz executarea real a operatorului are loc utiliznd un subsistem de susinerea a regimului run-time, care nu este altceva dect un interpretor al acestui limbaj intern. Din categoria utilitarelor BD fac parte unele proceduri, ndeplinirea crora nu este binevenit utiliznd limbajul BD. Dintre acestea aminitim ncrcarea i unload-ul unei BD, culegere date statistice, controlul global al consistenei BD, etc. 3. Despre calculul relaional Presupunem c lucrm cu BD care are schema COLABORATORI(NR_COL, NUME_COL, SAL_COL, NR_SEC_COL) (aici NR_COL este numrul legitimaiei colaboratorului, NUME_COL numele colaboratorului, SAL_COL - salariul, iar NR_SEC_COL numrul seciei n care colaboratorul concret lucreaz) i SECII(NUMRUL_SEC, NR_COL_IN_SECIE, SEF_SECIE). Dorim s aflm numele i numerele colaboratorilor, care sunt efii seciilor cu numrul total de colaboratori mai mare ca 50. n sensul algebrei relaionale am fi obinut expresia, care ar fi citit aproximativ astfel: S se uneasc relaiile COLABORATORI i SECII cu condiia NR_COL= SEF_SECIE; Relaia obinut s fie restricionat cu condiia NR_COL_IN_SECIE > 50; Rezultatul s fie proiectat pe atributul NR_COL, NUME_COL. Fiecare pas corespunde unei operaii relaionale. Dac vom formula aceeai interpelare cu ajutorul calculului relaional (ceea ce va urma n continuare), vom obine o formul, care ar putea fi citit astfel: s se determine NR_COL, NUME_COL pentru colaboratorii pentru care exist secie cu aceeai valoare SEF_SECIE (ca i NUME_COL (sau NR_COL)) i cu valoarea NR_COL_IN_SECIE mai mare dect 50. Aici am artat numai caracteristicile relaiei rezultante, nu am spus nimic despre modalitatea de formare a acesteea. Sistemul va trebui singur s decid, care operaii i n care ordine s fie ndeplinite peste relaiile COLABORATORI i SECII. Spunem c formularea algebric este procedural, adic definete regulile de ndeplinire a interpelrii, iar formularea logic (a doua) este descriptiv sau declarativ, deoarece ea doar descrie proprietile rezultatului dorit. Aceste dou mecanisme sunt echivalente i exist reguli, relativ simple, care permit transformarea unui formalism n cellalt. 3.1. Relaii i proprietile lor Se numete relaie n-ar pe M submulimea R Mn. Vom zice c a1,..., an, sunt n relaia R dac (a1,...,an)R. O relaie unar este o parte a mulimii M i determin o proprietate a elementelor unei submulimi a mulimii M din care cauz pentru n = 1 denumirea de relaie practic nu se utilizeaz. Un interes mai mare prezint cazul cnd n = 2 - relaiile binare. Dac a i b se afl n relaia R, aceasta se va scrie aRb. Exemplul 3.1. Pentru mulimea N: relaia "<" are loc pentru perechea (3,9) i nu are loc pentru (6,4). Relaia "a fi divizor" are loc pentru perechea (7,35) i nu are loc pentru (18,2) sau (4,9). Pentru o mulime de oameni pot fi relaii de tipul "a fi prieteni", "a locui in acelai ora", "a fi fiu", etc. < Restricia lui R pe M1 M este R1 = R M12. Pentru definirea unei relaii pot fi utilizate oricare din metodele de definire a mulimilor. O posibilitate suplimentar este matricea de relaie. Pentru mulimea M = {a1, a2,..., am} aceasta este o matrice mxm n care 1 dac aiRaj, a(i,j) = 0 n caz contrar.

27

Deoarece relaia este n ultim instan o mulime, pot fi executate aceleai operaii (reuniune, intersecie etc.) i cu relaiile. O relaie se numete inversa relaiei R (se va nota R-1) dac aiRaj are loc atunci i numai atunci cnd are loc ajR-1ai. Relaia poate poseda o serie de proprieti dintre care vom meniona reflexivitatea, simetria i tranzitivitatea. Dac pentru aM are loc aRa relaia R se numete reflexiv. Diagonala principal a matricei relaiei R conine numai uniti. Relaia R se numete antireflexiv dac nu exist aM pentru care ar avea loc aRa. Diagonala principal a matricei unei astfel de relaii conine numai zerouri. Relaiile " ", "a avea un divizor comun" sunt reflexive. Relaiile "a fi fiu", ">" - sunt antireflexive. Dac pentru o pereche (a,b)M2 din aRb rezult bRa (relaia are loc n ambele pri sau nu are loc de fel), relaia R se numete simetric. Pentru astfel de relaii c(i,j) = c(j,i): matricea este simetric fa de diagonala principal. Relaia se va numi antisimetric , dac din aiRaj i ajRai rezult c ai=aj . Relaia " " este antisimetric, iar "a locui n acelai ora" - simetric. Relaia R se numete tranzitiv dac pentru oricare a, b i c din aRb i bRc rezult aRc. Relaiile "a locui n acelai ora", "egal", "<" sunt tranzitive, iar "a fi fiu" nu este tranzitiv. Pentru oricare relaie R poate fi definit noiunea de nchidere tranzitiv R*: aR*b (a se afl n relaia R* cu b), dac n M exist o secven de n elemente a=a1,..., an-1, an = b n care pentru elementele vecine are loc R: aRa2, a2Ra3,..., an-1Rb. Dac R este tranzitiv, atunci R*=R. Pentru relaia "a fi fiu" relaia "a fi descendent direct" este nchidere tranzitiv (este reuniunea relaiilor "a fi fiu", "a fi nepot", "a fi strnepot" s.a.m.d.). O relaie care posed proprietile reflexivitate, simetrie i tranzitivitate se numete relaie de echivalen. Se numete relaie de ordine oricare relaie care posed proprietile reflexivitate, antisimetrie i tranzitivitate. O relaie antireflexiv, antisimetric i tranzitiv se numete relaie de ordine strict. Dou elemente a i b se numesc comparabile conform relaiei de ordine R dac are loc aRb sau bRa. O mulime M cu o relaie de ordine definit pe M se numete total ordonat dac oricare dou elemente din M sunt comparabile i parial ordonat, n caz contrar. Exemplul 3.2. Relaiile " ", " " pentru o mulime de numere sunt relaii de ordine, iar "<", ">" - de ordine strict. Relaia de subordonare n cadrul unei ntreprinderi definete o ordine strict (dar parial - nu pot fi comparai colaboratorii diferitor departamente). n alfabetul latin literele sunt aranjate ntr-o ordine binecunoscut: se afl n relaia de precedare a literelor. Conform acestei relaii poate fi stabilit relaia de precedare a cuvintelor - ordinea lexicografic a cuvintelor (utilizat de exemplu n dicionare). Relaia de ordine lexicografic poate fi definit i pentru informaii numerice. De exemplu, n calculator data i anul sunt memorizate sub forma "anul, luna, ziua" pentru ca ordinea de cretere a datei totale s coincid cu ordinea lexicografic. < Exemplul 3.3. B este mulimea tuturor cuvintelor binare de orice lungime i desemneaz unicul cuvnt binar de lungime 0. Dac m este un cuvnt binar de lungime p, vom nota biii acestuia m1, m2,..., mp. Relaia de ordine , definit peste B , se numete de ordine lexicografic, dac: a) m, m b) pentru m de lungime p i n de lungime q cu proprietatea 0 < p q m n, dac m1=n1, m2=n2,..., mp=np, m n, dac m1=n1, m2=n2,..., ms-1=nsi1, ms < ns, pentru 1 s p, n m, dac m1=n1, m2=n2,..., ms-1=nsi1, ms > ns, pentru 1 s p. < 3.2. Operaii i algebre. Proprietile operaiilor Funcia de tipul : MnM se va numi operaie n-ar pe M. Setul A = <M, n care este o >, mulime de operaii definite pe M, se numete algebr. Mulimea M se va numi mulime de baz sau

Termenul antisimetric nu a fost ales prea bine, deoarece se poate crede c o relaie, care nu este simetric este totdeauna antisimetric, ceea ce nu este corect.

28

suportul, iar = {1, 2,..., m,...} - signatura algebrei A. Vectorul, componentele cruia sunt aritile operaiilor 1, 2,... se numete tipul algebrei A. Operaia se numete: a) comutativ, dac ab = ba, b) asociativ, dac pentru oricare a, b, c are loc (ab)c = a(bc), c) idempotent, dac aa = a, d) distributiv stnga fa de operaia g, dac pentru oricare a, b, c are loc relaia e) a(bgc) = (ab)g(ac), i distributiv dreapta dac (agb)c = (ac)g(bc). Dac exist un element e pentru care are loc ae = ea = a, atunci acest element se numete neutru (sau unitate). Exemplul 3.4.a) Pentru o mulime arbitrar U i mulimea tuturor prilor B(U), algebra A = {B(U), , , } se numete algebr booleana a mulimilor. Tipul ei este (2,2,1). b) Algebra A = {R,+,x} se numete cmp al numerelor reale. Ambele operaii sunt binare, deci tipul este (2,2).< Algebrele L = {M, , } (cu dou operaii binare - reuniunea i intersecia) se numesc latice, dac au loc axiomele: P1: a b = b a, a b = b a - comutativitate, P2: a (b c) = (a b) c, a (b c) = (a b) c - asociativitate, P3: a (b a) = a, a (b a) = a - absorbie, pentru oricare a, b, cM. 3.3. Modele si sisteme algebrice. Algebra relaiilor Noiunea de model este una din noiunile de baz n matematica discret. Se va numi model M setul care const din mulimea D - suportul modelului, i o mulime de relaii S definite pe D: M = <D, S>. Aici S = {R11, R12,..., R1n1, R21, R22,..., R2n2,..., Rm1, Rm2,..., Rmnm} este signatura modelului, RijMi. Exponenta suportului determin aritatea relaiei. Dou relaii Ri i Rj care au aceeai aritate se numesc compatibile. Setul care conine mulimea D, operaiile i relaiile definite pe D A = <D, F, S>. se numete sistem algebric. Modelul este un caz particular al sistemului algebric, cnd mulimea F este vid, iar pentru o algebr mulimea S este vid. Un alt caz particular al sistemelor algebrice l constituie algebra relaiilor i extensia acesteea algebra relaional. Pentru o algebr a relaiilor drept suport servete mulimea relaiilor considerate, iar signatura o formeaz operaiile de reuniune, intersecie, diferen i produsul cartezian extins al relaiilor. S facem cunotin cu aceste operaii. Reuniunea Ri Rj a dou relaii compatibile Ri i Rj este mulimea tuturor cortejurilor, fiecare dintre care aparine cel puin uneia din relaii. Intersecia Ri Rj a dou relaii compatibile Ri i Rj se va numi mulimea tuturor cortejurilor care aparin ambelor relaii n acelai timp. Diferena Ri\Rj a dou relaii compatibile Ri i Rj se numete mulimea tuturor cortejurilor care aparin lui Ri i nu aparin relaiei Rj . Produs cartezian extins RixRj a dou relaii Ri i Rj se va numi mulimea tuturor cortejurilor formate prin concatenarea lui aRi i a lui bRj. Exemplu: dac Ri ={(a,b),(a,c),(a,e)}, iar Rj = ((a,b,c),(c,d,e)}, atunci RixRj = {(a,b,a,b,c), (a,b,c,d,e), (a,c,a,b,c), (a,c,c,d,e), (a,e,a,b,c), (a,e,c,d,e)}. Algebra relaiilor i modelele sunt utilizate pentru formalizarea unor obiecte reale. Vom exemplifica prin folosirea algebrei relaiilor n cazul bazelor relaionale de date.

29

O baz de date de tip relaional este un tablou bidimensional n care coloanele determin aa numitele domene (atribute), iar liniile sunt cortejuri de valori concrete ale atributelor, care se afl n relaia R. Exemplul 3.5. Relaia R5 - "examene" (v.tab. 3.1). Relaia R5 este o submulime a produsului cartezian D1xD2xD3xD4xD5. Elemente ale domenului Di sunt valorile atributelor: D1 = {3-101, 3-501, 3-502, 3-310} - numerele auditoriilor unde au loc examenele; D2 = {Matematica discret n inginerie, Microelectronica, Fizica, Circuite integrate, Electrotehnica} - denumirea disciplinelor; D3 = {conf.V.Beliu, conf. V.Negur, conf.A.Diligul, conf.V.ontea, prof.I.Samusi} -examinatorii; D4 = {3 iunie, 4 iunie, 8 iunie, 13 iunie} - data examenului; D5 = {TI-961, TI-962, TI-963, C-941, C-942, C-951, C-952} - denumirea grupei. R5 1 2 3 4 5 6 7 8 9 10 D1 3-101 3-202 3-310 3-101 3-104 3-101 3-101 3-202 3-310 3-101 D2 Matematica discret inginerie Microelectronica Fizica Circuite integrate Electrotehnica Matematica discret inginerie Matematica discret inginerie Microelectronica Fizica Circuite integrate Tabelul 3.1. Relaia examene. D3 D4 D5 n conf. V.Beliu 3 iunie TI-961 conf. V.ontea prof. I.Samusi conf. V.Negur conf. A.Diligul n conf. V.Beliu n conf. V.Beliu conf. V.ontea prof. I.Samusi conf. V.Negur 4 iunie 3 iunie 4 iunie 3 iunie 8 iunie C-951 TI-962 C-941 TI-951 TI-962

13 iunie TI-963 8iunie 8iunie 8iunie C-952 TI-961 C-942

Numerele 1, 2,..., 10 din prima coloan identific elemente ale relaiei R5. < Algebra relaional este o extensie a algebrei relaiilor n sens c signatura S n afar de cele 4 operaii descrise anterior mai conine cteva operaii speciale, de exemplu proiecia, selecia i jonciunea. Operaia selecie permite evidenierea unei submulimi de cortejuri care posed o proprietate dat. De exemplu, operaia selecie permite evidenierea relaiei orarul conf. V.Beliu - liniile n care valoarea domenului D3 este conf. V.Beliu: Tabelul 3.2. Rezultatul operaiei selecie pentru valoarea conf. V.Beliu R5 D1 D2 D3 D4 D5 1 3-101 Matematica discret n conf. 3 iunie TI-961 inginerie V.Beliu 6 3-101 Matematica discret n conf. 8 iunie TI-962 inginerie V.Beliu 7 3-101 Matematica discret n conf. 13 iunie TI-963 inginerie V.Beliu Operaia proiecie se definete introducnd pentru suportul D al algebrei relaionale o partiie de n submulimi (n este aritatea relaiei) RnDn.

30

Proiecia relaiei binare R2AxB pe A (PrR2/A) se numete mulimea {ai | (ai,bi)R2}. Proiecia PrRn/Ai1,...,Aim a relaiei n-are RnA1xA2x...xAn, m n, pe Ai1, Ai2,..., Aim se numete mulimea cortejurilor (ai1, ai2,..., aim), n care ai1Ai1, ai2Ai2,..., aimAim i fiecare cortej este parte a unui element al relaiei n-are Rn. Cu alte cuvinte, operaia proiecie permite construirea unei submulimi verticale a relaiei (a unei mulimi de submulimi de atribute care se obine prin alegerea unor domene concrete). De exemplu, Pr(R5/D2,D3) determin denumirea examenelor i numele examinatorilor (liniile care coincid se scriu o singur dat, v.tab. 3.3). Tabelul 3.3. Rezultatul operaiei proiecie. D2 D3 Matematica discret n conf. V.Beliu inginerie Microelectronica conf. V.ontea Fizica prof. I.Samusi Circuite integrate conf. V.Negur Electrotehnica conf. A.Diligul Operaia jonciune (join) a dou tabele care au un domen comun permite construirea unui tabel nou n care fiecare linie se va obine din unirea a dou linii din tabelele iniiale. Aceste linii corespund aceluiai atribut din domenul comun. Domenul comun se va scrie o singur dat. De exemplu, pentru tabele 3.4 i 3.5 domenul comun este D5, rezultatul operaiei de jonciune este prezentat n tabelul 3.6. Tabelul 3.4. D1 D2 D3 D4 D5 3-202 Microelectronic conf. 4 iunie C-951 a V.ontea 3-310 Fizica prof. I.Samusi 3 iunie TI-962 3-104 Electrotehnica conf. 3 iunie TI-951 A.Diligul D1 3-104 3-310 3-202 D2 Electrotehnica Matematica Microelectronic a Tabelul 3.5. D3 conf. A.Diligul conf. L.Dogotaru conf. V.ontea D4 D5 13 iunie C-951 13 iunie TI-962 14 iunie TI-951

D1 3202 3310 3104

D2 Microelectro nica Fizica

D3 conf. V.ontea prof. I.Samusi Electrotehnic conf. a A.Diligul

Tabelul 3.6. Rezultatul operaiei join. D4 D11 D21 D31 D41 D5 4 3Electrotehnic conf. 13 iunie C-951 iunie 104 a A.Diligul 3 3Matematica conf. 13 iunie TI-962 iunie 310 L.Dogotaru 3 3Microelectro conf. 14 iunie TI-951 iunie 202 nica V.ontea

Operaia join este definit nu numai pentru condiia de egalitate a dou domene, ci pot fi i alte condiii de comparare, de exemplu, >, , <, , etc. 4. Proiectarea bazelor de date relaionale Proiectarea bazelor de date rezolv dou probleme:
31

Cum s fie reprezentate obiectele domeniului obiectiv n obiecte abstracte ale modelului datelor astfel ca aceast reprezentare s nu contrazic semantica domeniului obiectiv i s fie, n msura posibilitilor, cea mai bun (eficient, comod, etc.)? Adesea aceast problem este numit proiectarea logic a BD. Cum s se asigure executarea eficient a interpelrilor BD? Altfel, lund n consideraie specificul unui SGBD concret, cum vor fi plasate datele n memoria extern, care structuri vor fi create suplimentar (de ex., indici), etc. Aceast problem este numit proiectarea fizic a BD.

Este dificil s fie propuse nite reete de ordin general pentru rezolvarea problemei proiectrii fizice. Prea multe depind de SGBD folosit. De exemplu, cu ajutorul SGBD Ingres poate fi aleas una dintre metodele de organizare fizic a relaiilor, iar lucrnd cu System R ar trebui s ne gndim n primul rnd la clasterizarea relaiilor i la setul necesar de indici, etc. Din aceast cauz vom cerceta mai departe doar momentele, legate de proiectarea logic a BDR, care au importan mare atunci cnd utilizm orice SGBDR. Mai mult, nu vom discuta un aspect foarte important al proiectrii determinarea cererilor de consisten (cu excepia restriciei cheii primare). Aceasta din cauza, c atunci cnd este utilizat un SGBD cu mecanisme de asigurare a consistenei datelor (de ex., sistemele SQL orientate) este foarte dificil s fie propus o abordare general de determinare a cererilor de consisten. Aceste cereri (restricii) pot fi de ordin foarte general, iar formularea lor ine mai repede de art, dect de miestria inginereasc. n literatur n aceast direcie este propus cel mult controlul automat al necontradiciei setului de restricii al consistenei. Vom considera, deci, c problema proiectarii unei baze de date de tip relaional const n luarea unei decizii motivate n vederea obinerii unor rspunsuri la urmtoarele ntrebri: Care sunt relaiile din care este format baza de date? Care vor fi atributele acestor relaii? 4.1. Proiectarea logic Vom face cunotin mai nti cu abordarea clasic, cnd ntreg procesul de proiectare are loc n termeni din domeniul modelului relaional de date, folosind metoda determinrii consecvente a setului satisfctor de relaii. Punctul de plecare este reprezentarea domeniului obiectiv sub forma uneia sau mai multor relaii i la fiecare pas al procesului de proiectare se va produce un set oarecare de scheme ale relaiilor, care posed proprieti mai bune dect la pasul precedent. Procesul de proiectare se transform ntr-un proces de normalizare a schemelor relaiilor, iar fiecare form normal care urmeaz posed proprieti mai bune dect forma precedent. Fiecrei forme normale i corespunde un set anumit de cerine, iar relaia se afl ntr-o form normal, dac satisface setul de cerine caracteristic ei. Ca exemplu de set de cerine poate fi considerat restricia primei forme normale valorile tuturor atributelor relaiei sunt atomare. Deoarece restricia primei forme normale este o cerin fundamental a modelului de date relaional clasic, vom considera c setul iniial de relaii deja corespunde acestei cerine. n teoria bazelor de date relaionale este evideniat urmtorul ir de forme normale: Prima form normal (1FN); A doua form normal (2FN); A treia form normal (3FN); Forma normal Boyce-Codde (BCNF); A patra form normal (4FN); A cincea form normal sau forma normal proiecie-reuniune (5FN sau PJ/NF). Proprietile principale ale formelor normale: Fiecare urmtoare form normal este ntr-un anumit sens mai bun dect precedenta; Trecerea la urmtoarea form normal pstreaz proprietile formelor normale precedente. La baza procesului de proiectare se afl metoda normalizrii - decompoziia relaiei, care se afl n forma normal precedent n dou sau mai multe relaii, care vor respecta cerinele urmtoarei forme normale.
32

n practic, cele mai importante forme normale ale relaiilor sunt bazate pe noiunea fundamental, numit n teoria BDR dependen (relaie) funcional. Definiia 1. Dependen funcional. n relaia R atributul y depinde funcional de atributul x (x i y pot fi compuse) dac i numai dac fiecrei valori a lui x i corespunde exact o valoare a lui y: x R y. Definiia 2. Dependen funcional total. Dependen funcional x R y se numete total, dac atributul y nu depinde funcional de nici o submulime proprie a lui x. Definiia 3. Dependen funcional tranzitiv. Dependen funcional x R y se numete tranzitiv, dac exist un atribut z, astfel nct au loc dependenele funcionale totale x R z i z R y i lipsete dependena funcional R.z R.x. (Dac ultima cerin nu va fi ndeplinit vom avea n orice relaie, care posed mai multe chei, dependene tranzitive neinteresante). Definiia 4. Atribut simplu. Numim atribut simplu orice atribut al relaiei, care nu intr n componena cheii primare. Definiia 5. Atribute reciproc independente. Dou i mai multe atribute sunt reciproc independente dac nici unul dintre aceste atribute nu este dependent funcional de altele. 4.1.1. A doua form normal Considerm urmtoarea schem a relaiei: COLABORATORISECII-PROIECTE(Nr_COL, SARCINA_COL). Cheie primar: Nr_COL, Nr_PROIECT. Dependene funcionale: Nr_COL Salariu_COL Nr_COL SECIA_Nr SECIA_Nr Salariu_COL Nr_COL, Nr_PROIECT SARCINA_COL. Observm, c dei n calitate de cheie primar a fost luat atributul compus Nr_COL, Nr_PROIECT, atributele Salariu_COL i SECIA_Nr depind funcional de o parte a cheii primare, atributul Nr_COL. Drept rezultat, nu vom putea introduce n relaia COLABORATORI-SECII-PROIECTE cortejul, care descrie un colaborator, care nu este nc implicat n realizarea vreunui proiect (cheia primar nu poate conine valori indefinite). Atunci cnd acest cortej va fi eliminat va fi distrus nu numai legtura colaboratorului cu proiectul dat, dar va fi pierdut i informaia, c acest colaborator lucreaz ntr-o secie oarecare. Dac colaboratorul este transferat ntr-o alt secie vom fi nevoii s modificm toate cortejurile, care descriu acest colaborator, n caz contrar vom obine rezultate necoordonate. Aceste fenomene neplcute se numesc anomalii ale schemei relaiei. Ele sunt eliminate prin normalizare. Definia 6. A doua form normal (aici vom considera, c unica cheie a relaiei este cheia primar). Relaia R se afl n a doua forma normal (2FN) atunci i numai atunci, cnd aflndu-se n prima form normal, fiecare atribut simplu depinde total de cheia primar. Ca exemplu va fi urmtoarea decompoziie a relaiei COLABORATORI-SECII-PROIECTE n dou relaii COLABORATORI-SECII i COLABORATORI-PROIECTE: COLABORATORI-SECII(Nr_COL, Salariu_COL, SECIA_Nr) Cheia primar: Nr_COL. Dependene funcionale: Nr_COL Salariu_COL Nr_COL SECIA_Nr SECIA_NR Salariu_COL COLABORATORI-PROIECTE(Nr_COL, Nr_PROIECT, SARCINA_COL) Cheia primar: Nr_COL, Nr_PROIECT
33

Salariu_COL,

SECIA_Nr,

Nr_PROIECT,

Dependene funcionale: Nr_COL, Nr_PROIECT SARCINA_COL Fiecare dintre aceste relaii se afl n a doua form normal i n ele sunt eliminate anomaliile evideniate mai sus. Dac se va permite prezena mai multor chei, definiia 6 va avea urmtoarea formulare: Relaia R se afl n a doua forma normal (2FN) atunci i numai atunci, cnd ea se afl n prima form normal i fiecare atribut simplu depinde total de fiecare cheie a relaiei R. Nu ne vom opri la exemple de relaii cu mai multe chei, acestea fiind prea complicate i rar ntlnite n practic. 4.1.2. A treia form normal Fie relaia COLABORATORI-SECII, care se afl n forma a doua normal. Observm, c dependena funcional Nr_COL Salariu_COL este tranzitiv, fiind consecina dependenelor funcionale Nr_COL SECIA_Nr i SECIA_Nr Salariu_COL. Altfel spus, salariul unui colaborator nu este o caracteristic a colaboratorului, ci a seciei n care acesta lucreaz (presupunere poate nu chiar corect, dar acceptabil pentru exemplu). Drept rezultat, nu vom putea introduce n BD informaii despre salariul unei secii pn cnd n aceast secie nu va apare cel puin un colaborator (cheia primar nu poate conine valori indefinite). Eliminnd cortejul, care descrie ultimul colaborator al seciei date se va pierde informaie despre salariul seciei. Pentru a modifica n mod coordonat salariul seciei vom fi nevoii s gsim mai nri toate cortejurile, care descriu colaboratorii seciei date. Asta nseam, c n relaia COLABORATORISECII exist n continuare anomalii. Acestea pot fi eliminate prin aceeai procedur de normalizare. Definia 7. A treia form normal. (Din nou vom defini presupunnd existena unei chei unice). Relaia R se afl n a treia forma normal (3FN) atunci i numai atunci, cnd se afl n a doua form normal, i fiecare atribut simplu depinde netranzitiv de cheia primar. Iat decompoziia relaiei COLABORATORI-SECII n dou relaii COLABORATORI i SECII: COLABORATORI(Nr_COL, SECIA_Nr) Cheia primar: Nr_COL Dependene funcionale: Nr_COL SECIA_Nr SECII(SECIA_Nr, Salariu_COL) Cheia primar: SECIA_Nr Dependene funcionale: SECIA_Nr Salariu_COL Fiecare dintre aceste dou relaii se afl n a treia form normal i nu are anomaliile de mai sus. Dac vrem s omitem restricia, c fiecare relaie are o singur cheie, atunci definiia 3FN va fi urmtoarea: Definiia 71 . Relaia R se afl n a treia forma normal (3FN) atunci i numai atunci, cnd se afl n a doua form normal, i fiecare atribut simplu depinde netranzitiv de o cheie oarecare a relaiei R. n practic, forma a treia normal n marea majoritate a cazurilor este cea final i cu determinarea acestei forme, de obicei, procesul de proiectare a BDR ia sfrit. Dar cteodat, totui, procesul de normalizare trebuie continuat. 4.1.3. Forma normal Boyce-Codd Considerm urmtoarea schem a relaiei: COLABORATORI-PROIECTE (Nr_COL, Nume_COL, Nr_PROIECT, SARCINA_COL) Chei posibile: Nr_COL, Nr_PROIECT

34

Nume_COL, Nr_PROIECT Dependene funcionale: Nr_COL Nume_COL Nr_COL Nr_PROIECT Nume_COL Nr_COL Nume_COL Nr_PROIECT Nr_COL, Nr_PROIECT SARCINA_COL Nume_COL, Nr_PROIECT SARCINA_PROIECT Am presupus n acest exemplu, c persoana colaboratorului este definit n totalitate att de numrul acestuia, ct i de numele lui (nu ntotdeauna are loc n realitate). n conformitate cu definiia 71 relaia COLABORATORI-PROIECTE se afl n forma normal 3. ns, deoarece exist dependene funcionale ale atributelor relaiei de un atribut, care este parte a cheii primare, apar anomalii. De exemplu, pentru a schimba n mod consistent numele colaboratorului cu numrul dat va fi necesar s modificm toate cortejurile, care conin numrul lui. Definiia 8.Determinant. Numim determinant orice atribut de care depinde funcional n totalitate un oarecare alt atribut. Definia 9. Forma normal Boyce-Codde. Relaia R se afl n forma normal Boyce-Codde atunci i numai atunci cnd determinantul ei este o cheie posibil. Este evident, c aceast cerin nu este ndeplinit pentru relaia COLABORATORI-PROIECTE. Putem realiza decompoziia ei n relaiile COLABORATORI i COLABORATORI-PROIECTE: COLABORATORI(Nr_COL, Nume_COL) Chei posibile: Nr_COL Nume_COL Dpendene funcionale: Nr_COL Nume_COL Nume_COL Nr_COL COLABORATORI_PROIECTE(Nr_COL, Nr_PROIECT, SARCINA_COL) Cheie posibil: Nr_COL, Nr_COL Dependene funcionale: Nr_COL, Nr_PROIECT Sarcina_COL Este posibil i o alt decompoziie, dac am lua la baz Nume_COL. n ambele cazuri relaiile obinute COLABORATORI i COLABORATORI-PROIECTE se afl n BCNF cu anomaliile evideniate. 4.1.4. A patra form normal Fie urmtorul exemplu de schem a relaiei: PROIECTE(Nr_PROIECT, COL_PROIECT, PROIECT_SARCIN) Relaia PROIECTE conine numerele proiectelor, lista colaboratorilor fiecrui proiect i lista lucrrilor prevzute n proiect. Colaboratorii pot participa n mai multe proiecte, iar proiecte diferite pot avea lucrri de acelai fel. Fiecare cortej al relaiei leg un proiect oarecare de colaboratorul care particip n acest proiect i de lucrarea pe care colaboratorul o ndeplinete n cadrul proiectului dat (presupunem c orice colaborator participant la proiect ndeplinete toate lucrrile prevzute de proiect). Din aceast cauz unica cheie posibil a relaiei este atributul compus Nr_PROIECT, COL_PROIECT, PROIECT_SARCIN i nu exist ali determinani. Relaia PROIECTE se afl, deci, n BCNF. Ea are un ir de neajunsuri. De exemplu, dac un

35

colaborator oarecare este delegat la un proiect dat, va fi necesar s inserm n relaia PROIECTE attea cortejuri, cte lucrri sunt n proiect. Definiia 10. Dependene multiple. n relaia R(A, B, C) exist o dependen multipl R.A > > R.B dac i numai dac mulimea valorilor lui B, care corespunde unei perechi de valori A i C depinde numai de A i nu depinde de C. n relaia PROIECTE exist dou dependene multiple Nr_PROIECT > > COL_PROIECT Nr_PROIECT > > PROIECT_SARCIN. n caz general, n relaia R(A, B, C) exist o dependen multipl R.A > > R.B dac i numai dac exist o dependen multipl R.A > > R.C. Normalizarea relaiilr asemntoare relaiei PROIECTE se bazaeaz pe urmtoarea teorem: Relaia R(A, B, C) poate fi proiectat fr pierderi n relaiile R1(A,B) i R2(A,C) atunci i numai atunci cnd exist MVD A > > B|C. Prin proiectare fr pierderi se consider decompoziia uei relaii, cnd relaia iniial poate fi restabilit integral i fr redundan prin jonciunea simpl a relaiilor obinute prin decompoziie. Definiia 11. A patra form normal. Relaia R se consider n a patra form normal atunci i numai atunci cnd n cazul existenei dependenei multiple A> > B toate celelalte atribute ale R depind funcional de A. n exemplul nostru putem propune decompoziia relaiei PROIECTE PROIECTE_COLABORATORI i PROIECTE_SARCINI: PROIECTE_COLABORATORI(Nr_PROIECT, COL_PROIECT) PROIECTE_SARCINI(Nr_PROIECT, PROIECT_SARCIN). Ambele relaii sunt n a patra form normal i nu au anomaliile de mai sus. 4.1.5. A cincea form normal n toate operaiile de normalizare petrecute pn acum o relaie a fost descompus n dou. Nu ntotdeauna este posibil acest lucru, dar este posibil decompoziia n mai multe relaii, fiecare avnd proprieti mai bune. Considerm relaia COLABORATORI_SECII_PROIECTE(Nr_COL, Nr_SECIE, Nr_PROIECT). Presupunem c un colaborator poate lucra n mai multe secii, iar n fiecare secie cu mai multe proiecte. Cheie primar pentru aceast relaie este ntreaga totalitate a atributelor, lipsind dependene funcionale i multiple. Din aceast cauz relaia se afl n 4NF. ns pot exista anomalii, care pot fi eliminate prin decompoziia relaiei iniiale n trei relaii. Definiia 12. Dependena jonciunii. Relaia R(X, Y,, Z) satisface dependenele jonciunii *(X, Y, , Z) atunci i numai atunci cnd R poate fi restabilit fr pierderi prin jonciunea proieciilor sale pe X, Y,, Z. Definiia 13. A cincea form normal. Relaia R se afl n a cincea form normal (proieciejonciune PJ/NF) atunci i numai atunci cnd orice dependen a jonciunii n R rezult din existena unei oarecare chei posibile n R. Introducem urmtoarele nume pentru atributele compuse: CS = {Nr_COL, Nr_SECIE} CP = {Nr_COL, Nr_PROIECT} SP = {Nr_SECIE, Nr_PROIECT} n dou relaii

36

Presupunem c n relaia COLABORATORI_SECII_PROIECTE exist dependena jonciunii *(CS, CP, SP): Prin exemple poate fi artat, c la inserarea i eliminarea cortejurilor pot s apar probleme. Acestea pot fi evitate prin decompoziia relaiei iniiale n trei relaii noi: COLABORATORI_SECII(Nr_COL, Nr_SECIE) COLABORATORI_PROIECTE(Nr_COL, Nr_PROIECT) SECII_PROIECTE(Nr_SECIE, Nr_PROIECT) A cincea form normal este ultima, care poate fi obinut prin decompoziie. Condiiile acestei forme sunt departe de a fi triviale din care cauz 5NF n practic se folosete relativ rar

Powered by http://www.referat.ro/ cel mai tare site cu referate

37