Proiect sisteme de operare


Elemente de gestionare a memoriei



Yüklə 382,05 Kb.
səhifə5/14
tarix03.01.2022
ölçüsü382,05 Kb.
#44894
1   2   3   4   5   6   7   8   9   ...   14
1.4 Elemente de gestionare a memoriei
Segmentele unui program

Un program C constă din următoarele segmente:

Segmentul de text conţine instrucţiunile programului, în limbaj maşină. De obicei, accesul la acest segment este numai prin citire, iar dacă mai multe procese folosesc acelaşi program, segmentul de text va fi partajat, astfel încât numai un exemplar al său să fie necesar în memorie.

Segmentul de date iniţializate conţine variabilele iniţializate explicit în textul sursă al programului, în afara oricărei funcţii.

Segmentul de date neiniţializate este rezervat pentru variabile daclarate în afara funcţiilor, fără a fi iniţializate.

Fig.2. Spaţiul de memorie pentru un program C
Acest spaţiu va fi iniţializat cu zero la încărcarea programului. Numele de bss provine de la mnemonicul unei instrucţiuni în limbajul de asamblare al PDP-11: Block Started By Symbol

Stiva este zona în care se memorează variabilele declarate în interiorul funcţiilor, precum şi informaţiile necesare pentru revenirea din apelurile la funcţii

Zona heap este utilizată pentru variabilele alocate dinamic şi este plasată deasupra datelor neiniţializate şi creşte spre stivă.

În fişierul executabil sunt memorate numai segmentul de text şi cel al datelor iniţializate. Pentru segmentul datelor neiniţializate este suficient să se memoreze dimensiunea necesară, pentru a se putea face rezervarea la încărcarea programului.

Biblioteci partajate Utilizarea bibliotecilor partajate, admise în majoritatea implementărilor UNIX, înseamnă că nu mai este necesar să se includă în fiecare program la editarea de legături funcţiile de bibliotecă apelate, ci este suficient ca în memorie să se încarce o copie a acestora, la care fac acces toate programele care au specificată opţiunea de utilizare a bibliotecilor partajate. Utilizarea partajării bibliotecilor se indică prin opţiuni la compilare. Pentru compilatorul gcc opţiunea este -share, iar efectul ei este ilustrat pentru programul argenv.c.

$ gcc -o argenv argenv.c

$ gcc -o argenvs -shared argenv.c

$ ls -l argenv argenvs



Yüklə 382,05 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   ...   14




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin