andreony
[admin]
 Din: bucharest
Inregistrat: acum 20 ani
Postari: 1062
|
|
Memoria Virtuala.
Memoria virtuala reprezinta un ansamblu de tehnici si mecanisme folosit pentru a mari capacitatea aparenta a memoriei principale RAM. Astfel, numarul de biti din instructiune, care specifica adresa, depaseste capacitatea memoriei principale fizic instalata , ca posibilitati de adresare. In aceste conditii, din programul stocat in memoria externa vor fi aduse in memoria principala numai zonele active la un moment dat. Procesul este transparent pentru utilizator si se desfasoara automat. Spatiul de adresare explorat de bitii de adresa din instructiunile furnizate de procesor corespunde capacitatii memoriei virtuale. Din punct de vedere fizic memoria virtuala va fi organizata in memoria secundara. Memoria virtuala este structurata,din punct de vedere logic, sub forma de pagini, astfel ca, o adresa furnizata de o instructiune a procesorului consta in doua campuri: numarul paginii si adresa in pagina: Dimensiunile unei pagini sunt mult mai mici decat dimensiunea memoriei principale Mp. In acest mod, in memoria principala pot fi aduse, din memoria secundara, mai multe pagini active ale unui program sau ale mai multor programe, in cazul exploatarii sistemului in regim de multiprogramare. Se va considera, ca exemplu educational, organizarea unei memorii virtuale cu capacitatea de 64 Mo, structurata pe cuvinte de 32 de biti: 16 Mcuvinte x 32 de biti/cuvant. Intr-un cuvant/instructiune, de 32 de biti, 24 de biti sunt alocati pentru adresarea memoriei virtuale. Primii 12 biti, mai semnificativi, vor specifica numarul paginii, iar ultimii 12 biti, Nr. Pagina Virtuala Adresa in Pagina mai putin semnificativi, vor constitui adresa in pagina. In figura 10 se prezinta organizarea logica a memoriei virtuale cu 212 pagini, fiecare pagina avand capacitatea de 212 cuvinte, de cate 32 de biti. Organizarea fizica a memoriei virtuale in cadrul memoriei secundare este prezentata in figura 11de mai jos: SP SP
Organizarea .Structura segmentelor. Organizare logica fizica (SP = Structura Paginii in Memoria Secundara) Programul utilizatorului este constituit dintr-un numar oarecare de pagini, organizate intr-un segment. Prima pagina, din cadrul fiecarui segment, contine, pe linga un identificator de pagina, un identificator de segment si numarul de pagini din segmentul dat. Celelalte pagini vor fi constituite dintr-un antet de identificare/identificator de pagina si pagina propriu-zisa. In cazul de fata se considera ca sistemul de operare se ocupa cu gestiunea segmentelor/fisierelor, in memoria secundara. Memoria principala va avea o capacitate limitata astfel incat nu toate paginile unui segment pot fi simultan in RAM Considerand o memorie principala cu capacitatea de 256 k.cuvinte x 32 de biti, se pot organiza in cadrui ei 26 = 64 pagini avind fiecare o capacitate de 212 = 4096 cuvinte. Nucleul sistemului de operare va fi rezident in memoria principala si va ocupa primele 8 pagini ( 32 kcuvinte ). Sistemul 000000 Pag. # 0 000FFF 001000 Pag. # 1 001FFF FFF000 Pag. 212-1 FFFFFF Id. pagina Id. segment Nr.pag din seg. Id. pagina Pagina MV Id. pagina Pagina MV Id. pagina Id. segment Nr.pag.din seg Id. pagina Pagina MV de operare va gestiona o serie de tabele privind locatiile paginilor in memoria secundara. Primele doua cuvinte din RAM vor fi utilizate de hardware-ul de control al memoriei virtuale pentru a informa sistemul de operare asupra numerelor paginilor virtuale, care trebuie interschimbate intre memoria secundara si memoria principala. Locatia cu adresa 0 va contine numarul paginii care trebuie adusa din memoria secundara. Locatia 1 va contine numarul paginii care va fi transferata din memoria principala in memoria secundara. Numarul acesteia din urma se stabileste ca si in cazul memoriei tampon, folosind un tablou de contori de utilizare CU si o unitate logica combinationala PRILIB(CU). Modalitatea de translatare a adreselor virtuale in adrese fizice este prezentata in cadrul structurii memoriei principale, care suporta mecanismul de memorie virtuala
Sunt utilizate urmatoarele resurse hardware: - TA[64;12] - Tablou Asociativ in celulele caruia sunt stocate numerele paginilor virtuale aduse in memoria principala; - CU[64,6] - Contori de Utilizare ai paginilor prezente in memoria principala; - ROMA[64;6] - Memorie cu continut permanent, adresata asociativ, care transforma numarul paginii virtuale in numar de pagina fizica din memoria principala RAM; RAM 00 01 07 MAGDSCRPT 08 0 56 17 AM 3F 0 7 8 19 20 31 RI[32] 0 11 12 23 CP[24] - RI[8:19]/CP[0:11] - numarul paginii virtuale; - RI[20:31]/CP1[2:23] - adresa in pagina; - AM[0:5] - numarul paginii fizice.
Organizarea memoriei principale, cu mecanismul asociativ care asigura suportul pentru translatarea adreselor virtuale in adrese fizice. Resurse hardware: - AM[18] - Registrul de Adrese al Memoriei RAM; - DM[32] - Registrul de Date al Memoriei principale RAM; - RI[32] - Registrul Instructiunii; - CP[24] - Contorul Programului; - M[218;32] - Memoria principala RAM; - MAGDSCRPT[12] - MAGistrala DeSCRiPTorilor; - ASOC(TA;MAGDSCRPT) - Unitate logica combinationala ASOCiativa cu 2 6 iesiri binare; - DCZ(CU) - Unitate logica combinationala care asigura DeCrementarea pana la Zero a Contorilor de Utilizare; - PRILIB(CU) - Unitate logica combinationala care sorteaza PRImul Contor de Utilizare LIBer cu continutul cel mai mic, corespunzind paginii cel mai putin recent utilizate. CU [64:6] TA [64:12] ROMA [64:6] 0 DM[31] 31 Pag. # 0 Pag. # 1 …… Pag. # 7 …………….. Pag.# 63 Ad.fizica Nr. pag Adr.in pag Nr.pag Adr.in pag Daca o pagina oarecare din memoria virtuala a fost adusa in memoria fizica/principala, ea poate fi localizata, ca numar de pagina fizica, prin referirea la o memorie cu continut permanent si cu adresare asociativa ROMA. In cazul coincidentei intre numarul paginii virtuale, furnizate prin MAGDSCRPT, si continutul unei celule din Tabloul Asociativ, celula corespunzatoare, situata pe aceeasi linie, in ROMA, va furniza primii 6 biti mai semnificativi ai adresei fizice. Acestia vor fi concatenati in registrul AM, cu ultimii 12 biti din RI sau CP, pentru a forma adresa fizica, de acces la memoria principala. Contorul asociat, din CU, va fi fortat la valoarea 6|55, celalti contori, cu exceptia primilor opt, vor fi decrementati cu ajutorul functiei logice combinationale DCZ(UC). Primele opt celule din ROMA au continuturi fixe, corespunzand numerelor primelor opt pagini din memoria principala in care se afla nucleul sistemului de operare. Primele opt celule din TA vor contine numerele paginilor virtuale corespunzatoare nucleului sistemului de operare. Continutul acestora va fi fix. De asemenea, continuturile primilor opt contori de utilizare nu vor suferi decrementari. Gestiunea memoriei virtuale (Fig.13) incepe prin transferul unui segment sau al unui numar de pagini, dintr-un segment, corespunzator unui program ( Blocul 1, Fig.13.), din memoria secundara in memoria principala, sub controlul sistemului de operare, si lansarea in executie (Blocul 2.). Daca se constata lipsa unei pagini, se trece la blocul 3, care este implementat in hardware si care va,plasa in prima celula din memoria principala, numarul paginii virtuale, care trebuie adusa din memoria secundara, iar in celula a doua-numarul paginii, care trebuie transferata, din memoria principala in memoria secundara. Dupa terminarea acestor operatii se va genera o intrerupere catre sistemul de operare. Acesta, in cadrul blocului 4. va face interschimbul de pagini. Pagina lipseste Program terminat Intrerupere tratata de SO | Gestiunea memoriei virtuale. Operatiile din blocurile 1 si 4 se executa prin software in timp ce operatiile din blocurile 2 si 3 se executa prin hardware. Operatiile din cadrul blocului 2 sunt operatii obisnuite de citire/ interpretare si executie a instructiunilor programului, cu mentiunea ca activitatile de citire/scriere din/in memorie presupun noi secvente de comanda, dupa cum se va vedea mai jos. Operatiile din cadrul blocului 3 necesita introducerea unei noi secvente de operatii la nivelul unitatii de comanda a procesorului. Secventa va fi activata ca urmare a constatarii lipsei paginii adresate din memoria principala. Secventa va fi activata cu linia 100, in microprogramul de comanda al procesorului. 1. Sistemul de operare citeste un segment sau o parte din el 3. Identifica: 2. Executa programul - numarul paginii care lipseste - numarul paginii care va fi inlocuita - genereaza intrerupere catre SO 4. Efectueaza interschimbul de pagini Pentru fiecare citire din memoria virtuala procesorul trebuie sa execute urmatoarea secventa de comenzi: C1. MAGDSCRPT = "nr. pagina"; /* RI[8:19] sau CP[0:11] */ AM <- BUSFN(ROMA;ASOC(TA;MAGDSCRPT)),"adresa in pagina"; /*in AM se plaseaza adresa pentru accesul la memoria fizica RAM*/ DM*(∪/ASOC(TA;MAGDSCRPT)) <- 20|0,"nr. pagina"; /*in cazul cand pagina cautata lipseste se stocheaza in regis-*/ /*trul DM numarul paginii care lipseste*/ ->(∪/ASOC(TA;MAGDSCRPT))/(100) /*daca pagina solicitata lipseste se trece la pasul 100 in sec-*/ /*venta de comanda*/ C2. CU*(ASOC(TA;MAGDSCRPT)) <- 6|55; /*contorul asociat celulei selectate este fortata la valorea 6|55 deoarece in memoria principala pot fi aduse numai 55 de pagini ale programelor din memoria secundara; 8 pagini sunt ocupate de sistemul de operare*/ CU*(ASOC(TA;MAGDSCRPT)) <- DCZ(UC); /*ceilalti contori sint decrementati*/ DM <- BUSFN(M;DCD(AM)) /*se citeste data din memoria principala M*/ C3. pasul urmator. Pentru scrierea in memoria procesorul va executa urmatoarea secventa de comenzi care, cu exceptia ultimei linii, este asemanatoare cu secventa de citire: S1. MAGDSCRPR = "nr. pagina"; AM <- BUSFN(ROMA;ASOC(TA;MAGDSCRPT)),"adresa in pagina"; DM*(∪ /(ASOC(TA;MAGDSCRPT)) <- 20|0,"nr. pagina"; ->(∪/(ASOC(TA;MAGDSCRPT))/(100) S2. CU*(ASOC(TA;MAGDSCRPT)) <- 6|55; CU*(ASOC(TA;MAGDSCRPT)) <- DCZ(UC); M*DCD(AM) <- DM S3. pasul urmator. Registrul DM este afectat la C2 si S2 numai in cazul lipsei unei pagini. Executia instructiunii va fi intrerupta/suspendata pina la aducerea paginii solicitate in memoria principala. Astfel, nu apare nici un conflict in utilizarea registrului DM. In vederea pregatirii interventiei sistemului de operare pentru efectuarea transferului necesar de pagini, intre memoria principala si memoria secundara, trebuie sa se plaseze in locatiile cu adresele 00000H si 00001H informatiile referitoare la: - numarul paginii care lipseste ( DM[20:31] ); - numarul paginii care trebuie inlocuita in memoria principala: (BUSFN(TA;PRILIB(CU)). Secventa care se lanseaza de la linia 100 va asigura aceste date, va incrementa/decrementa contorii de utilizare si va genera in final o intrerupere. 100. AM <- 18|0 101. M*DCD(AM) <- DM 102. AM <- INC(AM); DM[20:31] <- BUSFN(TA;PRILIB(CU)); TA*PRILIB(CU) <- DM[20:31] 103. M*DCD(AM) <- DM 104. CU*PRILIB(CU) <- 6|55; CU*PRILIB(CU) <- DCZ(CU); cerere de intrerupere = 1 Dupa generarea intreruperii intreaga responsabilitate pentru transferul paginilor revine sistemului de operare.
_______________________________________ ------ eVoLuTiOn ------
|
|