Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

UD4 (Part IV).

- Gesti de Memria

Alfonso Prez.

Jerarqua de Memoria

Cicle de vida dun programa


PROGRAMA FONT

COMPILADOR

COMPILACI O
ENSAMBLAJE

MDUL OBJECTE
ALTRES
OBJECTES I
BIBLIOTEQUES

ENLLAADOR
(linker)

BIBLIOTEQUES
DEL SISTEMA

PROG. EXECUTABLE

CARREGADOR

CRREGA

BIBLIOTEQUES
DINMIQUES
IMATGE DEL
PROGRAMA I DADES
EN MEMRIA

HW

EXECUCI

1.- Introducci

La CPU accede a la memoria para leer instrucciones y datos


El hardware trata de optimizar dichos accesos (cach)
La memoria debe ofrecernos proteccion...
Un proceso no debe poder acceder a cualquier localidad de
memoria
Ej: registros base-lmite.
Direccion lgica es la direccion de memoria que maneja la CPU.
Direccion fsica es la direccion de memoria que maneja la unidad de
memoria.

1.1.- Reubicaci

Per a executar un programa, cal assignar-li memria fsica per al seu codi i
variables.

Fins la crrega real no sabem quina ser lassignaci; per tant, totes les
fases de transformaci del prog. font deuen assumir alguna dir. de
comenament, p. ex. la dir. 0

Quan ja es conegan les direccions reals assignades, hi haur que adjustar


totes les direccions de salt i de les dades.

Esta operaci dadjust es diu reubicaci.

Reubicaci: qun fer-la.

Decidiendo en tiempo de compilacion:

Decidiendo en tiempo de carga:

El programa ejecutable contiene codigo absoluto.


Solo puede cargarse en las localidades de memoria que se van
a usar
Solo admite un proceso para cada programa
El programa ejecutable contiene codigo reubicable.
Puede decidirse donde se cargara al ejecutarse, pero no
despues
Admite multiples procesos con el mismo programa

Decidiendo en tiempo de ejecucion:

Usamos soporte hardware para traducir direcciones.


El proceso puede reubicarse en la memoria en cualquier
momento Reubicaci dinmica
Admite multiples procesos con el mismo programa

Reubicaci esttica
El carregador busca memria fsica contigua disponible. Si nhi ha, es modifiquen les direccions del
codi en memria (que comenaven en cero).
0
99
100

0: add ax,#2,bx
1: call 50
2: jmp 10

101: call 150

+100

102: jmp 110

50:mov @200,ax
.

Fitxer executable
(en disc)

100: add ax,#2,bx

150

150:mov @300,ax

Memria Fsica

Reubicaci dinmica
Registre
Base

1400

MEMRIA
CPU

direcci lgica
0346

direcci fsica
1746

funci NL_map

Reubicaci dinmica utilitzant un registre de reubicaci.

MMU: Memory Management Unit

Direccions lgiques
Direccions fsiques
Treballa en temps dexecuci; transparent a la CPU
Diverso mtodes de traducci: p. ex. suma de direccions.

2.- Gesti de memria en smes. monoprogramats

3- Gesti de memria en smes. multiprogramats


3.1.- Assignaci de memria contigua.
Los procesos se alojan en una regin continua de
memoria.
3.1.1.- Particions fixes (esttiques).

2K
6K

7K

1K

3K

Cola nica

8K

5K

12K

S.O.

Particions fixes (cont.)


b) Una cola per cada tamany de regi:

Fragmentaci interna: un procs no ocupa tota la partici assignada, es


desperdicia una petita part.

Particions fixes: Estratgies de colocaci

First Fit: el procs entra en el primer buit on quepa.


Best Fit: tria el mnim buit de tamany suficient per a ubicar el
procs.
Worst Fit: tria el buit ms gran.

Protecci

Registre base: cont la dir. de memoria a partir de la qual senmagatzen el


procs.
Registre lmit: cont la ltima direcci de la partici.

Hardware de protecci
REGISTRE
LMIT

CPU

direcci

<

REGISTRE
BASE

SI

NO

TRAP: Interrupci HW interna al SO:


ERROR DE DIRECCIONAMENT

dir del programa: [0, lmit]. dir fsiques:[base, base+lmit].

MEMORIA

3.1.2.- Particions variables(dinmiques)

Sassigna memria dinmicament als processos, segon van arribant. A


cada procs se li assigna exactament la quantitat de memria que precisa.
Sevita el problema de la fragmentaci interna.

Particions mltiples(II)

T el problema de la fragmentaci externa entre particions; es creen buits


lliures massa menuts com per a que quepen processos, encara que la uni
de tots eixos buits originaria un major, lo que resulta en un desperdici de
memria.
Una possible soluci s la compactaci de memria, consistent en
desplaar tots els processos a la part inferior de la memria. Pel seu
consum de temps sha de fer en hores de poc s de lordinador, per la nit,
Protecci: contina sent vlid lesquema dels registres base i lmit.

3.1.3.- Registre docupaci de memria

Mapa de bits.
Llista enllaada.

3.2.- Intercanvi (swapping)

En sistemes de temps compartit, hi ha ms usuaris que memria.

Processos bloquejats es trauen de memria (swap out) i es cpien


a disc.

Este moviment de processos entre memria ppal. i disc el realitza el


planificador a mig pla del S.O.

El intercanviador va examinant la llista de processos de disc per a


veure si alg est ja list, i el recupera (swap in) a memria.

Intercanvi

3.3.- Assignaci no contigua.

No fa falta assignar un bloc contigu de memria al procs.


Aixina es pot assignar memria a un procs sempre que nhi haja
disponible.

3.3.1.- Paginaci.

La memoria fsica se divide en marcos de igual tamao.


La memoria de los procesos se divide en paginas del mismo
tamao que los marcos.
El S.O. mant una Taula de Pgines.
El SO carga las paginas en marcos no necesariamente
contiguos.
Permiteix que la memria dun programa no siga contigua i que
sassigne memria en qualsevol lloc disponible.

Paginaci

Las direcciones logicas se dividen en:


Nmero de pagina (p)
Desplazamiento de pagina (d)

Los numeros de pagina (p) representan ndices en una tabla de


paginas.
p

Paginaci; Hardware.

Paginaci
Pgina de tamany P:
dir. lgica U
n. de pgina p= U div P
desplaament d= U mod P

Si tamany pgina = 2n
(bytes o paraules)

- n bits LSB per al desplaament


- restants bits per al n. de pgina.

Exemple de paginaci
Tamany pgina: 4 paraules. 22 2 bits per al
desp
Memria fsica de 32 paraules 25

a: dir lgica 0: f=5 (101)


desp=00

10100 20

d: dir lgica 3: f=5 (101)


desp=11

10111 23

e: dir lgica 4: f=6 (110)


desp=00

11000 24

Paginaci: protecci.

A la Taula de pgines, sassocia a cada pgina un conjunt de bits de


protecci.
Poden indicar: bit de L/LE, bit de vlid/ invlid.
Exemple: un sistema de 14 bits de direccions, pot direccionar de la 0 a la
16383. Un programa noms usa de la 0 a la 10468. Si el tamany de pgina
s 2K, tindrem la Taula de Pgines:
pgina
trama

bit de vlid/no_vlid

3.3.2.- Segmentaci

Mtode dirigit a redur la fragmentaci externa en particions variables.


Desde el punt de vista del programador, un programa est dividit en procediments,
subrutines, funcions i mduls.
Dividir lespai de direccions lgiques en segments de tamany variable. Cada segment
es pot ubicar per separat. Indica el nom del segment i la longitut (tamany).
Els segments es carreguen a una Taula de segments.

Memria lgica del procs


codi

dades
pila

Segmentaci: Hardware
Direcciones lgicas en forma de tuplas: <num segmento, desplazamiento>

Exemple de segmentaci

3.3.3.- Segmentaci paginada.

Combina paginaci i segmentaci. Ex: Multics i OS/2.


Idea: paginar els segments: la paginaci elimina la fragmentaci
externa i fa lassignaci trivial: qualsevol marc buit pot usarse per a
allotjar la pgina desitjada.
Tenim una taula de pgines per a cada segment de cada procs.

Segmentaci paginada: Hardware


direcci lgica

d
Error de
Direccionament

no

>=

si

d
p d

longitut del
segment

dir. base de la
taula de pgines

MEMRIA
FSICA

direcci fsica

RBTS

TAULA DE SEGMENTS
TAULA DE
PGINES

4.- Memria virtual

Permiteix executar programes que no estan carregats sencers a


memria.
Espai de direccions lgiques > Espai de direccions fsiques
Programas reales en muchos casos no es necesario que est el
programa entero en memoria:
Cdigo que maneja condiciones de error poco comunes (casi
nunca se ejecuta)
En muchos casos se reserva ms memoria de la necesaria
(vectores, tablas, listas, etc...)
Opciones y funciones del programa que se usan con muy poca
frecuencia (copias de seguridad , listados especficos, )
El sistema operativo selecciona automticamente qu fragmentos
del proceso residen en memoria principal.

Memria virtual: esquema

Paginaci per demanda (demand paging)

s un sistema paginat amb un dispositiu denmagatzenament, que


es diu dispositiu de paginaci (disc).
MM

Els programes estan al disp. de paginaci, i anir carregant en


memria ppal. noms les pgines que es necessiten. Un programa
que no sutilitze, mai es carregar en memria.

Si el programa direcciona una pgina que no est en memria


fallo de pgina trobar el bit de la Taula de Pg. a no_vlid i des
del disc es tindr que carregar.

Memria virtual: fallo de pgina

Rutina de tractament del fallo de pgina:

1.

Buscar la posici de la pgina desitjada al disp. de paginaci.


Buscar una trama lliure;

2.
1.
2.

3.
4.
5.

Si troba una lliure, usar eixa.


Si no, usar un algorisme de reemplaament de pgines per a seleccionar una
vctima.

Escriure el contingut de la pgina vctima al disc i actualitzar la taula de


pgines.
Portar la pgina desitjada a la trama lliure de memria i actualitzar la
taula de pgines.
Reiniciar el procs que va provocar el fallo de pgina.

Algorismes de reemplaament de pgines

Objectius:
Reduir la tasa de falles de pgina.
Reduir el temps de servei del fallo.

a) FIFO: associa a cada pgina el instant de temps en que va ser carregada a


memria. Quan sha de fer el reemplaament, es tria com a vctima la ms
antiga. Veure exemple de classe.
El n. de falles de pgina amb 4 trames s major que amb 3, resultat conegut
com anomalia de Belady.

Algorismes (II)

LRU (Least Recently Used);

Associa a cada pgina el instant de temps de lltima vegada que va ser


referenciat. Es tria com a vctima aqulla pgina que fa ms temps que es
va referenciar per ltima vegada.
Veure exemple de classe.

Hiperpaginaci

Si disposem del n. mnim de trames, es provocarn falles de pgina amb


molta frequncia, per lo que el S.O. estar ms temps servint estes falles
(overhead) que executant els programes.

Esta situaci en que el trasiego de pgines s molt elevat, sanomena


hiperpaginaci (thrashing) i pot causar serios problemes de rendiment.

You might also like