Sunteți pe pagina 1din 10

L6b1: Gestiunea memoriei virtuale prin paginare

1. Obiectivul lucrării
Scopul lucrării este familiarizarea cu modul de operare al memoriei virtuale şi
cu procedeele de gestionare a procesului de paginare. De asemenea, sunt detaliate
politicile de înlocuire a paginilor, precum şi modul de formare a adreselor fizice.

2. Introducere teoretică

Nivelul sistemului de operare (exploatare) are un caracter hibrid, cea mai mare
parte a instrucţiunilor care definesc limbajul fiind de tip maşină. Există şi instrucţiuni
specifice, care necesită interpretare pentru a fi trecute pe nivelul maşinii
microprogramate. Plasarea sistemului de operare în structura ierarhică stratificată a
nivelurilor unui sistem de calcul este prezentată în figura 1.

Fig. 1. Poziţionarea nivelului sistemului de operare în structura stratificată a nivelurilor unui calculator.

Nivelul sistemului de operare are sarcini particulare în ceea ce priveşte


gestiunea memoriei (lucrul cu memoria virtuală prin conceptele de paginare şi
segmentare) şi organizarea execuţiei în paralel a mai multor programe. Atât nivelul
microprogramat, cât şi nivelul sistemului de operare sunt necesare pentru interpretarea
nivelurilor inferioare. Acestea sunt scrise de specialişti şi sunt orientate spre numeric.
Începând cu nivelul imediat superior (limbajul de asamblare), apare orientarea către
simboluri şi cuvinte, toate acestea având o anumită sintaxă.

2.1. Conceptul de paginare

Paginarea este procedeul de realizare în memorie a unor blocuri fixe, numite


pagini, care pot fi utilizate în mecanismul interschimbării proceselor (transferul
blocurilor între memoria internă şi cea externă). Tehnica paginării este larg folosită şi
poate fi independentă de gestiunea memoriei. Există procesoare care creează pagini în
memoria fizică, sau, ca în cazul familiei Intel, în memoria virtuală.
Ideea este de a face distincţia între capacitatea de adresare fizică a sistemului,
care defineşte un spaţiu de memorie, denumit memorie virtuală, şi capacitatea de
memorie instalată în sistem, denumită memorie fizică sau reală. În prezent,
denumirea de memorie virtuală se foloseşte cu două accepţiuni: spaţiu virtual care
poate fi accesat (iniţial) sau zonă de memorie plasată nu în memoria principală, ci pe
un dispozitiv de memorare secundar, cel mai frecvent pe hard disk.
L6b1: Gestiunea memoriei virtuale prin paginare 145

Exemplu. Fie un sistem cu 16 linii de adresă (64 KB) şi o memorie instalată


de 4 linii (vezi figura 2). O singură pagină de 4 KB se poate afla la un moment dat în
memoria principală (MP) sau fizică. Dacă programul conţine mai multe pagini, restul
paginilor se află în memoria secundară (pe hard disk).
Când programul trebuie să execute o instrucţiune din pagina următoare,
sistemul de gestiune al memoriei virtuale (care face parte din sistemul de operare)
execută următoarele operaţii:
1. salvează conţinutul memoriei periferice în memoria secundară;
2. localizează pagina respectivă în memoria secundară;
3. încarcă această pagină în memoria principală;
4. asociază adreselor absolute adresele de memorie fizică de la 0 la 4095;
5. continuă execuţia programului.

Fig. 2. Exemplu de paginare.

Observaţie. Spre deosebire de procesul de segmentare, paginarea este


transparentă programatorului, fiind realizată de sistemul de operare.
Accepţiunile termenului de memorie fizică sunt următoarele:
1. linii fizice de adresare, pe care le are procesorul în exterior;
2. spaţiu de memorie fizică instalată (existentă) în sistemul de calcul.
Accepţiunile termenului de memorie virtuală sunt (vezi figura 3 şi tabelul 1):

Fig. 3. Legătura între memoria fizică şi memoria virtuală.


146 Arhitectura sistemelor de calcul – lucrări practice

(1) prima definiţie de la memoria fizică;


(2) spaţiu de memorie pe care îl creează sistemul de operare şi care conţine un
model al memoriei şi al adreselor de memorie pe care le are programul la
dispoziţie – poate fi mai mare decât (1);
(3) suportul fizic, de obicei hard disk-ul, pe care sistemul de operare salvează
zone din memoria totală disponibilă programului pentru a asigura spaţii
libere în zona de memorie fizică, destinate zonelor de cod sau de date cu
care programul lucrează la momentul respectiv.
Tabelul 1
Comparaţie între capacităţile de adresare a memoriei fizice şi a memoriei virtuale
procesor memorie maximă fizic adresabilă memorie virtuală maximă
8086 1 MB (20 linii) –
80286 16 MB (24 linii) 1 GB
80386 4 GB (32 linii) 64 TB
80486 4 GB (32 linii) 64 TB
Pentium 4 GB (32 linii) 64 TB
post-Pentium 64 GB (36 linii) 64 TB
Core i7 1 TB (40 linii) 256 TB

2.2. Realizarea unei paginări simple

În mod normal, în memoria fizică instalată se pot afla mai multe pagini active
(vezi figura 4) Dimensiunea paginii cu care operează procesorul Intel, echivalentă de
fapt cu dimensiunea blocurilor de memorie cu care se lucrează, este de obicei de 4
KB. Se presupune că există o capacitate de adresare fizică de 64 KB (adică, 16 linii de
adresă). Se împarte acest spaţiu în pagini de câte 4 KB (blocuri), rezultând astfel 16
pagini. Se mai presupune că memoria fizică instalată este de 32 KB.

Fig. 4. Exemplu de paginare simplă.

Adresa fizică este pe 16 biţi şi, dacă se urmăreşte folosirea memoriei paginate,
se poate considera că cei mai semnificativi 4 biţi reprezintă numărul paginii, iar cei
mai puţin semnificativi 12 biţi reprezintă deplasamentul în cadrul paginii. Pentru a
realiza gestiunea memoriei fizice instalate se va folosi un tabel de pagini cu 16 intrări
a câte 4 biţi fiecare (vezi figura 5).
L6b1: Gestiunea memoriei virtuale prin paginare 147

Fig. 5. Gestiunea memoriei fizice folosind tabelul de pagini.

Din cei 4 biţi, un bit va indica dacă pagina fizică adresabilă se află sau nu în
memoria principală, restul de 3 biţi (număr dat, de fapt, de numărul de biţi cu care
poate fi codificat numărul de pagini din memoria instalată) indică pagina din memoria
instalată în care se află pagina din memoria fizică adresabilă la care se face referire.
Avantajele paginării pot fi rezumate astfel:
 mărimea fixă a cadrelor de pagină intră corect într-un sector al unui disc;
 un obiect nu trebuie să fie continuu în memorie: pagina poate constitui o
nouă „cuantă” de informaţie;
 mecanismul paginării şi tehnica de a schimba continuu blocuri fixe de
informaţii între memoria internă şi cea externă nu sunt vizibile utilizatorului.
În concluzie, mecanismul paginării are următoarele elemente esenţiale:
 se realizează două niveluri de adresare indirectă a memoriei, astfel încât,
până să se ajungă la pagina propriu-zisă, se face o referinţă într-un director din care
se selectează o tabelă a paginilor;
 toate obiectele din memorie implicate (directorul şi tabelele) sunt tratate la
rândul lor ca nişte pagini speciale, având mărimea fixă de 4 KB. Se păstrează astfel
principiul coerenţei informaţiei în memorie (idem pentru segmente);
 directorul şi tabelele de pagini au structura uniformă, conţinând 1 K elemente
a câte 4 octeţi. Aici se găseşte adresa bazei tabelei şi, respectiv, a paginii selectate;
 orice adresă a bazei unei tabele sau a unei pagini este dată pe un număr de
20 biţi, aceştia constituind partea mai semnificativă a adresei fizice vizate (MSB).
Blocurile sunt aliniate în memorie din 4 KB în 4 KB, deci automat cei mai puţin
semnificativi 12 biţi (LSB) ai adreselor fizice ale bazelor sunt 0;
 adresa fizică a bazei directorului se află în unul din cele patru registre de
control ale microprocesoarelor.

2.3. Politica de înlocuire a paginilor

Ideal, setul de pagini pe care un program le foloseşte cel mai des, numit şi
setul de lucru, poate fi ţinut în memorie pentru a reduce defectele de pagini lipsă
(page fault). Totuşi, programatorul ştie rareori care pagini se află în setul de lucru,
astfel încât sistemul de operare trebuie să le descopere dinamic. Când un program face
o referire la o pagină care nu se află în memoria principală, pagina respectivă trebuie
citită de pe disc. Pentru a-i face loc, o altă pagină va fi trimisă înapoi pe disc. De
aceea este necesar un algoritm care să decidă care pagină va fi eliminată.
148 Arhitectura sistemelor de calcul – lucrări practice

Probabilitatea ca alegerea paginii de eliminat să fie făcută la întâmplare nu este


o idee bună. Dacă pagina aleasă este chiar pagina conţinând instrucţiunea care a
provocat defectul de pagină lipsă, un alt defect de pagină lipsă se va produce imediat
ce se va încerca citirea următoarei instrucţiuni.
Sistemele de operare încearcă să anticipeze care dintre paginile aflate în
memorie este cea mai puţin folositoare, în sensul că absenţa ei ar provoca efecte
adverse minime pentru programul aflat în rulare.
O variantă de a realiza acest lucru este de a anticipa momentul de timp în care
se va produce următoarea referire la fiecare pagină şi de a elimina pagina a cărei
referire se anticipează să se producă cel mai târziu în viitor (în loc să se elimine o
pagină care va fi necesară în curând, se selectează una care nu va fi necesară pentru
mai mult timp).

2.4. Algoritmi de eliminare a paginilor

2.4.1. Algoritmul Not Recently Used (NRU)

Algoritmul NRU (nefolosit recent) este un procedeu de înlocuire a paginilor


care nu au fost folosite la ultimele accesări. Pentru fiecare pagină existentă în
memorie, intrarea din tabelul de pagini conţine doi biţi de stare:
 R (referred) – este pus în 1 pentru o pagină ori de câte ori acea pagină este
accesată (la citire sau la scriere), pagina fiind acum marcată referită;
 M (modified): – este pus în 1 pentru o pagină atunci când acea pagină este
modificată.
Aceşti biţi trebuie actualizaţi la fiecare referire a memoriei. Iniţial, ei sunt puşi
în 0. Odată pus în 1, un bit rămâne în aceeaşi valoare până când este resetat explicit de
către sistemul de operare. Periodic, bitul R este pus în 0.
Sistemul de operare distinge astfel 4 clase de pagini:
 clasa 0: pagini nereferite, nemodificate (R = 0, M = 0);
 clasa 1: pagini nereferite, modificate (R = 0, M = 1);
 clasa 2: pagini referite, nemodificate (R = 1, M = 0);
 clasa 3: pagini referite, modificate (R = 1, M = 1).
Pagina eliminată este selectată aleator din clasa având cel mai mic indice.

2.4.2. Algoritmul First-In First-Out (FIFO)

Algoritmul de înlocuire FIFO (primul intrat, primul ieşit) elimină pagina care a
fost încărcată prima, indiferent de momentul în care această pagină a fost referită
ultima dată.Fiecare pagină are un contor, care este iniţial egal cu 0 pentru fiecare
cadru de pagină. Pagina care tocmai a fost adusă în memorie va avea valoarea
contorului egală mereu cu 0, următoarea va avea valoarea 1 (înainte ca pagina cu
indexul 0 să fie adusă în memorie pagina aceasta avea contorul egal cu 0, dar a fost
incrementat cu 1) ş.a.m.d.
Practic, se creează un fenomen de îmbătrânire a paginilor, cea mai „tânără”
pagină având contorul cu valoarea 0. Când o pagină trebuie eliminată, se va alege
mereu cea cu valoarea cea mai mare a contorului.
Exemplu. Se folosește un sistem de memorie cu 8 pagini virtuale și 3 cadre de
pagină în memoria fizică (vezi figura 6). Șirul de referiri succesive la pagini este
reprezentat prin numerele de pagini virtuale din partea de sus, iar în partea de jos este
reprezentat conținutul cadrelor de pagină la momentele de timp în care apar erori de
pagină (page fault). În urma aplicării algoritmului FIFO, numărul erorilor de pagină
este 15, iar rata de page fault (pagini invalide) este de 15/20.
L6b1: Gestiunea memoriei virtuale prin paginare 149

Fig. 6. Exemplu de aplicare a algoritmului FIFO.

Algoritmul FIFO este foarte ieftin (simplu de implementat), însă are


performanţe slabe comparativ cu NFU sau cu alți algoritmi. Din această cauză, este
folosit mai rar, uneori în tandem cu un alt algoritm. Un exemplu de sistem de operare
care foloseşte algoritmul FIFO este VAX/VMS.

3. Descrierea aplicaţiei
Lucrarea constă într-un program realizat în mediul de programare .NET pentru
ilustrarea memoriei virtuale prin conceptul de paginare.
Aplicaţia de paginare este compusă din două componente distincte: formarea
adresei fizice şi algoritmii de înlocuire a paginilor.
Aceste două opţiuni deschid ferestre separate ale programului, iar în fereastra
principală se revine prin închiderea ferestrelor componente.
A. Formarea adresei fizice la paginare este compusă din cinci părţi.
1. La primul pas, stabilirea parametrilor (vezi figura 7), se aleg dimensiunea
memoriei fizice, a memoriei virtuale şi a paginii. Numărul de biţi ai adresei este 16.

Fig. 7. Stabilirea parametrilor pentru paginare.

2. Pasul al doilea este reprezentat de redarea grafică a memoriei virtuale şi a


memoriei fizice, prin intermediul tabelelor de pagini (vezi figura 8). Pentru o mai
bună înţelegere a proceselor, în partea de jos se afişează opţiunile alese la pasul 1.
150 Arhitectura sistemelor de calcul – lucrări practice

Fig. 8. Redarea grafică a memoriei virtuale şi a memoriei fizice.

3. Al treilea pas este compus din alegerea parametrilor pentru formarea adresei
de memorie virtuală (vezi figura 9). Sunt disponibili trei parametri: pagina virtuală a
adresei, deplasamentul în pagină al adresei şi pagina din memoria fizică în care este
referită pagina din memoria virtuală.

Fig. 9. Formarea adresei de memorie virtuală (parametri).

4. Pasul al patrulea îl constituie calculul şi reprezentarea valorilor necesare


pentru formarea adresei de memorie virtuală, şi anume, dimensiunea paginii, numărul
de pagini virtuale şi numărul total de biţi al unei pagini virtuale (vezi figura 10).

Fig. 10. Formarea adresei de memorie virtuală (reprezentare).


L6b1: Gestiunea memoriei virtuale prin paginare 151

5. Al cincilea pas prezintă în detaliu adresa din spațiul de adrese fizice creată
de program, formată din numărul de pagină fizică și deplasamentul în pagină (prin
calculul valorilor cadrului de pagină și al numărului de biți necesari), şi reprezentarea
tabelei de pagini (vezi figura 11).

Fig. 11. Formarea adresei în memoria fizică.

B. Partea de algoritmi de înlocuire a paginilor are, la rândul ei, două


subcomponente: stabilirea parametrilor şi implementarea efectivă a algoritmilor.
Stabilirea parametrilor (vezi figura 12) constă în alegerea dimensiunilor pentru
memoria fizică şi pentru memoria virtuală, a dimensiunea paginii, precum şi a
algoritmului de înlocuire folosit (NRU și FIFO), în timp ce partea a doua prezintă
implementarea opţiunilor alese la prima etapă (vezi figura 13).

Fig. 12. Stabilirea parametrilor în vederea implementării paginării.


152 Arhitectura sistemelor de calcul – lucrări practice

Fig. 13. Implementarea efectivă a paginării.

4. Desfăşurarea lucrării
1. Se parcurge prezentarea teoretică în vederea familiarizării cu conceptul de
paginare, precum şi cu metodele de implementare a acesteia.
2. Se rulează programul de gestiune a memoriei virtuale prin paginare.
3. Se rulează modulul de formare a adresei fizice, testându-se mai multe
valori de parametri, pentru a observa cum afectează valorile acestora
procesul de formare a adresei fizice. Se notează cel puțin două seturi de
valori diferite.
4. Se examinează redarea grafică a memoriei virtuale şi a memoriei fizice şi
se selectează parametrii pentru formarea adresei de memorie virtuală. Se
reţin cel puțin două cazuri reprezentative.
5. Se examinează metoda de calcul şi reprezentarea formării adresei, atât în
memoria virtuală, cât şi în cea fizică. Se reţin cel puțin două cazuri
reprezentative.
6. Se trece la modulul de algoritmi de înlocuire a paginilor.
7. Se selectează parametrii de memorie, precum şi algoritmul de paginare
care se doreşte a fi implementat (pe rând, NRU și FIFO).
8. Se examinează tabelele de pagini de memorie, atât pentru memoria
virtuală, cât şi pentru memoria fizică, şi se execută operaţiile de citire şi
scriere asupra diferitelor pagini, observându-se modificările apărute. Se
notează cel puțin două seturi de valori diferite.

5. Întrebări

1. Specificaţi diferenţa dintre memoria fizică şi memoria virtuală.


2. Ce operaţii efectuează sistemul de gestiune al memoriei virtuale atunci
când programul trebuie să execute o instrucţiune din pagina următoare?
3. Care sunt avantajele folosirii sistemului de paginare?
L6b1: Gestiunea memoriei virtuale prin paginare 153

4. Care este condiţionarea impusă în aplicaţia de paginare între dimensiunea


memoriei fizice şi dimensiunea memoriei virtuale?
5. În ce mod depinde alegerea dimensiunii paginii faţă de alegerea
dimensiunii memoriei fizice?
6. Precizaţi tipurile de operaţii care pot fi efectuate asupra paginilor la
implementarea algoritmilor de înlocuire a paginilor.
7. Explicaţi rolul unui tabel de pagini.
8. Arătaţi pe un exemplu concret cu valori numerice la alegere pentru toţi
parametrii implicaţi modul de formare al adresei fizice folosind tabelul de pagini.
9. Explicaţi modul de realizare al unei paginări simple, pentru un set de
parametri la alegere.
10. Care este diferenţa dintre algoritmii NRU şi FIFO de înlocuire a paginilor?
11. Cum se modifică rezultatul aplicării algoritmilor de înlocuire NRU și
FIFO, dacă se schimbă valorile pentru dimensiunea memoriei virtuale și dimensiunea
memoriei fizice, păstrând aceeași dimensiune pentru cadrul de pagină?
12. Consideraţi că algoritmul LFU (Least Frequently Used) ar putea fi folosit
cu succes în politica de înlocuire a paginilor? Explicați.
13. Care dintre algoritmii studiați la înlocuirea conținutului memoriei cache
credeți că ar putea fi implementat și în politica de înlocuire a paginilor?
14. Un sistem de memorie are 32 pagini virtuale şi 4 pagini fizice. Iniţial,
memoria fizică este goală. Un program accesează paginile virtuale în ordinea: 13, 16,
21, 30, 4, 13, 17, 31, 5, 8, 16, 1. Care sunt adresările de memorie care provoacă erori
de pagină, dacă înlocuirea paginilor se face cu algoritmul FIFO?
15. Un sistem de memorie are 16 pagini virtuale şi 4 pagini fizice. Iniţial,
memoria fizică este goală. Un program accesează paginile virtuale în ordinea: 0, 7, 2,
7, 5, 2, 8, 9, 2, 4, 15, 3. Care sunt adresările de memorie care provoacă erori de
pagină, dacă înlocuirea paginilor se face cu algoritmul NRU?
16. Daţi exemple de microprocesoare care folosesc paginare pură (fără
segmentare) şi paginare cu segmentare.

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