administracion de-memorias

30
Administración de Memoria Memoria Virtual Cecilia Hernández 2007-1

Upload: julia-caren

Post on 13-Jun-2015

368 views

Category:

Technology


1 download

DESCRIPTION

referencia del trabajo de memorias

TRANSCRIPT

Page 1: Administracion de-memorias

Administración de Memoria Memoria Virtual

Cecilia Hernández

2007-1

Page 2: Administracion de-memorias

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

Page 3: Administracion de-memorias

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

Page 4: Administracion de-memorias

Memoria Virtual cont

La implementación de Memoria virtual requiere apoyo del hardware MMUs, TLBs, tablas de páginas

Page 5: Administracion de-memorias

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

Page 6: Administracion de-memorias

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

Page 7: Administracion de-memorias

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

Page 8: Administracion de-memorias

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?)

Page 9: Administracion de-memorias

Particiones fijas

Partición 2

2K (tamaño P2)

offset

Base de P2: 6K

Registro límite

dirección virtualviene de CPU

Registro base

Si

No

Memoria física

Error dedireccionamiento

Partición 0

Partición 1

Partición 3

+<

0

2K

6K

8K

12K

Page 10: Administracion de-memorias

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

Page 11: Administracion de-memorias

Traducción con Particiones Variables

Partición 2

Tamaño de P2

offset

Registro límite

dirección virtualviene de CPU

Registro base

Si

No

Memoria física

Error dedireccionamiento

Partición 0

Partición 1

Partición 3

+<

Page 12: Administracion de-memorias

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

Page 13: Administracion de-memorias

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

Page 14: Administracion de-memorias

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

Page 15: Administracion de-memorias

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

Page 16: Administracion de-memorias

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

Page 17: Administracion de-memorias

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)

Page 18: Administracion de-memorias

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 virtualnmp: Num. marco página

Marco Pág 2

Page 19: Administracion de-memorias

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

Page 20: Administracion de-memorias

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álidaR : Bit de Referencia se setea cuando página ha sido leída

o escritoM : Dirty bit, es seteado cuando la página ha sido escritaProt : Bits de protección de Lectura, Escritura, Ejecución

Page 21: Administracion de-memorias

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

Page 22: Administracion de-memorias

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

Page 23: Administracion de-memorias

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

Page 24: Administracion de-memorias

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]

Page 25: Administracion de-memorias

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

Page 26: Administracion de-memorias

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

Page 27: Administracion de-memorias

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

Page 28: Administracion de-memorias

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?

Page 29: Administracion de-memorias

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]

Page 30: Administracion de-memorias

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/