CATEGORII DOCUMENTE |
SISTEMELE DE OPERARE
1.- Evolutia sistemelor de operare
Sisteme cu un singur procesor
Pentru primele sisteme de operare s-a actionat asupra simplificarii incarcarii programelor si reducerea perioadei de tranzitie dintre lucrari. A fost stabilit un singur operator care efectua toate operatiile cu calculatorul.
Operatorul incarca toate materialele pe suportul de stocare de masa al calculatorului, unde sistemul de operare avea acces la ele pentru a le executa. Acesta a fost inceputul prelucrarii pe loturi (batch procession) - executarea lucrarilor prin plasarea lor intr-un grup unic si apoi reluarea lor fara o alta interactiune cu utilizatorul. In vederea executiei, lucrarile stocate in memoria de masa erau plasate intr-o coada de lucrari (job queue) (vezi fig. 2.1.1).
Lucrari programate Rezultate
Domeniul
utilizatorului
Domeniul Executia
calculatorului lucrarii
Fig. 2.1.1. P r e l u c r a r e p e l o t u r i
Coada reprezinta o structura de stocare in care obiectele (lucra-rile) sunt organizate dupa principiul primul intrat, primul iesit (FI FO - First Input First Output).
Un dezavantaj al prelucrarii utilizand administrator de sistem este acela ca, dupa ce lucrarea a fost transmisa in coada de lucrari, utilizatorul nu mai poate interveni asupra programului.
Pentru a raspunde la aceste cerinte au fost dezvoltate noi sisteme de operare care permit prelucrarea interactiva (interactive processing) (vezi fig. 2.1.2.).
Programe, date, directive
de executie si rezultate
Domeniul
utilizatorului
Executia
Domeniul programului
calculatorului
Fig. 2.1.2. Prelucrarea interactiva
Aceste sisteme permit executarea unui program care poarta un dialog cu utilizatorul prin intermediul terminalelor de control la distanta sau al statiilor de lucru. Sistemele interactive au dat nastere conceptului de prelucrare in timp real (real time processing).
Daca sistemele interactive ar fi putut sa se adreseze unui singur utilizator la un moment dat, prelucrarea in timp real n-ar fi pus nici o problema.
Datorita pretului ridicat al calculatoarelor este necesar ca fiecare masina sa deserveasca mai multi utilizatori.
O solutie la aceasta problema este proiectarea si realizarea sistemului de operare in asa fel incat sa parcurga pe rand diferitele activitati ce trebuie executate printr-un proces numit partajarea timpului.
Mai exact, partajarea timpului (time sharing) se refera la tehnica de impartire a timpului in intervale, denumite felii de timp (time slices), cu restrictia executarii unei activitati numai intr-o felie timp la un moment dat. La sfarsitul fiecarei felii de timp, activitatea curenta este trecuta in repaus si o alta activitate primea dreptul de executie in urmatoarea felie de timp. Prin baleierea rapida a activitatilor in acest mod se crea iluzia executarii simultane a mai multor procese.
In prezent partajarea timpului este utilizata atat in sistemele cu un singur procesor, cat si in sistemele multiprocesor, dar in cazul primelor este denumita de obicei multitasking (iluzia ca mai multe activitati sunt desfasurate simultan).
Sisteme multiprocesor
Nevoia de a partaja informatiile si resursele intre diferite calculatoare a condus la ideea conectarii calculatoarelor pentru schimbul de informatii.
A aparut conceptul de structura de mai multe calculatoare mici, conectate intr-o retea (net work), prin care utilizatorii partajeaza resursele.
Software-ul pentru controlul unei retele de calculatoare poate fi privit ca un sistem de operare in retea.
2. Arhitectura unui sistem de operare
Pentru a intelege un sistem de operare tipic, propunem o clasificare a categoriilor de componente.
Software
Aplicatie Sistem
Utilitar Sistem de operare
Interfata Nucleu
Fig. 2.1.3. Clasificarea software-ului
Exista doua categorii de software distincte : software de aplicatii (application software) si software de sistem (system software).
Software-ul de aplicatii contine programele care efectueaza anumite activitati particulare specifice beneficiarului (end user-ului).
Spre deosebire de software-ul de aplicatii, software-ul de sistem efectueaza acele activitati care sunt comune sistemelor de calcul in general.
Clasa software-ului de sistem se imparte in doua categorii: sistemul de operare propriu-zis si module software numite software utilitar. Intr-un anumit sens, software-ul utilitar consta in unitati de software care extind caracteristicile sistemului de operare (abilitatea de formatare a unui disc sau de copiere a unui fisier).
Unii utilizatori de calculatoare includ in clasa de software utilitar orice software livrat odata cu sistemul de operare.
I n t e r f a t a
Partea dintr-un sistem de operare care defineste modul de interactiune dintre sistemul de operare si utilizatorii sai poarta numele de interfata (shell). Sarcina interfetei este aceea de a permite comunicarea cu utilizatorul (sau utilizatorii) calculatorului.
Interfetele moderne realizeaza acest lucru folosind o interfeta grafica cu utilizatorul (graphical user interface - G U I), in care obiectele manipulate (fisiere si programe) sunt reprezentate grafic pe ecran prin pictograme (incons). Astfel de sisteme permit utilizatorului sa execute comenzi prin selectarea si deplasarea pictogramelor pe ecran cu un dispozitiv denumit 'mouse'. Vechile interfete comunicau cu utilizatorul numai prin mesaje de tip text (utilizand tastatura si ecranul).
Interfata realizeaza legatura intre un utilizator si 'inima' sistemului de operare (vezi fig. 2.1.4).
Utilizator j Utilizator 2
Sistem
de
operare
Utilizator i Utilizator 3
Fig. 2.1. Interfata dintre utilizatori si sistemul de operare
N u c l e u l
Partea din interiorul unui sistem de operare este adesea denumita nucleu (kernel). Nucleul contine acele componente software care efectueaza operatiile primare necesare pentru functionarea calculatorului.
Una din aceste componente este administratorul de fisiere (file manager), avand sarcina sa coordoneze utilizarea facilitatilor oferite de memoria masa a calculatorului.
Pentru simplificarea utilizarii calculatorului, sistemele de administrare a fisierului permit gruparea lor in unitati denumite directoare (directory) sau dosare (folder). Astfel este posibil ca utilizatorul sa-si organizeze fisierele conform scopului propus, permitand ca directoarele sa contina alte directoare, denumite subdirectoare, realizandu-se astfel o organizare ierarhizata a informatiilor. Secventa de directoare care indica drumul pana la un anumit subdirector sau fisier se numeste cale (path).
Orice acces la un fisier se obtine prin intermediul administratorului de fisiere, care solicita deschiderea fisierului. Daca administratorul de fisiere accepta cererea de acces, el furnizeaza informatiile necesare pentru gasirea si manipularea fisierului. Informatiile sunt stocate intr-o zona din memoria principala care poarta numele de descriptor de fisier (file descriptor).
O alta componenta a nucleului consta dintr-o colectie de 'drivere' de dispozitiv (device drivers) - module software care comunica cu controlerele (sau uneori direct cu dispozitivele periferice) pentru efectuarea operatiilor de catre periferice.
Fiecare 'driver' de dispozitiv este proiectat in mod individual pentru un anumit tip de controler sau dispozitiv (imprimanta, disc, monitor) si traduce cererile formulate in termeni generali intr-o secventa de instructiuni specifice controler-ului sau dispozitivului atasat acelui driver.
Alta componenta a nucleului sistemului de operare este administratorul de memorie (memory manager), insarcinat cu activitatea de coordonare a utilizarii memoriei principale a calculatorului. Aceasta componenta este foarte utilizata in mediile multiutilizator sau multitasking.
Sarcina administratorului de memorie se complica atunci cand cantitatea totala de memorie solicitata depaseste dimensiunea memoriei disponibile. In acest caz, administratorul de memorie poate crea iluzia unui spatiu suplimentar de memorie rotind programele si datele intre memoria principala si disc.
Aceasta memorie iluzorie este denumita memorie virtuala (virtual memory).
Pornirea calculatorului
Lansarea in executie a sistemului de operare se realizeaza prin intermediul unei proceduri cunoscute sub numele de incarcarea sistemului de operare (boot straping) ; incarcare (booting).
Zona de memorie in care se asteapta sa se gaseasca programul pentru executie se numeste memorie permanenta (read-only memory ¾ R O M). Cea mai mare parte din memoria interna a unui calculator de uz general este memoria volatila, continutul memoriei pierzandu-se la oprirea calculatorului.
In scopul incarcarii sistemului de operare al unui calculator de uz general, memoria ROM contine un program de mici dimensiuni, denumit bootstrap. La pornirea calculatorului acest program se executa automat si in multe cazuri obiectul transferului (de pe suportul de stocare de masa in memoria principala a calculatorului - vezi fig. 2.1.5) este chiar sistemul de operare. Dupa plasarea in memorie a sistemului de operare, programul bootstrap instruieste VC sa sara la zona de memorie care-l contine.
Din acest moment sistemul de operare devine activ si preia controlul calculatorului.
Memoria principala
incarcarencarcare
D i s c
Program
ROM
Sistem
Memorie de
volatila operare
(Pasul 1) Calculatorul executa programul de incarcare aflat in
memorie. Sistemul de operare se afla pe dispozitivul
de stocare de masa.
Memoria principala
|
ROM
Sistem de operare
Sistem
Memorie de
volatila operare
(Pasul 2) Programul de incarcare realizeaza transferul sistemului de
operare in memoria principala si ii cedeaza apoi controlul.
Fig. 2.1.5. Procesul de incarcare a sistemului de operare
3.- Coordonarea activitatilor desfasurate de calculator
In continuare se va prezenta modul in care sistemul de operare coordoneaza executia software-ului de aplicatie si utilitar, cat si pe cea a propriilor sale module.
Conceptul de proces
Unul din cele mai importante concepte, in cadrul sistemelor de operare, este deosebirea dintre un program si actiunea de executie a acestuia.
Programul reprezinta un set static de directive, iar executia lui este o activitate dinamica, ale carei proprietati se modifica in timp. Aceasta activitate poarta numele de proces. Procesul este caracterizat de starea procesului. Starea procesului reprezinta un instantaneu al functionarii calculatorului la un moment dat. Un singur program poate fi asociat in acelasi timp mai multor procese. (Ex.: Doi utilizatori pot edita simultan documente diferite, intr-un sistem multiutilizator cu partajarea timpului, sistemul de operare utilizand o singura copie a programului de editare).
Sarcina sistemului de operare este sa coordoneze mai multe procese care concureaza pentru utilizarea feliilor de timp.
Coordonarea implica alocarea resurselor necesare fiecarui proces (dispozitive periferice, spatiu in memoria principala, acces la date si acces la unitatea centrala de prelucrare), impiedicarea interferentei proceselor independente si asigurarea schimbului de informatii intre procese care trebuie sa realizeze acest lucru.
Pentru aceast tip de comunicatie se foloseste numele de comunicatie intre procese (interprocess communication).
Administrarea proceselor
Operatiile asociate coordonarii proceselor sunt efectuate de catre secventiator (scheduler) si executor (dispatcher), din nucleul sistemului de operare.
Secventiatorul memoreaza o inregistrare a proceselor prezente in sistemul de calcul, introduce noi procese si le elimina pe cele care s-au terminat. Pentru a putea urmari toate procesele, secventiatorul le inregistreaza intr-un bloc de informatii denumit tabel de procese (process table), in memoria principala. In acest tabel sunt memorate informatii, ca: zona de memorie alocata procesului, prioritatea procesului, daca procesul este in asteptare etc.
Executorul este componenta nucleului care asigura executia proceselor active, programate de secventiator.
Intr-un sistem cu partajarea timpului, executia programelor se realizeaza prin impartirea timpului in intervale scurte, fiecare purtand numele de felie de timp (time slice) si avand o durata de cca 50 de milisecunde. Procedura de trecere de la un proces la altul poarta numele de comutare intre procese (process switch).
intrerupere intrerupere intrerupere intrerupere intrerupere
Proces B Proces B
comutare intre
procese (CP) CP CP CP
Proces A Proces A
Fig. 2.1.6. Partajarea timpului intre procesele A si B
La primirea unui semnal de intrerupere, unitatea centrala de prelucrare completeaza ciclul curent de extragere-decodificare- executie salveaza pozitia din procesul curent si incepe executia unui program de tratare a intreruperilor (interrupt handler), care este stocat la o locatie predeterminata din memoria principala. Programul de tratare a intreruperilor este o componenta a executorului. Efectul semnalului de intrerupere este de suspendare a procesului curent si de transfer a controlului catre executor.
In acest punct executorul permite secventiatorului sa actualizeze tabelul de procese, apoi executorul selecteaza procesul care are cea mai mare prioritate dintre procesele gata de continuare din tabel si permite procesului selectat sa-si inceapa "felia" de timp.
Abilitatea de oprire si de repornire ulterioara a unui proces este de importanta vitala pentru succesul unui sistem cu partajarea timpului. Calculatoarele proiectate pentru sisteme de operare cu partajarea timpului includ actiunea de salvare a valorii contorului de program, precum si continutul registrilor si al celulelor de memorie asociate, ca parte a reactiei unitatii centrale de prelucrare la semnalul de intrerupere. Ele dispun de obicei de instructiuni de limbaj masina pentru reincarcarea unei stari salvate anterior.
Modelul client/server
Modulele sistemului de operare (intr-un sistem cu partajarea timpului) concureaza intre ele sub controlul executorului pentru "feliile" (cuantele) de timp.
Pentru a dobandi accesul la un fisier aflat pe un dispozitiv de stocare de masa, orice proces trebuie sa obtina mai intai informatiile necesare de la administratorul de fisiere.
Pentru simplificarea comunicatiei intre procese, componentele unui sistem de operare sunt adesea proiectate in conformitate cu modelul client/server:
Cerere
Client |
Servicii |
Server |
Fig. 2.1.7. Modelul client / server
Client Client Client Server Client Client Server
Server
Client Server
Fig. 2.1.8. Structuri de comunicatie intre clienti si servere, care opereaza
pe un calculator sau sunt distribuite pe mai multe calculatoare
Acest model defineste cele doua roluri fundamentale pe care le pot juca diferitele componente: client (emite cereri catre unitati, respectiv server (satisface cererile emise de clienti).
Aplicarea modelului client/server in proiectarea software-ului conduce la uniformizarea tipurilor de comunicatii care au loc in sistem.
Daca componentele unui sistem de operare sunt proiectate ca servere si clienti, comunicatia intre componentele din cadrul aceluiasi calculator sau intre componente ale unor calculatoare aflate la mare distanta unele de altele, vezi fig. 2.1.8., are aceeasi forma.
Atat timp cat o retea de calculatoare permite trimiterea de cereri si raspunsuri intre calculatoare, mai multi clienti si mai multe servere se pot distribui in orice configuratie convenabila, pentru reteaua respectiva.
- Gestionarea proceselor concurente
Componentele nucleului unui sistem de operare se ocupa, in principal, cu alocarea resurselor calculatorului catre procesele ce se desfasoara in sistem. Atribuim, in acest caz, termenului resurse atat dispozitivele periferice ale calculatorului, cat si functiile de care dispune calculatorul. (Ex.: Administratorul de fisiere aloca atat accesul la fisierele existente, cat si spatiul pe disc pentru crearea de noi fisiere).
Deoarece un calculator "nu gandeste" independent, ci doar executa instructiuni, pentru ca sistemul de operare sa functioneze fiabil, s-au dezvoltat algoritmi care sa acopere orice problema identificata ca posibila.
Semafoare
Sa luam in discutie un sistem de operare cu partajarea timpului si la care este conectata o singura imprimanta.
Daca un proces este in situatia de a-si tipari rezultatele, el trebuie sa solicite sistemului de operare accesul la programul driver al imprimantei. In acest moment, sistemul de operare trebuie "sa decida" daca satisface aceasta cerere, verificand daca imprimanta nu este cumva utilizata de alt proces. Daca imprimanta este libera, sistemul de operare trebuie sa acorde permisiunea utilizarii ei si sa permita procesului sa continue.
Daca doua procese ar capata simultan acces la imprimanta, rezultatul n-ar prezenta nici o utilitate pentru nici unul dintre ele.
Solutia ar reprezenta-o utilizarea unui indicator (flag) - un bit in memoria ale carui stari sunt: 1 (setat) si 0 (sters).
Indicatorul sters arata ca imprimanta este libera, iar setat indica faptul ca imprimanta este deja alocata. Desi aceasta solutie pare buna la prima vedere, exista totusi o problema. Operatia de testare si eventual de setare a indicatorului necesita mai multi pasi-masina. Nu este exclus ca operatia sa fie intrerupta dupa detectarea unui indicator nul, dar inainte ca indicatorul sa fie setat, ceea ce face posibila aparitia situatiei urmatoare:
Presupunem ca imprimanta este disponibila si un proces cere utilizarea sa. Indicatorul care corespunde imprimantei este verificat si gasit ca fiind sters, ceea ce indica ca imprimanta este disponibila. Dar in acel moment procesul este intrerupt si alt proces isi incepe felia de timp, si acest nou proces solicita utilizarea imprimantei. Indicatorul imprimantei este verificat din nou si gasit tot sters, deoarece procesul precedent a fost intrerupt inainte de a-l putea seta. In consecinta, sistemul de operare permite celui de al doilea proces sa inceapa utilizarea imprimantei. Se ajunge deci la o situatie in care doua procese "utilizeaza" simultan aceeasi imprimanta.
Problema este ca operatia de testare si (eventual) de setare a indicatorului trebuie sa fie terminata fara a fi intrerupta prin utilizarea instructiunilor de invalidare si validare a intreruperilor, disponibile in limbajele-masina.
O alta metoda o reprezinta utilizarea instructiunii de testare si setare (test-and-set), care este disponibila in multe limbaje-masina. Unitatii centrale de prelucrare i se cere sa citeasca valoarea unui indicator, sa o memoreze si apoi sa seteze indicatorul, toate acestea printr-o singura instructiune-masina. Avantajul acestei metode este ca, de vreme ce unitatea centrala termina intotdeauna de executat o instructiune inainte de a sesiza o intrerupere, operatia de testare si setare a indicatorului, implementata cu o singura instructiune, nu poate fi intrerupta.
Un indicator implementat corect, ca mai sus, poarta numele de semafor (semaphore). Prin similitudine o secventa de instructiuni care trebuie executata fara intreruperi corespunde unei portiuni de cale ferata pe care poate trece, la un moment dat, un singur tren. O asemenea secventa de instructiuni poarta numele de zona critica (critical region). Inainte de a intra intr-o zona critica, un proces trebuie sa gaseasca nul semaforul asociat ei si sa-l seteze, apoi trebuie sa stearga semaforul dupa iesirea din zona critica.
Interblocarea
O alta problema care poate aparea in timpul alocarii resurselor este interblocarea (deadlock) ¾ situatia in care desfasurarea a doua sau mai multe procese este blocata, deoarece fiecare dintre ele asteapta acces la resursele alocate celuilalt.
Un alt exemplu apare in situatia in care procesele creeaza noi procese pentru efectuarea unor operatii mai simple. Daca secventiatorul nu are destul spatiu in tabelul de procese si fiecare proces din sistem trebuie sa creeze un proces suplimentar inainte de a-si termina treaba, atunci nici un proces nu va putea continua.
La o analiza mai atenta, constatam ca poate sa apara o interblocare numai daca sunt satisfacute simultan urmatoarele trei conditii:
1) Exista o competitie pentru resurse care nu pot fi partajate.
2) Resursele sunt solicitate in mod partial, ceea ce inseamna ca,
dispunand de anumite resurse, un proces va reveni ulterior
solicitand mai multe.
3) O data ce o resursa a fost alocata, nu se poate forta eliberarea sa.
Concluzia care rezulta este ca eliminarea interblocarii se poate face prin eliminarea uneia dintre cele trei conditii de mai sus.
Asa cum am vazut, pentru ca un calculator sa poata indeplini o anumita sarcina, trebuie sa-i furnizam un algoritm care sa-i spuna exact ce are de facut. In acest sens, in continuare vom prezenta cateva concepte fundamentale, ca:
¾ dezvoltarea si reprezentarea algoritmilor
¾ controlul iteractivitatii si recursivitatii algoritmilor.
De asemenea vor fi descrisi in continuare cativa algoritmi foarte cunoscuti de cautare si sortare.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1285
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved