Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Structura sistemelor de operare

calculatoare



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1284
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved