Вы находитесь на странице: 1из 30

Administracin de la Memoria y Memoria Virtual

Administracin de Memoria

Objetivos de la Administracin de Memoria


Proveer una abstraccin simple de programacin Proveer aislamiento entre procesos Asignar memoria (limitada) a procesos que la requieren maximizando el rendimiento, productividad y minimizando sobrecarga (overhead)

Mecanismos

Memoria fsica versus virtual Administracin de tablas de pginas y segmentacin Algoritmos de reemplazamiento de pginas

Memoria Virtual

Abstraccin bsica que proporciona SO para la administracin de memoria

Memoria virtual habilita la ejecucin de procesos sin estar contenidos completamente en memoria fsica
Consecuencia inmediata: un proceso puede requerir ms memoria de la disponible fsicamente

Posible porque muchos programas no necesitan todo el cdigo o datos al mismo tiempo
Por ejemplo, datos en una rama condicional que nunca son accesados SO puede asignar memoria fsica durante tiempo de ejecucin (cuando sea requerido)

Memoria Virtual aisla procesos


Cada proceso tiene su propio espacio de direccionamiento

Memoria Virtual cont

La implementacin de Memoria virtual requiere apoyo del hardware

MMUs, TLBs, tablas de pginas

Historia

Sistemas Batch

Programas usaban memoria fsica directamente OS cargaba trabajo, lo ejecutaba y lo descargaba Mltiples procesos coexistan en memoria al mismo tiempo
Procesos usaban CPU y dispositivos I/O simultneamente

Sistemas Multiprogramados

Requerimientos de administracin de memoria


Proteccin, restringiendo espacios de direccionamiento para evitar daos entre ellos Traduccin rpida, acceso a la memoria debe ser rpida Cambio de contexto, debe ser rpido, (proteccin y traduccin)

Swapping
Salvar el estado de programa completo (incluyendo memoria) a disco para permitir la ejecucin de otros Swap in : de disco a memoria Swap out : de memoria a disco

Direcciones Virtuales

Para facilitar el manejo de memoria de mltiples procesos, procesos manejan memoria virtual Direcciones virtuales son independientes de las direcciones de memoria fsica (donde realmente cdigo y datos estn)
SO determina ubicacin de memoria fsica

Las instrucciones con las cuales trabaja la CPU usan direcciones virtuales
punteros, argumentos de load/store, PC, etc

Traduccin de direcciones virtuales a fsicas 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 traduccin de direcciones virtuales a fsicas


Particiones fijas Particiones variables Paginacin (tcnica moderna) Segmentacin (tcnica moderna) Paginacin y segmentacin

Traduccin con Particiones Fijas

Memoria fsica se divide en particiones fijas


Todas las particiones son de tamao fijo y nunca cambian


Pero pueden haber particiones de diferentes tamaos

Hardware requerido: registro base y registro lmite


direccin fsica = direccin virtual + registro base Registro base es cargado por el SO despus de cambio de contexto, y entonces un proceso se va a ejecutar Como se asegura la proteccin?
Si (direccin fsica > base + limite) entonces error

Ventajas
Sencillo, cambio de contexto rpido

Desventajas
Fragmentacin interna
Particin mas grande de lo necesario (sobra memoria que no puede utilizar otro proceso)

Fragmentacin externa
Caso en que dos particiones disponibles pero ambas muy pequeas para contener un proceso mas grande Tamao de la particin (cul debera ser?)

Particiones fijas
0

Registro lmite Registro base


2K (tamao P2)
Base de P2: 6K

Particin 0
Particin 1

2K

offset

<

Si

6K Particin 2 8K

direccin virtual viene de CPU

No
Error de direccionamiento

Particin 3
12K

Memoria fsica

Traduccin con Particiones Variables

Memoria fsica es dividida en particiones variables

Tamao de particiones vara dinmicamente no preestablecidas como en caso de particiones fijas Requerimientos Hardware: registros base y lmite Direccin fsica = direccin virtual + registro base
Registro lmite se usa para proteccin

if (direccin fsica < registro limite) then direccin fsica = direccin virtual + registro base Else Error de direccionamiento
Registro base : contiene valor de la direccin fsica menor posible Registro lmite : contiene mayor rango de direcciones virtuales

Traduccin con Particiones Variables

Registro lmite Registro base


Tamao de P2

Particin 0
Particin 1

offset

<

Si

Particin 2

direccin virtual viene de CPU

No
Error de direccionamiento

Particin 3

Memoria fsica

Traduccin con Particiones Variables cont

Ventajas
No hay fragmentacin interna ( si sabemos cuanto necesita proceso) Asignar particin solo lo suficiente para contener proceso

Problemas
Fragmentacin externa a medida que procesos de distinto tamao entran y salen van quedando porciones de memoria sin posibilidades de ser reutilizada

Qu hacer con fragmentacin?

Swap out : Sacar programa de memoria recargar programas alrededor poniedolos cercanos y generando huecos No muy eficiente

particin 0 particin 1 particin 2 particin 3

particin 0 particin 1 particin 2 particin 3 particin 4

particin 4

Paginacin (Tcnica actual)

Para solucionar el problema de fragmentacin externa dada con particiones variables. Usar particiones fijas en memoria virtual y fsica Memoria Virtual
Pgina 0 Pgina 1

Memoria Fsica
Marco pg. 0 Marco pg. 1

Marco pg. N
Pgina N

Visin del usuario


Procesos ven memoria como un espacio contiguo de 0 a M En realidad la memoria fsica esta desparramada

Cada pgina virtual se mapea a una pgina real (marco de pgina) que esta en cualquier parte en memoria fsica Mapeo es invisible al programa

Proteccin esta dada porque un programa no puede referenciar memoria que esta fuera de su espacio de direccionamiento virtual

Si dos procesos tienen la misma direccin virtual su mapeo a memoria fsica es distinta para cada proceso

Paginacin

Traduciendo direcciones virtuales

Una direccin virtual tiene dos partes: Nmero de pgina virtual y offset Nmero de pgina virtual es un ndice en tabla de pginas Entrada en tabla de pgina contiene nmero de marco de pgina Direccin fsica se traduce a: Nmero Marco de pgina:offset

Tablas de Pginas

Manejadas por el SO Mapea Nmero de Pagina Virtual a Nmero de Marco de Pgina


Nmero de Pgina Virtual es ndice en la tabla Existe una Entrada en la Tabla de Pginas por pgina en el espacio de direccionamiento virtual
Normalmente denominada como PTE (Page Table Entry)

Ilustracin Paginacin
direccin virtual
npv offset Marco Pag 0 Marco Pag 1 Marco Pg 2

Marco Pag 3
nmp nmp npv: Num. pgina virtual nmp: Num. marco pgina offset

Marco Pag 4 . . .
Marco Pag N

direccin fsica

Ejemplo de Paginacin

Asumir direcciones de 32 bits Pginas de 4KB (4096 bytes, 212 bytes) Nmero de pginas virtuales de 20 bits, offset es de 12 bits (220 posibles pginas virtuales) Traducir la direccin virtual 0x13325328 (representacin Hexa) Nmero Pgina Virtual : 0x13325, offset 0x328 Asumir que en tabla de pginas, entrada direccionada por 0x13325 es 0x03876 (Nmero de Marco de Pgina) 0x13325 se mapea a 0x03876 Direccin de memoria fsica : 0x03876328

Entradas de Tablas de Pginas (PTE)


Estructura de cada entrada en la tabla de pginas Usualmente mas que solo el nmero de marco de pgina
1 1 1 2 20 Marco de pagina

V R M Prot

V : Bit vlido. indica si pgina es vlida R : Bit de Referencia se setea cuando pgina ha sido leda o escrito M : Dirty bit, es seteado cuando la pgina ha sido escrita Prot : Bits de proteccin de Lectura, Escritura, Ejecucin

Ventajas de la Paginacin

Fcil para asignar memoria fsica

Memoria fsica se administra usando una lista de marcos de pginas libres Para asignar un marco de pgina, se saca de la lista Fragmentacin externa no es un problema Cmo ?

Fcil quitarle pginas a programas


Pginas son del mismo tamao Uso de bit vlido para saber que pginas ha perdido el proceso Tamao de pginas definido como mltiplos de tamaos de bloques de disco

Desventajas de Paginacin

Expone Fragmentacin interna


Proceso no puede usar memoria de marco de pgina que le sobra a otro proceso Referencia a memoria en 2 pasos Tabla de pgina y luego Memoria Solucin, usar hardware como cache para acelerar referencias : Translation Lookaside buffer (TLBs) Memoria requerida para mantener tablas de pginas puede ser grande Necesita una entrada en tabla de pgina por nmero de pgina virtual

Desventajas de Paginacin cont

Direccionamiento virtual de 32 bits, tamao pgina de 4KB, entonces


Se necesitan 220 entradas = 1.048.576 Entradas Si se tiene 4 bytes/Entrada, entonces se necesitan 4MB por tabla de pginas En general SO tiene tablas de pginas separadas por proceso Con 25 procesos en el sistema, entonces 100MB en tablas de pginas

Solucin a este gran uso de memoria solo para tablas de pginas

Paginar las tablas de pginas

Segmentacin

Paginacin

Vista de espacio de direccionamiento como arreglo de bytes (lineal) Divide espacio en pginas de igual tamao (ejemplo 4KB) Usa tabla de pgina para mapear pginas virtuales a pginas fsicas
Terminologa
Pgina : pgina virtual Marco : pgina fsica

Segmentacin

Dividir el espacio de direccionamiento en unidades lgicas


Stack, cdigo, heap, datos, procedimientos

Una direccin virtual es [nmero segmento, offset]

Cul es la idea?

Ms lgico

Cada segmento asociado con contenido lgico Un segmento es una unidad que se puede compartir Un proceso utiliza un segmento (particin variable) Con segmentacin un proceso tiene asociado un conjunto de segmentos

Facilita comparticin y reutilizacin

Extensin de la idea de particiones variables


Soporte Hardware

Tabla de segmentos

Mltiple pares de registros base/lmite uno por segmento Segmentos identificados por nmero de segmento
Identificador se usa como ndice a tabla de segmentos Direccin virtual [num. segmento, offset] Direccin fsica se obtiene sumando direccin base de segmento + offset

Ilustracin Segmentacin

Tabla de segmentos limit Num.segmento Dir virtual offset base Memoria fsica

segment 0
segment 1 segment 2

SI

<?

segment 3

Error de proteccin base offset

segment 4

Ventajas y Desventajas

Compartir: Ms fcil y natural Problemas con fragmentacin

asignacin de memoria contigua cuales deben ser los tamaos de los fragmentos para los diversos tipos de requerimientos en el sistema?

Qu hacer?

Combinar Segmentacin con Paginacin

Quienes

Arquitectura x86 soporta los dos mecanismos

Usar segmentos para manejar unidades lgicas

Segmentos de diversos tamaos en base a pginas Usar pginas para particionar segmentos
Cada segmento tiene propia tabla de pginas ( en lugar de una tabla de pginas por proceso de usuario) Luego asignacin de memoria se simplifica a paginacin Direccin virtual [num segmento, num pgina, offset]

Linux

Un segmento de cdigo para kernel, un segmento para datos Un segmento de cdigo 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/lmemmod/

Вам также может понравиться