Sisteme de operare; definitii, componente, clasificari
Sistemul de operare reprezinta ansamblul de programe care asigura utilizarea optima a resurselor fizice si logice ale unui sistem de calcul. El are rolul de a gestiona functionarea componentelor hardware ale sistemului de calcul, de a coordona si controla executia programelor si de a permite comunicarea utilizatorului cu sistemul de calcul. Folosirea hardware-ului unui sistem de calcul ar fi dificila si ineficienta in lipsa unui sistem de operare. Pe scurt, sistemul de operare este componenta software care coordoneaza si supravegheaza intreaga activitate a sistemului de calcul si asigura comunicarea utilizatorului cu sistemul de calcul.
Din punctul de vedere al interactiunii cu componentele hardware ale sistemului de calcul si dupa modul de implementare a software-ului, sistemul de operare este organizat pe doua niveluri:
a. nivelul fizic include componenta firmware a sistemului de calcul; acest nivel ofera servicii privind lucrul cu componentele hardware ale sistemului de calcul si cuprinde acele elemente care depind de structura hardware a sistemului. Tot in nivelul fizic sunt incluse programe a caror executie este indispensabila, de exemplu programul care lans 323j95d eaza incarcarea automata a sistemului de operare, la pornirea calculatorului.
La acest nivel, comunicarea cu sistemul de calcul se realizeaza prin intermediul sistemului de intreruperi, prin care se semnaleaza anumite evenimente aparute in sistem; la aparitia unei intreruperi, controlul este dat unor rutine de pe nivelul urmator al sistemului de operare;
Exemplu : la sistemele de calcul compatibile PC, componenta sistemului de operare de pe nivelul fizic este componenta ROM-BIOS. Aceasta include programe grupate dupa functia lor in :
programele care se executa la pornirea sistemului de calcul : programul POST (Power-On Self-Test), care verifica starea de functionare a sistemului de calcul si programele de initializare a activitatii sistemului (rutina de incarcare a primului sector al discului sistem) ;
rutinele care fac posibila utilizarea componentelor fizice ale sistemului de calcul, rutine numite drivere fizice ; ele ofera servicii pentru lucrul cu configuratia hardware standard a sistemului de calcul : consola, tastatura, imprimanta, perifericele standard si ceasul sistemului. Avantajul acestei solutii este ca asigura independenta software-ului de pe nivelul logic fata de caracteristicile constructive ale componentelor hardware de baza, ele fiind tratate unitar, prin intermediul driverelor.
b. nivelul logic include partea de programe a sistemului de operare si ofera utilizatorului mijloacele prin care poate exploata sistemul de calcul; comunicarea utilizatorului cu sistemul de calcul se realizeaza prin comenzi adresate sistemului de operare sau prin intermediul instructiunilor programelor pe care le executa; invers, comunicarea se realizeaza prin intermediul mesajelor transmise de sistemul de operare catre utilizator.
Programele nivelului logic adreseaza dispozitivele hardware prin intermediul programelor nivelului fizic al sistemului de operare si din acest motiv ele sunt independente de structura hardware a sistemului de calcul : nivelul fizic constituie o interfata intre hardware si nivelul logic al sistemului de operare.
Din punct de vedere functional, programele sistemului de operare se impart in doua categorii :
a. Componenta de comanda si control, care cuprinde programe ce au rolul de a asigura utilizarea eficienta a resurselor sistemului de calcul.
b. Componenta de servicii care cuprinde programe destinate minimizarii efortului uman implicat de utilizarea sistemului de calcul.
Functia sistemului de operare de optimizare a exploatarii unui sistem de calcul este impartita intre cele doua componente, conform schemei din Figura 2.1.
Accesibilitatea, diversitatea si numarul componentelor software creste de la stanga la dreapta, in diagrama, in timp ce numarul si nivelul de specializare al utilizatorilor acestor programe scade de la stanga la dreapta.
Atat pentru proiectarea cat si pentru utilizarea lor, componentele software se sprijina pe alte componente software, aflate la stanga lor, in diagrama.
2.1. Resursele unui sistem de calcul; gestionarea resurselor
Pentru a executa un program, intr-un sistem de calcul secvential cu program memorat, este necesara incarcarea acestui program in memoria interna a sistemului de calcul. Sub controlul unitatii centrale de prelucrare (UCP) sunt executate, secvential, instructiunile programului. Dupa caz, executarea unei instructiuni program poate presupune:
alocarea unitatii aritmetico-logice (UAL), pentru efectuarea de operatii aritmetice sau logice asupra datelor prelucrate de program;
alocarea unui dispozitiv periferic, pentru realizarea unui schimb de informatii intre acesta si memoria interna afectata programului;
alocarea de spatiu in memoria externa a sistem de calcul, pentru stocarea informatiilor manevrate de program;
accesarea unei anumite structuri de date (de exemplu un fisier din memoria externa);
apelul, pentru executie, a unui alt program, incarcat in memoria interna sau memorat in memoria externa a sistemului de calcul, etc.
Intotdeauna, executia unui program presupune alocarea unei anumite zone din memoria interna a sistemului de calcul. Executia unui program presupune afectarea unei perioade din timpul de lucru al UCP.
Resursele sistemului de calcul, pe care sistemul de operare le pune la dispozitia utilizatorului, se constituie din totalitatea componentelor fizice sau logice ale sistemului de calcul, care pot fi solicitate, la un moment dat, in timpul executiei unui program.
Executia unui program se defineste ca o succesiune de procese care se realizeaza sub controlul sistemului de operare.
Procesul reprezinta o secventa de activitati care se executa la un moment dat in sistemul de calcul si care se caracterizeaza prin:
prelucrarile care se realizeaza, determinate de secventa de instructiuni care controleaza procesul
contextul de lucru asupra caruia actioneaza procesul, prin intermediul prelucrarilor, si care include resursele alocate procesului.
Pentru a realiza alocarea unei resurse la un proces, sistemul de operare trebuie sa aiba raspuns la urmatoarele intrebari, dupa caz:
daca resursa ceruta exista in sistem
daca ea este disponibila
cat din resursa este disponibila
pentru cat timp poate fi alocata resursa
daca resursa este deja alocata altui proces, daca ea mai este necesara procesului caruia ii este alocata.
Rezulta astfel functiile care trebuiesc indeplinite de componenta sistemului de operare cu rol in gestionarea resurselor sistemului de calcul:
evidenta resurselor sistemului de calcul in fiecare moment, prin inregistrarea fiecarei resurse, a starii ei (alocata sau libera) si a gradului ei de ocupare (cat din resursa este alocat);
implementarea unor algoritmi de alocare a resursei, conform unei strategii de alocare stabilite; o strategie de alocare trebuie sa raspunda la intrebarile:
carei solicitari i se aloca resursa
cat din resursa se aloca
in ce moment se face alocarea
pentru cat timp se face alocarea resursei.
Strategiile de alocare difera in functie de sistemul de operare si de resursa;
alocarea efectiva a resursei, cu actualizarea informatiilor legate de starea resursei;
dezalocarea resursei care poate fi facuta:
la initiativa procesului care a solicitat-o, atunci cand ea nu mai este necesara procesului
la initiativa sistemului de operare, pentru a fi alocata si altor procese.
Aceasta ultima varianta este utilizata numai de anumite tipuri de sisteme de operare.
2.2. Componenta de comanda si control a sistemului de operare
Activitatea de lansare in executie a unui program, activitatea de gestionare a alocarii resurselor sistemului de calcul, pe toata durata executarii programului, ca si operatiile efectuate la incheierea executiei acestuia, sunt functii realizate de componenta de comanda si control a sistemului de operare.
Functiile componentei de comanda si control ale sistemului de operare sunt:
planificarea, lansarea si urmarirea executiei programelor
gestionarea resurselor sistemului de calcul
depistarea si tratarea evenimentelor deosebite care apar in timpul executiei programelor
asigurarea protectiei informatiilor manevrate de diverse programe (aceste programe pot fi ale sistemului de operare sau programe utilizator).
Conform acestor functii, componenta de comanda si control a sistemului de operare va include:
nucleul sistemului de operare, cu functia de coordonare a activitatii sistemului de calcul si a celorlalte componente ale sistemului de operare. Aceasta componenta este rezidenta in memoria interna pe toata durata functionarii sistemului de calcul si se mai numeste monitorul rezident al sistemului de operare.
cate o componenta de gestionare pentru fiecare tip de resursa din sistem.
Functia de protectie a informatiei intre procese si functia de tratare a erorilor se realizeaza in mod specific, pentru fiecare tip de resursa, in cadrul componentei de gestionare a resursei.
2.3. Componenta de servicii a sistemului de operare
Componenta de servicii a sistemului de operare s-a dezvoltat odata cu cerintele utilizatorilor sistemelor de calcul. Gradul de accesibilitate al unui sistem de calcul, ca si complexitatea sarcinilor pe care utilizatorul le poate rezolva cu ajutorul lui, sunt influentate de existenta si eficienta programelor de sistem incluse in componenta de servicii.
Programele de servicii se executa sub supravegherea programelor de comanda si control, ca orice program de aplicatie. Aceasta componenta ofera servicii diferite, de la un sistem de operare la altul, sau chiar intre variante diferite ale aceluiasi sistem de operare. Componenta de servicii a unui sistem de operare poate include:
unul sau mai multe programe incarcator pentru sistemul de operare, care lanseaza automat programe ale sistemului de operare la pornirea sistemului de calcul ;
programe de tip interpretor de comenzi ale sistemului de operare, adica acele programe care preiau comenzile adresate sistemului de operare de catre utilizator, asigurand astfel comunicarea intre utilizator si sistemul de operare;
functia de gestionare a dialogului cu utilizatorul, fie in mod comanda, oferind mecanisme de editare a comenzilor, fie in mod grafic, prin intermediul unei interfete grafice cu utilizatorul (GUI - Graphical User Interface) ;
functia de inlantuire prin date a comenzilor sistemului de operare (mecanismul pipe), de interpretare a comenzilor sistemului de operare agregate sub forma unor macrouri sau a unor fisiere de comenzi ;
functia de asistenta « on line » pentru sistemul de operare, cunoscuta ca Help-ul sistemului de operare;
functia de tipul « plug and play » care ofera facilitati de autodetectie a echipamentelor nou instalate in sistem si permite reconfigurarea hardware, cu usurinta, a sistemului, ca si notificarea schimbarii configurarii sistemului, de exemplu prin caderea unui echipament din sistem;
functia care ofera suportul pentru utilizarea limbii nationale, adica adaptarea informatiilor cu caracter national (semn monetar, marca zecimala) conform tarii selectate ;
functii pentru configurarea personalizata a mediului de lucru cu sistemul de calcul, de exemplu pentru utilizatori cu optiuni speciale de manevrare a echipamentelor (tastatura, mouse, etc.)
2.4. Obiectivele si functiile unui sistem de operare
Obiectivele generale ale unui sistem de operare sunt:
automatizarea operatiilor standard in toate etapele de exploatare a sistemului de calcul;
minimizarea efortului uman pentru utilizarea sistemului de calcul;
optimizarea utilizarii resurselor sistemului de calcul;
cresterea eficientei globale in utilizarea sistemului de calcul prin:
cresterea vitezei de executie a prelucrarilor
reducerea timpului de raspuns al sistemului la solicitarile utilizatorilor
cresterea gradului de utilizare a resurselor prin utilizarea lor la capacitate maxima.
Functiile prin intermediul carora sistemul de operare realizeaza aceste obiective sunt:
functia de instalare automata a unui nou sistem de operare pe un sistem de calcul;
functia de incarcare in memoria interna a sistemului de operare, la pornirea sistemului de calcul;
functia de configurare dinamica a sistemului de operare, conform cu modificarile intervenite in structura hardware sau cu necesitatile de exploatare a sistemului. De exemplu, sistemul de operare DOS se poate configura dinamic prin intermediul fisierului CONFIG.SYS care se consulta la fiecare incarcare a sistemului de operare si care permite instalarea altor drivere de echipamente decat cele standard si definirea unor parametri de functionare ai sistemului, permitand astfel modificarea, extinderea sau imbunatatirea capacitatilor de functionare ale sistemului de operare, in cadrul arhitecturii de baza a sistemului de calcul;
efectuarea operatiilor de intrare / iesire la nivel fizic, pentru a permite utilizatorului tratarea echipamentelor periferice la nivel logic, adica independent de caracteristicile constructive ale lor. Aceasta functie permite degrevarea utilizatorului de sarcina tratarii specifice a fiecarui tip de echipament periferic in parte. De exemplu, orice tip de imprimanta este tratat in acelasi mod de catre utilizator; caracteristicile specifice fiecarui tip in parte sunt tratate de programul specializat de accesare la nivel fizic al echipamentului, numit driver de imprimanta si de componenta sistemului de operare care trateaza operatiile de iesire prin intermediul imprimantei: driverul portului paralel ;
oferirea unei interfete cu utilizatorul, prin intermediul unui limbaj specific, numit limbajul de comanda al sistemului de operare; prin intermediul acestui limbaj, utilizatorul transmite comenzi sistemului de operare; ele sunt traduse si lansate in executie de programul interpretor de comenzi al sistemului de operare. In sistemele de operare mai noi, interfata cu utilizatorul este asigurata folosind metode grafice evoluate si principii noi de comunicare, rezultatul fiind o modalitate mult mai "prietenoasa" de dialog cu utilizatorul; o astfel de interfata se numeste interfata grafica cu utilizatorul (Graphical User Interface);
controlul executiei programelor: sistemul de operare incarca programul in memoria interna, pentru executie, il lanseaza in executie, urmareste executia in toate etapele sale si incheie executia programului;
gestionarea alocarii resurselor sistemului de calcul: sistemul de operare gestioneaza alocarea timpului UCP, a memoriei interne, accesul la fisiere, accesul la echipamentele periferice,etc. pe toata durata executiei unui program, in scopul utilizarii cat mai eficiente a acestor resurse. In cazul in care este posibila executarea simultana a mai multor programe, sistemul de operare realizeaza alocarea resurselor intre programe pe baza unor criterii de alocare, in scopul optimizarii executiei programelor, conform obiectivelor de eficienta de mai sus;
asigurarea protectiei intre utilizatori, acolo unde sistemul de operare permite accesul concomitent al mai multor utilizatori (programe) la resursele sistemului de calcul, si asigurarea protectiei intre programe, fie ca este vorba de programe utilizator sau programe ale sistemului de operare. Aceasta protectie se refera la evitarea cazurilor de interferenta intre mai multe programe in executie, care ar putea duce la alterarea zonelor de program din memoria interna sau la alterarea, de catre un program, a datelor utilizate de un alt program;
tratarea erorilor: sistemul de operare poate trata erori la nivelul masinii fizice (de exemplu: erori de citire / scriere in memoria externa, erori de acces la un echipament periferic, lipsa din configuratia sistemului de calcul a unui echipament, etc.) sau erori logice, care pot sa apara in timpul executarii unui program (de exemplu: operatii interzise, ca impartirea la 0, tentativa de acces in zone protejate ale memoriei interne, tentativa de executie a unor instructiuni privilegiate, etc.);
functii auxiliare, cum ar fi: contabilizarea activitatii sistemului de calcul, jurnalizarea comenzilor adresate interpretorului de comenzi al sistemului de operare, jurnalizarea erorilor, etc.
2.5. Clasificarea sistemelor de operare din punctul de vedere al executiei proceselor
In general, programele utilizeaza in mod diferit resursele unui sistem de calcul (unele ocupa mai putina memorie interna decat altele, unele executa mai multe operatii de intrare/iesire, timp in care UCP este utilizata mai putin, altele fac prelucrari complexe asupra datelor, utilizand intens unitatea aritmetico-logica, etc).
Pentru utilizarea eficienta a resurselor sistemului de calcul, unele sisteme de operare pot gestiona executia concurenta a mai multor procese, asigurand proceselor din sistem accesul concurent la resursele sistemului sau partajarea resurselor. Aceasta inseamna ca, la un moment dat, in sistem se pot afla in executie mai multe procese care concureaza intre ele pentru accesul la resursele sistemului iar sistemul de operare gestioneaza resursele sistemului pentru satisfacerea cat mai multor cereri ale acestor procese pentru alocarea de resurse.
O caracteristica importanta a unui sistem de operare este masura in care poate asigura executia concurenta a proceselor. Dupa acest criteriu, sistemele de operare pot fi:
monotasking, care nu asigura executia concurenta si nici partajarea resurselor intre mai multe procese. Sub controlul unui sistem de operare monotasking, la un moment dat, in sistemul de calcul se poate executa un singur program; acesta ramane activ din momentul lansarii lui in executie si pana la terminarea lui completa; cat timp este in executie, programul are acces la toate resursele sistemului de calcul.
Exemplu: sistemele de operare MS-DOS si CP/M sunt sisteme de operare monotasking; in timpul executarii unui program, sistemul de operare pierde controlul asupra sistemului, in favoarea programului aflat in executie, care preia controlul pana in momentul incheierii executiei sale.
multitasking sunt acele sisteme de operare care asigura executia concurenta a mai multor procese care exista concomitent in sistem.
Exemplu: sistemele de operare Windows, Unix sunt sisteme multitasking. Aplicatia Windows 3.x rulata sub sistemul de operare monotasking MS-DOS permite exploatarea in regim multitasking a aplicatiilor Windows.
In plus fata de sistemele de operare monotasking, pentru un sistem de operare multitasking trebuiesc definite strategiile de alocare a resurselor la procesele concurente, strategii care vor fi folosite de componentele sistemului de operare pentru gestionarea resurselor.
2.6. Clasificarea sistemelor de operare dupa gradul de interactiune cu utilizatorul
Un sistem de operare are rolul de a interfata comunicarea intre utilizator si sistemul de calcul. Tendinta actuala in cererea utilizatorilor este de a creste atat gradul de interactiune cu sistemul de calcul cat si gradul de accesibilitate al interfetei cu sistemul de calcul; aceste doua tendinte, in general contradictorii, determina cresterea complexitatii componentei sistemului de operare care asigura interfata cu utilizatorul.
Pe de alta parte, din punctul de vedere al gradului de utilizare si al accesibilitatii sistemului de calcul, o caracteristica importanta este numarul de utilizatori care pot avea acces, la un moment dat, la sistem.
Din punctul de vedere al accesului utilizatorilor la sistem si al gradului de interactiune cu sistemul, sistemele de operare pot fi:
seriale, acele sisteme de operare pentru care gradul de interactiune cu utilizatorul, in timpul prelucrarilor, este nul. De cele mai multe ori, interfata dintre sistemul de operare si utilizator nu dispune de un limbaj de comanda accesibil utilizatorului obisnuit, motiv pentru care comunicarea dintre utilizator si sistem nu este directa ci mediata de persoane specializate ca operatori de calculator. In timpul executiei lucrarii sale, utilizatorul pierde total controlul asupra prelucrarii; el furnizeaza datele care se prelucreaza odata cu formularea cererii de prelucrare si primeste rezultatele prelucrarii la incheierea executiei.
interactive: sistemele de operare care permit comunicarea directa intre utilizator si sistemul de calcul, prin intermediul unui limbaj dedicat acestui scop (limbajul de comanda al sistemului de operare sau interfaa grafica utilizator). In plus, utilizatorul poate urmari modul in care se executa programul sau si poate influenta, in anumite conditii, executia acestuia. Un sistem de operare interactiv presupune o arhitectura a sistemului de calcul care sa cuprinda echipamente standard de intrare/iesire dedicate comunicarii utilizatorului cu sistemul de operare (terminale I/O); aceste echipamente cuprind, de obicei, o tastatura, ca echipament standard de intrare si un dispozitiv de vizualizare a informatiilor de iesire (un display sau o mini- imprimanta). Sistemele de operare interactive pot fi:
monouser, cand comunicarea cu sistemul de calcul este posibila, la un moment dat, numai pentru un singur utilizator, prin intermediul consolei sistemului de calcul;
multiuser, cand sistemul de operare poate gestiona comunicarea concomitenta cu mai multi utilizatori, conectati la sistemul de calcul prin intermediul echipamentelor terminale de intrare/iesire.
Exemplu: MS-DOS este un sistem interactiv monouser; Unix este un sistem interactiv multiuser.
2.7. Clasificarea sistemelor de operare dupa configuratia hardware deservita
Se obisnuieste impartirea sistemelor de calcul in trei categorii mari, in functie de puterea lor de prelucrare a informatiei si de capacitatea lor; corelat cu aceasta impartire se clasifica si sistemele de operare, dupa configuratia hardware pe care o deservesc. Structura sistemului de operare este influentata de structura sistemului de calcul pentru ca, in general, s-a cautat ca punctele mai slabe hardware sa fie compensate prin functii suplimentare asigurate de software, in particular, de sistemul de operare. Pe de alta parte, un sistem de calcul puternic, ce permite prelucrari complexe, are nevoie de un sistem de operare la fel de puternic, capabil sa asigure o buna coordonare a activitatii sistemului de calcul si o gestionare optima a resurselor acestuia.
Dupa configuratia hardware deservita, sistemele de operare sunt:
sisteme de operare pentru microcalculatoare:
sunt puternic interactive, cu un limbaj de comanda accesibil sau cu interfata grafica utilizator;
unele sunt monouser si monotasking (MS-DOS), altele multitasking (Windows), eventual si multiuser (Unix);
sunt usor configurabile, oferind proceduri automate pentru incarcarea sau pentru instalarea sistemului de operare;
ocupa un spatiu redus in memoria interna;
suporta dezvoltari pentru a permite conectarea in retele de calculatoare sau ca terminale la sisteme de calcul mari;
au functia de gestionare a informatiei dezvoltata in directia manevrarii unui numar mare de fisiere de dimensiuni mici;
sisteme de operare pentru minicalculatoare:
sunt interactive, multiuser si multitasking;
folosesc un limbaj de comanda pentru utilizatori avizati;
procedurile de incarcare la conectarea sistemului si de instalare a sistemului de operare sunt mai laborioase;
sunt mai rigide, in cazul modificarii configuratiei hardware;
asigura un sistem de prioritati de executie dezvoltat;
orientate pentru lucrul cu mai multi utilizatori, oferind un sistem complex de protectie a informatiei;
orientate pentru lucrul cu multe terminale, putand indeplini functia de concentrator de date;
sisteme de operare pentru calculatoare mainframe:
seriale sau interactive, multitasking;
limbaj de comanda pentru utilizatori specializati;
gestioneaza un numar mare de echipamente periferice;
orientate pentru prelucrari complexe si pentru volume mari de date.
In prezent se constata tendinta de apropiere a performantelor microcalculatoarelor de cele ale calculatoarelor superioare lor, in paralel cu tendinta de apropiere a performantelor sistemelor de operare pentru sisteme de calcul mari de cele ale sistemelor de operare pentru mini sau microcalculatoare.
In acelasi timp, se realizeaza o integrare functionala tot mai accentuata a diferitelor tipuri de sisteme de calcul in platforme de lucru comune, de obicei prin conectarea acestora in retele de calculatoare. Cel mai elocvent exemplu in aceasta directie este reteaua Internet care realizeaza legatura intre cele mai diferite tipuri de sisteme de calcul, functionand sub controlul unor sisteme de operare diverse.
Din punctul de vedere al dezvoltarii sistemului de operare, tendinta actuala este de dezvoltare a sistemelor de operare portabile, adica acele sisteme de operare care functioneaza pe platforme hardware diferite. Un exemplu in acest sens este sistemul de operare UNIX.
O alta directie este dezvoltarea de familii de sisteme de operare, de exemplu familia sistemelor de operare Windows, in care au fost dezvoltate sisteme de operare interactive, multitasking, asigurand si functiile pentru lucrul in retea de calculatoare; intre aceste sisteme de operare, unele sunt specializate pentru un anumit mod de utilizare, de exemplu: Windows NT Server, pentru server de retea sau Windows NT Workstation pentru statii de lucru din retea.
|