Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
DEFINITII Sistem Operare
Burgess defineste un sistem de operare ca fiind un nivel al software-ului care trateaza aspectele tehnice in timpul unei operari a unui calculator. Sistemul de operare functioneaza in acest caz ca o protectie a utilizatorului vizavi de operatiunile calculatorului de pe nivelul de jos.
Stallings defineste sistemul de operare ca fiind o aplicatie care controleaza execuia celorlalte programe si actioneaza ca o interfata intre utilizator si resursele hardware ale calculatorului.
Tanenbaum propune definirea sistemelor de operare din doua puncte de vedere: cel al sistemului de operare ca administrator de resurse respectiv cel de extensie functionala a calculatorului.
Servicii ale sistemului de operare:
-dezvoltarea si executia programelor
-asigurarea aceesului la dispozitivele de I/O
-acces controlat la fisiere
-accesul la sistem
+ obiective S.O.:
Un calculator reprezinta un set de resurse pentru manevrarea, depozitarea si procesarea datelor precum si pentru controlul acestor functii. Sistemul de operare este responsabil pentru managementul resurselor
Ca si alte programe de calculator si sistemul de operare furnizeaza instructiuni pentru procesor cu deosebirea ca directioneaza procesorul pentru utilizarea altor resurse si executarea altor programe.
Cerintele unui S.O. in lucrul cu procesele:
Cerintele majore ale unui sistem de operare vizavi de lucrul cu procesele pot fi definite ca:
· intersectarea executiei mai multor procese pentru maximizarea utilizarii procesorului si obtinerii unor timpi de executie cat mai buni;
· alocarea resurselor pentru fiecare proces;
· asigurarea suportului pentru comunicarea interprocese.
Un proces mai este cunoscut si sub denumirea de task si reprezinta de fapt un program in executie. Un proces reprezinta mai mult decat o simpla secventa de cod. Acesta include continutul registrilor, stiva, zona de date etc.
Starile unui proces in UNIX:
· user running - corespunde executiei in modul utilizator;
· kernel running - corespunde executiei in modul kernel;
· ready to run, in memory - este gata de execuŃie si asteapta kernelul sa ii acorde
procesorul;
· asleep in memory - procesul se afla in memoria principala, dar nu poate fi executat pana la aparitia unui eveniment;
· ready to run, swapped - procesul este gata de executie, dar trebuie adus in memoria principala inainte de a primi procesorul de la kernel;
· sleeping, swapped - procesul asteapta un eveniment si se afla in memoria secundara;
· preempted - procesul este trecut din modul kernel in modul utilizator, dar kernelul il detine inca;
· created - procesul este nou creat si nu este gata de executie;
· zombie - procesul nu mai exista, dar apare pentru procesul parinte.
STARILE UNUI PROCES:
· in executie(running):
· pregatit (ready)
· blocat(blocked)
· nou (new) - un proces nou;
· abandon (exit)
· Null->New: la creerea unui proces;
· New-> Ready
· Ready->Running
· Running->Exit
· Running->Ready
· Running->Blocked
· Blocked->Ready
Crearea proceselor:
In momentul in care un proces trebuie creat, sistemul de operare creeaza structura de
date si aloca spatiul de adrese pentru procesul respectiv. Mai multe evenimente pot duce la
creearea unui proces. Dintre ele putem aminti:
· in sistemele de operare cu prelucrare in loturi procesele sunt create ca raspuns la
inceperea unui job;
· in sistemele de operare mai noi pot fi create la loginarea unui nou utilizator sau pentru
un proces de printare de exemplu.
Pasi:
1. Atribuirea unui identificator unic al noului proces;
2. Alocarea spatiului pentru process
3. Blocul de control al procesului trebuie initializat
4. Setarea legaturilor.
5. Exista posibilitatea crearii altor structuri de date sau extinderii celor existente.
+ in UNIX:
1. aloca in tabelul proceselor o intrare pentru noul proces;
2. atribuie un identificator unic de proces;
3. realizeaza o copie a imaginii procesului parinte cu excepŃia zonei de memorie
partajate;
4. incrementeaza numaratoarele pentru toate fisierele deŃinute de catre parinte pentru a reflecta faptul ca un proces in plus deŃine aceste fisiere;
5. atribuie procesului fiu o stare de tipul ready to run;
6. returneaza identificatorul fiului procesului parinte si o valoare 0 pentru procesul fiu
Comutarea proceselor:
Comutarea intre doua stari ale unui proces aflat in stare de executie implica urmatorii pasi:
1. salvarea contextului procesorului incluzand program counter-ul si alti registri;
2. realizarea unui update pentru blocul de control al procesului.
3. mutarea blocului de control al procesului la una din cozile de asteptare (ready, blocat
la un eveniment i, ready-suspendat);
4. selectarea altui proces pentru executie;
5. realizarea unui update la blocul de control al procesului selectat
6. realizarea unui update a structurilor de date pentru managementul memoriei.;
7. restaurarea contextului pentru procesor pentru cazul procesului selectat prin
incarcarea valorilor pentru program counter si alti registri.
Alocarea
paginata a
aparut la diverse sisteme de calcul pentru a evita fragmentarea memoriei
interne, care apare la metodele anterioare de alocare. Memoria
virtuala este impartita in zone de
lungime fixa numite pagini virtuale. Paginile virtuale
se pastreaza in memoria secundara. Memoria operativa
este impartita in zone de lungime fixa,
numite pagini fizice. Lungimea unei pagini fizice este
fixata prin hard. Paginile virtuale si cele reale (fizice) au aceeasi
lungime, lungime care este o putere a lui 2, si care
este o
exemplu 1Ko, 2Ko, etc ).
Acest mecanism are avantajul ca foloseste mai eficient memoria operativa, fiecare program ocupand numai memoria strict necesara la un moment dat. Un alt avantaj este posibilitatea folosirii in comun, de catre mai multe programe, a instructiunilor unor proceduri. O procedura care permite acest lucru se numeste procedura reentranta.
Memoria asociativa Indiferent de modul de organizare a tabelei de pagini, atunci cand este referentiata o locatie dintr-o pagina virtuala, in functie de modul de organizare a tabelei, precum si de instructiunea cod masina respectiva, trebuie sa se faca una sau mai multe referinte la diverse locatii de memorie. S-a observat ca majoritatea programelor fac un numar mare de referinte la un numar relativ mic de pagini. Astfel, un numar mic de intrari in tabela de paginare sunt efectiv citite. O solutie pentru rezolvarea acestei probleme, este utilizarea unei componente hardware care sa proiecteze spatiul de adrese virtuale, in cel de adrese fizice, fara a trece prin tabela de pagini, numita memorie asociativa.
Alocare segmentata Din punctual de vedere al utilizatorului, o aplicatie este format dintr-un program principal si o multime de subprograme(functii sau proceduri). Aceste folosesc diferite structuri de date (tablouri, stive etc), precum si o multime de simboluri (variabile locale sau globale). Toate aceste sunt identificate printr-un nume.
In mod analog cu alocarea paginata, o adresa virtuala este o pereche (s,d), unde s este numarul segmentului iar d este adresa din cadrul segmentului. Adresa reala (fizica) este o adresa obisnuita. Transformarea unei adrese virtuale intr-o adresa fizica, se face pe baza unei tabele de segmente. Fiecare intrare in acesta tabela este compusa dintr-o adresa de baza(adresa fizica unde este localizat segmentul in memorie) si lungimea segmentului(limita). In figura 6.4 este ilustrat modul de utilizare a tabelei de segmente. Componenta s a adresei virtuale, este un indice in tabela de segmente. Valoarea deplasamentului d trebuie sa fie cuprinsa intre 0 si lungimea segmentului respectiv(in caz contrar este lansata o instrucŃiune trap, care genereaza o intrerupere). Daca valoarea d este valida, ea este adaugata adresei de inceput a segmentului si astfel se obtine adresa fizica a locatiei respective.
Avantajele alocarii segmentate, fata de cea bazata pe partitii sunt:
· se pot creea segmente reentrante, care pot fi partajate de mai multe procese. Pentru aceasta este suficient ca toate procesele sa aiba in tabelele lor aceeasi adresa pentru segmentul respectiv.
· se poate realiza o buna protectie a memoriei. Fiecare segment in parte poate primi alte drepturi de acces, drepturi trecute in tabela de segmente. De exemplu, un segment care contine instructiuni cod masina, poate fi declarat "read-only" sau executabil. La orice calcul de adresa, se verifica respectarea modului de acces al locatiilor din segmental respectiv.
Un sistem de gestionare a fisierelor trebuie sa urmareasca anumite obiective
· sa respecte constrangerile de gestionare a datelor si cerintele utilizatorilor;
· sa garanteze validitatea datelor din fisiere;
· sa optimizeze performanta din ambele puncte de vedere: sistem si utilizator;
· sa ofere suport de I/E pentru o gama cat mai larga de dispozitive de stocare;
· sa minimizeze sau sa elimine potentialele pierderi sau distrugeri de date;
· sa ofere o interfata standardizata pentru rutinele de I/E;
· sa ofere suport de I/E pentru mai multi utilzatori.
Memoria cu acces rapid("cache")
Memoria cache contine copii ale unor blocuri din memoria operativa. Cand CPU incearca citirea unui cuvant din memorie, se verifica daca acesta exista in memoria cache. Daca exista, atunci el este livrat CPU. Daca nu, atunci el este cautat in memoria operativa, este adus in memoria cache impreuna cu blocul din care face parte, dupa care este livrat CPU. Datorita vitezei mult mai mari de acces la memoria cache, randamentul general al sistemului creste. Memoria cache este impartita in mai multe parti egale, numite sloturi. Un slot are dimensiunea unui bloc de memorie, a carui dimensiune este o putere a lui 2. Fiecare slot contine o zona care contine blocul de memorie operativa depus in slotul respectiv. Problema care se pune, este modul in care se face corespondenta dintre blocurile din memoria operativa si sloturile din memoria cache, precum si politicile de inlocuire a sloturilor din memoria cache, cu blocuri din memoria fizica. Spunem ca are loc o proiectie a spatiului memoriei operative in cel al memoriei cache.
Alocare contigua a fisierelor
Acest tip de alocare este ideala pentru fisierele secventiale. Singura problema este ca poate aparea o fragmentare externa facand dificila obtinerea spatiului pentru alocarea blocurilor de dimensiuni mari. De aceea este necesar sa se efectueze periodic o operatiune de compactare pentru a elibera spatiu suplimentar.
Alocarea contiguǎ a fisierelor inainte de compactare si dupǎ
Avem 2 alternative:
· portiuni contigue mari si variabile: aceasta va conduce la cresterea performantei.
Dimensiunea variabila elimina risipa, iar tabelele de alocare a fisierelor sunt mici .
· blocuri: portiuni mici de dimensiune fixa ce ofera o mai mare flexibilitate. Acestea
pot solicita tabele largi sau structuri complexe pentru alocarea lor. Contiguitatea a
fost abandonata, iar blocurile sunt alocate dupa nevoie.
In primul caz, prealocarea fisierului se face in grupuri de blocuri contigue. In aceasta
situatie este nevoie numai de o referinta catre primul bloc si de numarul de blocuri
alocate, iar tabela de alocare are nevoie doar de o singura intrare pentru fiecare fisier.
La cealalta extrema se afla alocarea inlantuita. In acest caz alocarea se face la nivel de blocuri individuale. Fiecare bloc contine o referinta catre urmatorul bloc din lant. Si in aceasta situatie este nevoie doar de o intrare pentru fiecare fisier in tabela de alocare a fisierelor. In acest caz nu se pune problema fragmentarii. Acest tip de organizare este ideal pentru fisierele secventiale ce se vor procesa secvential. Problema ce poate aparea este necestitatea de a face accese in diferite zone ale discului. Pentru a corecta acesta problema este necesar sa se faca periodic o compactare a fisierului.
Alocarea inlǎntuitǎ a fisierelor inainte de compactare si dupǎ
In cazul alocarii indexate, tabela de alocare a fisierelor contine un nivel de indexare separat pentru fiecare fisier: indexul are cate o intrare pentru fiecare portiune de fisier alocata. Uzual indexarile din fisier nu sunt stocate ca si parti ale tabelei de alocare, ci sunt memorate in blocuri separate si tabela de alocare contine o referinta catre acel bloc. Alocarea se poate face pe baza de blocuri cu dimensiune fixa sau pe portiuni de dimensiune variabila. In primul caz se elimina fragmentarea iar in al doilea imbunatateste focalizarea. In ambele situatii este nevoie sa se efectueze compactarea la anumite intervale de timp.
Alocarea indexatǎ a fisierelor folosind blocuri fixe sau variabile
DMA
Comparatie intre vitezele dispozitivelor I/O
Principala tehnica de lucru cu un dispozitiv de I/O este reprezentata de DMA(Direct Memory Access) si se refera in principal la controlul schimbului de date intre memorie si dispozitivul de I/O.
Pentru un transfer de date utilizand procesorul, fara sa folosim un controler de DMA pot fi realizate foarte usor mici aplicatii in limbaj de asamblare in urma
carora veti putea vedea ca viteza de acces la dispozitivul de I/O este total necorespunzatoare. Din aceasta cauza s-a ajuns la utilizarea unui controler de DMA. Acesta acceseaza magistrala de date ceruta de la procesor iar ciclul instructie curent este suspendat urmand sa se transfere date cu dispozitivul de I/O in cadrul ciclului respectiv.
Logica DMA
Configuratii alternative pt. DMA [mai sus]
Tehnica de buffering
Sa presupunem ca un proces utilizator doreste sa citeasca blocuri de date de la un
dispozitiv de stocare secundar. Datele trebuie citite intr-o zona de date a procesului. Cel mai
simplu mod este de a executa o comanda catre dispozitiv si sa asteptam ca datele sa devina
disponibile. Ar putea apare doua probleme importante in acest caz. Prima e ca procesul trece
intr-o stare de asteptare pentru ca dispozitivul relativ incet de I/O sa furnizeze datele. A doua,
si mai daunatoare, este ca aceasta asteptare poate interfera cu decizia sistemului de operare de
a face un swapping pentru acel proces. Zona de memorie trebuie insa sa ramana alocata in
memoria principala pana la realizarea transferului de date. In cazul paginarii doar pagina Ńinta
trebuie sa ramana in memoria principala. Exista si posibilitatea unui deadlock cand procesul
este suspendat si mutat, in acest caz el asteptand dupa dispozitivul de I/O iar acesta asteptand
ca procesul sa fie reincarcat in memoria principala. Aceleasi consideratii pot fi facute si in
cazul unei 'scrieri' de date catre un dispozitiv I/O.
// transferul datelor de la/catre un dispozitiv de I/O se poate face orientat pe blocuri (cazul harddisk sau alte dispozitive de stocare secundare) sau pe streamuri (imprimante, porturi, terminale, mouse).
Scheme de buffering pentru dispozitivele I/O
Copyright © 2024 - Toate drepturile rezervate