Você está na página 1de 26

1

GESTION DE MEMORIA
Objetivos del gestor de memoria
S.O. multiplexa recursos entre procesos
Cada proceso cree que tiene una mquina para l solo
Gestin de procesos: Reparto de procesador
Gestin de memoria: Reparto de memoria
Objetivos:
Ofrecer a cada proceso un espacio lgico propio
Proporcionar proteccin entre procesos
Permitir que procesos compartan memoria
Dar soporte a las regiones del proceso
Maximizar el grado de multiprogramacin
Proporcionar a los procesos mapas de memoria muy grandes
Espacios lgicos independientes
No se conoce posicin de memoria donde un programa ejecutar
Cdigo en ejecutable genera referencias entre 0 y N
Ejemplo: Programa que copia un vector
LOAD R1, #1000
LOAD R2, #2000
LOAD R3, /1500
LOAD R4, [R1]
STORE R4, [R2]
INC R1
INC R2
DEC R3
JNZ /12
.................

Cabecera
Fichero Ejecutable
0
4
....
96
100
104
108
112
116
120
124
128
132
136
Vector destino a partir de direccin 2000
Tamao del vector en direccin 1500
Vector origen a partir de direccin 1000

Ejecucin en S.O. monoprogramado
S.O. en direcciones ms altas
Programa se carga en direccin 0
Se le pasa el control al programa
LOAD R1, #1000
LOAD R2, #2000
LOAD R3, /1500
LOAD R4, [R1]
STORE R4, [R2]
INC R1
INC R2
DEC R3
JNZ /12
.................

Memoria
0
4
8
12
16
20
24
28
32
36
....
Sistema Operativo
Reubicacin
Necesaria en S.O. con multiprogramacin:
Reubicar: Traducir direcciones lgicas a fsicas
Dir. lgicas: direcciones de memoria generadas por el programa
Dir. fsicas: direcciones de mem. principal asignadas al proceso
Funcin de traduccin:
Traduccin(IdProc, dir_lgica) dir_fsica
Reubicacin crea espacio lgico independiente para proceso
S.O. debe poder acceder a espacios lgicos de los procesos
Ejemplo: Programa tiene asignada memoria a partir de 10000
Sumar 10000 a direcciones generadas
Dos alternativas:
Reubicacin hardware o software

2
Reubicacin hardware
Hardware (MMU) encargado de traduccin
S.O. se encarga de:
Almacena por cada proceso su funcin de traduccin
Especifica al hardware qu funcin aplicar para cada proceso
Programa se carga en memoria sin modificar
LOAD R1, #1000
LOAD R2, #2000
LOAD R3, /1500
LOAD R4, [R1]
STORE R4, [R2]
INC R1
INC R2
DEC R3
JNZ /12
.................
Memoria
10000
10004
10008
10012
10016
10020
10024
10028
10032
10036
..........
Procesador
R. Instruccin
HW traduccin
LOAD R3, /1500
11500
10000
+
1500
PC
8
Reubicacin software
Traduccin de direcciones durante
carga del programa
Programa en memoria distinto del
ejecutable
Desventajas:
No asegura proteccin
No permite mover programa en
tiempo de ejecucin
LOAD R1, #11000
LOAD R2, #12000
LOAD R3, /11500
LOAD R4, [R1]
STORE R4, [R2]
INC R1
INC R2
DEC R3
JNZ /10012
.................
Memoria
10000
10004
10008
10012
10016
10020
10024
10028
10032
10036
..........

Proteccin
Monoprogramacin: Proteccin del SO
Multiprogramacin: Adems procesos entre s
Traduccin debe crear espacios disjuntos
Necesario validar todas las direcciones que genera el programa
La deteccin debe realizarla el hardware del procesador
El tratamiento lo hace el SO
En sistemas con mapa de E/S y memoria comn:
Traduccin permite impedir que procesos accedan
directamente a dispositivos de E/S
Compartimiento de memoria
Direcciones lgicas de 2 o ms procesos se corresponden con
misma direccin fsica
Bajo control del S.O.
Beneficios:
Procesos ejecutando
mismo programa
comparten su cdigo
Mecanismo de
comunicacin entre
procesos muy rpido
Requiere asignacin no
contigua:
zona compartida
zona compartida
zona privada 1
zona privada 2
zona privada 1
zona privada 2
Mapa proceso 1
Mapa proceso 2
zona compartida
Memoria
zona priv. 1 (P2)
zona priv. 1 (P1)
zona priv. 2 (P1)
zona priv. 2 (P2)

3
Problemas al compartir memoria
Si posicin de zona compartida
contiene referencia a otra
posicin de la zona
Ejemplo con zonas de cdigo:
Zona compartida contiene
instruccin de bifurcacin a
instruccin dentro de la zona
Ejemplo con zonas de datos:
Zona contiene una lista con
punteros
zona compartida
zona compartida
Mapa proceso 1
Mapa proceso 2
zona compartida
Memoria
1000
2000
1100 2100? 10000
10100
Soporte de regiones
Mapa de proceso no homogneo
Conjunto de regiones con distintas caractersticas
Ejemplo: Regin de codigo no modificable
Mapa de proceso dinmico
Regiones cambian de tamao (p.ej. pila)
Se crean y destruyen regiones
Existen zonas sin asignar (huecos)
Gestor de memoria debe dar soporte a estas caractersticas:
Detectar accesos no permitidos a una regin
Detectar accesos a huecos
Evitar reservar espacio para huecos
S.O. debe guardar una tabla de regiones para cada proceso

Maximizar rendimiento
Reparto de memoria maximizando grado de
multiprogramacin
Se desperdicia memoria debido a:
Restos inutilizables (fragmentacin)
Tablas requeridas por gestor de memoria
Menor fragmentacin Tablas ms grandes
Compromiso: Paginacin
Uso de memoria virtual para aumentar grado
de multiprogramacin
Direccin 50 del proceso 4
Direccin 10 del proceso 6
Direccin 95 del proceso 7
Direccin 56 del proceso 8
Direccin 0 del proceso 12
Direccin 5 del proceso 20
Direccin 0 del proceso 1
Direccin 51 del proceso 4
Direccin 88 del proceso 9
.........................................
.........................................
Memoria
0
1
2
3
4
5
6
N-1
N
Aprovechamiento de
memoria ptimo e
irrealizable
Mapas de memoria muy grandes para procesos
Procesos necesitan cada vez mapas ms grandes
Aplicaciones ms avanzadas o novedosas
Resuelto gracias al uso de memoria virtual
Antes se usaban overlays:
Programa dividido en fases que se ejecutan sucesivamente
En cada momento slo hay una fase residente en memoria
Cada fase realiza su labor y carga la siguiente
No es transparente: Toda la labor realizada por programador

4
Fases en generacin de ejecutable
Aplicacin: conjunto de mdulos en lenguaje de alto nivel
Procesado en dos fases: Compilacin y Montaje
Compilacin:
Resuelve referencias dentro cada mdulo fuente
Genera mdulo objeto
Montaje (o enlace):
Resuelve referencias
entre mdulos objeto
Resuelve referencias a
smbolos de bibliotecas
Genera ejecutable
incluyendo bibliotecas
Mdulo
fuente A
Mdulo
fuente B
Compilador
Mdulo
objeto A
Mdulo
objeto B
Montador
Fichero
ejecutable
Bibliotecas
Bibliotecas de objetos
Biblioteca: coleccin de mdulos objeto relacionados
Bibliotecas del sistema o creadas por el usuario
Bibliotecas Estticas:
Montaje: enlaza los mdulos objeto del programa y de las bibliotecas
Ejecutable autocontenido
Desventajas del montaje esttico:
Ejecutables grandes
Cdigo de funcin de biblioteca repetido en muchos ejecutables
Mltiples copias en memoria del cdigo de funcin de biblioteca
Actualizacin de biblioteca implica volver a montar
Main
Cdigo
Funcin A
Funcin B
Funcin de biblioteca F1
Funcin de biblioteca F2

Bibliotecas dinmicas
Carga y montaje de biblioteca en tiempo de ejecucin
Ejecutable contiene:
Nombre de la biblioteca
Rutina de carga y montaje en tiempo de ejecucin
En 1 referencia a smbolo de biblioteca en tiempo de ejecucin:
Rutina carga y monta biblioteca correspondiente
Ajusta instruccin que realiza referencia para que prximas
referencias accedan a smbolo de biblioteca
Problema: Se modificara el cdigo del programa
Solucin tpica: Referencia indirecta mediante una tabla
Ventajas de bibliotecas dinmicas
Ventajas:
Menor tamao ejecutables
Cdigo de rutinas de biblioteca slo en archivo de biblioteca
Procesos pueden compartir cdigo de biblioteca
Actualizacin automtica de bibliotecas: Uso de versiones
Desventajas:
Mayor tiempo de ejecucin debido a carga y montaje
Tolerable: Compesa el resto de las ventajas
Ejecutable no autocontenido
Uso de bibliotecas dinmicas es transparente
Mandatos de compilacin y montaje igual que con estticas

5
Uso explcito de bib. dinmicas
Forma de uso habitual:
Se especifca en tiempo de montaje qu biblioteca usar pero
se pospone su carga y montaje a tiempo de ejecucin
Uso explcito:
Requerido por aplicaciones que determinan en tiempo de
ejecucin qu bibliotecas deben usar
No se especifica biblioteca en mandato de montaje
Programa solicita carga de bib. mediante servicio del sistema
dlopen en UNIX y LoadLibrary en Win32
Acceso no transparente a smbolos de la biblioteca
Programa necesita usar servicios del sistema para ello
dlsym en UNIX y GetProcAddress en Win32
Compartir bib. dinmicas
Biblioteca dinmica contiene referencias internas
Problema de zona compartida con autoreferencias
Tres posibles soluciones:
1. A cada bib. dinmica se le asigna rango de direcciones fijo
Inconveniente: Poco flexible
2. En montaje en t. de ejecucin se reajustan autoreferencias
Inconveniente: Impide compartir cdigo de biblioteca
3. Crear biblioteca con cdigo independiente de posicin(PIC)
Se genera cdigo con direccionamiento relativo a registro
Inconveniente (tolerable): dir. relativo menos eficiente

Formato del ejecutable
Distintos fabricantes usan diferentes formatos
Ejemplo: En Linux Executable and Linkable Format (ELF)
Estructura: Cabecera y conjunto de secciones
Cabecera:
Nmero mgico que identifica a ejecutable
Punto de entrada del programa
Tabla de secciones
Formato del ejecutable
Cabecera
Fichero Ejecutable
Nmero mgico
Contador de programa inicial
Tabla de secciones
Cdigo
Datos con valor inicial
Tabla de smbolos
....................
Cdigo
Datos con v.i.
Datos sin v.i.
...................... ........ ........
T. Smbolos
1000
5000
------
8000
4000
1000
500
1000
Despl. Tam.
. . . . . . . . . . . . . . . .
0
1000
5000
8000
Secciones

6
Secciones del ejecutable
Variedad de tipos de secciones. Ejemplo:
Tabla de smbolos para depuracin
Lista de bibliotecas dinmicas usadas
Ms relevantes en mapa de memoria del proceso:
Cdigo, Datos con valor inicial y Datos sin valor inicial
Cdigo (texto)
Contiene cdigo del programa
Datos con valor inicial
Variables globales inicializadas
Datos sin valor inicial
Variables globales no inicializadas
Aparece en tabla de secciones pero no se almacena en ejecutable
Por qu no hay seccin vinculada a variables locales?
Variables globales versus locales
Variables globales
Estticas
Se crean al iniciarse programa
Existen durante ejecucin del mismo
Direccin fija en memoria y en ejecutable
Variables locales y parmetros
Dinmicas
Se crean al invocar funcin
Se destruyen al retornar
La direccin se calcula en tiempo de ejecucin
Recursividad: varias instancias de una variable

Mapa de memoria de un proceso
Mapa de memoria o imagen del proceso: conjunto de regiones
Regin:
Tiene asociada una informacin (un objeto de memoria)
Zona contigua tratada como unidad al proteger o compartir
Cada regin se caracteriza por:
direccin de comienzo y tamao inicial
soporte: donde se almacena su contenido inicial
proteccin: RWX
uso compartido o privado
tamao fijo o variable
Crear mapa de memoria desde ejecutable
Ejecucin de un programa: Crea mapa a partir de ejectutable
Regiones de mapa inicial Secciones de ejecutable
Cdigo
Compartida, RX, T. Fijo, Soporte en Ejecutable
Datos con valor inicial
Privada, RW, T. Fijo, Soporte en Ejecutable
Datos sin valor inicial
Privada, RW, T. Fijo, Sin Soporte (rellenar 0)
Pila
Privada, RW, T. Variable, Sin Soporte (rellenar 0)
Crece hacia direcciones ms bajas
Pila inicial: argumentos del programa

7
Crear mapa desde ejecutable
Otras regiones del mapa de memoria
Durante ejecucin de proceso se crean nuevas regiones
Mapa de memoria tiene un carcter dinmico
Regin de Heap
Soporte de memoria dinmica (malloc en C)
Privada, RW, T. Variable, Sin Soporte (rellenar 0)
Crece hacia direcciones ms altas
Archivo proyectado
Regin asociada al archivo proyectado
T. Variable, Soporte en Archivo
Proteccin y carcter compartido o privado especificado en
proyeccin

Otras regiones del mapa de memoria
Memoria compartida
Regin asociada a la zona de memoria compartida
Compartida, T. Variable, Sin Soporte (rellenar 0)
Proteccin especificada en proyeccin
Pilas de threads
Cada pila de thread corresponde con una regin
Mismas caractersticas que pila del proceso
Carga de biblioteca dinmica
Se crean regiones asociadas al cdigo y datos de la
biblioteca
Mapa de memoria de un proceso hipottico

8
Operaciones sobre regiones
Para estudiar evolucin del mapa de memoria se pueden
distinguir las siguientes operaciones:
Crear regin
Implcitamente al crear mapa inicial o por solicitud del
programa en t. de ejecucin (p.ej. proyectar un archivo)
Eliminar regin
Implcitamente al terminar el proceso o por solicitud del
programa en t. de ejecucin (p.ej. desproyectar un archivo)
Cambiar tamao de la regin
Implcitamente para la pila o por solicitud del programa para
el heap
Duplicar regin
Operacin requerida por el servicio FORK de POSIX
Asignacin contigua
Mapa de proceso en zona contigua de memoria principal
Hardware requerido: Regs. valla (R. base y R. lmite)
Slo accesibles en modo privilegiado.

Asignacin contigua
S.O. mantiene informacin sobre:
Copia del valor de regs. valla de cada proceso en su BCP
En c. contexto S.O. carga en regs. valor adecuado
Estado de ocupacin de la memoria
Estructuras de datos que identifiquen huecos y zonas asignadas
Regiones de cada proceso
Este esquema presenta fragmentacin externa:
Se generan pequeos fragmentos libres entre zonas asignadas
Posible solucin: compactacin proceso costoso
Poltica de asignacin de espacio
Qu hueco usar para satisfacer una peticin?
Posibles polticas:
Primer ajuste: Asignar el primer hueco con tamao suficiente
Mejor ajuste: Asignar el menor hueco con tamao suficiente
Lista ordenada por tamao o buscar en toda la lista
Peor ajuste : Asignar el mayor hueco con tamao suficiente
Lista ordenada por tamao o buscar en toda la lista
Primer ajuste es ms eficiente y proporciona buen
aprovechamiento de la memoria
Estrategia ms sofisticada: Sistema Buddy
Listas de huecos con tamaos potencias de 2

9
Operaciones sobre regiones con a. contigua
Al crear proceso se le asigna zona de memoria de tamao fijo
Suficiente para albergar regiones iniciales
Con huecos para permitir cambios de tamao y aadir nuevas
regiones (p.ej. bibliotecas dinmicas o pilas de threads)
Dficil asignacin adecuada
Si grande se desperdicia espacio, si pequeo se puede agotar
Crear/liberar/cambiar tamao usan la tabla de regiones para
gestionar la zona asignada al proceso
Duplicar regin requiere crear regin nueva y copiar contenido
Limitaciones del hardware impiden compartir memoria y
detectar accesos errneos o desbordamiento de pila
Valoracin del esquema de asignacin contigua
Proporciona las funciones deseables en un gestor de memoria?
Espacios independientes para procesos:
mediante registros valla
Proteccin:
mediante registros valla
Compartir memoria:
no es posible
Soporte de regiones:
no existe
se reserva espacio para huecos
Maximizar rendimiento y mapas grandes
mal aprovechamiento de memoria por fragmentacin externa
no permite memoria virtual

Intercambio
Qu hacer si no caben todos los programas en mem. principal?
Uso de intercambio (swapping)
Swap: particin de disco que almacena imgenes de procesos
Swap out:
Cuando no caben en memoria procesos activos, se expulsa
proceso de memoria copiando imagen a swap
Diversos criterios de seleccin del proceso a expulsar
P.ej. Dependiendo de prioridad del proceso
Preferiblemente un proceso bloqueado
No expulsar si est activo DMA sobre mapa del proceso
No es necesario copiar todo el mapa (ni cdigo ni huecos)
Intercambio
Swap in:
Cuando haya espacio en memoria principal, se lee proceso a
memoria copiando imagen desde swap
Tambin cuando un proceso lleva un cierto tiempo expulsado
En este caso antes de swap in, hay swap out de otro
Asignacin de espacio en el dispositivo de swap:
Con preasignacin: se asigna espacio al crear el proceso
Sin preasignacin: se asigna espacio al expulsarlo
Usado en primeras versiones de UNIX
Solucin general Uso de esquemas de memoria virtual
Aunque se sigue usando integrado con esa tcnica

10
Memoria virtual
M. virtual: S.O. gestiona niveles de M. principal y M. secundaria
Transferencia de bloques entre ambos niveles
De M. secundaria a principal: por demanda
De M. principal a secundaria: por expulsin
Aplicable porque procesos exhiben proximidad de referencias
Procesos slo usan parte de su mapa en intervalo de tiempo
M. virtual: intentar que parte usada (conjunto de trabajo)
resida en m. principal (conjunto residente)
Direccin lgica Direccin virtual
Beneficios:
Aumenta el grado de multiprogramacin
Permite ejecucin de programas que no quepan en mem. ppal
No adecuada para sistemas de tiempo real
Normalmente basada en paginacin
Paginacin. Aspectos hardware
Asignacin no contigua.Unidad: pgina (tamao potencia de 2)
Mapa de memoria del proceso dividido en pginas
Memoria principal dividida en marcos (tam. marco=tam. pgina)
dir. lgica: n pgina + desplazamiento
Tabla de pginas (TP):
Relaciona cada pgina con el marco que la contiene
MMU usa TP para traducir direcciones lgicas a fsicas.
Tpicamente usa 2 TPs:
TP usuario: p.ej. dir. lgicas que empiezan por 0
TP sistema: p.ej. dir. lgicas que empiezan por 1
Slo se permite usar estas direcciones en modo sistema
Si mapa de E/S y memoria comn: dir. lgica dir. de E/S

Esquema de traduccin
Pgina
Registro base
de la TP
Byte
Direccin lgica
Marco de
pgina
.
.
.
Fragmentacin interna en paginacin
mem. asignada > mem. requerida
puede desperdiciarse parte de un marco asignado
T. Pginas Pr. 1
Pgina 0
Pgina 1
Pgina M
Marco 2
Marco 3
Marco N
..............
T. Pginas Pr. 2
Pgina 0
Pgina 1
Pgina P
Marco 4
Marco 1
Marco 0
..............
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Pg. 1 Pr. 2
............
Pg. 0 Pr. 1
Pg. 1 Pr. 1
Pg. M Pr. 1
Pg. 0 Pr. 2
Pg. P Pr. 2

11
Contenido de entrada de TP
Nmero de marco asociado
Informacin de proteccin: RWX
Si operacin no permitida Excepcin
Bit de pgina vlida/invlida
Si se accede Excepcin
Usado en mem. virtual para indicar si pgina presente
Bit de pgina accedida (Ref)
MMU lo activa cuando se accede a esta pgina
Bit de pgina modificada (Mod)
MMU lo activa cuando se escribe en esta pgina
Bit de desactivacin de cache:
se usa cuando la entrada corresponde con direcciones de E/S
Tamao de la pgina
Condicionado por diversos factores contrapuestos:
Potencia de 2 y mltiplo del tamao del bloque de disco
Mejor pequeo por:
Menor fragmentacin
Se ajusta mejor al conjunto de trabajo
Mejor grande por:
Tablas ms pequeas
Mejor rendimiento del dispositivo de E/S
Compromiso (entre 2K y 16K)

Gestin del S.O.
S.O. mantiene una TP por cada proceso
En c. contexto notifica a MMU cul debe usar
S.O. mantiene una nica TP para el propio S.O.
Proceso en modo sistema accede directamente a su mapa y al
del SO
S.O. mantiene tabla de marcos:
estado de cada marco (libre o ocupado, ...)
S.O. mantiene tabla de regiones por cada proceso
Mucho mayor gasto en tablas que con asignacin contigua
Es el precio de mucha mayor funcionalidad
Valoracin de la paginacin
Proporciona las funciones deseables en un gestor de memoria?
Espacios independientes para procesos:
mediante TP
Proteccin:
mediante TP
Compartir memoria:
entradas corresponden con mismo marco
Soporte de regiones:
bits de proteccin
bit de validez: no se reserva espacio para huecos
Maximizar rendimiento y mapas grandes
permite esquemas de memoria virtual

12
Implementacin de TP
TPs se mantiene normalmente en memoria principal
2 problemas: eficiencia y gasto de almacenamiento
Eficiencia:
Cada acceso lgico requiere dos accesos a memoria principal
a la tabla de pginas + al propio dato o instruccin
Solucin: cache de traducciones TLB
Gasto de almacenamiento:
Tablas muy grandes
Ejemplo: pginas 4K, dir. lgica 32 bits y 4 bytes por entrada
Tamao TP: 2
20
*4 = 4MB/proceso
Solucin:
tablas multinivel
tablas invertidas
Translation Look-aside Buffer (TLB)
Memoria asociativa con info. sobre ltimas pginas accedidas
cache de entradas de TP correspondientes a estos accesos
2 alternativas:
Entradas en TLB no incluyen informacin sobre proceso
Invalidar TLB en cambios de contexto
Entradas en TLB incluyen informacin sobre proceso
Registro de UCP debe mantener un ident. de proceso actual
Gestionada por HW:
MMU consulta TLB: Si fallo usa la TP en memoria
Casi trasparente al S.O.
Volcar a TP en c.contexto para actualizar Ref y Mod
Invalidar, si entradas no incluyen informacin del proceso
Diseo alternativo: TLB gestionada por SW

TP multinivel
Tablas de pginas organizadas en M niveles:
Entrada de TP de nivel K apunta a TP de nivel K+1
Entrada de ltimo nivel apunta a marco de pgina
Direccin lgica especifica la entrada a usar en cada nivel:
1 campo por nivel + desplazamiento
1 acceso lgico M + 1 accesos a memoria
Uso de TLB
Si todas las entradas de una TP son invlidas
No se almacena esa TP
Se pone invlida la entrada correspondiente de la TP superior
Esquema de traduccin con 2 niveles
Registrob ase delaTP Tabladepginasdeprimernivel TabladepginasdesegundonivelByte 1niv el er 2nivel Direccin lgica ... ...... Marc ode pgi na Registro base
de la TP
Pgina
Tabla de pginas
de primer nivel
Tabla de pginas
de segundo nivel
Byte 1 nivel
er
2 nivel Direccin lgica
.
.
.
.
.
.
.
.
.
Marco de
pgina

13
Ventajas de tablas multinivel
Si proceso usa una parte pequea de su espacio lgico
Ahorro en espacio para almacenar TPs
Ejemplo: Proceso que usa 12MB superiores y 4MB inferiores
2 niveles, pginas de 4K, dir. lgica 32 bits (10 bits por
nivel) y 4 bytes por entrada
Tamao: 1 TP N
1
+ 4 TP N
2
= 5 * 4KB = 20KB (frente a 4MB)
Ventajas adicionales:
Permite compartir TPs intermedias
Slo se requiere que est en memoria la TP de nivel superior
TPs restantes pueden estar en disco y traerse por demanda
Ventaja de tablas multinivel
memoria
primer nivel
Tabla de pginas
.
.
.
tablas de pginas
segundo nivel
.
.
.
.
.
.
.
.
.
primer nivel
Tabla de pginas
V
V
V
V
I
I
Pgina 0
Pgina 1023
Pgina 1024
Pgina 2047
Pgina 2048
Pgina 3071
Pgina 1048575 (2^20-1)
Pg. 1047552 (2^20-1024)

TP invertida
Procesadores actuales espacio lgico enorme (dirs. de 64 bits)
TPs muy grandes incluso usando multinivel
Posible solucin alternativa: Uso de TPs invertidas
Una entrada por cada marco indica pgina almacenada en l
Tamao de TP proporcional a memoria principal
Es necesario guardar nm. de pgina e id. de proceso
Procedimiento de traduccin:
MMU usa TLB convencional
Si fallo en TLB MMU busca traduccin en TP invertida
Para evitar bsqueda secuencial en TP invertida:
Se organiza como una tabla hash
Difcil implementar comparticin
Hay que tener en cuenta que aunque TP pequea, S.O. debe
guardar info. de pginas no residentes
Esquema de traduccin con TP invertida
Pgina PID
Pgina
Byte
i
Direccin lgica
Byte i
Direccin fsica
Tabla de pginas
invertida
pid

14
Segmentacin
Esquema HW que intenta dar soporte directo a las regiones
Generalizacin de reg base y lmite: 1 pareja por cada segmento
Direccin lgica: nm. de segmento + direccin en el segmento
MMU usa una tabla de segmentos (TS)
S.O. mantiene una TS por proceso
en c.contexto notifica a MMU cul debe usar
Entrada de TS contiene (entre otros):
r. base y lmite del segmento
proteccin: RWX
Fragmentacin externa: segmento es la unidad de asignacin
S.O. mantiene informacin sobre estado de la memoria:
Estructuras de datos que identifiquen huecos y zonas
asignadas
Esquema de traduccin con segmentacin
memoria
tabla de segmentos
lmite base
s d
direccin lgica
Excepcin
> +
SI
NO

Valoracin de la segmentacin
Proporciona las funciones deseables en un gestor de memoria?
Espacios independientes para procesos:
mediante TS
Proteccin:
mediante TS
Compartir memoria:
compartir segmentos: misma entrada en diferentes TS
Soporte de regiones:
bits de proteccin
Maximizar rendimiento y mapas grandes
presenta fragmentacin externa
no facilita esquemas de memoria virtual debido a tamao
variable de segmentos
Esquema apenas usado
Segmentacin Paginada
Entrada en TS apunta a una TP para el segmento
Lo mejor de los dos mundos
Segmentacin:
Soporte directo de segmentos
Facilita operaciones sobre regiones:
Establecer proteccin Modificar slo una entrada de TS
Definir comparticin de segmento entradas de TS apuntando
a la misma TP de segmento
Paginacin:
Asignacin no contigua de segmento
Fragmentacin interna

15
Esquema de traduccin con seg. paginada
memoria
tabla de segmentos
lmite dir. T. Pg.
direccin lgica
Excepcin
>
SI
NO
s p d
m d
direccin
fsica
m
tabla de pginas
para segmento s
p
Valoracin de la seg. paginada
Proporciona las funciones deseables en un gestor de memoria?
Espacios independientes para procesos:
mediante TS
Proteccin:
mediante TS
Compartir memoria:
compartir segmentos: misma entrada en diferentes TS
Soporte de regiones:
bits de proteccin
Maximizar rendimiento y mapas grandes
permite esquemas de memoria virtual
Frente a paginacin:
Facilita al SO gestin de regiones pero requiere HW ms
complejo

Paginacin por demanda
Segmentacin pura no adecuada para memoria virtual
tamao de segmentos variable
Paginacin y segmentacin paginada s lo son:
Bloque transferido Pgina
M. virtual + Paginacin Paginacin por demanda
Estrategia de implementacin: Uso del bit de validez
Pgina no residente se marca como no vlida
En acceso: Excepcin de fallo de pgina
S.O. trae la pgina correspondiente de mem. secundaria
S.O. debe diferenciar entre pg. no residente y pg. invlida
Prepaginacin: Traer pginas por anticipado (no por demanda)
En fallo de pgina se traen adems otras pginas que se
considera que necesitar el proceso
Beneficiosa dependiendo de si hay acierto en la prediccin
Tratamiento del fallo de pgina
Tratamiento de excepcin (direccin de fallo disponible en reg.)
Si direccin invlida Aborta proceso o le manda seal
Si no hay ningn marco libre (consulta T. marcos)
Seleccin de vctima (Alg. de reemplazo): pg P marco M
Marca P como invlida
Si P modificada (bit Mod de P activo)
Inicia escritura P en mem. secundaria
Hay marco libre (se ha liberado o lo haba previamente):
Inicia lectura de pgina en marco M
Marca entrada de pgina vlida referenciando a M
Pone M como ocupado en T. marcos (si no lo estaba)
Fallo de pgina puede implicar dos operaciones en disco

16
Polticas de administracin de MV
Poltica de reemplazo:
Qu pgina reemplazar si hay fallo y no hay marco libre?
Reemplazo local
slo puede usarse para reemplazo un marco asignado al
proceso que causa fallo
Reemplazo global
puede usarse para reemplazo cualquier marco
Poltica de asignacin de espacio a los procesos:
Cmo se reparten los marcos entre los procesos?
Asignacin fija o dinmica
Algoritmos de reemplazo
Objetivo: Minimizar la tasa de fallos de pgina.
Cada algoritmo descrito tiene versin local y global:
local: criterio se aplica a las pginas residentes del proceso
global: criterio se aplica a todas las pginas residentes
Algoritmos presentados
ptimo
FIFO
Reloj (o segunda oportunidad)
LRU
Uso de tcnicas de buffering de pginas

Algoritmo ptimo
Criterio: pgina residente que tardar ms en accederse
Irrealizable
Versin local y global
Inters para estudios analticos comparativos
Algoritmo FIFO
Criterio: pgina que lleva ms tiempo residente
Fcil implementacin:
pginas residentes en orden FIFO se expulsa la primera
no requiere el bit de pgina accedida (Ref)
No es una buena estrategia:
Pgina que lleva mucho tiempo residente puede seguir
accedindose frecuentemente
Su criterio no se basa en el uso de la pgina
Anomala de Belady
Se pueden encontrar ejemplos que al aumentar el nmero de
marcos aumenta el nmero de fallos de pgina

17
Algoritmo del reloj (o 2 oportunidad)
FIFO + uso de bit de referencia Ref (de pgina accedida)
Criterio:
si pgina elegida por FIFO no tiene activo Ref
es la pgina expulsada
si lo tiene activo (2 oportunidad)
se desactiva Ref
se pone pgina al final de FIFO
se aplica criterio a la siguiente pgina
Se puede implementar orden FIFO como lista circular con una
referencia a la primera pgina de la lista:
Se visualiza como un reloj donde la referencia a la primera
pgina es la aguja del reloj
Algoritmo LRU
Criterio: pgina residente menos recientemente usada
Por proximidad de referencias:
Pasado reciente condiciona futuro prximo
Sutileza:
En su versin global: menos recientemente usada en el
tiempo lgico de cada proceso
Difcil implementacin estricta (hay aproximaciones):
Precisara una MMU especfica
Posible implementacin con HW especfico:
En entrada de TP hay un contador
En cada acceso a memoria MMU copia contador del sistema
a entrada referenciada
Reemplazo: Pgina con contador ms bajo

Buffering de pginas
Peor caso en tratamiento de fallo de pgina:
2 accesos a dispositivo
Alternativa: mantener una reserva de marcos libres
Fallo de pgina: siempre usa marco libre (no reemplazo)
Si nmero de marcos libres < umbral
demonio de paginacin aplica repetidamente el algoritmo
de reemplazo:
pginas no modificadas pasan a lista de marcos libres
pginas modificadas pasan a lista de marcos modificados
cuando se escriban a disco pasan a lista de libres
pueden escribirse en tandas (mejor rendimiento)
Si se referencia una pgina mientras est en estas listas:
fallo de pgina la recupera directamente de la lista (no E/S)
puede arreglar el comportamiento de algoritmos malos
Retencin de pginas en memoria
Pginas marcadas como no reemplazables
Se aplica a pginas del propio S.O.
S.O. con pginas fijas en memoria es ms sencillo
Tambin se aplica mientras se hace DMA sobre una pgina
Algunos sistemas ofrecen a aplicaciones un servicio para fijar en
memoria una o ms pginas de su mapa
Adecuado para procesos de tiempo real
Puede afectar al rendimiento del sistema

18
Estrategia de asignacin fija
Nmero de marcos asignados al proceso (conjunto residente) es
constante
Puede depender de caractersticas del proceso:
tamao, prioridad,...
No se adapta a las distintas fases del programa
Comportamiento relativamente predecible
Slo tiene sentido usar reemplazo local
Arquitectura impone n mnimo:
Por ejemplo: instruccin MOVE /DIR1, /DIR2 requiere un
mnimo de 3 marcos:
instruccin y dos operandos deben estar residentes para
ejecutar la instruccin
Estrategia de asignacin dinmica
Nmero de marcos vara dependiendo de comportamiento del
proceso (y posiblemente de los otros procesos)
Asignacin dinmica + reemplazo local
proceso va aumentando o disminuyendo su conjunto
residente dependiendo de su comportamiento
comportamiento relativamente predecible
Asignacin dinmica + reemplazo global
procesos se quitan las pginas entre ellos
comportamiento difcilmente predecible

Hiperpaginacin (Thrashing)
Tasa excesiva de fallos de pgina de un proceso o en el sistema
Con asignacin fija: Hiperpaginacin en P
i
Si conjunto residente de P
i
< conjunto de trabajo P
i
Con asignacin variable: Hiperpaginacin en el sistema
Si n marcos disponibles < conjuntos de trabajo de todos
Grado de utilizacin de UCP cae drsticamente
Procesos estn casi siempre en colas de dispositivo de
paginacin
Solucin (similar al swapping): Control de carga
disminuir el grado de multiprogramacin
suspender 1 o ms procesos liberando sus pginas residentes
Problema: Cmo detectar esta situacin?
Hiperpaginacin en el sistema
grado de multiprogramacin
U
t
i
l
i
z
a
c
i

n

d
e

l
a

U
C
P

19
Estrategia del conjunto de trabajo
Intentar conocer el conjunto de trabajo de cada proceso
pginas usadas por el proceso en las ltimas N referencias
Si conjunto de trabajo decrece se liberan marcos
Si conjunto de trabajo crece se asignan nuevos marcos
si no hay disponibles: suspender proceso(s)
se reactivan cuando hay marcos suficientes para c. de trabajo
Asignacin dinmica con reemplazo local
Difcil implementacin estricta
precisara una MMU especfica
Se pueden implementar aproximaciones:
Estrategia basada en frecuencia de fallos de pgina (PFF):
Controlar tasa de fallos de pgina de cada proceso
Estrategia basada en frecuencia de fallos
Si tasa < lmite inferior se liberan marcos aplicando un
algoritmo de reemplazo
Si tasa > lmite superior se asignan nuevos marcos
Si no marcos libres se suspende algn proceso
nmero de marcos
t
a
s
a

d
e

f
a
l
l
o
s

d
e

p

g
i
n
a
lmite superior
lmite inferior

Control de carga y reemplazo global
Algoritmos de reemplazo global no controlan hiperpaginacin
Incluso el ptimo!
Necesitan cooperar con un algoritmo de control de carga
Ejemplo: UNIX 4.3 BSD
Reemplazo global con algoritmo del reloj
Variante con dos manecillas
Uso de buffering de pginas
demonio de paginacin controla n de marcos libres
Si nmero de marcos libres < umbral
demonio de paginacin aplica reemplazo
Si se repite con frecuencia la falta de marcos libres:
Proceso swapper suspende procesos
Dispositivo de paginacin (swap)
Preasignacin de espacio
Cuando se crea una regin se le asigna espacio en swap
Al expulsar una pgina siempre tiene espacio reservado
Permite detectar sincronamente la falta de espacio de swap
Sin preasignacin de espacio
No se asigna espacio en swap al crear la regin
En primera expulsin se le asigna espacio en swap
Pgina que nunca se expulsa no gasta espacio en swap
Mejor aprovechamiento de espacio de almacenamiento
Mientras no se modifique la pgina no va a swap
Regiones compartidas no usan normalmente el swap
Algunos sistemas permiten aadir dispositivos de paginacin
dinmicamente e incluso usar archivos como swap
Acceso a archivos ms lento que acceso a dispositivos

20
Operaciones sobre regiones con m. virtual
Creacin de regin
Al crear mapa inicial o por solicitud posterior
Liberacin de regin
Al terminar el proceso o por solicitud posterior
Cambio de tamao de regin
Del heap o de la pila
Duplicado de regin
Creacin de regin (1/2)
Nueva regin no se le asigna m. principal (carga por demanda)
Pgs. de regin se marcan como invlidas pero vlidas para S.O.
S.O. actualiza t. de regiones y entradas de t. de pgs. Asociadas
Debe buscar hueco en mapa para asignar a nueva regin
Dependiendo del tipo de soporte:
Soporte en archivo
Pginas se marcan como Cargar de archivo (CA)
Se almacena direccin del bloque del archivo correspondiente
Sin soporte
Por seguridad, pgs. se marcan como Rellenar con ceros (RC)
Fallo de pgina no implica lectura de dispositivo
Si privada y preasignacin de swap, se reserva espacio de swap
Pila es especial: debe contener argumentos del programa
Tpicamente se copian args. en bloque(s) de swap

Creacin de regin (2/2)
Una vez creada regin, cuando se expulsa pgina modificada
Si la regin es privada se escribe pgina en swap
Si no preasignacin de swap en 1 expulsin se reserva espacio
Posteriores fallos se sirven de ese bloque de swap
Si la regin es compartida se escribe pgina en soporte
Todos los fallos se sirven del soporte
En creacin de mapa inicial :
Se crean regiones segn sus caractersticas
Cdigo: CA, Compartida, RX
Datos v. inicial: CA, Privada, RW
Datos sin v. inicial: RC, Privada, RW
Pila inicial: contenido inicial en swap
Huecos se marcan como invlidos tambin para S.O.
Creacin del mapa inicial
Tabla de pginas
...........................
Bloque T (arch.) RX A
Bloque U (arch.) RW A
Rellenar con 0 RW A
Bloque S (swap) RW A
...........................
...........................
Swap
Archivo Ejecutable
Cdigo
Datos con valor inicial
. . . . . . . . . . . . . . . .
Cabecera
Pila Bloque S
Bloque T
Bloque U
1pg.
Cdigo
1pg.
Dat.v.i.
1pg.
Dat.no.v.i.
1pg.
Pila

21

Liberacin de regin
Actualizar tabla de regiones para eliminar regin
Marcar como invlidas pginas asociadas
Si regin privada, se libera espacio de swap
La liberacin puede deberse a:
Solicitud explcita (p.ej. desproyeccin de regin)
Finalizacin del proceso
Cambio de tamao
Si disminuye, similar a liberacin pero slo parte afectada
Ajusta t. regiones, marca pgs. como invlidas y libera swap
Si aumenta tamao:
Comprobar no solapamiento
Fijar nuevas pginas como no residentes y con mismas
caractersticas que otras pginas de la regin
Si preasignacin: reserva espacio en swap para nuevas pgs.
Expansin del heap
Solicitada por programa mediante servicio de S.O.
Marca pginas correspondientes como RC, privadas, RW
Expansin de pila ms compleja: es automtica

Expansin de la regin de pila
Expansin automtica
Programa disminuye valor de SP y accede a zona expandida
Fallo de pgina
Tratamiento de fallo de pgina:
Si direccin realmente invlida
Si direccin < SP Aborta proceso o le manda seal
Si no Expansin de pila
Expansin de pila:
S.O. verifica que no hay solapamiento
Marca pginas como RC, privadas, RW
Si preasignacin: reserva espacio en swap
Sutileza: Siempre debe haber al menos una pgina invlida entre
pila y regin ms cercana
Duplicado de una regin
Necesario para FORK de UNIX
Duplicar regs. privadas del padre y compartir las no privadas
Copia de regin de un proceso en mapa de otro
Operacin costosa: se debe copiar contenido
FORK sera muy ineficiente
Adems, en la mayora de los casos el mapa duplicado del
hijo apenas se usa ya que despus viene un EXEC
Optimizacin: copy-on-write (COW)
Se comparte una pgina mientras no se modifique
Si un proceso la modifica se crea una copia para l
Duplicado por demanda

22
Copy-on-write
Implementacin de COW
Se comparten pginas de regiones duplicadas pero:
se marcan de slo lectura y con bit de COW
primera escritura Fallo de proteccin copia privada
Puede haber varios procesos con misma regin duplicada
Existe un contador de uso por pgina
Cada vez que se crea copia privada se decrementa contador
Si llega a 1, se desactiva COW ya que no hay duplicados
FORK con COW
Se comparten todas las regiones
Las regiones privadas se marcan como COW en padre e hijo
Resultado de la optimizacin del FORK:
En vez de duplicar espacio de memoria slo se duplica la TP
Archivos proyectados en memoria (1/2)
Generalizacin de memoria virtual
Entradas de TP referencian a un archivo de usuario
Programa solicita proyeccin de archivo (o parte) en su mapa
Puede especificar proteccin y si privada o compartida
S.O. rellena entradas correspondientes con:
No residente, CA
Privada/Compartida y Proteccin segn especifica la llamada
Cuando programa accede a posicin de memoria asociada a
archivo proyectado, est acediendo al archivo

Archivos proyectados en memoria (2/2)
Forma alternativa de acceso a archivos frente a read/write
Menos llamadas al sistema
Se evitan copias intermedias en cache del sistema de archivos
Se facilita programacin ya que una vez proyectado se
accede a archivo como a estructuras de datos en memoria
Se usa para carga de bibliotecas dinmicas
La zona de cdigo se proyecta como compartida
La zona de datos con valor inicial se proyecta como privada
Archivo proyectado
Tabla de pginas
...........................
Bloque 0 (arch.) RW A
Bloque N (arch.) RW A
...........................
...........................
Archivo
Bloque 0
Bloque 1
Bloque 2
Bloque N
Bloque 2
.............
10240
Mapa de memoria
Cdigo
Datos con valor inicial
Datos sin valor inicial
Pila
Archivo Proyectado
1pg.
Archivo
ltima pg.
Archivo

23
Servicios de gestin de memoria
Gestor de memoria realiza funciones internas
Ofrece pocos servicios directos a aplicaciones
Proyeccin de archivos son servicios ms usados:
Win32
Proyectar un archivo: 2 pasos:
Crear proyeccin: CreateFileMapping
Realizar proyeccin: MapViewOfFile
Desproyectar un archivo: UnmapViewOfFile
Servicios de memoria de Win32 (1/2)
HANDLE CreateFileMapping (HANDLE archivo,
LPSECURITY_ATTRIBUTES segur, DWORD prot, DWORD
tam_max_alta; DWORD tam_max_baja, LPCTSTR nombre);
Crea una proyeccin de un archivo
Devuelve identificador de la proyeccin
archivo archivo del que se crea una proyeccin
segur atributos de seguridad
prot el tipo de acceso (lectura, lectura/escritura o privada)
tam_max_alta y tam_max_baja tamao mximo de la
proyeccin
nombre nombre de la proyeccion

Servicios de memoria de Win32 (2/2)
LPVOID MapViewOfFile (HANDLE id_proy, DWORD acceso,
DWORD desp_alta, DWORD desp_baja, DWORD tamao);
Crea regin asociada a una proyeccin
id_proy identificador de la proyeccin
acceso lectura, escritura o lectura/escritura
desp_alta y desp_baja desplazamiento dentro del
archivo
tamao tamao de zona proyectada
BOOL UnmapViewOfFile (LPVOID dir);
Desproyecta el archivo
dir direccin de comienzo de la regin a desproyectar

24
PARA RECORDAR
El sistema de memoria debe ofrecer a cada proceso un espacio lgico propio.
El sistema de memoria debe proporcionar proteccin entre los procesos
El sistema de memoria debe permitir que los procesos compartan memoria
El sistema de memoria debe dar soporte a las regiones del proceso
El sistema de memoria debe maximizar el rendimiento del sistema.
El sistema de memoria debe proporcionar a los procesos mapas de memoria muy grandes
Las bibliotecas dinmicas ofrecen mltiples ventajas con respecto las estticas. Entre otras
disminuyen el tamao del ejecutable y permiten una actualizacin dinmica.
Un ejecutable esta formado por una cabecera y un conjunto de secciones. Las secciones
principales son el codigo, datos con valor inicial y sin valor inicial.
Las variables locales y parmetros no aparecen en el ejecutable, ya que se crean en tiempo de
ejecucin.
El mapa de memoria esta formado por varias regiones. Las regiones iniciales se corresponde con
las secciones del ejecutable mas la pila inicial.
Otras regiones se crean posteriormente de forma dinmica como el heap, las zonas de memoria
compartida y los archivos proyectados.
Una regin se caracteriza por su tamao, soporte, proteccin, carcter privado o compartido y
longitud fija o variable.
Se identifican las siguientes operaciones sobre una regin: creacin, liberacin, cambio de tamao y
duplicado.
Los esquemas de memoria mas primitivos son los de asignacin contigua que requieren que la
MMU tenga registros valla.
En los esquemas contiguos se aplica una estrategia de asignacin de espacio. Las ms tpicas son:
best-fit, worst-fit y first-fit (la mas adecuada)
El esquema de asignacin contigua no da soporte a las regiones, no permite compartir y tiene un
mal aprovechamiento de la memoria (fragmentacin externa)



25


Ejercicios Con Respuesta

1. Es siempre el algoritmo de reemplazo LRU mejor que el FIFO?

Generalmente, si es mejor el algoritmo LRU que el FIFO. Sin embargo y a pesar de que el LRU no tiene la
anomala de Belady y el FIFO si, este puede presentar un comportamiento mejor en cdigos, en los cuales, se
referencie con no mucha frecuencia a las mismas pginas de memoria. De este modo, se evitara que las
pginas que se sustituyen en memoria se referenciaran en un corto espacio de tiempo, con lo cual, se
minimizaran los fallos de pgina, obteniendo as un buen rendimiento, posiblemente superior al LRU.

2. Cul de las siguientes tcnicas favorece la proximidad de referencias?

- Un programa multiflujo.
- El uso de listas.
- La programacin funcional.
- La programacin estructurada.

3. Por qu una cache que se accede con direcciones virtuales puede producir incoherencias y requiere
que el sistema operativo la invalide en cada cambio de proceso y, en cambio, una que se accede con
direcciones fsicas no lo requiere?

Porqu las direcciones virtuales no corresponden con el mismo dato para procesos distintos, mientras que las
direcciones fsicas s.

4. Por qu una cache que se accede con direcciones virtuales permite que el acceso a la TLB y a la
cache se hagan en paralelo y, en cambio, una que se accede con direcciones fsicas no lo permite?
Por qu es conveniente que las caches que se acceden con direcciones fsicas tengan el mismo
tamao que la pgina?

Porque en el primer caso ambas direcciones se corresponden y se pueden comparar, mientras que en el
segundo caso no podemos comparar direccin fsica con virtual.

Para poder anular la cach ms fcilmente cuando haga cambios en la memoria y as evitamos posibles
inconsistencias.

5. Exponga uno o ms ejemplos de las siguientes situaciones:

- Fallo de pgina que no implica operaciones de entrada/salida.
26

Ej: Cuando el SSOO comprueba que la direccin a la que se est intentando acceder es invlida y
decide abortar el proceso.
Ej: Cuando se emplea buffering de pginas.

- Fallo de pgina que implica slo una operacin de lectura.

Ej: Cuando hay marcos libres y se quiere leer una pgina.

- Fallo de pgina que implica slo una operacin de escritura.

Ej: Cuando se quieren crear huecos libres.

- Fallo de pgina que implica una operacin de lectura y una de escritura.

Ej: Cuando se quiere leer y no hay huecos libres.

6. Sea un sistema de memoria virtual sin buffering de pginas. Analice la evolucin de una pgina en
este sistema dependiendo de la regin a la que pertenece. Estudie los siguientes tipos:

- Pgina de cdigo.

Se lee del fichero de programa original y no se modifica, pudindose as, expulsar y volver a leer del
fichero.

- Pgina de datos con valor inicial.

Se lee del fichero y una vez es modificado, se expulsa al swap y se lee de ah.

- Pgina de datos sin valor inicial.

No se lee del fichero y al modificarlo se expulsa y se lee del swap.

- Pgina de un archivo proyectado.

Nunca va al swap y siempre se lee, se escribe y se expulsa del archivo.

- Pgina de una zona de memoria compartida.

Depende de los procesos. Se libera al liberarse todos los procesos yendo al swap.

Você também pode gostar