Академический Документы
Профессиональный Документы
Культура Документы
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
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)
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
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
El conjunto de direcciones virtuales que un proceso puede direccionar corresponde a su espacio de direccionamiento
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
Particin 0
Particin 1
2K
offset
<
Si
6K Particin 2 8K
No
Error de direccionamiento
Particin 3
12K
Memoria fsica
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
Particin 0
Particin 1
offset
<
Si
Particin 2
No
Error de direccionamiento
Particin 3
Memoria fsica
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
Swap out : Sacar programa de memoria recargar programas alrededor poniedolos cercanos y generando huecos No muy eficiente
particin 4
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
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
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
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
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
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 ?
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
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
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
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
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
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
segment 4
Ventajas y Desventajas
asignacin de memoria contigua cuales deben ser los tamaos de los fragmentos para los diversos tipos de requerimientos en el sistema?
Qu hacer?
Quienes
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/