• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Administracion de-memorias
 

Administracion de-memorias

on

  • 298 views

referencia del trabajo de memorias

referencia del trabajo de memorias

Statistics

Views

Total Views
298
Views on SlideShare
298
Embed Views
0

Actions

Likes
0
Downloads
8
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Administracion de-memorias Administracion de-memorias Presentation Transcript

    • 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/