|
OPTIMIZARI IN INCARCAREA SI EXECUTIA UNUI PROGRAM IN MEMORIE
Exista 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).
1. 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.
2. Overlay-uri
Overlay-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.
3. Legarea dinamica
Legarea dinamica este utilizata in sistemele de operare de tip WINDOWS sau OS/2 , 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. Ca tehnica, se foloseste un stub care, cand este apelat, este inlocuit cu rutina respectiva ce se si executa. 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.
Trebuie mentionat ca:
-programul nu functioneaza daca .dll-urile necesare nu sunt prezente in sistem;
-programul depinde de versiunea .dll-urilor.