|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Alocarea memoriei - sisteme de operare | ||||||
|
||||||
Atat la nivelul sistemului de operare, cat si la cel al aplicatiilor, modul in care se realizeaza alocarea memoriei are un impact puternic asupra performantei. De asemenea, alocatorul de memorie reprezinta intotdeauna o componenta critica, deoarece orice greseala de implementare poate afecta grav buna functionare a programelor. Acest pericol este amplificat de faptul ca gestiunea corecta a zonelor libere si a celor ocupate este in general un proces complex si dificil, in care erorile pot aparea relativ usor. Alocarea memoriei in limbajele de programare i4e4eg Limbaje fara alocare dinamica Limbaje cu alocare/dealocare explicita Limbaje cu colectare de gunoaie (garbage collection) Principalul avantaj al colectarii de gunoaie il constituie eliminarea aparitiei erorilor de programare de tipul accesului la zone de memorie nealocate. In schimb, eficienta este mai redusa: colectorul de gunoaie nu poate elibera o anumita zona decat daca stie cu certitudine ca nu va mai fi folosita, ceea ce de multe ori nu este posibil. Din acest motiv, de multe ori raman alocate zone care nu mai sunt utilizate. Caracteristicile alocatoarelor timpul maxim care poate fi consumat pentru o operatie; uneori cererile de alocare
trebuie deservite intr-un timp foarte scurt, motiv pentru care durata maxima
necesara unei operatii de alocare trebuie sa fie cat mai mica timpul mediu - se refera la performanta globala a sistemului; daca durata unei
operatii de alocare poate varia semnificativ in functie de diversi factori,
este de dorit ca situatiile care consuma mult timp sa apara cat mai rar gradul de fragmentare - in functie de algoritmii aplicati de alocator, poate
aparea fragmentare interna sau externa; acest fenomen este cu atat mai deranjant,
cu cat aici nu se poate realiza compactarea memoriei libere, pentru ca adresele
referite prin program ar deveni incorecte dimensiunea spatiului de memorie ocupat de alocator pentru propriile structuri
de date; deoarece acest spatiu nu este utilizabil de catre programe, reducand
cantitatea de memorie disponibila pentru acestea, este de dorit sa fie cat mai
mic simplitatea in utilizare - presupune existenta unor functii de alocare si eliberare
a memoriei cat mai usor de folosit (un bun exemplu in acest sens fiind limbajul
C, cu perechea malloc/free); limbajele cu colectare de gunoaie sunt ideale in
acest sens Alocatorul cu harta de resurse adresa de inceput dimensiunea starea (liber/ocupat) Alocatorul cu harta de resurse este foarte simplu in conceptie. De asemenea, zonele libere adiacente pot fi concatenate intr-o singura zona mai mare. Dezavantajul principal il constituie spatiul suplimentar ocupat de harta de resurse, care poate deveni inacceptabil, mai ales atunci cand gradul de fragmentare (externa) este mare. In plus, timpul consumat pentru cautare este relativ mare, deoarece trebuie parcurse toate zonele, inclusiv cele ocupate. In sfarsit, memorarea hartii de resurse sub forma unui tablou face gestiunea sa mai dificila atunci cand trebuie inserate noi intrari sau sterse intrari existente. Pentru a elimina primul dintre aceste neajunsuri, se poate utiliza o forma modificata, in care fiecare zona contine, pe langa datele efective, si propria dimensiune. In acest fel se memoreaza mai putine informatii in harta de resurse. Castigul apare in cazul zonelor libere, la care memorarea dimensiunii chiar in interiorul zonei nu implica nici un consum de memorie, in afara cazului in care zona libera este mai mica decat 4 octeti, cat este necesar pentru a memora dimensiunea. Celelalte probleme raman insa valabile. Alocatorul cu lista Alocatorul cu puteri ale lui 2 Deoarece este eliminata cautarea, timpul de raspuns este mult redus. In schimb se pierde multa memorie prin fragmentare interna, pentru ca aproape intotdeauna se aloca mai multa memorie decat s-a cerut. Problema este cu atat mai serioasa cu cat nucleul contine o serie de structuri a caror dimensiune este o putere a lui 2; deoarece trebuie memorata si dimensiunea zonei ocupate, se va aloca de fapt o zona de marime dubla, astfel incat risipa de memorie este majora. Un alt dezavantaj il constituie imposibilitatea de a concatena doua zone libere adiacente, in afara cazului cand au aceeasi dimensiune. Alocatorul Karels-McKusick Ideea este ca fiecare pagina de memorie sa contina numai zone de aceeasi dimensiune
(evident, putere a lui 2). Concret, alocatorul mentine un tabel care contine
cate un element pentru fiecare pagina de memorie. Fiecare element retine dimensiunea
zonelor de memorie din pagina corespunzatoare. In acest mod, structurile de
date de dimensiune putere a lui 2 nu vor mai genera fragmentare interna. Se
consuma spatiu suplimentar pentru tabel, insa pe ansamblu economia de memorie
este susbstantiala. In rest, alocatoarele cu puteri ale lui 2 si Karels-McKusick
sunt similare, avand aceleasi avanataje si dezavantaje. |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|