Calculatoare
Gestionarea memoriei - ierarhii de memorie - overlay-uriProblema esentiala pe care trebuie sa o rezolve un sistem de operare este ca un program, pentru a putea fi executat, sa aiba codul executabil si datele rezidente in memorie. SO trebuie sa partitioneze memoria, ca sa permita utilizarea ei simultana de catre mai multe programe. De asemenea trebuie sa asigure mecanisme de protectie pentru ca programele sa poata coexista in memorie in bune conditiuni. 1. Ierarhii de memorieLa ora actuala, exista urmatoarele categorii de memorie: Memoriile rapide au un timp de acces foarte mic; din punct de vedere tehnologic sunt memorii statice si cu un cost ridicat pe unitatea de memorie. Se utilizeaza pentru registrele generale ale unitatii centrale si pentru memoria CACHE. Memoriile lente au un timp de acces mai mare, din punct de vedere tehnologic sunt realizate ca memorii dinamice si au un cost pe unitatea de memorie mult mai mic decat al memoriilor rapide. Se utilizeaza pentru memoria principala. Memoriile foarte lente au timp de acces foarte mare in comparatie cu celelalte tipuri, si, bineinteles, un cost mult mai mic pe unitatea de memorie. Este cazul hard discurilor. O ierarhie de memorie este un mecanism, transparent pentru utilizator, prin care SO actioneaza asa fel incat, cu o cantitate cat mai mica de memorie rapida si cu o cantitate cat mai mare de memorie lenta si foarte lenta, sa lucreze ca si cum ar avea o cantitate cat mai mare de memorie rapida. 2. Optimizari in incarcarea si executia unui program in memorieExista unele optimizari ale sistemelor de operare, legate de incarcarea si executia unui program in memorie : -incarcarea dinamica; -suprapuneri (overlay-uri); -legarea dinamica (.dll in WINDOWS, .so in UNIX). Incarcarea dinamica Incarcarea dinamica este incarcarea rutinelor in memoria principala numai atunci cand este nevoie de ele. In acest mod sunt aduse in memorie numai rutinele apelate, rutinele neutilizate nu vor fi incarcate niciodata. Un astfel de exemplu este un program de dimensiune foarte mare care contine multe rutine de tratare a erorilor, (rutine foarte mari), erorile tratate fiind foarte rare. Desigur aceste rutine nu vor fi incarcate in memorie. Trebuie remarcat ca mecanismul de incarcare dinamica nu este implementat in SO, el fiind o sarcina a utilizatorului. 3. Overlay-uriOverlay-urile furnizeaza un mod de scriere a programelor care necesita mai multa memorie decat memoria fizica, cu alte cuvinte a programelor de mari dimensiuni. La fel ca si in cazul incarcarii dinamice, nu este o sarcina a sistemului de operare ci a utilizatorului. Acesta trebuie sa partitioneze programul in bucati mai mici si sa incarce aceste partitii in memorie asa fel ca programul sa nu aiba de suferit in executie. Desigur o astfel de programare este complexa, dificila. Ea se utiliza in SO mai vechi. Legarea dinamicaLegarea dinamica este utilizata in sistemele de operare de tip WINDOWS, pentru fisierele cu extensia •dll sau in UNIX , in bibliotecile cu extensia •so. Conform acestui mecanism rutinele nu sunt incluse in programul obiect generat de computer, legarea subrutinelor fiind amanata pana in momentul executiei programelor. Rolul sistemului de operare este sa vada daca rutina este in memorie si daca nu sa o incarce. In acest mod se realizeaza o buna partajare a codului.
|