Extras din curs
Paginarea este utilizată pentru a implementa memoria virtuală bazată pe blocuri de dimensiune fixă, denumite pagini. Asemănător segmentării, paginarea translatează adresele virtuale în adrese fizice. Acestea sunt translatare prin maparea (suprapunerea) blocurilor de memorie de lungime fixă în locaţiile de memorie fizică, denumite cadru pagină. Segmen¬tarea şi paginarea sunt similare: un nume şi un offset sunt translatate într-o adresă. Să considerăm o memorie fizică compusă din paginile 0, 1,2, 3, fiecare având câte 10 octeţi; pentru convertirea unei adrese virtuale într-una fizică se utilizează o tabelă de pagini. De exemplu, adresa virtuală 27 este translatată în adresa fizică 17:
Figura 3.1 Translaţia adresei virtuale în elemente de dimensiune fixă
Avantaje şi dezavantaje
Avantajul esenţial al paginării faţă de segmentare este reprezentat de dimensiunea fixă a paginării. Deoarece pentru memoria virtuală se utilizează discul se pot alege dimensiuni de pagină care corespund dimensiunii sectorului de pe disc. De asemenea, paginarea evită problema fragmentării memoriei, specifică segmentării. Ori de câte ori o pagină este scoasă din memorie, altă pagină se încadrează exact în spaţiul eliberat.
Un alt avantaj este că alocarea pentru un obiect mare nu trebuie realizată într-un spaţiu continuu de memorie. Paginarea este invizibilă programatorului. Spre deosebire de segmentare, care necesită cunoaşterea numelui virtual (segment) şi a unui offset pentru un obiect din memorie, paginarea necesită cunoaşterea doar a unei adrese. Adresa virtuală este descompusă în componentele sale de mecanismul memoriei virtuale.
Utilizarea paginării înseamnă pierderea inelelor de protecţie, implementate cu seg¬mentarea.
De asemenea, ea este legată de un alt tip de fragmentare, denumit „fragmentare internă", care apare la memorarea unor obiecte care nu se încadrează într-o pagină sau sec¬venţă de pagini. De exemplu, dacă pagina este de 10 octeţi, un obiect de 10 octeţi necesită două pagini, care irosesc, deci, spaţiu de memorie.
Paginarea necesită mai multă memorie. La segmentare, tabela de translaţie, pentru conversia unei adrese virtuale într-una fizică este necesară când se încarcă un nou segment. La paginare, însă, conversia (translaţia) trebuie realizată pentru fiecare acces la memorie; acesta nu este un inconvenient dacă întreaga tabelă de pagini poate fi memorată în procesor, dar necesită tabele de pagini foarte mari.
Pentru a depăşi aceste probleme se poate implementa o schemă de protecţie simplă, care utilizează numai paginarea, sau se pot utiliza în paralel cele două mecanisme: paginare şi segmentare.
Pentru a reduce spaţiul necesar translaţiei de pagini (de fapt, fragmentarea internă) se utilizează paralelismul intern al procesoarelor şi o memorie cache specială, denumită „buffer de translaţie adrese" (TLB-Translation Lookahead Buffer), ce nu trebuie confun¬dată cu memoria cache internă a procesoarelor 486 / Pentium.
Translaţia paginii
Cea de-a doua etapă, a translaţiei de adresă, (prima fiind cea de segmentare) - transferă adresa liniară într-o adresă fizică. Aceasta implementează caracteristicile de bază necesare pentru sistemele de memorie virtuală, orientate pe pagina, şi protecţia la nivel de pagină.
Un cadru pagina este o unitate de 4 Ko de adrese continue din memoria fizică.
O adresă liniară face referire, indirect, la o adresă fizică, prin specificarea unei tabele de pagini, o pagină în cadrul acestei tabele şi un offset în acea pagină. Mecanismul complet, de segmentare şi paginare, este prezentat în figura 3.2.
Preview document
Conținut arhivă zip
- Paginare si Administrarea Memoriei Cache.doc