Administración de Memoria Memoria Virtual



Descargar 141 Kb.
Fecha de conversión19.01.2017
Tamaño141 Kb.

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
      • 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
  • base
  • limit
  • Tabla de segmentos
  • offset
  • base

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/



Compartir con tus amigos:


La base de datos está protegida por derechos de autor ©absta.info 2019
enviar mensaje

    Página principal