Administración de Memoria
Memoria Virtual
Cecilia Hernández
2007-1
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
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
Memoria Virtual cont
 La implementación de Memoria virtual
requiere apoyo del hardware
 MMUs, TLBs, tablas de páginas
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
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
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
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?)
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
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
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
+<
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
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
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
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
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
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)
Ilustración Paginación
nmp
npv
dirección virtual
dirección física
Marco Pag 0
Marco Pag 1
Marco Pag 3
Marco Pag 4
Marco Pag N
.
.
.
offset
offset
nmp
npv: Num. página virtual
nmp: Num. marco página
Marco Pág 2
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
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 
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
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
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
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]
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
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
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
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?
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]
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/

Administracion de-memorias

  • 1.
    Administración de Memoria MemoriaVirtual Cecilia Hernández 2007-1
  • 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ónbá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  Parafacilitar 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 ParticionesFijas  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 ParticionesVariables  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 ParticionesVariables 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 ParticionesVariables 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 confragmentació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 direccionesvirtuales  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)
  • 18.
    Ilustración Paginación nmp npv dirección virtual direcciónfísica Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pag N . . . offset offset nmp npv: Num. página virtual nmp: Num. marco página Marco Pág 2
  • 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 Tablasde 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 laPaginació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óncont  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  Vistade 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 laidea?  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  Tablade 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 segment1 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 conPaginació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 segmentode 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/