Sunteți pe pagina 1din 18

Memoria virtuala

ACSO6 - 1
Memoria virtuala
• o tehnica ce utilizeaza memoria principala ca un
“cache” pentru memoria secundara
• a aparut ca urmare a necesitatii de:
– partajare eficienta si sigura a memoriei principale
intre mai multe programe
– eliminare a dificultatilor programarii memoriilor
mici, limitate (in cazul programelor mari)

ACSO6 - 2
Memoria virtuala
• translateaza spatiul adreselor programului in adrese
fizice
• adresa fizica = adresa in memoria primara
• protectie = un set de mecanisme care are grija ca
procesele multiple care partajeaza procesorul,memoria
si dispozitivele de I/E, sa nu poata interfera, intentionat
sau neintentionat, unele cu altele prin citirea sau
scrierea datelor unul altuia

ACSO6 - 3
Memoria virtuala
• blocuri => pagini
• eroare de pagina = evenimentul care are loc cand
pagina accesata nu se afla in memoria principala
• adresa virtuala = o adresa care corespunde unei locatii
din spatiul virtual si care este translatata la o adresa
fizica prin maparea adreselor cand memoria este
accesata
• relocare – utilizeaza un set de blocuri (pagini) de
dimensiune fixa
ACSO6 - 4
Memoria virtuala

ACSO6 - 5
Maparea unei adrese virtuale intr-una fizica

Dim.pag.= 212 bytes=4 KB


Nr.pag.fizice = 218
Mem. Princip. < = 1 GB
Mem. virtuala = 4 GB

ACSO6 - 6
Decizii privind memoria virtuala
O eroare de pagina va fi prelucrata in milioane de cicluri
de ceas (memoria principala fiind de cca. 100000 de ori
mai rapida decat cea secundara)=>
•dim. pag. trebuie sa fie suficient de mare (4 sau 16 KB)
•eroarea poate fi solutionata prin software – se pot folosi
algoritmi complecsi
•se va utiliza scrierea-dupa (scrierea-prin dureaza prea
mult)

ACSO6 - 7
Plasarea unei pagini si regasirea ei
• tabela paginilor
– contine translatarea adreselor virtuale in adrese fizice
– este stocata in memorie si este indexata dupa numarul de
pagina virtual
– fiecare intrare in tabela contine numarul paginii fizice
corespunzatoare paginii virtuale respective, daca pagina
se afla in memorie

• registrul tabelei paginilor

ACSO6 - 8
Tabela paginilor

ACSO6 - 9
Procese
• starea unui program = tabela paginilor impreuna cu
contorul programului si registrii
• proces = stare
• proces
– activ
– inactiv

ACSO6 - 10
Tratarea erorii de pagina
• este tratata de catre sistemul de operare
• trebuie gasita pagina in memoria secundara
• trebuie decis ce pagina din memoria principala va fi
inlocuita
• spatiul swap – spatiul de pe disc rezervat pentru spatiul
intregii memorii virtuale a unui proces

ACSO6 - 11
Maparea paginilor virtuale

ACSO6 - 12
Tratarea erorii de pagina
• pentru determinarea paginii fizice care va fi inlocuita
se utilizeaza schema celei mai putin recent folosite
pagini
• aceasta pagina se scrie in swap
!!! sistemul de operare este un proces si tabelele care
controleaza memoria se afla in memorie
• pentru estimarea celei mai putin recente pagini folosite
din memorie se utilizeaza un bit de referinta (bit de
utilizare)
ACSO6 - 13
Scrierea in pagina
• scrierea necesita si ea foarte multe cicluri de ceas
• solutia este scrierea paginii pe disc doar in momentul
inlocuirii ei in memorie
• se utilizeaza un bit de murdarire, daca e setat inseamna
ca pagina a fost modificata => trebuie copiata pe disc

ACSO6 - 14
Accelerarea translatiei adreselor
• accesul unui program la date necesita doua accesari ale
memoriei:
– una la tabela paginilor, pentru aflarea adresei fizice
– una pentru accesarea datelor
• accesarea unei pagini are localizare spatiala si temporala
• procesoarele moderne include un cache special = bufer de
translatie laterala (TLB)

ACSO6 - 15
Accelerarea translatiei adreselor

ACSO6 - 16
Procesorul Intrinsity FastMATH

ACSO6 - 17
Implementarea protectiei
• functia importanta a memoriei virtuale = asigurarea
partajarii memoriei intre procese si asigurarea protejarii
datelor acestora si a sistemului de operare
• hardware-ul trebuie sa:
– suporte cel putin doua moduri care sa indice daca procesul care
ruleaza este unul utilizator sau un proces al sistemului de
operare (proces kernel, supervisor, executiv)
– asigure o portiune din starea procesorului care poate fi doar
citita de catre un proces utilizator
– asigure un mecanism de comutare intre modul utilizator si cel
supervizor
ACSO6 - 18

S-ar putea să vă placă și