Sunteți pe pagina 1din 23

Capitolul I Structura i evoluia sistemelor de operare

1.1. Introducere
Fr software-ul necesar, un calculator este de neutilizat. Cu software-ul necesar, calculatorul poate stoca, procesa i regsi informaii. Software-ul poate fi mprit n dou mari categorii: Programe de sistem: acestea au rolul de a gestiona funcionarea corect i eficient a calculatorului. Cel mai important program de sistem este sistemul de operare care controleaz toate resursele calculatorului i ofer baza pe care pot fi scrise programele de aplicaii. Programe de aplicaie: acestea execut lucrurile pe care le dorete proprietarul calculatorului. Exemple de astfel de programe sunt procesoarele de documente, procesoarele de tabele etc.

Un calculator conine unul sau mai multe procesoare, memorie de baz RAM, discuri magnetice, imprimante, tastatura, display, interfaa de reea i alte echipamente periferice de intrare-ieire. Pentru a putea administra toate prile componente ale sistemului i de a prezenta o interfa om-main mai uor de neles i programat, a aprut necesitatea realizrii unui strat de software peste partea de hardware. Acest strat sofware este chiar sistemul de operare. Biblioteci Complilator Rezervri Web browser Programe aplicaii Editor Interpretor comenzi Programe sistem Sistem de operare Limbaj main Microprogramare Hardware Componente fizice Figura 1.1. Structura unui sistem de calcul

1.2. Noiunea de sistem de operare


Sistemul de operare poate fi privit din dou puncte de vedere distincte. Acestea sunt: Sistemul de operare ca main extins. Programarea la nivelul limbajului main este foarte dificil, n special pentru operaiile intrare-ieire. Detaliile concrete privind modul cum sunt realizate aceste operaii nu vor fi prezentate utilizatorului. Programul care ascunde aceste lucruri despre hardware i prezint o interfa simpla cu ajutorul fiierelor este sistemul de operare. Sistemul de operare ascunde i detalii privind ntreruperile, timer-ul, administrarea memoriei i alte caracteristici de nivel jos. Din acest punct de vedere, funcia de baz a sistemului de operare este de a prezenta utilizatorului echivalentul unei maini extinse (sau virtulale) care este mai uor de programat. Sistemul de operare furnizeaz diverse servicii la care programele pot apela folosind instruciuni speciale numite apeluri sistem. Sistemul de operare ca administrator de resurse. Conceptul de sistem de operare ca furnizor principal al unei interfee convenabile pentru utilizatori este o prezentare de sus n jos. O alternativ, prezentarea jos n sus, ine seama de faptul c sistemul de operare are rolul de a administra toate componentele unui sistem complex, de a furniza o metod de alocare controlat i ordonat a procesoarelor, memoriilor, dispozitivelor periferice tuturor programelor care le solicit.

1.3. Evoluia sistemelor de calcul


De-a lungul anilor, sistemele de operare au evoluat n mai multe generaii. Primul calculator cu adevrat digital a fost proiectat de matematicianul englez Charles Babbage (1792-1871). Dei Babbage i-a petrecut cea mai mare parte din via ncercnd s construiasc calculatorul analitic, acesta nu lucrat niciodat adecvat, deoarece maina sa era pur mecanic, iar tehnologia din acea vreme nu i permitea producerea rotielor i angrenajelor de o precizie aa de mare, cum avea el nevoie. Maina analitic a lui Babbage nu avea sistem de operare. Interesant este c i-a dat seama c avea nevoie de software pentru calculator, astfel c a angajat o tnar, Ada Augusta Lovelace drept prima programatoare din lume. Dup numele ei a fost denumit limbajul de programare ADA. Prima generaie (1945-1955): Sisteme construite cu tuburi electronice cu vid i tablouri de comanda La jumatatea deceniului al V-lea al secolului XX, Howard Aiken, de la Harvard, John Von Neumann, de la Institutul de Studii Moderne din Princeton, J. Presper Eckert i
2

William Mauchley, de la Universitatea Pensylvania i Konrad Zuse, din Germania, au reuit s construiasc maina de calculat folosind tuburi electronice cu vid. Toate programele erau realizate n limbaj maina. Limbajele de programare erau necunoscute i nici sistemele de operare nu apruser nc. Pe la nceputul anilor 50 apar cartelele perforate. Programele erau scrise pe cartele perforate de unde erau citite, n loc s se foloseasc tablourile de conexiuni. Generaia a doua (1955-1965): Sistem cu tranzistori i prelucrare pe loturi Introducerea tranzistoarelor la mijlocul anilor 50 a schimbat radical modul de construire a calculatoarelor. Acum, pentru prima oar, s-a fcut deosebire ntre proiectani, constructori, programatori i personalul de intreinere. Aceste maini, numite sisteme mari de calcul (mainframes) erau nchise n camere speciale dotate cu aer condiionat i cu operatori calificai ca s lucreze pe ele. Pentru a rula un job (program sau set de programe) programatorul trebuia mai nti s scrie programul pe hrtie (n FORTRAN sau limbaj de asamblare), apoi l perfora pe cartele, l aducea n camera de intrare, unde l nmna unui operator. Cnd calculatorul termina de executat programul, un operator mergea la imprimanta i lua datele de ieire pe care le ducea la camera de ieire astfel ca programatorul s le poat lua mai trziu. Pentru a reduce timpul irosit, a fost adoptat soluia de a se aduna mai multe job-uri n camera de intrare, care apoi s fie citite i memorate pe o band magnetic folosind un computer mic i ieftin, cum era, de exemplu, IBM 1401, foarte bun la citirea cartelelor, copierea benzilor i tiprirea datelor de ieire, dar nu la fel de bun pentru calcule numerice la care erau folosite alte maini precum IBM 7094. Calculatoarele celei de a doua generatie erau folosite mai ales pentru calcule tiinifice i inginereti, cum ar fi rezolvarea ecuaiilor cu derivate pariale. Programele erau realizate n mare msur n limbajul FORTRAN i n limbajul de asamblare. Sistemele de operare tipice erau FMS (Fortran Monitor System) i IBSYS, sistemul de operare al IBM 7094. Generaia a treia (1965-1980): Sisteme cu circuite integrate i multiprogramarea La nceputul anilor 60, cei mai muli producatori de computer aveau doua linii de producie distinct: computerele tiinifice, ca IBM 7094 folosite pentru calcule numerice n tiin i inginerie i computer comerciale, ca IBM 1401 folosite de bnci i de companiile de asigurare. IBM a ncercat s rezolve amndou probleme introducnd SYSTEM/360 care satisface nevoile tuturor clienilor i care folosea circuite integrate la scar mic. Tot acum s-a realizat un sistem de operare care s rezolve cerinele conflictuale ale diferitelor tipuri de utilizatori, un sistem de operare de dou-trei ori mai mare dect FMS, ce conine milioane de linii scrise n limbaj de asamblare fr a elimina toate deficienele. Fiecare versiune fixa unele deficiene, dar introducea altele.

Totui, aceste sisteme de operare au introdus tehnici noi, dintre care cea mai important este multiprogramarea. La IBM 7094, atunci cnd job-ul current fcea o pauz pentru a atepta s se termine o band sau alta operaie de intrare-ieire, procesorul era neutilizat. Soluia care s-a impus a fost partiionarea memoriei n cteva zone, ncrcnd cte un job diferit n fiecare partiie. O alt caracteristic important a sistemului de operare din a treia generaie era capacitatea de a citi job-urile de pe cartele pe disc, apoi ori de cte ori un job care ruleaz este terminat, sistemul de operare va putea ncrca un nou job de pe disc n partiia acum goal. Aceast tehnic se numete spooling. O alt tehnic introdus a fost aceea de timesharing utilizarea unui sistem de calcul de mai multe personae n aceali timp; partajarea timpului permite rularea mai multor programe concomitant, prin intercalarea intervalelor de timp de prelucrare alocate fiecrui program/utilizator. n aceast perioad, Laboratoarele Bell au lucrat la proiectul MULTICS, care mai trziu a condus la realizarea UNIX-ului. Deoarece diverse organizaii i-au creat propriile versiuni, pentru a se putea rula programele pe orice versiune UNIX, IEEE a dezvoltat un standard pentru UNIX, denumit POSIX, care definete un set de servicii asigurate de sistemul de operare i care pot fi portate cu uurin de la un sistem la altul. Generaia a patra (1980-prezent): Calculatoarele personale Generaia a patra de calculatoare este marcat de apariia calculatoarelor personale. n aceast perioad au dominat dou sisteme de operare: MS-DOS realizat de Microsoft i UNIX. MS-DOS a fost sistemul de operare folosit pe un IBM PC i restul calculatoarelor ce folosea procesorul Intel 8088 sau succesorii si 386, 486, Pentium, Pentium Pro, Pentium II. MS-DOS a fost urmat de sistemul Windows, care iniial a reprezentat doar o interfa grafic i ncepnd cu versiunea Windows 95 aceasta a devenit sistem de operare. n 1998 a fost lansat versiunea Windows 98. Windows 95 i Windows 98 foloseau nc n mare msur limbajul de asamblare pe 16 bii al lui Intel. Un alt sistemul de operare al firmei Microsoft este Windows NT, care este compatibil cu Windows 95 de la un anumit nivel, dar este complet rescris de la zero. Windows NT este un sistem care lucreaza n totalitate pe 32 de bii. Versiunea 5 a Windows NT a fost redenumita Windows 2000, la nceputul anului 1999. Se inteniona ca Windows 2000 s fie succesorul att lui Windows 98, ct i a lui Windows 4.0. ntruct nlocuirea nu a funcionat bine, Microsoft a produs o alt versiune de Windows 98, numit Windows Me. Un alt competitor n lumea calculatoarelor personale este UNIX. UNIX-ul este foarte puternic pe staiile de lucru i pe calculatoarele de nivel superior, aa cum sunt servere de reea. La mijlocul anilor 80 au aprut sistemele de operare pentru reele de calculatoare care sunt instalate pe un server dintr-o reea local i care coordoneaz activitile legate de asigurarea serviciilor calculatoarelor i celorlalte dispozitive ataate

reelei. Spre deosebire de un sistem de operare monoutilizator, sistemul de operare n reea trebuie s rspund cerinelor mai multor staii de lucru, rezolvnd diferite sarcini, cum ar fi accesul la reea i comunicaiile, alocarea i partajarea resurselor, protejarea datelor i controlul erorilor.

1.4. Conceptele importante utilizate de sistemele de operare


Conceptele de baz utilizate de sistemele de operare sunt: Procesele Procesul este un program aflat n execuie. Fiecrui proces i este asociat un spaiu de adres n care procesul poate citi i scrie. Spaiul de adres conine programul executabil, datele programului i stiva. De asemenea, procesului i se asociaz i un set de registre, inclusiv un contor de program, pointer pentru vrful stivei i alte registre. Cnd un proces este suspendat temporar, informaiile sunt salvate n tabela proceselor, care este un vector de structuri, cte una pentru fiecare proces. De exemplu, procesul numit interpretor de comenzi citete comenzile de la terminal, creeaz un proces care ruleaz comanda, iar cnd procesul este terminat el execut un apel sistem ca s l termine. Dac un proces poate crea unul sau mai multe procese (procese-copil) i aceste procese creeaz alte procese-copil, se obine o structur arborescent a proceselor. Interblocrile Atunci cnd dou sau mai multe procese interacioneaz, ele pot ajunge, uneori, n situaii conflictuale din care nu pot iei. O astfel de situaie se numete interblocare. Administrarea memoriei Fiecare calculator are o memorie principal, n care reine programele care se execut. ntr-un sistem de operare foarte simplu, n memorie se afla numai un singur program la un moment dat. Pentru a rula un al doilea program, el trebuie plasat n memorie dup ce a fost ndeprtat primul. Sistemele de operare mai complexe permit mai multor programe s coexiste n memorie n acelai timp. Pentru a evita influenele ntre aceste programe este necesar un mecanism de protecie. Mecanismul este hard, dar este comandat de sistemul de operare. O problem diferit, dar la fel de important, legat de memorie, este administrarea spaiului de adrese a proceselor. Intrare/Ieire

Fiecare sistem de operare are un subsistem de I/E pentru administrarea dispozitivelor de intrare/iesire. Unele programe de I/E sunt de dispozitiv, adic pot fi aplicate la fel de bine mai multor dispozitive de I/E. Pe de alt parte, exist i drivere specifice unor anumite dispozitive de I/E. Fiierele O noiune foarte important relativ la sistemele de operare este cea de fiier i legat de acesta sistemul de fiiere. Pentru a ascunde utilizatorilor dificultile citirii i scrierii datelor pe disc sistemul de operare furnizeaz conceptul de fiier ca mijloc de stocare a datelor pe disc. Se vor pune la dispoziie utilizatorilor apeluri de sistem pentru crearea, tergerea, citirea sau scrierea fiierelor, deschiderea i nchiderea fiierelor. Majoritatea sistemelor de operare furnizeaz o modalitate de a grupa logic mai multe fiiere ntr-un director. Sistemul de operare va furniza apeluri sistem pentru crearea i tergerea fiierelor dintr-un director. Directorul poate fi privit ca o tabel n care sunt memorate numele fiierelor componente. De asemenea, o intrare ntr-un director poate fi un subdirector. Acest model al memorrii datelor pe disc d natere la o ierarhie sistemul de fiiere.
Directorul rdcin

Studeni Flavius Adrian Lorena

Profesori Alexandru

Documente

Jocuri
Directorul rdcin

Cursuri

Lucrari

Mail rul rdcin

Directorul rdcin Directorul rdcin Directorul rdcin

rul rdcin Cerere.txt CV.doc Directorul rdcin Directorul rdcin rul rdcin rul rdcin

rul rul rdcin UNIX.doc rdcin Retele.txt 344.txt rul rdcin rul rdcin rul rdcin

Fiiere
Directorul rdcin

Directorul rdcin Directorul rdcin Directorul rdcin

Figura 1.2. Sistemul de fiiere

rul rdcin

Fiierele dintr-un director pot fi specificate prin calea de acces plecnd de la nodul arborelui, nod denumit de obicei director rdcin. O astfel de cale care pleac de la rdcin este o cale absolut. n Figura 1.2. calea absolut de acces la fiierul cerere.txt este /student/flavius/documente/cerere.txt. Prin simbolul / am marcat directorul rdcin, iar urmtoarele simboluri / au doar rolul de a desprii numele directoatelor. n orice moment un proces are un director curent de lucru. Dac, spre exemplu, directorul curent de lucru este profesori, atunci fiierul unix.doc poate fi specificat n
6

felul urmtor lorena/cursuri/unix.doc. n acest caz calea de acces pornete din directorul curent fr a mai fi nevoie de parcurgerea ntregului arbore ncepnd cu rdcina. Calea construit n acest fel se numete cale relativ. n sistemele multiutilizator sistemul de operare trebuie s furnizeze un mecanism de protecie al fiierelor. n UNIX pentru fiecare fiier exist un cod de protecie format din trei grupuri de trei bii. Relativ la accesul la fiiere, utilizatorii sistemului sunt mprii n: proprietarul fiierului, grupul de utilizatori din care face parte proprietarul i restul utilizatorilor. Pentru fiecare categorie exist trei bii RWX care acord sau nu dreptul de citire (R), scriere (W) sau execuie (X) a unui fiier. Spre exemplu, un fiier cu drepturile rwxrw-r-- poate fi citit, scris i executat de proprietarul su, poate si citit sau scris de ctre grupul de utilizatori din care face parte proprietarul fiierului i poate fi doar citit de restul utilizatorilor. Un alt concept important este fiierul special. Unele sisteme de operare au cte un fiier special corespunzator fiecrui dispozitiv de I/O. n acest mod, toate dispozitivele de I/O pot fi tratate ca simple fiiere. Majoritatea sistemelor de operare multiprogramate furnizeaz anumite mijloace prin care mai multa procese comunic. Un astfel de mijloc este fiierul conduct (pipe). Un fiier conduct este un tip aparte de fiier care conecteaz dou procese ce doresc s schimbe date ntre ele. Un proces va scrie date n fiierul conduct, n timp ce procesul de la cellalt capt va citi aceste date. Interpretorul de comenzi (Shell) Acesta este un program care asigura comunicaia direct ntre utilizator i sistemul de operare. Dei nu face parte din sistemul de operare, interpretorul de comenzi utilizeaz multe dintre caracteristicile din sistemul de operare i acesta este un bun exemplu de cum pot fi folosite apelurile de sistem. Apeluri de sistem Interfaa ntre sistemul de operare i programele utilizatorului este definit de un set de instruciuni extinse pe care le ofer sistemul de operare i care sunt cunoscute sub numele de apeluri de sistem. Sistemele de operare grupeaz aceste funcii n ase categorii: 1. 2. 3. 4. 5. 6. Administrarea proceselor Semnale Administrarea fiierelor Administrarea directoarelor i a sistemelor de fiiere Protecie Administrarea timpului

1.5. Structura sistemelor de operare


Exist patru modaliti de organizare intern a sistemelor de operare: 1) Sistemul monolitic: acesta de fapt nu are nici o structur. Sistemul de operare este o colecie de proceduri, dintre care fiecare poate apela pe oricare oricnd are nevoie. Apelurile de sistem furnizate de sistemul de operare sunt cerute de programe punnd parametri bine definii n locuri, ca, de exemplu, registre sau n stiv i apoi executnd un set special de instruciuni numite kernell call sau supervisor call. Program utilizator Program utilizator Kernell call
4 1 3 Procedur de serviciu

Programele de aplicaie ruleaz n mod utilizator

Sistemul de operare ruleaz n mod kernel

Figura 1.3. Apelul de sistem n figura 1.3. este exemplificat mecanismul de lucru al unui apel de sistem. n prima etap se execut o instruciune special (trap) care trece procesorul din modul utilizator n modul nucleu (kernel). Sistemul de operare examineaz apoi parametrii acestei instruciuni (2) pentru a stabili ce apel de sistem trebuie invocat. Prin parcurgerea unui tabel de pointeri (3) se determin adresa procedurii care trebuie executat pentru a duce la ndeplinirea apelului sistem cerut, apoi n final (4) procesorul revine n modul de execuie utilizator. Aceasta organizare sugereaz o structur de baz pentru sistemul de operare: 1. Un program principal care invoc procedura de serviciu cerut 2. Un set de proceduri de servicii care se ocup cu tratarea apelurilor sistem 3. Un set de proceduri utilitare care ajut procedurile de servicii.

n acest model, pentru fiecare apel de sistem exist o singur procedur de sistem care se ocup de el. Procedurile utilitare ndeplinesc funcii de care au nevoie anumite proceduri servicii, cum ar fi obinerea datelor de la programele utilizator. 2) Sistemele stratificate: Primul sistem construit stratificat a fost THE construit la Technische Hogeschool Eindhoven (1968) n Olanda i are ase niveluri. (5) Operator (4) Programele utilizator (3) Administrarea operaiilor I/O (2) Comunicare operator-proces (1) Administrarea memoriei (0) Alocarea procesorului i multiprogramarea Figura 1.4. Structura sistemului THE Nivelul 0 avea rolul de a gestiona alocarea procesorului pentru diferite procese, realiznd astfel multiprogramarea. Nivelul 1 era gestionarea memoriei, cu rolul de a aloca memorie pentru programele care erau executate. Nivelul 2 era destinat operaiilor de comunicare dintre fiecare proces i consola operator asociat lui. Nivelul 3 gestiona operaiile de intrare-iesire. La nivelul 4 se gaseau programele utilizator. Procesul operatorului sistemului era localizat la nivelul 5. 3) Maina virtual: unul dintre primele sistemele de tip main virtul a fost VM/370 destinat calculatoarelor mainframe IBM. La realizarea lui s-a plecat de la urmtoarea observaie: sistemul de operare trebuie s implementeze conceptul de multiprogramare i s furnizeze o main extins cu o interfa mai uor de programat dect hardul de baz. Partea principal a sistemului, numit monitorul mainilor virtuale, ruleaz direct de pe hard i realizeaz multiprogramarea, oferind nu una ci mai multe maini virtuale nivelului imediat superior. 4) Modelul client-server: O tendin actual n domeniul sistemelor de operare este de a muta codul n straturile superioare astfel nct kernelul s devin ct mai mic. Majoritatea funciilor sistemului de operare este transferat ctre procese utilizator. De exemplu, pentru a citi un bloc de date de pe disc, un proces utilizator (client) va trimite aceast cerere ctre un proces server care realizeaz operaia de citire i trimite napoi rezultatul.

Proces Client

Proces Client

Server de Server de procese terminale ...

Server de Server de fiiere memorie

Mod utilizator

KERNEL

Mod kernel

Clienii obin servicii trimind mesaje proceselor server

Figura 1.5. Modelul client-server n acest model, tot ceea ce face nucleul este de a gestiona comunicaia ntre clieni i servere. Prin divizarea sistemului de operare n mai multe pri, fiecare dintre acestea gestionnd o singur faet a sistemului, cum ar fi serviciul de fiiere, serviciul de gestiune a proceselor, serviciul care se ocup de terminal sau serviciul de gestiune a memoriei, fiecare parte devine mic i uor de administrat. Mai mult, pentru c toate serverele ruleaz ca procese n modul utilizator i nu mod modul nucleu, ele nu au acces direct la hard. n consecin, dac se activeaz o eroare n serverul de fiiere, serviciul de fiiere s-ar putea s cad, dar acest lucru nu va face s cad de obicei ntreaga main. Un avantaj al modelului client-server este adaptabilitatea sa la sistemele distribuite. n acest caz fiecare proces se poate rula pe o main diferit. Maina 1 Client Kernel Maina 2 Server de fiiere Kernel Maina 3 Server de procese Kernel Maina 4 Server de terminale Kernel

Reea Mesaj de la client spre server

Figura 1.6. Modelul client-server pentru un sistem distribuit

1.6. Programe de comand control


Sisteme de operare sunt alctuite n principal, din dou categorii de programe: - programe de comand-control avnd rolul de coordonare i control al tuturor funciilor sistemului de operare;

10

- programe de servicii care sunt executate sub supravegherea programelor de comand-control, i sunt utilizate de programator pentru dezvoltarea aplicaiilor. Programele de comand-control cunoscute i sub numele de monitoare, supervizoare sau executive, coordoneaz activitatea celorlalte componente ale sistemului de operare. Cele mai frecvent utilizate componente ale supervizorului sunt ncrcate n memoria intern nc de la generarea sistemului de operare, fiind pstrate n memoria intern pe tot parcursul execuiei aplicaiilor de ctre sistemul de calcul; aceste programe se numesc rutine rezidente, formnd nucleul sistemului de operare; celelalte componente rmn n memoria extern fiind apelate i executate numai atunci cnd sunt solicitate de ctre nucleul sistemului de operare ( se numesc rutine tranziente) asemenea oricrui program de aplicaie (Figura 1.7.)

Figura 1.7. Rutine rezidente i rutine tranziente Supervizorul iniiaz execuia operaiilor de intrare/ieire pentru transferul componentelor tranzitorii din memoria extern n memoria intern, fiind totodat responsabil de alocarea canalelor de transfer (magistralele) pentru dispozitivele periferice de intrare/ieire; de asemenea efectueaz controlul i coordonarea unitii centrale de prelucrare (CPU) pe parcursul recepionrii de mesaje de la canalele prin care se execut transferul, a execuiei programelor din memoria intern respectiv, a transmiterii de mesaje ctre dispozitivele periferice de intrare/ieire prin intermediul magistralelor. Dispozitivele periferice de intrare/ieire trebuie s fie alocate aplicaiilor care le solicit, datele solicitate fiind transferate n memoria intern sub controlul sistemului de gestiune a intrrilor/ieirilor. Programele de comand-control ndeplinesc trei funcii majore: administrarea resurselor fizice ale sistemului de calcul; planificarea, lansarea i urmrirea execuiei aplicaiilor;

11

depistarea i tratarea evenimentelor deosebite ce apar n timpul execuiei unei aplicaii.

1.7.

Programe de servicii pentru dezvoltarea programelor de aplicaie

Programele de servicii se execut sub controlul programelor de comand control ca orice program de aplicaie, avnd n componen programe care faciliteaz dezvoltarea programelor de aplicaii respectiv programe utilitare de interes general. Principalele programe de care dispune orice sistem de operare pentru dezvoltarea unui program de aplicaie sunt: editoarele de texte, translatoarele de limbaje, editoarele de legturi, ncrctoarele, depanatoarele.

1.7.1.

Editoare de texte

Editorul de texte ofer posibilittea introducerii i modificrii un program surs (PS) scris ntr-un limbaj de programare. Un editor de texte este un set de programe ce ofer posibilitatea introducerii, editrii, i tipririi de texte sub forma unor fiiere ASCII. Textele sunt alctuite din caractere care se introduc de la tastatur aprnd n acelai timp i pe monitor; erorile pot fi corectate uor deoarece acestea nu sunt nc tiprite pe hrtie. Editoarele de texte au ca activitate principal, crearea i editarea de texte; mpreun cu hardware-ul, furnizeaz calea de urmat pentru vizualizarea, memorarea, editarea i regsirea textelor create. Editoarele de texte mai performante, permit i introducerea elementelor de grafic n text. Deoarece documentaia de utilizare a editoarelor de texte este voluminoas, proiectanii acestora au prevzut pentru cele mai frecvente funcii, un sistem de Help ce const n informaii minime afiate la monitor referitor la modul de lucru al funciei. Numele fiierului, pagina curent, linia i coloana n care se afl cursorul, sunt permanent afiate pe monitor n vederea orientrii utilizatorului; textul poate fi memorat pe suport magnetic, se poate refolosi i modifica dup necesiti.

12

Editoarele de texte sunt componente ale sistemului de operare cu cea mai mare frecvena de utilizare, existnd astzi o mare varietate datorit serviciilor aduse pentru a degreva utilizatorul de sarcini elementare cum sunt: desprirea n silabe, alinierea textelor, paragrafelor, titlurilor, sublinierea unor poriuni din text, cutare unui ir de caractere i editarea acestuia, indexarea documentului, realizarea cuprinsului, etc.

1.7.2.

Translatoare de limbaje

Translatoarele de limbaje sunt componente ale programelor de servicii care traduc programe surs (PS) scrise de utilizator ntr-un limbaj de programare, n programe obiect (PO), a cror instruciuni n limbaj main sunt recunoscute i executate de sistemul de calcul. Translatoarele de limbaje se divid n dou categorii: 1) compilative care realizeaz numai traducerea PS PO; acestea pot fi: asambloare - programe de servicii care traduc programe surs scrise n limbaje de asamblare specifice fiecrui sistem de calcul (masm, tasm); compilatoare - programe de servicii care traduc programe surs scrise n limbaje evoluate, universale (Pascal, C);

2) interpretative - care odat cu compilarea realizeaz i execuia programului (Basic). Spre deosebire de asambloare, compilatoarele creeaz o form intermediar arborescent a instruciunilor din programul surs astfel: orice variabil este un nod terminal al arborelui; orice operator creeaz un arbore binar a crui ramur stng este primul operand, iar cea din dreapta este al doilea operand.

Exemplu: S se determine arborele binar corespunztor aciunii unui compilator pentru calculul expresiei: X = A * ( B - C ) * D * ( E - F - 207 ) Rezultatul aciunii compilatorului asupra expresiei este redat n Figura 1.8.

13

X * A B -

* * D F 207

C E

Figura 1.8. Aciunea unui compilator asupra expresiei X

Figura 1.9. Etapele unui proces de compilare (1) Analiza lexical descompune PS n atomi lexicali (identificatori, cuvinte rezervate, constante, operatori) pe care i introduce n tabela de simboluri sub form codificat. (2) Analiza sintactic prin care irul de atomi lexicali este analizat n privina depistrii unor structuri sintactice ca: expresii, liste, proceduri, plasndu-le ntr-un arbore de derivare (arbore sintactic). (3) Analiza semantic folosete structura programului i informaiile din tabela de simboluri pentru generarea unui grup de instruciuni simple cu format fix (codul intern); dac arborele sintactic nu respect gramatica limbajului, semnalizeaz erori.
14

(4) Optimizarea codului presupune eliminarea redundanelor, a lungimii i variabilelor inutile, n vederea unei execuii mai eficiente. (5) Generarea codului aloc zone de memorie pentru pstrarea datelor n timpul execuiei, aloc registre i produce codul obiect. (6) Gestiunea structurilor de date reprezint o colecie de proceduri care creeaz i actualizeaz baza de date cu care lucreaz celelalte faze; n baza de date se gsesc tabelele identificatorilor, a constantelor, a constructorilor, a cuvintelor cheie, a procedurilor standard, care uneori sunt nglobate ntr-o unic tabel de simboluri. (7) Tratarea erorilor este realizat de o colecie de proceduri ce sunt activate cnd se depisteaz o eroare n program; utilizatorul primete mesaje de diagnostic iar compilatorul continu analiza sintactic pentru a depista alte erori. O succint abordare comparat a translatoarelor de limbaje conduce ctre urmtoarele aspecte mai semnificative: asamblorul este determinat de limbajul main specific fiecrui sistem de calcul, iar compilatorul este specific unui anumit limbaj de programare independent de sistemul de calcul; compilatorul ofer posibilitatea scrierii de programe pentru orice sistem de calcul ce dispune de compilatorul respectiv; asamblorul translateaz o definiie simbolic a programului surs ntr-o singur definiie din programul obiect, n timp ce compilatorul o poate translata n mai multe definiii din programul obiect (memoria ocupat astfel de asamblor necesit mai puin spaiu, dar compilatorul este mai puternic datorit includerii ntr-o definiie surs, a mai multor definiii obiect); interpretorul este util n special, la controlul proceselor industriale ce se desfoar n timp real, ns interpretarea este mai lent dect compilarea; execuia repetat a unui program este facilitat de compilator care realizeaz translatarea o singur dat, n timp ce interpretorul l translateaz de fiecare dat.

Exist componente ale sistemului de operare ce sunt concepute ca programe generalizate care, n funcie de necesitile utilizatorului se pot adapta pentru a realiza un grup de funcii; aceasta se realizeaz n faza de asamblare, prin intermediul unui macrolimbaj care asigur generarea secvenelor de program (PS i PO) specificate. Macrolimbajul folosete macroinstruciuni care sunt instruciuni ale PS, care asigur prin intermediul comenzilor, inserarea n PS a secvenei de instruciuni n locul unde a aprut macroinstruciunea; de remarcat este faptul c nu economisete dect timp utilizator.

15

Structura unei macroinstruciuni: -nceput -nume -secvena de instruciuni -sfrit MACRO NNNN instr.1 ... instr.n ENDM

Dup definirea unei macroinstruciuni, utilizarea numelui NNNN este echivalent cu utilizarea secvenei de instruciuni incluse n macroinstruciune Macroasamblorul este componenta programelor de servici a sistemului de operare care trateaz macroinstruciunile, avnd ca activiti de baz: recunoaterea macrodefiniiilor indicate prin MACRO, ENDM; memorarea definiiilor macroinstruciunilor de care are nevoie pentru a le expanda la un apel macro; recunoaterea apelului macroinstruciunii cu secvena de instruciuni corespunztoare. nlocuirea macroinstruciunii cu secvena de instruciuni corespunztoare.

1.7.3.

Editorul de legturi

Editorul de legaturi realizeaz legaturi intre modulele obiect in vederea construirii structurii pe segmente, necesare executiei programelor (program direct executabil). Structura extern a unui PS este alctuit din seciune, segment i program. Seciunea este o unitate de program independent constituit dintr-o secven de definire a datelor i o secven de instruciuni, ce asigur posibilitatea comunicrii cu alte uniti ale PS (Figura 1.10.).

Figura 1.10. Comunicaia dintre dou seciuni ale unui program surs

16

Definirea datelor i procedurilor servesc att propriei seciuni ct i altor seciuni. Compilatorul asigur pe lng generarea codului obiect i informaii de legtur ntre seciuni: informaii de identificare (nume seciune, punctul de intrare); informaii de legtur.

Structura unei seciuni dup compilare este redat n Figura 1.11.

Figura 1.11. Structura unei seciuni dup compilare Dicionarul de legturi rezult n urma determinrii de ctre compilator, a elementelor de comunicaie specificate n fiecare seciune a PS, coninnd dou tipuri de simboluri: externe - nedefinite n seciune, cu adresa necunoscut; interne - definite n seciune, dar referite din exteriorul acesteia.

Segmentul este o succesiune de seciuni ntre care au fost rezolvate legturile; acesta conine: numele segmentului; punctul de intrare n segment; codul obiect al seciunilor aranjate ntr-o anumit ordine.

Programul este o structur arborescent de segmente (segment principal i segmente subordonate organizate pe substructuri); acesta este organizat ntr-o structur multifazic de ctre editorul de legturi, care pe baza numelor segmentelor din care este alctuit programul i a secvenei de seciuni din care este compus fiecare segment, creeaz structura de program pe care o depune pe suport extern (de obicei, hard-disk) de unde va fi ulterior ncrcat n RAM pentru execuie. Editorul de legturi prelucreaz PO rezultat n urma compilrii seciunilor, n scopul construirii structurii pe segmente a programului; el este o component a programelor de servicii care asigur urmtoarele funcii: construirea dicionarului de legturi ntre diverse seciuni;

17

nlocuirea fiecrei seciuni din cadrul unui segment, cu un factor de relocare corespunztor adresei de ncrcare n RAM; alocarea de zone continue pentru segment; modificarea constantelor de adres relocabile, pentru a conine valorile relocate ale simbolurilor lor; cutarea n biblioteca relocabil, a modulelor obiect catalogate; construirea structurii arborescente a programelor executabile.

Activitatea editorului de legturi (linkeditor) este redat n Figura 1.12.

Figura 1.12. Activitatea editorului de legturi Observaii: mediul de programare Pascal include editorul de legturi n compilator; sub sistemul de operare UNIX editarea legturilor se realizeaz implicit, cu excepia cazurilor n care ea este gestionat de utilizator; n acest caz, la compilare se va specifica opiunea - o (numai compilare).

1.8. Alte programe de servicii


ncrctorul ncrctorul este componenta sistemului de operare ce ncarc programul obiect executabil (POE) n RAM n vederea execuiei i iniializarea execuiei. Programul direct executabil se incarca in memorie de catre componenta sistemului de operare numita ncarcator, i din acel moment executia poate avea loc. ncrcarea programelor n RAM pentru execuie se poate face:

18

imediat dup translatare, cnd sistemul de operare are inclus ncrctorul n compilator (compilatoare Load and Go); n momentul editrii de legturi (ncrctorul inclus n Link); dup editarea de legturi, ca proces distinct.

Activitatea ncrctorului la sistemul de operare MS-DOS este materializat prin execuia funciei exec, n timp ce la sistemul de operare UNIX funcia similar este execl.

Depanatorul Depanatorul este un program de servicii ce ofer utilizatorului mijloace convenabile pentru depanarea i controlul operaiilor programului su prin: - lansarea n execuie a programului; - suspendarea execuiei n puncte predeterminate (breakpoints) sau execuie pas cu pas; - examinarea i modificarea coninutului cuvintelor din RAM i registre; - realizarea de modificri i corecii adiionale la rularea programului, utiliznd codul binar, octal, hexazecimal. Sub MS-DOS exist utilitarul debug, n timp ce sub UNIX se poate folosi utilitarul sdb ce se constituie ca un depanator simbolic care permite analiza execuiei pas cu pas a programelor, prin vizualizarea strii variabilelor, a parametrilor ce definesc mediul de execuie i altele. Alturi de programele de servicii destinate acordrii de instrumente ce ofer faciliti utilizatorilor pentru dezvoltarea propriilor programe de aplicaie, un sistem de operare dispune de programe de interes general care sunt lansate n execuie prin specificarea unor comenzi aparinnd interpretorului de comenzi sau se gsesc pe suportul de memorie extern sub forma fiierelor executabile: gestiunea cataloagelor (directori, subdirectori): copiere, mutare, tergere, creare, redenumire etc. gestiunea datelor i programelor sub forma fiierelor: creare, mutare, copiere, tergere, redenumire, salvare, refacere etc.; informaii despre sistemul de calcul, despre componente i despre resursele utilizate; opiuni de configurare a resurselor; comprimare/decomprimarea spaiu pe suportul de memorie extern: pkzip/pkunzip, arj, rar, stacker;

19

antivirus: scan, clean, tbav, fprot, avx, rav; alte comenzi.

1.9. Sisteme de operare la calculatoare personale


La calculatoarele personale (PC) exist n principal dou categorii de sisteme de operare: 1) monotasking care execut un singur task (program sau parte a unui program aflat n faza de execuie) la un moment dat, avnd ca principale funcii: ncrcarea i execuia programelor; asigurarea unei interfee omogene cu dispozitivele periferice; posibilitatea dialogrii cu utilizatorul prin intermediul unui interpretor de comenzi.

2) multitasking care va asigura suplimentar, partajarea timpului ntre programele ce se execut simultan i gestiunea alocrii resurselor sistemului de calcul att hardware ct i software; nucleul sistemului de operare include urmtoarele componente: supervizorul care are ca principale activiti lansarea, oprirea sau suspendarea aplicaiilor; planificatorul proceselor care regleaz timpul de execuie alocat pentru diverse activiti. alocatorul de resurse evideniaz resursele libere sau alocate; modulul de gestiune pentru intrri /ieiri ce asigur dialogul cu perifericele.

La nucleul sistemului de operare se adaug: interpretorul de comenzi; sistemul de gestiune al fiierelor; sistemul de gestiune al bazelor de date; programe de comunicaie.

Referirile s-au fcut la nucleul sistemelor de operare rezident n memoria intern, parte component a programelor de comand control; considerentele precizate la programele de sistem rmn valabile cu specificul impus de categoria microsistemelor. Principalele sisteme de operare existente astzi pe PC-uri sunt: MS-DOS i interfeele grafice Windows, Unix, OS/2, Apple/Macintosh DOS, VMS.

20

1.10. Funciile de baz ale sistemelor de operare

Sistemul de operare pune la dispoziie mecanisme pentru suportarea unei abstractizri pentru procese i pentru administrarea resurselor folosite de procese. Funciile sistemelor de operare pot fi clasificate n patru categorii: Gestionarea proceselor i a resurselor Gestionarea memoriei Gestionarea dispozitivelor de intrare-iesire Gestionarea fiierelor

Gestionarea proceselor i a resurselor Procesele sunt uniti de calcul de baz definite de programatori, iar resursele sunt elementele mediului de calcul necesar unui proces pentru a se executa. Administrarea proceselor i managementul resurselor pot fi separate n dou module diferite, dar majoritatea sistemelor de operare le nglobeaz ntr-un singur modul, din moment ce amndou definesc mediul de execuie al programului. Gestionarea memoriei Modulul de gestionare a memoriei administreaz alocarea i utilizarea memoriei principale. Fiecare proces cere i folosete memorie n funcie de necesitile sale. Administratorul de memorie aloc memorie proceselor care concureaz pentru aceeai zon dup o anumit strategie specificat. Administratorul de memorie pune la dispoziie extensii de memorie virtual n aa fel nct memoria principal a calculatorului s par mai mare dect este n realitate. Aceast facilitate este realizat prin integrarea memoriei principale a calculatorului i a memoriei de pe dispozitivele de stocare. Administratorul de memorie poate permite unui proces aflat pe o main s acceseze i s partajeze memoria fizic de pe un alt calculator. Gestioarea dispozitivelor de intrare-ieire Sistemele de operare trateaz toate dispozitivele cum ar fi de exemplu discuri, benzi magnetice, terminale i imprimante n aceeai manier general, cu o atenie special pentru administrarea procesorului i a memoriei. Managementul dispozitivelor se refer la modul n care aceste dispozitive generice sunt administrate. Gestionarea fiierelor
21

Fiierele sunt o resurs abstract a dispozitivelor de stocare. Informaia stocat n memoria principal va fi suprascris imediat ce memoria este dealocat de un proces. Informaia trebuie salvat pe dispozitive de stocare, cum ar fi banda magnetic sau discul. Nevoia de a produce abstractizri ale detaliilor operaiilor de intrare/ieire pentru dispozitive de stocare a fost printre primii pai care au condus ctre sistemele de operare. n sistemele de operare moderne, sistemul de fiiere este distribuit astfel nct un proces de pe o main poate citi i scrie la fel de bine fiiere stocate n sistemul local, ct i de pe alt main din interiorul reelei.

22

Capitolul II Procese
2.1. Noiunea de proces
Toate sistemele de operare sunt construite n jurul conceptului de proces: Sistemul de operare trebuie s intercaleze execuiile unui numr de procese astfel nct s maximizeze utilizarea procesului, asigurnd totodat un timp de rspuns bun Sistemul de operare trebuie s aloce resurse proceselor n conformitate cu o anumit strategie (anumite funcii sau aplicaii au un nivel mai sczut sau mai mare de prioritate) i trebuie n acelai timp s evite blocrile (acestea apar n momentul n care exist dou procese care necesit dou resurse i fiecere are prioritate asupra uneia dintre dintre resurse; ambele procese vor atepta un timp nedefinit resursa care le lipsete). Sistemul de operare este necesar realizrii operaiilor de comunicare dintre procese i crerii acestora de ctre utilizator.

2.2. Strile proceselor


Principala funcie a unui proces este s execute instruciunile main existent n memoria principal. Aceste instruciuni sunt oferite sub forma programelor care conin secvene de instruciuni. Un procesor poate intercala, n timp, execuia unui numar de procese. Astfel, procesorul va executa instruciuni din repertoriul su de instruciuni, ntr-o anumit succesiune dictat de valorile care se schimb (se actualizeaz) ntr-un registru numit program counter (PC) sau indicator de instruciuni.

23

S-ar putea să vă placă și