Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Concepte ale sistemelor de operare

CONCEPTE ALE SISTEMELOR DE OPERARE

Interfata dintre sistemul de operare si programele scrise de utilizator este definita de setul de  "instructiuni extinse" pe care le asigura sistemul de operare. Aceste instructiuni extinse sunt cunoscute ca apeluri sistem. Aceste apeluri sistem pot crea, sterge, utiliza  diferite obiecte gestionate de catre sistemul de operare. Cele mai importante dintre aceste obiecte sunt procesele si fisierele despre care vom vorbi in continuare.

a)        Procesele reprezinta un concept cheie al sistemelor de operare. Practic, un proces este un program in executie. El se constituie din programul executabil, datele si stiva, program counter, registrii si toata informatia necesara pentru a rula programul.



Pentru a vedea sistemul de operare ca sistem al tranzitiei proceselor intre diferitele lor stari, sa ne gandim la sistemele de tip time-sharing. In mod periodic, sistemul de operare decide oprirea rularii unui proces si porneste rularea altuia. In figura urmatoare se prezinta un mod de tranzitie al proceselor intre diferitele stari in care acestea se pot afla.


In rulare

 

In asteptare

 

Pregatit pentru executie

 

Potrivit acestei diagrame, un proces pregatit pentru executie (caz in care dispune de toate resursele dar mai putin procesorul) in momentul in care procesorul devine disponibil si pe baza algoritmului de planificare a proceselor acesta este ales pentru a fi executat, procesul va acapara resursa procesor si va trece in starea "in rulare". In momentul in care procesul care se executa va realiza o cerere de I/O ( de exemplu, vrea sa scrie la imprimanta si ea nu este disponibila, dar chiar daca imprimanta este disponibila tot nu se scrie imediat, operatia dureaza mai mult) el va pierde procesorul si in acest caz trece din starea "in rulare" in starea "in asteptare", in care procesul asteapta completarea operatiei de I/O. In aceasta stare, procesul poate primi o intrerupere prin care este anuntat de terminarea operatiei de I/O (de exemplu rezultatul asteptat de la dispozitivul de intrare/iesire a sosit sau resursa pentru care s-a asteptat permisiunea de utilizare este disponibila). Dupa completarea tuturor operatiilor de I/O pentru care a asteptat procesul, acesta va trece din starea "in asteptare" in starea "pregatit pentru executie". In aceasta stare procesul asteapta (eventual alaturi de alte procese in sistemele multi-tasking) ca pe baza algoritmului de planificare utilizat de catre sistem sa fie ales pentru a fi executat, caz in care trece in starea "in rulare" si bucla se repeta. Dar, trebuie avut in vedere ca diagrama ascunde faptul ca procesul se creeaza la un moment dat si ca el se si termina. Conform acestei diagrame, daca procesul intra intr-o bucla, el nu se termina si nici nu cedeaza procesorul, ceea ce nu este absolut deloc convenabil. Trebuie retinut ca fiecare sistem de operare are propria sa diagrama de tranzitie a starilor ale proceselor, diagrama care reflecta politica pe care o implementeaza sistemul respectiv.



O diagrama care tine cont de aceste observatii este:

Pregatit pentru executie

 

In sistem

 

Prezentat in sistem

 

In acest caz, chiar daca sistemul nu executa o operatie de I/O, din starea "in rulare" pe baza uni intreruperi de ceas el poate trece in starea "pregatit pentru executie" (prelevare fortata a procesului). De asemenea, la un moment dat procesul se termina si trece in starea "terminat".

Pe baza diagramei de mai sus, in figura urmatoare se poate observa modul in care sistemul de operare intervine, prin modulele sale in tranzitia procesului intre diferite stari ale sale.

Asa cum se observa din figura, in momentul in care procesul aflat in sistem este lansat in executie, trecand in starea "pregatit pentru executie" intervine modulul de administrare a proceselor si procesoarelor prin planificatorul de lucrari. El va interactiona cu mai multe module ale sistemului de operare astfel:

a)     modulul de administrare a memoriei (LOADER-ul, cel care incarca in memorie programul executabil)

b)     modulul de administrare a programelor (la inceput se pot intalni doua situatii: in unele sisteme de operare variabilele neinitializate raman la o valoare nedeterminata, sau la Unix cand la inceputul unui program variabilele neinitializate se pun pe 0, dar nu le eliberarea memoriei ci la initializare, la ocuparea memoriei)

c)     modulul de administrare a echipamentelor periferice (prin controlorul de trafic de I/O) pentru a vedea daca sunt echipamente periferice disponibile pentru lucrare

d)     modulul de administrare a proceselor si procesoarelor prin controlorul de trafic (cel care marcheaza procesul ca tranzitand in starea "pregatit")



La trecerea din starea "pregatit pentru executie" in starea "in rulare" a procesului intervine modulul de administrare a proceselor si procesoarelor prin planificatorul de procese (cel care va alege procesul care fi rulat de procesor) si care va marca procesul ca tranzitand intre cele doua stari prin controlorul de trafic.

In momentul efectuarii unei operatii de I/O, la trecerea procesului din starea "in rulare"  in starea " in asteptare" intervine modulul de administrare a informatiei prin sistemul de gestionare a fisierelor. Acest fapt se explica prin faptul ca, de exemplu in cazul sistemului UNIX, o operatie de I/O se face printr-un apel la sistemul de fisiere (se utilizeaza fisierele speciale asociate dispozitivelor de I/O). Acest modul va face apel la modulul de administrare al echipamentelor periferice care va crea un proces de I/O care va executa respectiva operatie de I/O. La terminarea procesului intervin urmatoarele module:

a)     modulul de gestiune a informatiilor prin sistemul de gestiune a fisierelor deoarece la terminare, prin apelul functiei close la inchiderea fisierelor, informatia din buffer se scrie in fisierele respective

b)     modulul de administrare a proceselor si procesoarelor prin controlorul de trafic care va marca trecerea procesului dintr-o stare in alta

c)     modulul de administrare a memoriei, deoarece la terminare trebuie eliberata memoria care a fost utilizata si ocupata de catre proces

d)     modulul de administrare a echipamentelor periferice prin controlorul traficului de I/O deoarece se marcheaza eliberarea echipamentelor periferice care au fost utilizate in timpul executiei

Cand un proces este suspendat temporar de la executie, mai tarziu va trebui sa fie restartat in exact aceeasi stare pe care a avut-o in momentul in care a fost oprit. Aceasta presupune ca intreaga informatie asociata procesului sa fie salvata undeva pe parcursul suspendarii. In multe sisteme de operare, intreaga informatie asociata fiecarui proces, alta decat cea continuta in spatiul de adrese, este stocata intr-o tabela a sistemului de operare numita tabela de procese, care este un tablou sau o lista inlantuita de structuri, cate una pentru fiecare proces.

(a se vedea schema care este singura pe o pagina)

STRUCTURA SISTEMELOR DE OPERARE

Daca pana acum am vazut sistemul de operare prin prisma mecanismului de gestiune a resurselor, in continuare vom vedea sistemul de operare ca o extensie a masinii fizice.

Asa cum se observa mai sus, pe langa masina fizica (constituita din componenta hardware, microinstructiuni, limbajul masina) se poate adauga sistemul de operare obtinandu-se o masina extinsa fata de care programele utilizatorilor interactioneaza ( fie la nivelul sistemului de operare, fie la cel al masinii fizice).



Se poate pune intrebarea cum sa arate un sistem de operare? Sa fie ierarhizat sau un nucleu monolit?

Ierarhizarea se poate face dupa modul de utilizare a functiilor componente:

a)     functii folosite in mod foarte intens (controlorul de intreruperi, planificarea proceselor pentru executie)

b)     functii care se executa din cand in cand

c)     functii care nu se executa decat accidental (utilizarea unui plotter)

S.O.

Overlay -> acele functii care se executa din cand in cand

 
rezident

S.O.

Tranzitoriu

Progr. utilizator

Ierarhia de module poate fi stransa (toate apelurile se fac de la nivelul cel mai inalt fisier) sau larga (in care accesul se poate face direct la orice nivel fig. b)

Text Box: Functie apelanta

O alta varianta este si un nucleu monolit (UNIX). In acest caz sistemul de operare a fost scris ca o colectie de proceduri si functii, fiecare dintre  ele putand apela oricare alte functii sau proceduri de care au nevoie. Cand se utilizeaza aceasta tehnica, fiecare procedura din sistem este bine-definita ca interfata, in termenii parametrilor si rezultatului, fiecare procedura putand apela pe o alta, in functie de necesitati.

In acest caz, se poate face o anumita structurare. In momentul in care serviciile asigurate de catre sistemul de operare sunt apelate prin punerea parametrilor in locuri bine-definite, precum registre sau stiva, apoi se executa o instructiune speciala cunoscuta ca apel kernel sau apel superviser. Aceasta instructiune muta masina din modul de rulare normala in modul kernel si transfera controlul sistemului de operare.

(a se vedea schema de pe ultima pagina)

Sistemul de operare examineaza parametrii apelului, pentru a determina care apel sistem este cerut. Apoi sistemul de operare indexeaza tabela de registre pentru a identifica apelul (cauta pointer la procedure k). Dupa identificare se executa procedura si apoi se reda controlul programului utilizator.