You are on page 1of 106

Gestin de memoria

Gestin de memoria. Requisitos

Reubicacin
Proteccin
Comparticin
Organizacin lgica
Organizacin fsica

Requisitos. Reubicacin
el programador no sabe donde se
colocar el programa en memoria
cuando se ejecute
mientras el programa se est
ejecutando, se puede descargar a disco
y volver en una direccin de memoria
diferente
las referencias de memoria deben ser
traducidas a direcciones reales de
memoria

Direccionamiento

Requisitos. Proteccin
los procesos no deberan poder
referenciar localidades de memoria
de otros procesos sin permiso
imposible chequear direcciones
dentro de los programas puesto
que se pueden reubicar
se debe chequear durante la
ejecucin

Requisitos. Comparticin
permitir a varios procesos acceder
a la misma porcin de memoria
Ejemplos:
acceder a la misma copia del programa en
lugar de tener su propia copia
acceder a una estructura de datos
compartida

Requisitos. Organizacin lgica


los programas se escriben en
mdulos
diferentes grados de proteccin
para los distintos mdulos de un
programa (solo lectura, solo
ejecucin)
comparticin de mdulos

Requisitos. Organizacin fsica


tarea de mover informacin entre los por lo
menos dos niveles de memoria: principal y
secundaria
no es deseable dejar la responsabilidad al
programador
La memoria principal disponible para un programa
y sus datos puede no ser suficiente
Tcnica de superposicin se malgastaba tiempo del
programador

En un entorno multiprogramado, el programador


no conoce en tiempo de codificacin cunto
espacio estar disponible o dnde

Gestin de Memoria
Particiones

Tcnicas de gestin de memoria


Particionamiento fijo
Particionamiento dinmico
Paginacin sencilla
Segmentacin sencilla
Paginacin con memoria virtual
Segmentacin con memoria virtual

Particionamiento fijo
Divisin de la memoria en
particiones de tamao fijo
Se puede colocar cualquier proceso
cuyo tamao sea menor o igual que
el de la particin

Si todas las particiones estn


llenas el SO puede sacar a un
proceso de cualquiera de las
particiones (swap) y cargar otro.

Particionamiento fijo. Problemas


Un programa ms grande que una
particin
Uso de tcnica de superposicin

Uso de la memoria ineficiente.


Cualquier programa, sin importar lo
pequeo que fuera, ocupa una
particin entera. Esto se llama
fragmentacin interna.

Mejora: particiones fijas de


tamao diferente
No soluciona el
problema pero lo
mejora un poco

Algoritmo de ubicacin
Particiones del mismo tamao
Algoritmo trivial

Particiones de tamao diferente


Asignar a cada proceso a la particin ms
pequea dentro de la cual cabe
Una cola por particin
Minimiza fragmentacin interna

Cola nica
Mayor aprovechamiento en uso de todas las
particiones

Algoritmo de ubicacin
Traduccin y carga absoluta
Desperdicio del almacenamiento
S.O.

Proceso nuevos

Algoritmo de ubicacin
Traduccin y carga con reubicacin
Los programas se pueden contener en cualquier particin
disponible lo suficientemente grande.
S.O.

Procesos
nuevos

Particionamiento fijo. Problemas


remanentes
El nmero de procesos activos est
limitado por el nmero de particiones
Muchos procesos pequeos no
utilizan el espacio eficientemente
En particiones fijas de tamao variable o
fijo

Particionamiento dinmico
las particiones son de tamao y nmero
variable
los procesos ocupan tanto espacio como
necesiten, no hay fragmentacin interna
se van generando huecos, esto se llama
fragmentacin externa
se debe usar compactacin que malgasta
tiempo de procesador y requiere
capacidad de reubicacin dinmica

Particionamiento dinmico.
Ejemplo
OS (8M)
P2
P1
(14M)
(20M)
Empty (6M)
Empty
P4(8M)
P2
(56M)
(14M)
Empty (6M)
P3
(18M)
Empty (4M)

Figura 7.4

Algoritmo de ubicacin
Estrategia del mejor ajuste
asigna el menor hueco disponible
al quedar huecos ms pequeos, hay que
compactar ms frecuentemente
Estrategia del peor ajuste
asigna el mayor hueco disponible
mejor que la anterior en cuanto a
compactacin

Algoritmos de ubicacin
Estrategia del primer ajuste
asigna el primer hueco disponible
ms rpida
puede tener muchos procesos cargados en el
extremo inferior de la memoria, los cuales hay
que traspasar para llegar al hueco disponible.

Algoritmos de ubicacin
Estrategia del siguiente ajuste
variante del primer ajuste, empieza a buscar
desde donde termin la bsqueda anterior
se fragmenta ms el gran espacio libre del
final de la memoria
se requiere compactacin ms frecuente que
la anterior

Algoritmos de ubicacin
Ejemplo
Ultimo bloque
asignado (14K)

8K

8K

12K

primer ajuste 12K

22K
siguiente ajuste
18K

Requisito 16K

6K

2K
8K

8K
asignados

6K

6K

libres
mejor ajuste
17K
peor ajuste
36K

1K

20K
antes

despus

Sistema buddy (colegas)


El espacio disponible se trata como un nico
bloque de 2U
Si se realiza una peticin de tamao s donde 2U1 < s <= 2U
Se asigna el bloque entero

De otro modo el bloque se divide en dos


bloques colegas iguales
Se asigna la peticin a uno de los dos
El proceso contina hasta que el bloque ms
pequeo sea ms grande o igual que el s generado y
se asigna la peticin

Sistema buddy

Sistema buddy

Reubicacin
Cuando un programa se carga en la
memoria se determinan las direcciones
un proceso puede ocupar diferentes
particiones (o sea diferentes direcciones
absolutas) durante la ejecucin (por
intercambio)
La compactacin tambin causa que un
programa tenga que ocupar diferentes
particiones.

Direcciones
direcciones virtuales (lgicas)
direcciones a las cuales hacen referencia los
procesos independientemente de la asignacin actual
mecanismos de hardware hacen la traduccin a
direcciones reales (fsicas)
direcciones relativas
direcciones expresadas en relacin a algn punto
conocido
direcciones reales (fsicas)
direcciones actuales de memoria

Hardware para reubicacin


dinmica
Direccin relativa

BCP

Registro base
suma

Registro de lmites

comp

programa
Direccin
absoluta
datos

Interrupcin al S.O.

pila
Imagen del proceso
en memoria principal

Paginacin
La memoria principal se divide en un nmero
de marcos de igual tamao.
Cada proceso se divide en un nmero de
pginas del mismo tamao que los marcos.
Un proceso se carga colocando todas sus
pginas en marcos disponibles, no
necesariamente contiguos.

Paginacin
El sistema operativo mantiene una tabla de
pginas por cada proceso
contiene la direccin del marco
correspondiente a cada pgina en el proceso
la direccin de memoria est dada por el
nmero de pgina y el desplazamiento dentro
de la pgina

Asignacin de procesos a marcos


A.0
A.1
A.2
A.3
D.0
B.0
D.1
B.1
D.2
B.2
C.0
C.1
C.2
C.3
D.3
D.4

Tablas de pginas
0

---

1
2
3

1
2
3

1
2

-----

1
2
3

8
9
10

1
2
3

5
6
11

12

Proceso A

Proceso B

Proceso C

Proceso D

13
14
Lista de marcos
libres

Segmentacin
Cada proceso se divide en un nmero de
segmentos
la direccin se expresa como nmero de
segmento y desplazamiento
similar a particiones variables, pero no
necesitan estar en forma contigua

Direcciones lgicas

Paginacin

Segmentacin

Memoria virtual
Organizacin

Caractersticas de paginacin y
segmentacin
Traduccin dinmica de direcciones en
tiempo de ejecucin, lo que permite carga
en distintas regiones
Asignacin no contigua
No es necesario que todos los segmentos
o pginas estn en memoria durante la
ejecucin

Ejecucin de un programa
El sistema operativo trae a memoria
principal unos pocos fragmentos del
proceso incluido el comienzo del
programa
conjunto residente: porcin de proceso
que est en memoria principal
Se genera interrupcin cuando no se
encuentra la direccin lgica en memoria
principal. Fallo de acceso a memoria

Ejecucin de un programa
Fragmento de proceso que contiene la direccin
lgica se trae a memoria principal
el proceso pasa a bloqueo solicitando E/S a disco
otro proceso se despacha mientras la E/S toma lugar
se genera una interrupcin cuando se completa la
E/S a disco lo que causa que el SO cambie el estado
del proceso a listo

Ventajas de fragmentar
procesos
Ms procesos se pueden mantener en
memoria principal
solamente se cargan algunos fragmentos
de cada proceso

Utilizacin ms eficiente del procesador


Un proceso puede ser ms grande que
toda la memoria principal

Ventajas de fragmentar
procesos
El programador trata con memoria del
tamao del disco duro
Se cargan en memoria los fragmentos
que se necesitan
Se ahorra tiempo porque no se cargan y
descargan fragmentos que no se usen

Hiperpaginacin (thrashing)
Intercambio hacia afuera de un bloque de
un proceso justo antes de que se necesite
El procesador gasta la mayor cantidad de
su tiempo intercambiando los bloques en
lugar de ejecutando las instrucciones.

Principio de cercana
Las referencias a datos y programas
dentro de un proceso tienden a agruparse.
Solamente algunas partes de un proceso
se necesitarn por un periodo breve de
tiempo.
Es posible adivinar inteligentemente cules
bloques se necesitarn en el futuro.

Principio de cercana
Localidad espacial
tendencia a referenciar localidades cercanas
entre s.
Secuencias lineales de cdigo, recorridos de
vectores, definiciones de variables afines cercanas
unas a otras

Principio de cercana
Localidad temporal
tendencia a referenciar la misma posicin
varias veces durante breves intervalos
ciclos, subrutinas, pilas, variables utilizadas para
cuenta y totalizacin

Soporte necesario para


memoria virtual
El hardware debe soportar paginado y/o
segmentado.
El sistema operativo debe ser capaz de
manejar los movimientos de pginas y/o
segmentos entre memorias primaria y
secundaria.

Paginacin
Cada proceso tiene su propia tabla.
Cada entrada de la tabla de pginas
contiene el nmero de marco de la pgina
correspondiente en memoria principal.
Se necesita un bit para indicar si la pgina
est o no en memoria principal.

Bit de modificacin en la tabla


de pginas
Se necesita un bit para indicar si la pgina
ha sido modificada desde la ltima vez
que fue cargada en memoria.
Si no ha habido cambio, la pgina no
necesita escribirse en el disco cuando se
quita de memoria principal.

Paginacin
Direccin virtual
Nmero de pgina

Desplazamiento

Entrada tabla de pginas


Nmero Marco
P M Bits de Control

Control Nmero Marco

Traduccin de direcciones en
sistemas de paginado
Direccion virtual
p

Marco p

Registro de origen de la
tabla de corr. de pginas

b
b

Tabla de
correspondencia
de pginas
d

Marco de
Pgina p

P M Control Nro Marco

programa

paginado

Memoria principal

Tablas de correspondencia de
pginas
Pueden ser muy grandes y necesitar
mucha memoria.
Las tablas tambin se almacenan en
memoria virtual.
Cuando un proceso se ejecuta, parte de
su tabla est en memoria principal.

Correspondencia
Cada referencia a una direccin virtual
puede causar dos accesos a memoria
fsica.
Uno para leer la tabla
uno para leer el dato

para mejorar esto se usa una cache


especial para las entradas de las tablas
llamado TLB - Translation Lookaside Buffer

TLB
Contiene las entradas de la tabla de
pginas que han sido usadas ms
recientemente.
Trabaja parecido a la cache de memoria
principal.

TLB
Dada una direccin virtual, el procesador
examina el TLB.
Si se encuentra la entrada de la pgina
(hit), se obtiene el nmero del marco y se
forma la direccin real.
Si no se encuentra la entrada de la pgina
(miss), se usa el nmero de pgina para
indexar la tabla de pginas del proceso.

TLB
Primero comprueba si la pgina est en
memoria principal.
Si no, se avisa un fallo de pgina.
Se actualiza el TLB para incluir la nueva
entrada.

Uso del TLB


Memoria principal

Direccion virtual
p
d

Memoria
secundaria

TLB
Pag

P M Control Marco P

TLB hit

cargar
pgina

Tabla corr. pginas


TLB miss
PM
M Control Nro Marco

p
d
Direccin real
Fallo de pgina

INICIO

Operacin de TLB

CPU prueba
la TLB

Entrada
pgina en
TLB?

No
Acceder tabla
pginas

No

Rutina de
fallo de pgina

Pgina en
mem real?
S
Actualizar TLB

CPU genera
direccin
fsica

Rutina de fallo
de pgina

Memoria
llena?

No
SO ordena a la
CPU a traer la
pg. desde disco

CPU activa
dispos. E/S

Pgina transferida
desde el disco a
memoria principal

Actualizar
tabla pg.

Realizar
reemplazo
pgina

Tamao de pginas
A menor tamao, menor fragmentacin interna.
Con menor tamao, se requieren ms pginas
por procesos. Esto quiere decir, tablas mayores.
Mayores tablas, grandes porciones de tablas en
memoria virtual.
La memoria secundaria est diseada para
transferir grandes bloques de datos
eficientemente, por lo tanto mayores tamaos
de pginas es mejor.

Tamao de pgina
Pequeo tamao, mayor nmero de pginas se
encontrarn en memoria principal
A medida que sigue la ejecucin, las pginas en
memoria contendrn porciones del proceso trado
recientemente a memoria, por lo tanto disminuyen los
fallos de pgina
Mltiples tamaos de pgina proveen la flexibilidad
necesaria para usar efectivamente el TLB
Pginas grandes se pueden usar para
instrucciones de programa
Pginas pequeas se pueden usar para hilos

Segmentado
Puede ser dinmico
Simplifica el manejo de estructuras que
crecen.
Permite alterar los programas y
recompilarlos independientemente.
Se usa para compartir datos entre
procesos.
Fcil proteccin.

Tablas de correspondencia de
segmentos
Cada entrada contiene la direccin de comienzo
del correspondiente segmento en memoria
principal.
Cada entrada contiene la longitud del segmento.
Se necesita un bit para determinar si el
segmento est o no en memoria principal.
Se necesita un bit para determinar si el
segmento ha sido modificado desde la ltima vez
que se carg.

Segmentado
Direccin virtual
Nmero segmento

desplazamiento

Segment Table Entry


P M Otros bits control

Longitud

Dccion base segmento

Traduccin de direcciones en
sistemas segmentados
Direccin virtual
s

Tabla segmentos
Base + d

Registro base
b

s
P MControl long

Programa

Segmento

Tabla segmentos

Base

Segmentacin

Memoria principal

Sistemas de
paginacin/segmentacin

La paginacin es transparente al programador.


La paginacin elimina fragmentacin externa.
La segmentacin es visible al programador.
La segmentacin permite crecimiento de
estructuras, modularidad y soporte para
compartir y proteger.
Cada segmento se parte en pginas de tamao
fijo.

Sistemas de
paginacin/segmentacin
Direccin virtual
Nmero segmento

Nmero de pgina

desplazamiento

Entrada tabla segmentos


Otros bits control

Longitud

Entrada tabla pginas


P M Otros bits control

puntero tabla paginas de segmento

Nmero de marco

Traduccin de direcciones en sistemas


segmentados/paginados
s

Inicio tabla segm

Tabla
segmentos

Tabla pginas
Despl.t

P M Contl Marc P

Marco
pgina

Contl long Base

Programa

Segmentacin

Paginacin

Memoria principal

Memoria virtual
Estrategias de Gestin

Polticas
Lectura (tambin polticas de vaciado)
cundo se debe transferir una pgina (segmento)

Ubicacin
dnde colocar la nueva pgina (segmento)

Reemplazo
cul pgina (segmento) desalojar de memoria

Asignacin
qu cantidad de memoria real se asigna a cada proceso
activo

Control de carga
Grado de multiprogramacin

Polticas de lectura
determina cundo traer una pgina a
memoria
paginacin por demanda
paginacin anticipada

Polticas de lectura
Demanda
el paginado por demanda trae solo las
pginas cuando se hacen las referencias
garantiza que las nicas pginas que se
transfieren son las requeridas
esperas ms costosas

Polticas de lectura
Paginacin anticipada
trae ms pginas que las que se necesitan
acelera tiempos de ejecucin de un proceso
ms eficiente cuando las pginas son contiguas en el
disco, se usa en la carga inicial.
no se puede predecir el uso de estas pginas

Polticas de ubicacin
determina dnde ubicar un bloque en
memoria real
irrelevante en el caso de paginacin
iguales estrategias que en particiones
variables para segmentacin
primer ajuste
mejor ajuste
siguiente ajuste

Polticas de reemplazo
bloqueo de marcos
para el kernel, estructuras de control del
sistema operativo, buffers I/O
bit de bloqueo asociado a cada marco

Polticas de reemplazo
algoritmos de reemplazo
ptimo
LRU (menos recientemente utilizada)
NUR (no utilizada recientemente)

FIFO (primero que entra, primero que sale)


reloj
segunda oportunidad

buffering de pginas

Polticas de reemplazo
ptima
selecciona aquella pgina que tardar ms
tiempo en volver a ser utilizada
imposible predecir el futuro

Polticas de reemplazo
First In, First Out (FIFO)
Reemplaza la pgina que ha estado ms
tiempo en almacenamiento primario
lista tipo buffer circular (cola FIFO)
la ms simple de implementar
la pgina ms antigua puede ser la ms
usada
anomala de Belady

Polticas de reemplazo
Least Recently Used (LRU)
Reemplaza la pgina que no ha sido utilizada por el
mayor tiempo
Principio de localidad
pasado reciente indicador de futuro cercano

implementacin difcil
contador de tiempo utilizado
lista ordenada en cada referencia (no en cada fallo de
pgina)

Polticas de reemplazo
Not Recently Used (NRU)
aproximacin de LRU
utiliza dos bits de hardware
uso
modificacin

reemplaza la pgina no utilizada


recientemente basndose en el bit de uso o
referencia

Polticas de reemplazo
Reloj o segunda oportunidad
aproximacin de FIFO mejorando el
rendimiento a travs del bit de uso
se reemplaza el primer marco cuyo bit de uso
sea 0
en la bsqueda cada bit de uso en 1 se
cambia a 0

Estrategia del reloj


Estado del buffer antes
del reemplazo

n
Pag. 9
uso = 1

Pag. 19
uso = 1

1
Pag. 1
uso = 0

.
.
puntero al
prox. marco

Pag. 45
uso = 1

Pag. 191
uso = 1

Pag. 222
uso = 0

Pag. 556
uso = 0

Pag. 33
uso = 1
Pag. 67
uso = 1

7
6

Pag. 13
uso = 0
5

Estrategia del reloj


Estado del buffer despus
del reemplazo

n
Pag. 9
uso = 1

Pag. 19
uso = 1

1
Pag. 1
uso = 0

.
.

Pag. 45
uso = 0

Pag. 222
uso = 0

Pag. 191
uso = 0
Pag. 727
uso = 1

Pag. 33
uso = 1
Pag. 67
uso = 1

7
6

Pag. 13
uso = 0
5

Polticas de
reemplazo.Ejemplo

Buffering de pginas
Algoritmo FIFO
la pgina no se reemplaza
inmediatamente, se agrega a una de dos
listas
lista de marcos libres si la pgina no ha sido
modificada
lista de pginas modificadas

las listas funcionan como cache

Polticas de asignacin
Factores a tener en cuenta
menor cantidad de memoria para un proceso, mayor
cantidad de procesos residentes. Disminuye el
tiempo perdido en intercambios.
Pequea cantidad de pginas residentes, aumento de
tasa de fallos de pginas.
Despus de una cierta cantidad de marcos asignados
no hay efecto en la tasa de fallos de pgina

Polticas de asignacin
Asignacin fija
nmero fijo de marcos asignados a un proceso en
forma anticipada
pgina a reemplazar debe ser elegida entre los
marcos asignados a ese proceso
Se usan los algoritmos de reemplazo vistos
Desventajas:
Asignacin muy pequea: alto grado de fallos de pgina
Asignacin muy grande: bajo grado de multiprogramacin

Polticas de asignacin
Asignacin variable
nmero variable de marcos asignados a un proceso,
manteniendo el conjunto de trabajo
reemplazo
local: se elige la pgina a reemplazar entre los marcos
asignados a ese proceso
global: se elige la pgina a reemplazar entre los marcos
disponibles

Polticas de asignacin
Asignacin variable con alcance global
Ventaja:
Fcil de implementar

Desventaja
Quita marcos de otros procesos activos

Se puede usar combinada con buffering de


pginas para contrarrestar problemas

Polticas de asignacin
Asignacin variable con alcance local
Asignacin de un cierto nmero de marcos al
proceso
Cuando se produce un fallo se selecciona un
marco del proceso
De vez en cuando se vuelve a evaluar la
asignacin otorgada

Conjunto de trabajo
Conjunto de pginas que deben estar en
almacenamiento principal para que un
proceso se ejecute con eficiencia
basado en el principio de cercana
W(t,w) conj. de pginas a las que hizo
referencia el proceso en el intervalo t-w

Conjunto de trabajo
Polticas de asignacin basadas en conjuntos
de trabajo
intentan mantener el conjunto de trabajo de los
procesos activos en memoria real
si no se mantiene:
sobreutilizacin de la memoria real (cantidad de marcos >
conj. de trabajo)
hiperpaginacin (cantidad de marcos < conj. de trabajo)

Conjuntos de trabajo
Problemas:
los conjuntos de trabajo de un proceso son
transitorios
medir el conjunto de trabajo de cada proceso
es imprctico
el tamao ptimo de la ventana no se conoce

Algoritmo de frecuencia de
fallas de pgina
Ajusta el conjunto de pginas residentes de
un proceso
frecuencia de fallas de pgina o,
tiempo entre fallas
> lmite superior
liberan pginas no referenciadas ltimamente

< lmite inferior


pgina entrante se convierte en miembro del conjunto
residente

Polticas de vaciado
Vaciado por demanda
una pgina se escribe en disco solamente
cuando ha sido seleccionada para reemplazo

Prevaciado
las pginas se escriben por lotes

Polticas de vaciado
Buena solucin usando buffering de pginas
las pginas reemplazadas se colocan en dos listas
modificadas o sin modificar

las pginas en la lista modificadas se escriben por


lotes peridicamente
las pginas sin modificar pueden usarse si se
referencian nuevamente o perderse si se asigna su
marco a otra pgina

Control de carga
Determina el nmero de procesos que
estarn residentes en la memoria principal
Muy pocos procesos, muchas ocasiones
en que el procesador estar desocupado
porque no hay procesos listos
Demasiados procesos activos,
hiperpaginacin

Suspensin de procesos
Procesos con la prioridad ms baja
Procesos con fallos de pginas
este proceso no tiene su conjunto de trabajo en
memoria, por lo tanto se bloquear de cualquier
manera

ltimo proceso activado


este proceso es el que tiene menos posibilidades
de tener su conjunto de trabajo residente

Suspensin de procesos
Procesos con el conjunto residente ms chico
este proceso requiere el menor esfuerzo futuro para
volver a cargarse

Proceso ms grande
se obtiene la mayor cantidad de marcos libres

Proceso con la mayor ventana de ejecucin


restante

Manejo de memoria en UNIX y


Solaris
Sistema de paginado
Estructuras de datos
Tabla de pginas - una por proceso
Descriptor de bloque de disco - describe la copia de
disco de la pgina virtual
Tabla de datos de marco de pgina - describe cada
marco de memoria real
Tabla de uso de swap - una por dispositivo de swap

Manejo de memoria en UNIX y


Solaris
Reemplazo de pgina
refinamiento de la poltica de reloj conocida
como algoritmo de reloj de dos manecillas

Asignador de memoria para kernel


la mayora de los bloques son ms chicos
que el tamao de una pgina tpica

Manejo de memoria en Linux


Directorio de pginas
Directorio intermedio de pginas
Tabla de pginas

Manejo de memoria en Linux

Manejo de memoria en
Windows
Asignacin de memoria
Espacio de direcciones virtual por proceso 2
gigabytes

Estados de una pgina


disponible
reservada
comprometida

Asignacin dinmica, alcance local

Manejo de memoria en
Windows

You might also like