2. Administración de Memoria
Objetivos de la Administración de Memoria
Proveer una abstracción simple de programación
Proveer aislamiento entre procesos
Asignar memoria (limitada) a procesos que la
requieren maximizando el rendimiento,
productividad y minimizando sobrecarga (overhead)
Mecanismos
Memoria física versus virtual
Administración de tablas de páginas y segmentación
Algoritmos de reemplazamiento de páginas
3. Memoria Virtual
Abstracción básica que proporciona SO para la
administración de memoria
Memoria virtual habilita la ejecución de procesos sin
estar contenidos completamente en memoria física
• Consecuencia inmediata: un proceso puede requerir más
memoria de la disponible físicamente
Posible porque muchos programas no necesitan todo el
código o datos al mismo tiempo
• Por ejemplo, datos en una rama condicional que nunca son
accesados
• SO puede asignar memoria física durante tiempo de ejecución
(cuando sea requerido)
Memoria Virtual aisla procesos
• Cada proceso tiene su propio espacio de direccionamiento
4. Memoria Virtual cont
La implementación de Memoria virtual
requiere apoyo del hardware
MMUs, TLBs, tablas de páginas
5. Historia
Sistemas Batch
Programas usaban memoria física directamente
OS cargaba trabajo, lo ejecutaba y lo descargaba
Sistemas Multiprogramados
Múltiples procesos coexistían en memoria al mismo tiempo
• Procesos usaban CPU y dispositivos I/O simultáneamente
Requerimientos de administración de memoria
• Protección, restringiendo espacios de direccionamiento para evitar
daños entre ellos
• Traducción rápida, acceso a la memoria debe ser rápida
• Cambio de contexto, debe ser rápido, (protección y traducción)
Swapping
• Salvar el estado de programa completo (incluyendo memoria) a
disco para permitir la ejecución de otros
• Swap in : de disco a memoria
• Swap out : de memoria a disco
6. Direcciones Virtuales
Para facilitar el manejo de memoria de múltiples
procesos, procesos manejan memoria virtual
Direcciones virtuales son independientes de las
direcciones de memoria física (donde realmente
código y datos están)
• SO determina ubicación de memoria física
Las instrucciones con las cuales trabaja la CPU
usan direcciones virtuales
• punteros, argumentos de load/store, PC, etc
Traducción de direcciones virtuales a físicas se
realiza por hardware con ayuda del SO
7. Direcciones Virtuales cont
El conjunto de direcciones virtuales que un
proceso puede direccionar corresponde a su
espacio de direccionamiento
Existen muchos mecanismos para la traducción de
direcciones virtuales a físicas
• Particiones fijas
• Particiones variables
• Paginación (técnica moderna)
• Segmentación (técnica moderna)
• Paginación y segmentación
8. Traducción con Particiones Fijas
Memoria física se divide en particiones fijas
Todas las particiones son de tamaño fijo y nunca cambian
• Pero pueden haber particiones de diferentes tamaños
Hardware requerido: registro base y registro límite
• dirección física = dirección virtual + registro base
• Registro base es cargado por el SO después de cambio de
contexto, y entonces un proceso se va a ejecutar
• Como se asegura la protección?
• Si (dirección física > base + limite) entonces error
Ventajas
• Sencillo, cambio de contexto rápido
Desventajas
• Fragmentación interna
• Partición mas grande de lo necesario (sobra memoria que no
puede utilizar otro proceso)
• Fragmentación externa
• Caso en que dos particiones disponibles pero ambas muy
pequeñas para contener un proceso mas grande
• Tamaño de la partición (cuál debería ser?)
9. Particiones fijas
Partición 2
2K (tamaño P2)
offset
Base de P2: 6K
Registro límite
dirección virtual
viene de CPU
Registro base
Si
No
Memoria física
Error de
direccionamiento
Partición 0
Partición 1
Partición 3
+<
0
2K
6K
8K
12K
10. Traducción con Particiones Variables
Memoria física es dividida en particiones variables
Tamaño de particiones varía dinámicamente no
preestablecidas como en caso de particiones fijas
Requerimientos Hardware: registros base y límite
Dirección física = dirección virtual + registro base
• Registro límite se usa para protección
• if (dirección física < registro limite) then
• dirección física = dirección virtual + registro
base
• Else
• Error de direccionamiento
• Registro base : contiene valor de la dirección física menor posible
• Registro límite : contiene mayor rango de direcciones virtuales
11. Traducción con Particiones Variables
Partición 2
Tamaño de P2
offset
Registro límite
dirección virtual
viene de CPU
Registro base
Si
No
Memoria física
Error de
direccionamiento
Partición 0
Partición 1
Partición 3
+<
12. Traducción con Particiones Variables cont
Ventajas
• No hay fragmentación interna ( si sabemos
cuanto necesita proceso)
• Asignar partición solo lo suficiente para
contener proceso
Problemas
• Fragmentación externa
• a medida que procesos de distinto
tamaño entran y salen van quedando
porciones de memoria sin posibilidades
de ser reutilizada
13. Qué hacer con fragmentación?
Swap out : Sacar
programa de
memoria
recargar
programas
alrededor
poniedolos
cercanos y
generando huecos
No muy eficiente
partición 0
partición 1
partición 2
partición 3
partición 4
partición 0
partición 1
partición 2
partición 3
partición 4
14. Paginación (Técnica actual)
Para solucionar el problema de fragmentación externa dada
con particiones variables. Usar particiones fijas en memoria
virtual y física
Marco pág. 0
Marco pág. 1
Marco pág. N
Página 0
Página 1
Página N
Memoria Virtual
Memoria Física
15. Visión del usuario
Procesos ven memoria como un espacio
contiguo de 0 a M
En realidad la memoria física esta
desparramada
Cada página virtual se mapea a una página real
(marco de página) que esta en cualquier parte
en memoria física
Mapeo es invisible al programa
Protección esta dada porque un programa no
puede referenciar memoria que esta fuera de
su espacio de direccionamiento virtual
Si dos procesos tienen la misma dirección virtual
su mapeo a memoria física es distinta para cada
proceso
16. Paginación
Traduciendo direcciones virtuales
Una dirección virtual tiene dos partes:
• Número de página virtual y offset
Número de página virtual es un índice en tabla
de páginas
Entrada en tabla de página contiene número de
marco de página
Dirección física se traduce a:
• Número Marco de página:offset
17. Tablas de Páginas
Manejadas por el SO
Mapea Número de Pagina Virtual a Número
de Marco de Página
Número de Página Virtual es índice en la tabla
Existe una Entrada en la Tabla de Páginas por
página en el espacio de direccionamiento
virtual
• Normalmente denominada como PTE (Page Table
Entry)
19. Ejemplo de Paginación
Asumir direcciones de 32 bits
Páginas de 4KB (4096 bytes, 212
bytes)
Número de páginas virtuales de 20 bits, offset es
de 12 bits (220
posibles páginas virtuales)
Traducir la dirección virtual 0x13325328
(representación Hexa)
Número Página Virtual : 0x13325, offset 0x328
Asumir que en tabla de páginas, entrada
direccionada por 0x13325 es 0x03876 (Número
de Marco de Página)
• 0x13325 se mapea a 0x03876
Dirección de memoria física : 0x03876328
20. Entradas de Tablas de Páginas (PTE)
Estructura de cada entrada en la tabla de páginas
Usualmente mas que solo el número de marco de
página
1 1 1 2 20
V R M Prot Marco de pagina
V : Bit válido. indica si página es válida
R : Bit de Referencia se setea cuando página ha sido leída
o escrito
M : Dirty bit, es seteado cuando la página ha sido escrita
Prot : Bits de protección de Lectura, Escritura, Ejecución
21. Ventajas de la Paginación
Fácil para asignar memoria física
Memoria física se administra usando una lista de marcos
de páginas libres
• Para asignar un marco de página, se saca de la lista
Fragmentación externa no es un problema
• Cómo ?
Fácil quitarle páginas a programas
Páginas son del mismo tamaño
Uso de bit válido para saber que páginas ha perdido el
proceso
Tamaño de páginas definido como múltiplos de tamaños
de bloques de disco
22. Desventajas de Paginación
Expone Fragmentación interna
Proceso no puede usar memoria de marco de página
que le sobra a otro proceso
Referencia a memoria en 2 pasos
• Tabla de página y luego Memoria
• Solución, usar hardware como cache para acelerar
referencias : Translation Lookaside buffer (TLBs)
Memoria requerida para mantener tablas de páginas
puede ser grande
• Necesita una entrada en tabla de página por número
de página virtual
23. Desventajas de Paginación cont
Direccionamiento virtual de 32 bits, tamaño página de
4KB, entonces
Se necesitan 220
entradas = 1.048.576 Entradas
Si se tiene 4 bytes/Entrada, entonces se necesitan 4MB
por tabla de páginas
• En general SO tiene tablas de páginas separadas por
proceso
• Con 25 procesos en el sistema, entonces 100MB
en tablas de páginas
Solución a este gran uso de memoria solo para tablas
de páginas
Paginar las tablas de páginas
24. Segmentación
Paginación
Vista de espacio de direccionamiento como arreglo de
bytes (lineal)
Divide espacio en páginas de igual tamaño (ejemplo
4KB)
Usa tabla de página para mapear páginas virtuales a
páginas físicas
• Terminología
• Página : página virtual
• Marco : página física
Segmentación
Dividir el espacio de direccionamiento en unidades
lógicas
• Stack, código, heap, datos, procedimientos
Una dirección virtual es [número segmento, offset]
25. Cuál es la idea?
Más lógico
Cada segmento asociado con contenido
lógico
Facilita compartición y reutilización
Un segmento es una unidad que se puede
compartir
Extensión de la idea de particiones variables
Un proceso utiliza un segmento (partición
variable)
Con segmentación un proceso tiene asociado
un conjunto de segmentos
26. Soporte Hardware
Tabla de segmentos
Múltiple pares de registros base/límite uno por
segmento
Segmentos identificados por número de segmento
• Identificador se usa como índice a tabla de segmentos
• Dirección virtual [num. segmento, offset]
• Dirección física se obtiene sumando dirección base de
segmento + offset
27. Ilustración Segmentación
segment 0
segment 1
segment 2
segment 3
segment 4
Memoria física
Num.segmento
+
Dir virtual
<?
Error de protección
SI
offset
baselimit
Tabla de segmentos
offsetbase
28. Ventajas y Desventajas
Compartir: Más fácil y natural
Problemas con fragmentación
asignación de memoria contigua
cuales deben ser los tamaños de los
fragmentos para los diversos tipos de
requerimientos en el sistema?
Qué hacer?
29. Combinar Segmentación con Paginación
Quienes
Arquitectura x86 soporta los dos mecanismos
Usar segmentos para manejar unidades
lógicas
Segmentos de diversos tamaños en base a
páginas
Usar páginas para particionar segmentos
• Cada segmento tiene propia tabla de páginas ( en
lugar de una tabla de páginas por proceso de
usuario)
• Luego asignación de memoria se simplifica a
paginación
• Dirección virtual [num segmento, num página, offset]
30. Linux
Un segmento de código para kernel, un segmento
para datos
Un segmento de código para usurio, un segmento
para datos de usuario
N segmentos de estado para N tareas (almacena
estado para cambio de contexto)
Una “tabla de segmentos de descriptores local”
Todos los segmentos son paginados
http://www.ibm.com/developerworks/linux/library/l-
memmod/