Extras din curs
Memoria virtuala este folosita datorita existentei unor programe mai mari decit memoria disponibila.Solutia uzuala era de a sparge programele in bucati numite overlay-uri.Overlay-urile aveau dinamica cu discul foarte simpla ;programatorul făcea impartirea si gestiunea overlay-urilor.Totusi aceasta munca era consumatoare de timp si plictisitoare.Noua metoda (Fotheringham 1961)s-a numit memorie virtuala.Ea prevedea prelungirea memoriei reale pe dimensiuni ireale,incluzind memoria externa,cu trecerea parţii active in memoria reala. Microprocesorul sesizează doar faptul ca accesul la date durează mai mult.Cu gestiunea memoriei virtuale se ocupa sistemul de operare care actualizează si intretine paginile memoriei virtuale.
Memoria virtuala poate lucra si in regim de multiprogramare ,pe care o realizează mai eficient si deasemenea este valabila doar in sistemele multitasking.
Paginarea:
Programul generează adrese virtuale in spaţiul adreselor virtuale. Adresele virtuale nu merg direct la memorie ci la MMU(memory management unit),care le decodifica si oferă adresele fizice.
Ex:Calculator cu 32k RAM si memorie virtuala 64k RAM.
Spaţiul virtual este impartit in pagini virtuale care se încarcă in pagini de memorie reala de aceeaşi dimensiune. Paginile virtuale si reale au aceeaşi dimensiune.
Page table este o tabela cu locurile paginilor virtuale intre paginile reale (locul in care este incarcata fiecare pagina virtuala in RAM ,care poate fi RAM fizic sau extins).
Atunci cind programul face apel la o pagina virtuala ce nu se afla in memoria fizica (toate poziţiile ocupate are loc "page fault trap")se decide ce pagina va fi trnsferata pe disc , se aduce pagina noua in memoria fizica, se reactualizează page table(2 operaţii) si se restarteaza instrucţiunea ce a fost întrerupta prin trap.
ALGORITM DE SCOATERE A PAGINII
Daca algoritmul de scoatere a pagini din memorie nu este bine ales exista posibilitatea sa scot o pagina pe care programul respectiv o foloseşte frecvent, deci pagina respectiva va trebui readusa curind in memorie si astfel se va pierde mult timp.
a) Algoritmul aleator
După cum spune si numele este vorba despre o soluţie aleatoare.Solutia nu este buna pentru ca sistemul de operare poate schimba o pagina des folosita.
b) Algoritmul optim
Trebuie subliniat faptul ca este vorba despre un algoritm teoretic, acesta nefiind practic.
Se da un program. Se cunoaşte activitatea pe acest program si se înregistrează necesarul de pagini iar in fiecare pagina se număra cite instrucţiuni se executa fara a se face saltul in alta pagina. In momentul in care apare un salt la alta pagina se calculează in fiecare pagina din memorie unde exista cele mai multe instrucţiuni fara salt .Aceste pagini ,care amina cel mai mult saltul in alte pagini, se vor păstra in memorie. Prin aceasta metoda se asigura situaţia ca “trap fault”-urile sa apară cit mai tirziu.
Aceasta metoda este de referinta.Celelalta metode se vor raporta la acest algoritm.
c)
Pentru a putea verifica lucrul cu pagina avem nevoie de circuite hard.Astfel au fost introduşi doi biţi
R - Reference bit: acest bit al pagini va fi setat la orice acces la pagina(scriere sau citire)
M - Modify bit : acest bit va fi setat doar daca se va efectua o scriere in pagina
Descrierea acestor biţi se face cu circuite hard.Astfel exista patru clase:
PAG-0:pagina este nereferita(R=0;M=0)
PAG-1:pagina cu scriere veche(R=0;M=1)
PAG-2:pagina scrisa de curind dar nemodificata(R=1;M=0)
PAG-3:pagina la care s-a făcut ultima scriere(R=1;M=1)
Gestiunea acestui set de biţi se face prin mecanisme hardware cu ajutorul unui ceas: daca după un anumit timp pagina nu a fost referita bitul “R” se şterge si astfel clasa trece in clasa 1 iar clasa 2 trece in clasa 0.
Preview document
Conținut arhivă zip
- Memoria Virtuala.doc