Sunteți pe pagina 1din 37

Arhitectura calculatoarelor i sisteme de operare - partea a II-a

VII.5.3. Memoria virtual

1
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Memoria virtual

extensie a mecanismelor de gestiune a


memoriei
poate fi folosit mpreun att cu
segmentarea, ct i cu paginarea
rolul sistemului de ntreruperi - sporit

2
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Accesul la memorie (1)

Cazul paginrii
1. programul precizeaz adresa virtual
2. se determin pagina din care face parte
3. se caut pagina n tabelul de paginare
4. dac pagina este gsit - salt la pasul 9
5. generare excepie
6. rutina de tratare caut pagina n fiierul de
paginare
3
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Accesul la memorie (2)

Cazul paginrii (cont.)


7. dac pagina nu este n fiierul de paginare -
programul este terminat
8. se aduce pagina n memoria fizic
9. se determin cadrul de pagin
corespunztor
10. calcul adres fizic
11. acces la adresa calculat
4
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Reducerea acceselor la disc (1)

duce la creterea performanei


o pagin este salvat pe disc i readus n
memorie de mai multe ori
readucerea n memorie - copia de pe disc nu
este tears
pagina i copia sa de pe disc sunt identice
pn la modificarea paginii din memorie
5
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Reducerea acceselor la disc (2)


evacuarea unei pagini din memorie
dac nu a fost modificat de cnd se afl n
memorie - nu mai trebuie salvat
util mai ales pentru paginile de cod
este necesar sprijin hardware pentru
detectarea acestei situaii
este suficient s fie detectate operaiile de
scriere
6
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Reducerea acceselor la disc (3)


tabelul de paginare - structur extins
fiecare pagin are un bit suplimentar (dirty bit)
indic dac pagina a fost modificat de cnd a
fost adus n memorie
resetat la aducerea paginii n memorie
instruciune de scriere n memorie
procesorul seteaz bitul paginii care conine
locaia modificat
7
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

VII.5.4. Utilizarea MMU

8
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Hardware

Cazul Intel
segmentarea
nu poate fi dezactivat
dar poate fi "evitat" prin software
paginarea
poate fi activat/dezactivat

9
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Sistemul de operare
Cazurile Windows, Linux
segmentarea
nu este utilizat n practic
toate segmentele sunt dimensionate asfel nct
s acopere singure ntreaga memorie
paginarea
pagini de 4 Ko
Windows poate folosi i pagini de 4 Mo
10
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Utilitatea MMU (1)

Avantaje
protecie la erori
o aplicaie nu poate perturba funcionarea
alteia
verificrile se fac n hardware
mecanism sigur
vitez mai mare
11
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Utilitatea MMU (2)


Dezavantaje
gestiune complicat
memorie ocupat cu structurile de date
proprii
tabelul de descriptori
tabelul de paginare
vitez redus - dubleaz numrul acceselor
la memorie (sau mai mult)
12
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Utilitatea MMU (3)

Concluzii
scderea de performan poate fi
compensat folosind cache-uri
procesoarele de azi ofer suficient vitez
sisteme multitasking - risc mare de
interferene
mecanismele MMU trebuie folosite
13
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

VII.6. Crearea i execuia


programelor

14
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Crearea unui program - faze

compilarea
traducerea comenzilor scrise ntr-un limbaj
surs n instruciuni pentru procesor
editarea legturilor (linking)
trateaz aspecte privitoare la gestiunea
memoriei ntr-un program

15
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Crearea unui fiier executabil


din mai multe module surs

16
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Problema relocrii

instruciunea de salt - adresa de salt nu mai


este corect
module compilate independent - fiecare
presupune c ncepe la adresa 0
afecteaz i instruciunile care acceseaz
date (adrese de memorie)
adresele sunt relocate (deplasate) fa de
momentul compilrii

17
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Problema referinelor externe

procedura X - apelat din alt modul dect


cel n care este definit
la momentul compilrii
se tie c este definit n alt modul
este imposibil de determinat la ce adres se va
gsi procedura n programul final

18
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Crearea programelor

se poate scrie un program dintr-un singur


modul?
nu ntotdeauna
programe foarte complexe - modularitate
biblioteci de funcii - module separate
precompilate
codul surs nu este disponibil
19
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Fazele crerii unui program

compilarea modulelor
fiier surs fiier obiect
fiierele obiect conin informaii necesare n
faza editrii de legturi
editarea legturilor
fiiere obiect fiier executabil
se folosesc informaiile din fiierele obiect

20
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Structura unui fiier obiect (1)

1. antetul
informaii de identificare
informaii despre celelalte pri ale fiierului
2. tabela punctelor de intrare
conine numele simbolurilor (variabile i
proceduri) din modulul curent care pot fi
apelate din alte module

21
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Structura unui fiier obiect (2)

3. tabela referinelor externe


conine numele simbolurilor definite n alte
module, dar utilizate n modulul curent
4. codul propriu-zis
rezultat din compilare
singura parte care va aprea n fiierul
executabil

22
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Structura unui fiier obiect (3)

5. dicionarul de relocare
conine informaii despre localizarea
instruciunilor din partea de cod care necesit
modificarea adreselor cu care lucreaz
forme de memorare
hart de bii
list nlnuit

23
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Editorul de legturi (1)

1. construiete o tabel cu toate modulele


obiect i dimensiunile acestora
2. pe baza acestei tabele atribuie adrese de
start modulelor obiect
adresa de start a unui modul = suma
dimensiunilor modulelor anterioare

24
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Editorul de legturi (2)

3. determin instruciunile care realizeaz


accese la memorie i adun la fiecare adres
o constant de relocare
egal cu adresa de start a modulului din care
face parte
4. determin instruciunile care apeleaz
proceduri sau date din alte module i
insereaz adresele corespunztoare
25
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Execuia programelor

la ce adres ncepe programul cnd este


ncrcat n memorie?
nu se tie la momentul cnd este creat
toate adresele din program depind de adresa
de nceput
concluzie: problema relocrii apare din nou
la lansarea programului n execuie
26
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Soluia 1

Fiierul executabil conine informaii de


relocare
aceste informaii sunt utilizate de sistemul de
operare la ncrcarea programului n memorie
pentru a actualiza referinele la memorie
exemplu: sistemul de operare DOS

27
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Soluia 2

Utilizarea unui registru de relocare


ncrcat ntotdeauna cu valoarea adresei de
nceput a programului curent
acces la memorie - la adresa precizat prin
instruciune se adun valoarea din registrul de
relocare
dependent de hardware
nu toate procesoarele au registru de relocare

28
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Soluia 3

Programele conin numai referiri la


memorie relative la contorul program
program independent de poziie
poate fi ncrcat n memorie la orice adres
foarte greu de scris
instruciuni de salt relative - cu restricii
instruciuni care lucreaz cu adrese de date relative
la contorul program - nu exist

29
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Soluia 4

Paginarea memoriei
programul poate fi mutat oriunde n memoria
fizic
programul crede c ncepe de la adresa 0, chiar
dac nu este aa
dependent de suportul hardware (mecanismul
de paginare)

30
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Biblioteci partajate (1)

Legare dinamic
proceduri i variabile care nu sunt incluse
permanent n program
numai atunci cnd este nevoie de ele
proceduri i variabile partajate de mai multe
programe

31
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Biblioteci partajate (2)

Utilitatea legrii dinamice


proceduri care trateaz situaii excepionale
rar apelate
ar ocupa inutil memoria
proceduri folosite de multe programe
o singur copie pe disc
o singur instan ncrcat n memorie
32
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Biblioteci partajate (3)

Tipuri de legare dinamic


implicit
explicit

33
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Legare implicit

folosete biblioteci de import


legate static n fiierul executabil
indic bibliotecile partajate necesare
programului
la lansarea programului
sistemul de operare verific bibliotecile de
import
ncarc n memorie bibliotecile partajate care
lipsesc
34
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Legare explicit (1)

programul face un apel sistem specific


cere legarea unei anumite biblioteci
partajate
dac biblioteca nu exist deja n memorie,
este ncrcat
legtura cu o bibliotec partajat poate fi
realizat sau distrus n orice moment
35
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Legare explicit (2)

exemplu - Windows
//legare explicit a unui modul
hLib=LoadLibrary("module");
//se obine un pointer la o funcie
fAddr=GetProcAddress(hLib,"func");
(fAddr)(2,3,8);//apel funcie
FreeLibrary(hLib);//eliberare modul
(fAddr)(2,3,8);//eroare, funcia nu
mai este disponibil
36
Arhitectura calculatoarelor i sisteme de operare - partea a II-a

Legare explicit (3)

exemplu - Linux
//legare explicit a unui modul
hLib=dlopen("module",RTLD_LAZY);
//se obine un pointer la o funcie
fAddr=dlsym(hLib,"func");
(fAddr)(2,3,8);//apel funcie
dlclose(hLib);//eliberare modul
(fAddr)(2,3,8);//eroare, funcia nu
mai este disponibil
37

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