CATEGORII DOCUMENTE |
Structura sistemelor de operare
Componentele sistemelor de operare
In general, crearea unui software complex, asa cum este un SO, este posibila numai prin modularizare, fiecare componenta fiind bine definita si avand intrari, iesiri si functionalitate bine precizate.
Gestionarea proceselor
Menirea UC este atat de a asigura executia programelor utilizator, cat si de a realiza alte activitati, toate acestea purtand numele generic de procese. Un proces poate fi definit ca
un program aflat in executie si poate crea, la randul sau, subprocese cu executie de tip concurent. Un program constituie o entitate pasiva, in timp ce procesul este o entitate activa. Procesul se executa in mod secvential si are nevoie de anumite resurse care i se aloca in
momentul crearii sale ( UC, memorie, fisiere, dispozitive de I/O etc. ), si de niste informatii
de initializare pentru a sti ce si cum sa prelucreze. Procesele pot fi atat de tip utilizator, cat
si de tip sistem.
Din punctul de vedere al gestionarii programelor aflate in executie, SO are
urmatoarele functii:
crearea si desfiintarea proceselor;
suspendarea si reluarea proceselor;
asigurarea mecanismelor necesare sincronizarii proceselor
asigurarea mecanismelor necesare comunicatiei intre procese
asigurarea mecanismelor pentru asigurarea interblocarilor
Gestionarea memoriei
Memoria reprezinta o colectie de cuvinte sau de octeti care pot fi accesate prin precizarea adresei ce le este asociata. Interactiunea dintre UC si memorie se realizeaza prin scrieri/citiri la/de la adresele de memorie specificate. Executia unui program presupune incarcarea sa in memorie, dupa ce au fost stabilite adresele in timpul executiei, programul acceseaza instructiunile si datele din memorie prin intermediul adreselor, iar in momentul incheierii, spatiul ocupat este eventual declarat disponibil, in el putand fi incarcat
si executat un alt program.
Din punctul de vedere al gestionarii memoriei, sistemul de operare are urmatoarele functii:
pastrarea evidentei partitiilor de memorie folosite la un moment dat, precum si a utilizatorilor acestora
selectarea procesului ce va fi incarcat in memorie atunci cand spatiul devine disponibil
alocarea spatiului de memorie, precum si operatia inversa
Gestionarea memoriei auxiliare
In timpul executiei, atat programele cat si datele aferente trebuie sa se afle in memoria principala. Deoarece aceasta are o dimensiune prea mica pentru a putea gazdui toate proramele impreuna cu datele corespunzatoare, apare necesitatea ca sistemul de calcul
sa realizeze o memorare secundara cu ajutorul careia sa 'descarce' memoria principala Marea majoritate a sistemelor de calcul moderne utilizeaza pentru aceasta operatie discurile magnetice. Programele utilitare sunt pastrate pe disc pana in momentul in care este necesara incarcarea lor in memoria principala si apoi folosesc discul atat ca sursa, cat si ca destinatie
a procesului.
Din punctul de vedere al gestionarii discului magnetic, SO are urmatoarele functii:
gestionarea spatiului liber pe disc;
alocarea memoriei pe disc;
planificarea lucrului cu discul.
Sistemul de intrari/iesiri ( I/O )
Unul dintre scopurile SO este sa usureze munca utilizatorului uman si prin preluarea sarcinii de 'dialogare' cu dispozitivele de I O. In general, sistemul de I/O are in componenta:
un sistem de buffere;
un cod general driver de dispozitiv;
direver-e pentru dispozitivele hardware specifice.
Gestionarea fisierelor
Din punctul de vedere al gestionarii fisierelor, sistemul de operare indeplineste urmatoarele functii:
crearea si stergerea fisierelor;
crearea si stergerea directoarelor;
functia de suport al primitivelor ce manipuleaza fisiere si directoare ;
memorarea ordonata a fisierelor pe discurile magnetice;
salvarea fisierelor pe suporturi magnetice stabile ( nevolatile ).
Sistemul de protectie
Protectia reprezinta mecanismul definit de catre SO cu ajutorul caruia poate fi controlat accesul programelor, proceselor sau utilizatorilor la resurse. Un sistem de operare prevazut cu mecanisme de protectie poate asigura mijloacele necesare pentru a face distinctia intre o utilizare permisa si o utilizare neautorizata
Legarea in retea
Un sistem distribuit reprezinta un ansamblu de procesoare care nu folosesc in comun aceeasi memorie sau un acelasi ceas. Fiecare procesor are o memorie locala, iar comunicatia intre procesoare se realizeaza prin intermediul magistralelor de mare viteza sau prin linii telefonice. Legatura intre procesoarele ce compun sistemul se realizeaza cu ajutorul unei retele de comunicatie ce poate avea diverse configuratii si care poate fi conectata complet sau partial. Sistemele distribuite asigura o viteza de calcul sporita, o buna disponibilitate a datelor, precum si o fiabilitate ridicata, necesitand SO cu caracteristici speciale.
Sistemul de interpretare a comenzilor
Una dintre cele mai importante componente ale SO este interpretorul de comenzi,
care se executa initial la inceperea rularii unui job sau atunci cand unul dintre utilizatorii
unui sistem de tip time-sharing cere pentru prima data permisiunea de intrare in sistem. O
alta functie importanta a acestui modul software este citirea si interpretarea instructiunilor
de comanda prin intermediul carora utilizatorul furnizeaza comenzi sistemului si care se refera la gestionarea proceselor, a operatiilor de I/O, a memoriei auxiliare, a memoriei
principale, accesarea sistemului de fisiere, protectia si conectarea prin intermediul retelei.
Sarcinile sistemelor de operare
O prima categorie de functii existente in cadrul oricarui SO are drept scop crearea mediului in care sa se execute in mod corespunzator progamele, urmarind in acelasi timp usurarea sarcinii programatorului uman. Dintre acestea pot fi mentionate:
executarea programelor;
realizarea operatiilor de I/O;
manevrarea sistemelor de fisiere;
detectarea erorilor.
O alta categorie de functii este cea destinata realizarii unei operatii eficiente in cadrul sistemului de calcul.
Apeluri de sistem
Apelurile de sistem reprezinta interfata dintre un program aflat in executie si SO. Ele sunt disponibile atat sub forma de instructiuni scrise in limbaje de asamblare, cat si ca functii sau subrutine apelabile in cadrul programelor scrise in limbaj de nivel inalt. Apelul
de sistem poate fi generat prin intermediul unei rutine specializate, sau direct.
Realizarea unui apel de sistem presupune existenta mai multor informatii al caror numar si tip depinde de tipul sistemului de calcul, al sistemului de operare si al apelului propriu-zis. In general, transmiterea parametrilor catre SO se realizeaza in doua moduri. Cea mai simpla metoda este folosirea registrilor. Totusi, de multe ori, se intampla ca numarul parametrilor sa fie mai mare decat numarul registrilor, caz in care se prefera cea de-a doua metoda care presupune stocarea parametrilor in memorie, intr-un bloc sau tabel, adresa blocului fiind inscrisa ca parametru intr-un registru. Proiectantii SO prefera aceasta ultima metoda, uneori chiar in cazul in care numarul parametrilor nu depaseste numarul registrilor.
Apelurile de sistem pot fi clasificate in trei mari categorii:
apeluri de sistem destinate controlului proceselor sau al job urilor;
apeluri de sistem destinate gestionarii dispozitivelor si a fisierelor;
apeluri de sistem destinate gestionarii informatiilor.
Apeluri de sistem destinate controlului proceselor sau al job-urilor
Executia unui program se poate incheia normal ( end ) sau fortat ( abort ). In cazul
terminarii normale, prin intermediul apelului de sistem, SO transfera controlul interpretorului de comenzi care citeste urmatoarea comanda. Daca insa programul detecteaza o eroare in timpul executiei sau in datele utilzate si decide sa se incheie fortat, poate fi necesara mai intai efectuarea unui vidaj de memorie si afisarea unui mesaj de eroare, dupa care se apeleaza interpretorul de comenzi. Intr-un sistem de tip interactiv, utilizatorul va furniza o noua comanda, corespunzatoare erorii depistate. Intr-un sistem de
tip batch, in mod obisnuit, interpretorul de comenzi incheie intregul job si trece la tratarea urmatorului.
Un proces sau un job care a lansat in executie un program, poate dori sa incarce si sa lanseze in executie un alt program. Daca la incheierea noului program controlul este returnat programului initial, trebuie ca imaginea acestuia sa fie salvata in memorie si sa existe efectiv un mecanism care sa permita apelarea unui program din cadrul altui program. Daca ambele programe se executa in mod concurent, se considera ca a fost creat un nou job multiprogramat. De cele mai multe ori, in acest scop se foloseste un apel de sistem special, numit create process sau submit job. Crearea unui nou job sau a unui nou proces presupune
si existenta controlului asupra executiei sale, adica posibilitatea determinarii si resetarii atributelor ( caracteristicilor ) job-ului sau ale altui proces: prioritatea, timpul maxim de executie permis etc ( get process attributes si set process attributes). In cazul in care se doreste fortarea incheierii unui job sau a unui proces creat anterior, se foloseste un apel de sistem numit terminate process. Daca insa nu se doreste terminarea fortata a unui job sau a
unui proces nou creat, se asteapta incheierea normala a executiei. Aceasta asteptare dureaza
un anumit interval de timp ( wait time ), sau, de cele mai multe ori, dureaza pana in momentul aparitiei unui anumit eveniment ( wait event ), care va fi semnalata de catre job-
ul sau procesul respectiv ( signal event ).
Apeluri de sistem destinate gestionarii dispozitivelor si a fisierelor
In cadrul categoriei de apeluri de sistem care au ca obiect fisierele pot fi mentionate: crearea ( create ) si stergerea fisierelor ( delete ), pentru care este necesar sa se cunoasca numele si unele dintre atributele fisierelor; deschiderea fisierelor ( open ); citirea ( read scrierea ( write ) si repozitionarea ( reposition ) in fisier; inchiderea fisierului ( close ) care indica inchiderea sesiunii de lucru cu fisierul respectiv.
Atunci cand sistemul de fisiere este structurat in directoare, este necesar ca acelasi set
de operatii sa se poata aplica si asupra directoarelor. In plus, atat pentru fisiere, cat si pentru directoare, este bine sa se poata determina valoarea diferitelor atribute ( get file attribute
si, eventual, acestea sa poata fi resetate ( set file attribute ). Atributele fisierului includ numele sau, tipul, codurile de protectie etc.
Fisierele pot fi considerate dispozitive aleatoare sau virtuale si, de aceea, multe dintre apelurile de sistem folosite in cazul fisierelor sunt folosite si in cazul dispozitivelor. Totusi,
in cazul sistemelor multi utilizator, trebuie facuta mai intai o cerere catre dispozitiv (
request ), pentru a asigura folosirea sa exclusiva, iar la incheierea sesiunii de lucru este necesar ca acesta sa fie disponibilizat ( release ). Functiile descrise sunt similare cu
open/close folosite in cazul fisierelor.
Apeluri de sistem destinate gestionarii informatiilor
O mare parte dintre apelurile de sistem au fost create cu scopul de a asigura transferarea informatiilor intre programul utilizator si sistemul de operare ( de exemplu, cele care furnizeaza ora <time> si data curenta <date>). Alte apeluri furnizeaza informatii despre sistem: numarul curent de utilizatori, numarul de versiune al sistemului de operare, spatiul total al memoriei neocupate sau spatiul total disponibil pe discul magnetic etc.
Programe de sistem
In functie de operatiile pe care le realizeaza, programele de sistem pot fi grupate in cateva mari categorii:
gestionarea fisierelor: crearea, stergerea, copierea, schimbarea numelui, tiparirea, listarea si, in general, toate operatiile care au ca obiect fitiere si directoare;
informatii de stare: programele respective cer sistemului data, ora, totalul spatiului
de memorie sau totalul spatiului de pe disc, numarul de utilizatori sau alte informatii
de stare de acest tip care apoi sunt formatate si tiparite la terminal, pe un alt dispozitiv de iesire sau sunt memorate intr-un fisier;
modificarea fisierelor: operatie ce poate fi efectuata de catre editoarele de texte, care pot crea sau modifica fisiere memorate pe disc magnetic;
accesorii ale limbajelor de programare: de multe ori, odata cu sistemul de operare sunt furnizate si compilatoare, asambloare si interpretoare pentru limbajele de programare uzuale;
incarcarea si executarea programelor: pentru a fi executat, un program care a fost asamblat sau compilat, trebuie incarcat in memorie. In acest scop, au fost create programe ce realizeaza incarcarea la adresa absoluta ( absolute loaders ), la adresa relocatabila ( relocatable loaders ), editoare de legaturi ( linkage editors ) si programe pentru incarcare cu suprapunere ( overlay loaders ). Depanarea unui program se poate realiza cu ajutorul unor programe specializate;
programe de aplicatii: odata cu SO sunt furnizate uneori programe ce au ca scop rezolvarea unor probleme uzuale, cum ar fi formatarea textelor, realizarea reprezentarilor grafice, gestionarea bazelor de date, analiza statistica etc.
Unul dintre cele mai importante programe de sistem este interpretorul de comenzi, a carui principala functie este de a afla umatoarea comanda furnizata de utilizator si de a o executa. Exista doua modalitati de implementare a comenzilor. Prima presupune ca interpretorul de comenzi sa contina codul pentru executia comenzii. In acest caz marimea interpretorului depinde direct de numarul de comenzi, deoarece pentru fiecare comanda este necesar un cod propriu de implementare. Cea de-a doua modalitate presupune existenta unor programe de sistem speciale, astfel incat nu mai este nevoie ca interpretorul de comenzi sa inteleaga comanda, ci o foloseste pentru a indentifica un fisier care sa fie incarcat in memorie si executat.
Structura sistemelor de operare
Cea mai raspandita tehnica de creare a unui SO modern este modularizarea, adica elaborarea unor subansamble software de dimensiune redusa, bine definite din punctul de vedere al intrarilor, al iesirilor si al functiilor pe care le indeplinesc.
Organizarea sistemului pe niveluri
Cea mai utilizata metoda de modularizare a unui SO este organizarea sistemului pe niveluri, fiecare nivel fiind construit deasupra celor de rang inferior. Hardware-ul reprezinta nivelul de baza ( nivelul 0 ), in timp ce interfata utilizator reprezinta nivelul de ordin maxim
( nivelul N ). Un nivel reprezinta implementarea unui obiect abstract care grupeaza atat datele, cat si operatiile ce pot utiliza aceste date. Fiecare nivel foloseste numai operatiile furnizate de catre nivelurile inferioare, necunoscand modul in care sunt implementate aceste operatii, ci numai ceea ce fac ele. Existenta structurilor de date si a operatiilor apartinand nivelurilor inferioare este 'ascunsa' nivelurilor superioare. Proiectarea nivelurilor se face astfel incat un nivel poate folosi numai operatii si servicii ale nivelurilor inferioare, ceea ce usureaza mult munca de depanare si verificare a sistemului. Primul nivel poate fi depanat
independent de restul sistemului deoarece, comform definitiei, foloseste pentru implementarea functiilor sale numai hardware-ului de baza, care se presupune ca e proiectat
si implementat corect. Depanarea celui de-al doilea nivel se face pe baza bunei functionari a primului nivel. Localizarea unei erori se face usor, la nivelul curent, deoarece toate celelalte niveluri ( de ordin inferior ) au fost depanate anterior.
Nucleul sistemului
Partea centrala a unui SO este nucleul ( kernel ). Principale sale functii sunt:
asigurarea unui mecanism pentru crearea si distrugerea proceselor;
furnizarea unor instrumente care sa permita proceselor sa-si sincronizeze actiunile;
realizarea planificarii UC, gestionarii memoriei si a dispozitivelor pentru procesele create;
furnizarea unor instrumente de comunicatie care sa permita proceselor sa isi transmita informat
Proiectarea si implementarea sistemelor de operare
Obiectivele proiectarii
Prima problemp care apare in proiectarea unui SO este definirea obiectivelor si a specificatiilor sistemului. La nivelul superior, proiectarea este determinata de alegerea hardware-ului si de tipul sistemului: cu prelucrare pe loturi, time-sharing, mono-utilizator, multi-utilizator, distribuit, in timp real sau de interes general. Utilizatorul doreste ca
sistemul sa poata fi folosit si invatat cu usurinta, sa fie fiabil, sigur si rapid. In mod asemanator, cei care proiecteaza, creeaza, intretin sistemul si opereaza asupra lui doresc ca sistemul sa fie usor de proiectat, de implementat si intretinut, flexibil, fiabil, lipsit de erori si eficient.
Mecanisme si strategii
Un principiu extrem de important in proiectarea SO este separarea strategiei ( policy
), care decide ce anume trebuie facut, de mecanism ( mechanism ) care arata cum trebuie facut. Deciziile de tip strategic au un rol deosebit in toate problemele de alocare a resurselor, precum si in cele referitoare la planificare. Separarea strategiilor de mecanisme asigura si o buna flexibilitate a sistemelor, deoarece, in cazul trecerii pe un alt sistem, pot fi modificate doar strategiile, fara a mai fi nevoie sa se modifice si mecanismul de baza.
Implementarea SO
In mod traditional, etapa de implementare se realiza prin scrierea sistemului cu ajutorul limbajului de asamblare. In prezent, se pot folosi in acelasi scop si limbajele de nivel inalt. Avantajele utilizarii limbajelor de nivel inalt pentru implementarea sistemelor de operare sunt aceleasi ca si in cazul scrierii programelor utilizator: codul poate fi scris mai repede, este mai compact, mai usor de inteles si de depanat. Principalul dezavantaj se refera
la viteza si la necesarul de memorie. Un compilator, oricat de performant, nu poate produce cod mai bun decat un limbaj de asamblare expert, dar este foarte probabil ca un compilator
sa produca un cod cel putin tot atat de bun ca si cel scris intr-un limbaj de asamblare
obisnuit. Cu toate ca dimensiunea unui SO e foarte mare, numai o mica parte a codului poate fi considerata ca fiind critica din punctul de vedere al performantelor.
Generarea sistemului
De cele mai multe ori, SO sunt proiectate in asa fel incat sa poata lucra pe orice tip de calculator, intr-o mare varietate de configuratii periferice. Din acest motiv, pentru fiecare tip
de calculator este necesar ca SO sa fie configurat sau generat, operatie cunoscuta sub numele de generarea sistemului.
Deoarece SO este furnizat de obicei pe suport magnetic, pentru generare se foloseste
un program special, care citeste dintr-un fisier sau cere operatorului informatii referitoare la configuratia hardware specifica a sistemului:
tipul de UC si optiunile instalate;
cantitatea de memorie disponibila;
dispozitivele existente in sistem;
optiunile alese pentru SO sau valorile parametrilor ce vor fi folositi pentru configurare.
Odata definite, informatiile pot fi utilizate in moduri diferite.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1434
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved