Documente Academic
Documente Profesional
Documente Cultură
Curs nr. 8
4.2. Scheme de alocare a memoriei
Tehnicile de alocare a memoriei utilizate la diferite sisteme de operare se mpart
n:
1) alocare real:
- la sistemele monoutilizator;
- la sistemele multiutilizator:
- cu partiii fixe (static):
- absolut;
- relocabil;
- cu partiii variabile (dinamic)
2) alocare virtual:
- paginat;
- segmentat;
- segmentat i paginat,
4.2.1.1. Alocarea la sistemele monoutilizator:
La sistemele monoutilizator este disponibil aproape ntreg spaiul de memorie.
Gestiunea spaiului cade n sarcina utilizatorului, existnd tehnici de suprapunere
(overlay) pentru a-i putea rula programele mari:
0
Nucleu SO
Program utilizator
a
Parte
rezident
b
b
Zona de
suprapunere
Init
Prelucrri
curente
Terminare
c
m
Nefolosit
Sisteme de Operare
4.2.1.2. Alocarea cu partiii fixe:
Aceast alocare se mai numete i alocare static sau alocare MFT Memory Fix
Task. Acest lucru presupune decuparea memoriei n zone de lungime fix numite
partiii. O partiie este alocat unui proces pe toat durata execuiei lui, indiferent
dac o ocup complet sau nu ca n figura de mai jos:
0
40
Nucelul SO
Program1
Partiia 1
86
130
limit
Program2
Partiia 2
168
CPU
190
Program3
250
baz
<
DA
memorie
NU
Partiia 3
Eroare de adresare
255
Fig. 4.2.2. Alocarea memoriei cu partiii fixe
Sisteme de Operare
b)
a)
Fig. 4.2.4. Legarea proceselor la partiii: a) o coad pentru fiecare partiie; b) o coad pentru toate partiiile
SO
0
40
Program1
100
Program4
READY
SO
40
Program1
100
SO
100
Program4
Program4
180
200
200
200
Program3
Program3
Program3
SO
100
180
180
200
40
Program5
Program4
Program3
SO
40
Program5
READY
0
Program1
100
Program2
200
Program1
FINISH
0
Program3
230
230
230
230
230
255
255
255
255
255
Sisteme de Operare
dimensiunea lor va scdea. Acest fenomen se mai numete i fragmentarea intern a
memoriei.
Dac un proces nu are spaiu s se ncarce n memorie, sistemul de operare
poate lua urmtoarele decizii:
- procesul ateapt pn se elibereaz o cantitate suficient de memorie;
- sistemul de operare ncearc alipirea unor spaii de memorie libere vecine,
pentru a obine un spaiu de memorie liber suficient de mare pentru ncrcarea
programului;
- sistemul de operare decide efectuarea unei operaii de compactare a
memoriei (relocare) deplasarea partiiilor active ctre partiia monitor (unde se afl
partea rezident a SO) pentru a se absorbi toate fragmentele de memorie neutilizate.
2ko
Program1
3ko
4ko
Program2
2ko
Program1
3ko
Program2
2ko
Program3
5ko
Program1
3ko
Program2
2ko
Program2
2ko
Program1
3ko
11ko
11ko
Program3
5ko
Program3
5ko
6ko
6ko
5ko
Program3
5ko
6ko
17ko
Sisteme de Operare
- fiecare AR este o pereche de forma (p, d) unde p este numrul paginii i d
este adresa n cadrul paginii (deplasarea n pagin).
- fiecare AF (adres fizic) este o pereche de forma (f, d) unde f este numrul
paginii fizice i d este adresa n cadrul paginii.
- calculul funciei de translare se face prin hardware.
adresa
fizic
adresa
virtual
CPU
p d
p
f
Memorie fizic
Tabel de pagini
Exemplu:
pagina 0
pagina 1
Memorie logic
0
1
2
0
Tabel de pagini
0 pagina 1
1
2 pagina 0
Memorie fizic
cadrul 0
Pag.0
Pag.1
0
1
2
3
4
5
6
7
A
B
C
D
E
F
G
H
Memorie logic
cadrul 1
0
1
2
0
cadrul 2
Tabel de pagini
cadrul 3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
E
F
G
H
A
B
C
D
Memorie fizic
Sisteme de Operare
pagini virtuale, aceasta se depune ntr-o pagin fizic liber i n acest fel are loc o
proiectare a spaiului virtual peste cel real ca n figura de mai jos:
Program 1
PR2 pag 0
Pag 0
Pag 1 Pag 2 Pag 3
PR1 pag 3
PR2 pag 4
PR2 pag 1
Program 2
Pag 0
Pag 1
Pag 2 Pag 3 Pag 4
PR1 pag 0
Astfel, se folosete mai eficient memoria operativ. Un alt avantaj este acela al
folosirii n comun a instruciunilor unor proceduri de ctre mai multe programe. O
procedur care permite acest mod de lucru se numete procedur reentrant.
Presupunem c avem un editor de texte al crui cod reentrant (instruciuni pure
fr date) ocup dou pagini. Dac am avea trei utilizatori, fiecare consumnd cte o
pagin pentru datele proprii, am avea n total nou pagini din memoria operativ.
Program 1
Cod 1
Cod 2
Date 1
5
2
3
Program 2
Cod 1
Cod 2
Date 2
5
2
4
0
1
2
3
4
5
6
7
Cod 2
Date 1
Date 2
Cod 1
Date 3
Cod 1
Cod 2
Date 3
5
2
7
Pagini
virtuale
Tabele
de pagini
Program 3
Sisteme de Operare
Implementarea tabelei de pagin
Dac dimensiunea tabelei de pagin este redus se poate utiliza un set de registre
specializate, foarte rapide, care s asigure o eficien ridicat a translrii adreselor.
Instruciunile destinate ncrcrii sau modificrii acestor registre trebuie accesate
numai de ctre sistemul de operare.
Dac dimensiunea tabelei este mare, este preferabil ca ea s fie pstrat n
memoria principal, ntr-o zon indicat de valoarea unui registru specializat numit
registrul de baz al tabelei de pagin (RBTP). Dac trebuie s se lucreze cu o alt
tabel de pagin dect cea curent trebuie rencrcat registrul cu o alt valoare
scznd astfel timpul de schimbare al contextului. O particularitate a acestei soluii
este faptul c pentru a accesa o zon de memorie utilizator sunt necesare dou operaii
de acces la memorie una pentru tabela de pagin i alta pentru cuvntul propriu-zis.
Folosind valoarea din RBTP deplasat cu numrul de pagin - p (aflat n adresa
logic), se determin mai nti numrul de cadru c asociat paginii, care mpreun cu
deplasamentul n pagin d d adresa real.
O alt soluie ar fi folosirea unei memorii hardware speciale (un set de registre
asociative sau translation look-aside buffer), de mic dimensiune, cu urmtoarele
caracteristici: fiecare registru are dou pri, cheie (conine numrul paginii) i
valoare (numrul cadrului).
adresa
virtual
CPU
p d
numrul
paginii
numrul
cadrului
TLB hit
adresa
fizic
Memorie fizic
p
TLB miss
Tabel de pagini
Fig. 4.2.10. Translarea paginii folosind TLB
Cnd este generat o adres logic , dac numrul de pagin coincide cu una din
chei (din TLB), numrul de cadru este disponibil imediat i este folosit pentru
accesarea memoriei. Dac numrul paginii nu coincide cu nici una dintre chei, trebuie
efectuat un acces la tabela de partiii aflat n memoria intern. Informaia va fi
folosit att pentru accesarea datelor din memorie, ct i pentru adugarea ei n TLB
pentru a putea fi folosit ulterior.
Sisteme de Operare
Paginarea multinivel:
Sistemele de calcul suport un spaiu logic de adresare foarte mare (232 sau
264) i din acest motiv tabela de pagini trebuie s fie foarte mare. Pentru un sistem cu
spaiul logic de adresare pe 32 de bii , dac avem mrimea paginii de 4K bytes (212),
atunci numrul de intrri n tabela de pagini ar trebui s fie de peste 1 milion (232 / 212
= 220=1048576). Deoarece fiecare intrare const n 4 bytes, fiecare proces poate avea
nevoie de 4 Mbytes de spaiu de adresare pentru tabela de pagini. Este aproape
imposibil s alocm tabela de pagini ntr-o zon contigu de memorie.
Soluia pentru rezolvarea acestei probleme este paginarea multinivel: adresa
logic o putem mpri n numrul de pagin de 20 bii i deplasamentul n pagin de
12 bii. Deoarece vrem s paginm tabela de pagini, putem mpri numrul paginii n
dou pri: ca n figura de mai jos:
Numrul paginii
p1
p2
10
12
pagina 1
500
pagina 100
100
tabela extern
pagina 500
700
pagina 700
920
pagina 900
900
pagina 920
tabela de pagini
10
deplasament
d
adresa logic
p1 p2 d
memorie
p1
p2
Tabela extern
d
tabela de pagini
Memorie fizic
Sisteme de Operare
4.2.1.5. Alocarea segmentat a memoriei
Mecanismul de alocare segmentat introduce faptul c textul unui program poate
fi plasat n zone de memorie distincte, fiecare zon coninnd o bucat de program
numit segment.
SO
Liber 10k
Segment1 7K
Segment2 9K
Liber 10k
Segment3 14K
Liber 16k
Tabela de segment
s
dim
CPU
baz
s d
<
DA
memorie
NU
Eroare de adresare
Sisteme de Operare
apoi se nsumeaz numrul segmentului cu RBTS ( coninutul registrului) i se obine
adresa din memorie a tabelei de segment ce va fi citit. Se compar apoi deplasarea cu
dimensiunea segmentului i se calculeaz adresa fizic a cuvntului dorit ca suma
deplasrii i a adresei de baz a segmentului.
O alt soluie ar fi folosirea de registre asociative care s pstreze cele mai
utilizate intrri ale tabelei de segment.
4.2.1.6. Alocarea segmentat i paginat a memoriei
Att la alocarea paginat, ct i la alocarea segmentat poate apare fenomenul de
fragmentare i, uneori, este preferabil combinarea lor. Astfel, alocarea spaiului
pentru fiecare segment se face paginat.
Tabela de pagini
(una la segment)
Memoria real
Tabela de segmente
(una la proces)
Tabela de procese
Fiecare proces are propria lui tabel de segmente. Fiecare segment are propria
lui tabel de pagini. Fiecare intrare n tabela de segmente are un cmp rezervat adresei
de nceput a tabelei de pagini proprii segmentului.
Adresa virtual este de forma (s, p , d), unde s este numrul segmentului, p
este numrul paginii virtuale n cadrul segmentului, iar d este deplasamentul n cadrul
paginii.
Adresa fizic este de forma (f, d), unde f este numrul paginii fizice, iar d este
deplasamentul n cadrul paginii.
Sisteme de Operare
Adres logic
p
d
lungimea
baza
tabelei de tabelei de
pagin
pagin
DA
NU
eroare
tabela de segment
RBTS
poriune a
tabelei de
pagin
memorie
adres
fizic
Pagina n
memoria virtual
hart de memorie
swap
memoria fizic
Fig. 4.3.1. Memoria virtual
Sisteme de Operare
Folosirea memoriei virtuale este justificat de cerinele reale ale programrii i de
situaiile ntlnite n practic. De exemplu, pentru seciunile de cod care trateaz unele
condiii de eroare, care se pot ntlni foarte rar n timpul rulrii sau chiar de loc,
existena lor n memorie este rareori necesar.
Memoria virtual este implementat n sistemele cu paginare prin metoda numit
paginare la cerere, metod ce poate fi folosit i la sistemele cu segmentare sau cu
paginarea segmentelor. O alt metod este segmentarea la cerere, mult mai rar
folosit, datorit faptului c algoritmii sunt mai complicai (din cauza mrimii
variabile a segmentelor).
Paginarea la cerere
Metoda este asemntoare cu paginarea cu interschimbare (fig. 4.3.2), unde
programele sunt pstrate n memoria auxiliar i sunt ncrcate n memoria principal
doar atunci cnd se dorete lansarea lor n execuie. Deosebirea const n faptul c nu
se introduce n memorie ntregul program, ci numai cteva pagini, atunci cnd sunt
necesare. Tabela de pagin corespunztoare unui proces va conine acelai tip de
informaii ca i n cazul paginrii obinuite, avnd n plus un bit care va avea rolul de
a semnala prezena sau absena din memorie a paginii la care se refer.
Program
A
Swap out
evacuare
Swap in
introducere
Program
B
swap
memoria fizic
Fig. 4.3.2. Interschimbarea n cazul memoriei cu paginare
Sisteme de Operare
Bit
valid/invalid
cadru
A
B
C
D
E
F
G
H
0
1
2
3
4
5
6
7
0
4
v
1
i
2
6
v
3
i
4
i
5
9
v
6
i
7
i
tabela de pagin
memoria logic
0
1
2
3
4
5
6
7
8
9
10
11
12
A
C
C
F
F
13
14
swap
memoria fizic
Fig. 4.3.3. Tabela de pagin n cazul n care anumite pagini nu se afl n memoria principal
SO
2
eroare
ncarc
M
referin
i
cadru liber
6
instruciune
de repornire
tabela de pagin
4
aducerea paginii
care lipsete
5
reseteaz tabela
de pagin
memoria fizic
Sisteme de Operare
Hardware-ul folosit la implementarea paginrii la cerere este identic cu cel
necesar la paginarea cu interschimbare: o tabel de pagin care s poat marca o
intrare nepermis cu ajutorul unui bit valid/invalid (sau bii de protecie) i o memorie
auxiliar n care s poat fi pstrate paginile care nu se afl n memoria principal.
Pe lng hardware, pentru gestionarea memoriei este nevoie i de o serie de
algoritmi precum i de respectarea unor restricii legate de arhitectur.
Paginarea la cerere influeneaz foarte mult performanele sistemului de
calcul. Tratarea paginii lips presupune urmtorii pai:
- generarea erorii ctre sistemul de operare;
- se salveaz regitrii utilizator i starea programului;
- se verific dac ntreruperea este de tip pagin lips;
- se verific dac este corect referirea paginii i se determin poziia ei pe
disc;
- se iniiaz citirea de pe disc ntr-un cadru disponibil al memoriei interne;
- se ateapt n coada asociat discului pn n momentul n care este
satisfcut cererea de citire;
- se ateapt datorit timpului de cutare i/sau laten a discului;
- se ncepe transferul paginii n cadrul disponibil;
- n timpul ateptrii, UC poate fi alocat unui alt utilizator (planificarea
UC);
- se salveaz registrele i starea programului celuilalt utilizator;
- se verific dac ntreruperea a fost generat de ctre disc;
- se actualizeaz tabela de pagin i celelalte tabele astfel nct s reflecte
existena n memorie a noii pagini;
- se ateapt ca UC s fie alocat din nou procesului;
- se reface coninutul registrelor utilizator, starea programului i noua tabel
de pagin, dup care se reia execuia instruciunii ntrerupte.
Nu toi paii anteriori sunt necesari, dar, n general, exist trei mai etape n
tratarea paginii lips:
- deservirea ntreruperii generate de lipsa paginii;
- introducerea paginii n memoria intern;
- reluarea execuiei procesului.
Timpul de acces efectiv (timpul de acces la memorie) este direct proporional
cu rata de apariie a paginii lips i, din acest motiv, trebuie meninut o rat de
apariie ct mai sczut.