Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Structura si evolutia sistemelor de operare
Introducere
Fara software-ul necesar, un calculator este de neutilizat. Cu software-ul necesar, calculatorul poate stoca, procesa si regasi informatii. Software-ul poate fi impartit in doua mari categorii:
Programe de sistem: acestea au rolul de a gestiona functionarea corecta si eficienta a calculatorului. Cel mai important program de sistem este sistemul de operare care controleaza toate resursele calculatorului si ofera baza pe care pot fi scrise programele de aplicatii.
Programe de aplicatie: acestea executa lucrurile pe care le doreste proprietarul calculatorului. Exemple de astfel de programe sunt procesoarele de documente, procesoarele de tabele etc.
Un calculator contine unul sau mai multe procesoare, memorie de baza RAM, discuri magnetice, imprimante, interfata de retea si alte echipamente periferice de intrare-iesire. Pentru a putea administra toate partile componente ale sistemului si de a prezenta o interfata om-masina mai usor de inteles si programat, a aparut necesitatea realizarii unui strat de software peste partea de hardware. Acest strat sofware este chiar sistemul de operare.
Biblioteci |
Rezervari |
Web browser |
|
Programe aplicatii |
Complilator |
Editor |
Interpretor comenzi |
|
Programe sistem |
Sistem de operare |
||||
Limbaj masina |
|
Hardware |
||
Microprogramare |
||||
Componente fizice |
Figura 1.1. Structura unui sistem de calcul
Notiunea de sistem de operare
Sistemul de operare poate fi privit din doua puncte de vedere distincte. Acestea sunt:
Sistemul de operare ca masina extinsa. Programarea la nivelul limbajului masina este foarte dificila, in special pentru operatiile intrare-iesire. Detaliile concrete privind modul cum sunt realizate aceste operatii nu vor fi prezentate utilizatorului. Programul care ascunde aceste lucruri despre hardware si prezinta o interfata simpla cu ajutorul fisierelor este sistemul de operare. Sistemul de operare ascunde si detalii privind intreruperile, timer-ul, administrarea memoriei si alte caracteristici de nivel jos. Din acest punct de vedere, functia de baza a sistemului de operare este de a prezenta utilizatorului echivalentul unei masini extinse (sau virtulale) care este mai usor de programat.
Sistemul de operare ca administrator de resurse. Conceptul de sistem de operare ca furnizor principal al unei interfete convenabile pentru programatori este o prezentare top-down. O alternativa, prezentarea botton-up, tine seama de faptul ca sistemul de operare are rolul de a administra toate componentele unui sistem complex, de a furniza o metoda de alocare controlata si ordonata a procesoarelor, memoriilor, dispozitivelor periferice tuturor programelor care le solicita.
Evolutia sistemelor de calcul
De-a lungul anilor, sistemele de operare au evoluat in mai multe generatii. Primul calculator cu adevarat digital a fost proiectat de matematicianul englez Charles Babbage (1792-1871). Desi Babbage si-a petrecut cea mai mare parte din viata incercand sa construiasca calculatorul analitic, acesta nu lucrat niciodata adecvat, deoarece masina sa era pur mecanica, iar tehnologia din acea vreme nu ii permitea producerea rotitelor si angrenajelor de o precizie asa de mare, cum avea el nevoie. Masina analitica a lui Babbage nu avea sistem de operare. Interesant este ca si-a dat seama ca avea nevoie de software pentru calculator, astfel ca a angajat o tanara, Ada Augusta Lovelace drept primul programator din lume. Dupa numele ei a fost denumit limbajul de programare ADA.
Prima generatie (1945-1955): Sisteme construite cu tuburi electronice cu vid si 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 si William Mauchley, de la Universitatea Pensylvania si Konrad Zuse, din Germania, au reusit sa construiasca masina de calculat folosind tuburi electronice cu vid. Toate programele erau realizate in limbaj masina. Limbajele de programare erau necunoscute si nici sistemele de operare nu aparusera inca. Pe la inceputul anilor '50 apar cartelele perforate. Programele erau scrise pe cartele perforate de unde erau citite, in loc sa se foloseasca tablourile de conexiuni.
Generatia a doua (1955-1965): Sistem cu tranzistori si prelucrare pe loturi
Introducerea tranzistoarelor la mijlocul anilor '50 a schimbat radical modul de construire a calculatoarelor. Acum, pentru prima oara, s-a facut deosebire intre proiectanti, constructori, programatori si personalul de intretinere.
Aceste masini erau inchise in camere speciale dotate cu aer conditionat si cu operatori calificati ca sa lucreze pe ele. Pentru a rula un job (program sau set de programe) programatorul trebuia mai intai sa scrie programul pe hartie (in FORTRAN sau limbaj de asamblare), apoi il perfora pe cartele, il aducea in camera de intrare, unde il inmana unui operator. Cand calculatorul termina de executat programul, un operator mergea la imprimanta si lua datele de iesire pe care le ducea la camera de iesire astfel ca programatorul sa le poata lua mai tarziu. Pentru a reduce timpul irosit, a fost adoptata solutia de a se aduna mai multe job-uri in camera de intrare, care apoi sa fie citite si memorate pe o banda magnetica folosind un computer mic si ieftin, cum era, de exemplu, IBM 1401, foarte bun la citirea cartelelor, copierea benzilor si tiparirea datelor de iesire, dar nu la fel de bun pentru calcule numerice la care erau folosite alte masini precum IBM 7094.
Calculatoarele celei de a doua generatie erau folosite mai ales pentru calcule stiintifice si ingineresti, cum ar fi rezolvarea ecuatiilor cu derivate partiale. Programele erau realizate in mare masura in limbajul FORTRAN si in limbajul de asamblare. Sistemele de operare tipice erau FMS (Fortran Monitor System) si IBSYS, sistemul de operare al IBM 7094.
Generatia a treia (1965-1980): Sisteme cu circuite integrate si multiprogramarea
La inceputul anilor '60, cei mai multi producatori de computer aveau doua linii de productie distinct: computerele stiintifice, ca IBM 7094 folosite pentru calcule numerice in stiinta si inginerie si computer comerciale, ca IBM 1401 folosite de banci si de companiile de asigurare. IBM a incercat sa rezolve amandoua probleme introducand SYSTEM/360 care satisface nevoile tuturor clientilor si care folosea circuite integrate la scara mica. Tot acum s-a realizat un sistem de operare care sa rezolve cerintele conflictuale ale diferitelor tipuri de utilizatori, un sistem de operare de doua-trei ori mai mare decat FMS, ce contine milioane de linii scrise in limbaj de asamblare fara a elimina toate deficientele. Fiecare versiune fixa unele deficiente, dar introducea altele.
Totusi, aceste sisteme de operare au introdus tehnici noi, dintre care cea mai important este multiprogramarea. La IBM 7094, atunci cand job-ul current facea o pauza pentru a astepta sa se termine o banda sau alta operatie de intrare-iesire, procesorul era neutilizat. Solutia care s-a impus a fost partitionarea memoriei in cateva zone, incarcand cate un job diferit in fiecare partitie.
O alta caracteristica important a sistemului de operare din a treia generatie era capacitatea de a citi job-urile de pe cartele pe disc, apoi ori de cate ori un job care ruleaza este terminat, sistemul de operare va putea incarca un nou job de pe disc in partitia acum goala. Aceasta tehnica se numeste spooling. O alta tehnica introdusa a fost aceea de timesharing - utilizarea unui sistem de calcul de mai multe personae in acealsi timp; partajarea timpului permite rularea mai multor programe concomitant, prin intercalarea intervalelor de timp de prelucrare alocate fiecarui program/utilizator.
În aceasta perioada, Laboratoarele Bell au lucrat la proiectul MULTICS, care mai tarziu a condus la realizarea UNIX-ului. Deoarece diverse organizatii si-au creat propriile versiuni, pentru a se putea rula programele pe orice versiune UNIX, IEEE a dezvoltat un standard pentru UNIX, denumit POSIX, care defineste un set de servicii asigurate de sistemul de operare si care pot fi portate cu usurinta de la un sistem la altul.
Generatia a patra (1980-prezent): Calculatoarele personale
Generatia a patra de calculatoare este marcata de aparitia calculatoarelor personale. În aceasta perioada au dominat doua sisteme de operare: MS-DOS realizat de Microsoft si UNIX.
MS-DOS a fost sistemul de operare folosit pe un IBM PC si restul calculatoarelor ce folosea procesorul Intel 8088 sau succesorii sai - 386, 486, Pentium, Pentium Pro, Pentium II. MS-DOS a fost urmat de sistemul Windows, care initial a reprezentat doar o interfata grafica si incepand cu versiunea Windows 95 aceasta a devenit sistem de operare.
UNIX-ul este folisit pe servere de retea si in special pe calculatoarele dotate cu procesoare RISC.
La mijlocul anilor '80 au aparut sistemele de operare pentru retele de calculatoare care sunt instalate pe un server dintr-o retea locala si care coordoneaza activitatile legate de asigurarea serviciilor calculatoarelor si celorlalte dispozitive atasate retelei. Spre deosebire de un sistem de operare monoutilizator, sistemul de operare in retea trebuie sa raspunda cerintelor mai multor statii de lucru, rezolvand diferite sarcini, cum ar fi accesul la retea si comunicatiile, alocarea si partajarea resurselor, protejarea datelor si controlul erorilor.
Conceptele importante utilizate de sistemele de operare
Conceptele de baza utilizate de sistemele de operare sunt:
Procesele
Procesul este un program aflat in executie. Fiecarui proces ii este asociat un spatiu de adresa in care procesul poate citi si scrie. Spatiul de adresa contine programul executabil, datele programului si stiva. De asemenea, procesului i se asociaza si un set de registre, inclusiv un contor de program, pointer pentru varful stivei si alte registre. Cand un proces este suspendat temporar, informatiile sunt salvate in tabela proceselor, care este un vector de structuri, cate una pentru fiecare proces. De exemplu, procesul numit interpretor de comenzi citeste comenzile de la terminal, creeaza un proces care ruleaza comanda, iar cand procesul este terminat el executa un apel sistem ca sa il termine. Daca un proces poate crea unul sau mai multe procese (procese-copil) si aceste procese creeaza alte procese-copil, se obtine o structura arborescenta a proceselor.
Fisierele
O notiune foarte importanta relativ la sistemele de operare este cea de fisier si legat de acesta sistemul de fisiere. Pentru a ascunde utilizatorilor dificultatile citirii si scrierii datelor pe disc sistemul de operare furnizeaza conceptul de fisier ca mijloc de stocare a datelor pe disc. Se vor pune la dispozitie utilizatorilor apeluri de sistem pentru crearea, stergerea, citirea sau scrierea fisierelor, deschiderea si inchiderea fisierelor.
Majoritatea sistemelor de operare furnizeaza o modalitate de a grupa logic mai multe fisiere intr-un director. Sistemul de operare va furniza apeluri sistem pentru crearea si stergerea fisierelor dintr-un director. Directorul poate fi privit ca o tabela in care sunt memorate numele fisierelor componente. De asemenea, o intrare intr-un director poate fi un subdirector. Acest model al memorarii datelor pe disc da nastere la o ierarhie - sistemul de fisiere.
Figura 1.2. Sistemul de fisiere
Fisierele dintr-un director pot fi specificate prin calea de acces plecand de la nodul arborelui, nod denumit de obicei director radacina. O astfel de cale care pleaca de la radacina este o cale absoluta. În Figura 1.2. calea absoluta de acces la fisierul "cerere.txt" este "/student/flavius/documente/cerere.txt". Prin simbolul "/" am marcat directorul radacina, iar urmatoarele simboluri "/" au doar rolul de a despartii numele directoatelor.
În orice moment un proces are un director curent de lucru. Daca, spre exemplu, directorul curent de lucru este "profesori", atunci fisierul "unix.doc" poate fi specificat in felul urmator "lorena/cursuri/unix.doc". În acest caz calea de acces porneste din directorul curent fara a mai fi nevoie de parcurgerea intregului arbore incepand cu radacina. Calea construita in acest fel se numeste cale relativa.
În sistemele multiutilizator sistemul de operare trebuie sa furnizeze un mecanism de protectie al fisierelor. În UNIX pentru fiecare fisier exista un cod de protectie format din trei grupuri de trei biti. Relativ la accesul la fisiere, utilizatorii sistemului sunt impartiti in: proprietarul fisierului, grupul de utilizatori din care face parte proprietarul si restul utilizatorilor. Pentru fiecare categorie exista trei biti RWX care acorda sau nu dreptul de citire (R), scriere (W) sau executie (X) a unui fisier. Spre exemplu, un fisier cu drepturile rwxrw-r-- poate fi citit, scris si executat de proprietarul sau, poate si citit sau scris de catre grupul de utilizatori din care face parte proprietarul fisierului si poate fi doar citit de restul utilizatorilor.
Un alt concept important este fisierul special. Unele sisteme de operare au cate un fisier special corespunzator fiecarui dispozitiv de I/O. În acest mod, toate dispozitivele de I/O pot fi tratate ca simple fisiere.
Majoritatea sistemelor de operare multiprogramate furnizeaza anumite mijloace prin care mai multa procese comunica. Un astfel de mijloc este fisierul conducta (pipe). Un fisier conducta este un tip aparte de fisier care conecteaza doua procese ce doresc sa schimbe date intre ele. Un proces va scrie date in fisierul conducta, in timp ce procesul de la celalalt capat va citi aceste date.
Shell
Acesta este un program care asigura comunicatia directa intre utilizator si sistemul de operare.
Apeluri de sistem
Interfata intre sistemul de operare si programele utilizatorului este definit de un set de instructiuni extinse pe care le ofera sistemul de operare si care sunt cunoscute sub numele de apeluri de sistem. Sistemele de operare grupeaza aceste functii in sase categorii:
Administrarea proceselor
Semnale
Administrarea fisierelor
Administrarea directoarelor si a sistemelor de fisiere
Protectie
Administrarea timpului
Structura sistemelor de operare
Exista patru modalitati de organizare interna a sistemelor de operare:
Sistemul monolitic: acesta de fapt nu are nici o structura. Sistemul de operare este o colectie de proceduri, dintre care fiecare poate apela pe oricare oricand are nevoie. Apelurile de sistem furnizate de sistemul de operare sunt cerute de programe punand parametri bine definiti in locuri, ca, de exemplu, registre sau in stiva si apoi executand un set special de instructiuni numite kernell call sau supervisor call.
Program utilizator |
Programele de aplicatie ruleaza in mod utilizator |
Program utilizator Kernell call
|
|
Procedura de serviciu |
|
Sistemul de operare ruleaza in mod kernel
Figura 1.3. Apelul de sistem
În figura 1.3. este exemplificat mecanismul de lucru al unui apel de sistem. În prima etapa se executa o instructiune speciala (trap) care trece procesorul din modul utilizator in modul kernel. Sistemul de operare examineaza apoi parametrii acestei instructiuni (2) pentru a stabili ce apel de sistem trebuie invocat. Prin parcurgerea unui tabel de pointeri (3) se determina adresa procedurii care trebuie executata pentru a duce la indeplinirea apelului sistem cerut, apoi in final (4) procesorul revine in modul de executie utilizator.
Sistemele stratificate: Primul sistem construit stratificat a fost THE construit la Technische Hogeschool Eindhoven (1968) si are sase niveluri.
(5) Operator |
(4) Programele utilizator |
(3) Administrarea operatiilor I/O |
(2) Comunicare operator-proces |
(1) Administrarea memoriei |
(0) Alocarea CPU si multiprogramarea |
Figura 1.4. Structura sistemului THE
Nivelul 0 avea rolul de a gestiona alocarea procesorului pentru diferite procese, realizand astfel multiprogramarea. Nivelul 1 era gestionarea memoriei, cu rolul de a aloca memorie pentru programele care erau executate. Nivelul 2 era destinat operatiilor de comunicare dintre fiecare proces si consola operator asociata lui. Nivelul 3 gestiona operatiile de intrare-iesire, iar celelalte niveluri superioare reprezentau programele utilizator.
Masina virtuala: unul dintre primele sistemele de tip masina virtula a fost VM 370 destinat calculatoarelor mainframe IBM. La realizarea lui s-a plecat de la urmatoarea observatie: sistemul de operare trebuie sa implementeze conceptul de multiprogramare si sa furnizeze o masina extinsa cu o interfata mai usor de programat decat hardware-ul de baza.
Modelul client-server: O tendinta actuala in domeniul sistemelor de operare este de a muta codul in straturile superioare astfel incat kernelul sa devina cat mai mic. Majoritatea functiilor sistemului de operare este transferata catre procese utilizator. De exemplu, pentru a citi un bloc de date de pe disc, un proces utilizator (client) va trimite aceasta cerere catre un proces server care realizeaza operatia de citire si trimite inapoi rezultatul.
Proces Client |
Proces Client |
Server de procese |
Server de terminale |
Server de fisiere |
Server de memorie |
|
Mod utilizator |
||
KERNEL |
|
Mod kernel |
|||||||
Clientii
obtin servicii trimitand mesaje proceselor server
Figura 1.5. Modelul client-server
Un avantaj al modelului client-server este adaptabilitatea sa la sistemele distribuite. În acest caz fiecare proces se poate rula pe o masina diferita.
Masina 1 |
Masina 2 |
Masina 3 |
Masina 4 |
|||
Client |
Server de fisiere |
Server de procese |
Server de terminale |
|||
Kernel |
Kernel |
Kernel |
Kernel |
Mesaj de la client spre server |
Figura 1.6. Modelul client-server pentru un sistem distribuit
Functiile de baza ale sistemelor de operare
Sistemul de operare pune la dispozitie mecanisme pentru suportarea unei abstractizari pentru procese si pentru administrarea resurselor folosite de procese.
Functiile sistemelor de operare pot fi clasificate in patru categorii:
Gestionarea proceselor si a resurselor
Gestionarea memoriei
Gestionarea dispozitivelor de intrare-iesire
Gestionarea fisierelor
Gestionarea proceselor si a resurselor
Procesele sunt unitati de calcul de baza definite de programatori, iar resursele sunt elementele mediului de calcul necesar unui proces pentru a se executa. Administrarea proceselor si managementul resurselor pot fi separate in doua module diferite, dar majoritatea sistemelor de operare le inglobeaza intr-un singur modul, din moment ce amandoua definesc mediul de executie al programului.
Gestionarea memoriei
Modulul de gestionare a memoriei administreaza alocarea si utilizarea memoriei principale.
Fiecare proces cere si foloseste memorie in functie de necesitatile sale. Administratorul de memorie aloca memorie proceselor care concureaza pentru aceeasi zona dupa o anumita strategie specificata.
Administratorul de memorie pune la dispozitie extensii de memorie virtuala in asa fel incat memoria principala a calculatorului sa para mai mare decat este in realitate. Aceasta facilitate este realizata prin integrarea memoriei principale a calculatorului si a memoriei de pe dispozitivele de stocare.
Administratorul de memorie poate permite unui proces aflat pe o masina sa acceseze si sa partajeze memoria fizica de pe un alt calculator.
Gestioarea dispozitivelor de intrare-iesire
Sistemele de operare trateaza toate dispozitivele cum ar fi de exemplu discuri, benzi magnetice, terminale si imprimante in aceeasi maniera generala, cu o atentie speciala pentru administrarea procesorului si a memoriei. Managementul dispozitivelor se refera la modul in care aceste dispozitive generice sunt administrate.
Gestionarea fisierelor
Fisierele sunt o resursa abstracta a dispozitivelor de stocare. Informatia stocata in memoria principala va fi suprascrisa imediat ce memoria este dealocata de un proces. Informatia trebuie salvata pe dispozitive de stocare, cum ar fi banda magnetica sau discul. Nevoia de a produce abstractizari ale detaliilor operatiilor de intrare/iesire pentru dispozitive de stocare a fost printre primii pasi care au condus catre sistemele de operare.
În sistemele de operare moderne, sistemul de fisiere este distribuit astfel incat un proces de pe o masina poate citi si scrie la fel de bine fisiere stocate in sistemul local, cat si de pe alta masina din interiorul retelei.
Copyright © 2024 - Toate drepturile rezervate