Upload
celfericit
View
4
Download
0
Embed Size (px)
DESCRIPTION
sisteme operare
Citation preview
Sisteme de Operare
Curs nr. 8
4.2. Scheme de alocare a memoriei
Tehnicile de alocare a memoriei utilizate la diferite sisteme de operare se mpartn:
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:
Aceast tehnic presupune pstrarea n memorie a instruciunilor i datelornecesare la un moment dat. Cnd este nevoie de alte instruciuni acestea sunt ncrcaten memorie n locul celor de care nu mai este nevoie:
- zona dintre adresele 0 i a-1 este rezervat nucleului sistemului de operare cermne acolo de la ncrcare i pn la oprirea sistemului. ntre c i m-1 este spaiulnefolosit de ctre programul utilizator activ (dac memoria are m locaii). Adresa cvariaz de la un program utilizator la altul.
Nefolosit
Zona desuprapunere
Parterezident
Nucleu SO
0
a
b
c
m
Init Prelucrricurente
Terminare
b bb
Program utilizator
Fig. 4.2.1. Alocarea memoriei la un sistem monoutilizator folosind suprapunerea
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 numitepartiii. O partiie este alocat unui proces pe toat durata execuiei lui, indiferentdac o ocup complet sau nu ca n figura de mai jos:
Alocarea absolut: se face pentru programe pregtite de editorul de legturipentru a fi rulate ntr-o zon de memorie i numai acolo.
Alocarea relocabil este mult mai folosit: adresarea n partiie se face cubaz i deplasament: la ncrcarea n memorie a programului, n registrul lui de bazse pune adresa de nceput a partiiei.
La sistemele multiprogramate dac un proces este plasat pentru execuie ntr-opartiie insuficient, el este eliminat din sistem fr a fi executat.
De obicei, partiiile au lungimi diferite. Una dintre problemele cele maidificile este fixarea acestor dimensiuni, deoarece nu se pot prevedea cantitile dememorie pe care le vor solicita procesele ncrcate n aceste partiii. Alegerea unorpartiii de dimensiuni mari scade probabilitatea ca unele procese s nu poat fiexecutate, dar i numrul de procese active din sistem.
La fiecare partiie exist un ir de procese care ateapt s fie executate, iarmodul n care este organizat sistemul de ateptare poate influena performanele deansamblu ale sistemului de calcul i poate atenua efectul unei dimensionridefectuoase a partiiilor.
Legarea proceselor de partiii se face n dou moduri:- fiecare partiie are o coad proprie: este o metod mai simpl din punctul
de vedere al sistemului de operare (se ntlnete la primele sistememonoutilizator IBM OS/MFT).
- o singur coad pentru toate partiiile: se poate alege partiia cea maipotrivit pentru plasarea unui proces.
Program1
Program2
Program3
Nucelul SO
Partiia 1
Partiia 2
Partiia 3
0
40
86130
168
190
250
255
Fig. 4.2.2. Alocarea memoriei cu partiii fixe
CPU < + memorie
limit baz
DA
NU
Eroare de adresare
Fig. 4.2.3. Adresarea cu registru baz
Sisteme de Operare
4.2.1.3. Alocarea cu partiii variabileAceast alocare se mai numete i alocare dinamic sau alocare MVT
Memory Variable Task (era folosit la PDP11). Este o extensie a alocrii cu partiiifixe i permite o exploatare mai eficient a memoriei sistemului de calcul: n funciede solicitri i de capacitatea memoriei rmas disponibil la un moment dat,numrul i dimensiunea partiiilor se modific automat.
La intrarea n sistem, procesele sunt plasate n memorie ntr-un spaiu n carencape cea mai lung ramur a sa. Spaiul liber n care a intrat procesul se mparte ndou partiii: una n care este procesul i una liber. Dac sistemul funcioneaz untimp ndelungat se ajunge la situaia n care numrul spaiilor libere va crete, iar
Fig. 4.2.4. Legarea proceselor la partiii: a) o coad pentru fiecare partiie; b) o coad pentru toate partiiile
a) b)
Fig. 4.2.5. Alocarea memoriei cu partiii variabile
Program1
SO0
40
100
180
200
230
255
Program2
Program3
Program1
SO0
40
100
200
230
255
Program4
Program3
Program1
SO0
40
100
200
230
255
Program3
Program5
180
Program4
SO0
40
100
200
230
255
Program3
180
Program4
SO0
40
100
200
230
255
Program3
Program2FINISH
Program4READY
Program1FINISH
Program5READY
Sisteme de Operare
dimensiunea lor va scdea. Acest fenomen se mai numete i fragmentarea intern amemoriei.
Dac un proces nu are spaiu s se ncarce n memorie, sistemul de operarepoate 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 ncrcareaprogramului;- sistemul de operare decide efectuarea unei operaii de compactare a
memoriei (relocare) deplasarea partiiilor active ctre partiia monitor (unde se aflpartea rezident a SO) pentru a se absorbi toate fragmentele de memorie neutilizate.
Compactarea memoriei este, de regul, o operaie costisitoare i n practic sealeg soluii de compromis:
- se lanseaz periodic compactarea, indiferent de starea sistemului. Procesele carenu au loc n memorie ateapt compactarea sau terminarea altui proces;- se realizeaz o compactare parial pentru a asigura loc numai procesului careateapt;- se ncearc numai mutarea unora dintre procese i se colecioneaz spaiile liberermase.
4.2.1.4. Alocarea paginat a memorieiPaginarea este o metod care rezolv problema fragmentrii: memoria alocat
unui program nu este contigu, adic programul poate fi ncrcat n memorie acolounde exist memorie disponibil.
Aceast alocare presupune:- instruciunile i datele fiecrui program sunt mprite n zone de lungime
fix, numite pagini virtuale. Fiecare adres relocabil (AR) aparine unei paginivirtuale. Paginile virtuale se pstreaz n memoria secundar.
- memoria operativ este mprit n zone de lungime fix, numite paginifizice sau cadre. Lungimea unei pagini fizice este fixat prin hard. Paginilevirtuale i cele reale au aceeai lungime (o putere a lui 2) i reprezint o constanta sistemului (de exemplu: 1Ko, 2Ko etc).
Program13ko
2ko
Program22ko
4ko
5ko
Program35ko
6ko
Program13ko
Program22ko
Program35ko
17ko
Program13ko
Program22ko
11ko
Program35ko
6ko
Program22ko
Program13ko
11ko
Program35ko
6ko
Fig. 4.2.6. Posibiliti de compactare a memoriei
Sisteme de Operare
- fiecare AR este o pereche de forma (p, d) unde p este numrul paginii i deste adresa n cadrul paginii (deplasarea n pagin).
- fiecare AF (adres fizic) este o pereche de forma (f, d) unde f este numrulpaginii fizice i d este adresa n cadrul paginii.
- calculul funciei de translare se face prin hardware.
Exemplu:
Pentru adresa logic 2 (pagina 0 deplasarea 2) avem adresa fizic 10 (=2x4+2)adic: adresa fizic = cadrul x dimensiunea paginii + deplasament.
Pentru adresa logic 6 nseamn pagina 1, deplasare 2. Pagina 1 este memoratn cadrul 0, deci adresa logic 6 corespunde adresei fizice 2 (=0x4+2).
Fiecare proces are propria lui tabel de pagini, n care este trecut adresa fizica paginii virtuale, dac ea este prezent n memoria operativ. La ncrcarea unei noi
adresavirtual
adresafizic
Memorie fizicTabel de pagini
CPU p d
f
p
f d f
d
Fig. 4.2.7. Translatarea unei pagini virtuale ntr-o pagin fizic
pagina 0pagina 1
20
01
pagina 1
pagina 0
012
Tabel de pagini Memorie fizicMemorie logic
20
01
Tabel de pagini
ABCD
Pag.0
Memorie logic
EFGH
01234567
Pag.1
Memorie fizic
EFGH
cadrul 0
01234567
cadrul 1
ABCD
cadrul 2
89
101112131415
cadrul 3
Sisteme de Operare
pagini virtuale, aceasta se depune ntr-o pagin fizic liber i n acest fel are loc oproiectare a spaiului virtual peste cel real ca n figura de mai jos:
Astfel, se folosete mai eficient memoria operativ. Un alt avantaj este acela alfolosirii n comun a instruciunilor unor proceduri de ctre mai multe programe. Oprocedur care permite acest mod de lucru se numete procedur reentrant.
Presupunem c avem un editor de texte al crui cod reentrant (instruciuni purefr date) ocup dou pagini. Dac am avea trei utilizatori, fiecare consumnd cte opagin pentru datele proprii, am avea n total nou pagini din memoria operativ.
Fig. 4.2.8. Dou programe ntr-o alocare pe pagini
Pag 0Pag 1 -Pag 2 -Pag 3
Program 1
Pag 2 -Pag 3 -Pag 4
Pag 1Pag 0
Program 2
PR2 pag 0
PR1 pag 3PR2 pag 4
PR2 pag 1
PR1 pag 0
Fig. 4.2.9. Procedur reentrant alocat cu pagininare
Cod 1Cod 2Date 1
Program 1
Cod 1Cod 2Date 2
Program 2
Cod 1Cod 2Date 3
Program 3
Paginivirtuale
Tabele de pagini
23
5
24
5
27
5
Cod 2Date 1Date 2Cod 1
Date 3
012345678
Sisteme de Operare
Implementarea tabelei de paginDac 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 accesatenumai de ctre sistemul de operare.
Dac dimensiunea tabelei este mare, este preferabil ca ea s fie pstrat nmemoria principal, ntr-o zon indicat de valoarea unui registru specializat numitregistrul de baz al tabelei de pagin (RBTP). Dac trebuie s se lucreze cu o alttabel de pagin dect cea curent trebuie rencrcat registrul cu o alt valoarescznd astfel timpul de schimbare al contextului. O particularitate a acestei soluiieste faptul c pentru a accesa o zon de memorie utilizator sunt necesare dou operaiide 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 adresalogic), se determin mai nti numrul de cadru c asociat paginii, care mpreun cudeplasamentul n pagin d d adresa real.
O alt soluie ar fi folosirea unei memorii hardware speciale (un set de registreasociative sau translation look-aside buffer), de mic dimensiune, cu urmtoarelecaracteristici: fiecare registru are dou pri, cheie (conine numrul paginii) ivaloare (numrul cadrului).
Cnd este generat o adres logic , dac numrul de pagin coincide cu una dinchei (din TLB), numrul de cadru este disponibil imediat i este folosit pentruaccesarea memoriei. Dac numrul paginii nu coincide cu nici una dintre chei, trebuieefectuat un acces la tabela de partiii aflat n memoria intern. Informaia va fifolosit att pentru accesarea datelor din memorie, ct i pentru adugarea ei n TLBpentru a putea fi folosit ulterior.
adresavirtual
adresafizic
CPU p d
Tabel de pagini
f
p
f d
Memorie fizic
Fig. 4.2.10. Translarea paginii folosind TLB
TLB hit
numrulpaginii
numrulcadrului
TLB (translation look-asidebuffer)
TLB miss
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 cuspaiul 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 aveanevoie de 4 Mbytes de spaiu de adresare pentru tabela de pagini. Este aproapeimposibil s alocm tabela de pagini ntr-o zon contigu de memorie.
Soluia pentru rezolvarea acestei probleme este paginarea multinivel: adresalogic o putem mpri n numrul de pagin de 20 bii i deplasamentul n pagin de12 bii. Deoarece vrem s paginm tabela de pagini, putem mpri numrul paginii ndou pri: ca n figura de mai jos:
unde p1 este index n tabela de paginiextern, p2 este deplasamentul n aceast tabel i deste deplasamentul n pagina de memorie.
p1 p2 d
10 10 12
Numrul paginii deplasament
tabela extern
1
500
100
700
920
900
tabela de pagini
pagina 0pagina 1
pagina 100
pagina 500
pagina 700
pagina 900
pagina 920
memorie
Tabela extern
adresa logicp1 p2 d
p1
p2
Memorie fizic
d
tabela de pagini
Fig. 4.2.11. Translarea adresei n cazul paginrii cu 2 nivele
Sisteme de Operare
4.2.1.5. Alocarea segmentat a memoriei
Mecanismul de alocare segmentat introduce faptul c textul unui program poatefi plasat n zone de memorie distincte, fiecare zon coninnd o bucat de programnumit segment.
Fiecare segment este caracterizat prinnume i lungime.
O adres virtual este o pereche (s, d),unde s este numrul segmentului i d estedeplasamentul n cadrul segmentului.Acestei perechi i corespunde o adresfizic, iar corespondena este realizat printabela de segment ce conine un numr deintrri egal cu numrul de segmente dinprogram.
Avantajele fa de alocarea pe partiii: - se pot crea segmente reentrante ce pot fi folosite de mai multe procese.- se poate realiza protecia memoriei prin adugarea unor drepturi de acces.
Implementarea tabelei de segmentSoluiile de implementare sunt asemntoare cu cele de la tabela de pagini. O
soluie ar fi utilizarea de registre rapide care s asigure o vitez de acces foarte marei efectuarea simultan a operaiilor de comparare a deplasrii cu dimensiuneasegmentului i nsumarea cu adresa de baz a segmentului. Dac programul esteformat dintr-un numr mare de segmente este indicat ca aceast tabel s fie pstratn memorie. Pentru a putea fi accesat se folosete un registru de baz al tabelei desegment (RBTS) i, deoarece programele nu au acelai numr de segmente sefolosete, n plus, un registru lungime al tabelei de segment (RLTS). Pentru fiecareadres logic (s,d), se verific corectitudinea numrului de segment (0
Sisteme de Operare
apoi se nsumeaz numrul segmentului cu RBTS ( coninutul registrului) i se obineadresa din memorie a tabelei de segment ce va fi citit. Se compar apoi deplasarea cudimensiunea segmentului i se calculeaz adresa fizic a cuvntului dorit ca sumadeplasrii i a adresei de baz a segmentului.
O alt soluie ar fi folosirea de registre asociative care s pstreze cele maiutilizate intrri ale tabelei de segment.
4.2.1.6. Alocarea segmentat i paginat a memorieiAtt la alocarea paginat, ct i la alocarea segmentat poate apare fenomenul de
fragmentare i, uneori, este preferabil combinarea lor. Astfel, alocarea spaiuluipentru fiecare segment se face paginat.
Fiecare proces are propria lui tabel de segmente. Fiecare segment are proprialui tabel de pagini. Fiecare intrare n tabela de segmente are un cmp rezervat adreseide nceput a tabelei de pagini proprii segmentului.
Adresa virtual este de forma (s, p , d), unde s este numrul segmentului, peste numrul paginii virtuale n cadrul segmentului, iar d este deplasamentul n cadrulpaginii.
Adresa fizic este de forma (f, d), unde f este numrul paginii fizice, iar d estedeplasamentul n cadrul paginii.
Tabela de procese
Tabela de segmente(una la proces)
Tabela de pagini(una la segment)
Memoria real
Sisteme de Operare
Intrarea tabelei de segment nu conine adresa de baz a segmentului, ci adresade baz a unei tabele de pagin asociat acestui segment (p). Segmentul este formatdintr-un numr de pagini cu aceeai dimensiune. Deplasarea n cadrul segmentului seface cu numrul de pagin i deplasare n cadrul paginii. Deoarece ultima pagin afiecrui segment nu este ntotdeauna ocupat complet, poate apare o fragmentareintern , dar totui mai redus fa de celelalte dou metode (paginare i segmentare).
4.3. Memoria virtual
Memoria virtual este o tehnic ce permite execuia proceselor, chiar dac acesteanu se afl integral n memorie. Un avantaj direct este acela al rulrii unor programe cudimensiuni mai mari dect cele ale memoriei fizice.
p d
s p
lungimeatabelei de
pagin
bazatabelei de
pagin
tabela de segment
+
NU
DA
eroare
+ f df memorieRBTS
poriune atabelei de
pagin
adresfizic
Adres logic
Fig. 4.2.13. Paginarea segmentelor
Pagina 0Pagina 1Pagina 2
Pagina nmemoria virtual
hart de memorie
memoria fizic
swap
Fig. 4.3.1. Memoria virtual
Sisteme de Operare
Folosirea memoriei virtuale este justificat de cerinele reale ale programrii i desituaiile ntlnite n practic. De exemplu, pentru seciunile de cod care trateaz unelecondiii 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 numitpaginare la cerere, metod ce poate fi folosit i la sistemele cu segmentare sau cupaginarea segmentelor. O alt metod este segmentarea la cerere, mult mai rarfolosit, datorit faptului c algoritmii sunt mai complicai (din cauza mrimiivariabile a segmentelor).
Paginarea la cerere
Metoda este asemntoare cu paginarea cu interschimbare (fig. 4.3.2), undeprogramele sunt pstrate n memoria auxiliar i sunt ncrcate n memoria principaldoar atunci cnd se dorete lansarea lor n execuie. Deosebirea const n faptul c nuse introduce n memorie ntregul program, ci numai cteva pagini, atunci cnd suntnecesare. Tabela de pagin corespunztoare unui proces va conine acelai tip deinformaii ca i n cazul paginrii obinuite, avnd n plus un bit care va avea rolul dea semnala prezena sau absena din memorie a paginii la care se refer.
Fig. 4.3.2. Interschimbarea n cazul memoriei cu paginare
memoria fizic
swap
ProgramA
ProgramB
Swap out
Swap in
evacuare
introducere
Sisteme de Operare
Ct timp se folosesc paginile aflate n memorie, execuia se desfoar normal.Dac se ncearc folosirea unei pagini, care nu este nc n memorie, se va genera oeroare de tip pagin lips. Dac se ncearc o folosire nepermis a unei adrese dememorie (ex: indice incorect de vector) se genereaz o eroare ce duce la ncheiereaforat a programului. n cazul nostru, situaia se rezolv astfel:
- se verific o tabel intern a procesului (pstrat n blocul de control)pentru a stabili dac ncercarea de accesare este permis sau nu (aparinespaiului de adrese logice asociate procesului); dac este nepermisprogramul se termin.
- dac adresa este corect i pagina respectiv nu a fost adus n memorie,trebuie ncrcat din memoria auxiliar;
- se caut un cadru liber n memoria fizic- se planific discul pentru citirea paginii dorite n cadrul astfel alocat;- odat cu ncheierea operaiei de citire se actualizeaz att tabela intern
asociat procesului, ct i tabela de pagin, astfel nct s semnalezeapariia n memorie a noii pagini.
- se reia execuia instruciunii ntrerupte de apariia erorii de adresare.
Fig. 4.3.3. Tabela de pagin n cazul n care anumite pagini nu se afl n memoria principal
tabela de pagin
4
6
9
viviivii
01234567
ABCD
F
Hmemoria logic
E
G
01234567
A B
C D E
F
swapmemoria fizic
A
C
F
0123456789
1011121314
cadru Bitvalid/invalid
SO
icadru liber
ncarcM
1
2
4
3
5
6
referin
tabela de pagin
reseteaz tabelade pagin
memoria fizic
aducerea paginiicare lipsete
eroare
pagina se afl n memoria auxiliar
instruciunede repornire
Fig. 4.3.4. Etapele de rezolvare ale unei greeli de pagin
Sisteme de Operare
Hardware-ul folosit la implementarea paginrii la cerere este identic cu celnecesar la paginarea cu interschimbare: o tabel de pagin care s poat marca ointrare nepermis cu ajutorul unui bit valid/invalid (sau bii de protecie) i o memorieauxiliar 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 dealgoritmi precum i de respectarea unor restricii legate de arhitectur.
Paginarea la cerere influeneaz foarte mult performanele sistemului decalcul. 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 ntratarea 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 deapariie ct mai sczut.