Administracion de Memoria

41,964
-1

Published on

Administracion de memoria

Published in: Technology, Education
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
41,964
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1,192
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Administracion de Memoria

  1. 1. Administración de Memoria Memoria Virtual Cecilia Hernández 2007-1
  2. 2. Administración de Memoria <ul><li>Objetivos de la Administración de Memoria </li></ul><ul><ul><li>Proveer una abstracción simple de programación </li></ul></ul><ul><ul><li>Proveer aislamiento entre procesos </li></ul></ul><ul><ul><li>Asignar memoria (limitada) a procesos que la requieren maximizando el rendimiento, productividad y minimizando sobrecarga (overhead) </li></ul></ul><ul><li>Mecanismos </li></ul><ul><ul><li>Memoria física versus virtual </li></ul></ul><ul><ul><li>Administración de tablas de páginas y segmentación </li></ul></ul><ul><ul><li>Algoritmos de reemplazamiento de páginas </li></ul></ul>
  3. 3. Memoria Virtual <ul><li>Abstracción básica que proporciona SO para la administración de memoria </li></ul><ul><ul><li>Memoria virtual habilita la ejecución de procesos sin estar contenidos completamente en memoria física </li></ul></ul><ul><ul><ul><li>Consecuencia inmediata: un proceso puede requerir más memoria de la disponible físicamente </li></ul></ul></ul><ul><ul><li>Posible porque muchos programas no necesitan todo el código o datos al mismo tiempo </li></ul></ul><ul><ul><ul><li>Por ejemplo, datos en una rama condicional que nunca son accesados </li></ul></ul></ul><ul><ul><ul><li>SO puede asignar memoria física durante tiempo de ejecución (cuando sea requerido) </li></ul></ul></ul><ul><ul><li>Memoria Virtual aisla procesos </li></ul></ul><ul><ul><ul><li>Cada proceso tiene su propio espacio de direccionamiento </li></ul></ul></ul>
  4. 4. Memoria Virtual cont <ul><li>La implementación de Memoria virtual requiere apoyo del hardware </li></ul><ul><ul><li>MMUs, TLBs, tablas de páginas </li></ul></ul>
  5. 5. Historia <ul><li>Sistemas Batch </li></ul><ul><ul><li>Programas usaban memoria física directamente </li></ul></ul><ul><ul><li>OS cargaba trabajo, lo ejecutaba y lo descargaba </li></ul></ul><ul><li>Sistemas Multiprogramados </li></ul><ul><ul><li>Múltiples procesos coexistían en memoria al mismo tiempo </li></ul></ul><ul><ul><ul><li>Procesos usaban CPU y dispositivos I/O simultáneamente </li></ul></ul></ul><ul><ul><li>Requerimientos de administración de memoria </li></ul></ul><ul><ul><ul><li>Protección, restringiendo espacios de direccionamiento para evitar daños entre ellos </li></ul></ul></ul><ul><ul><ul><li>Traducción rápida, acceso a la memoria debe ser rápida </li></ul></ul></ul><ul><ul><ul><li>Cambio de contexto, debe ser rápido, (protección y traducción) </li></ul></ul></ul><ul><ul><li>Swapping </li></ul></ul><ul><ul><ul><li>Salvar el estado de programa completo (incluyendo memoria) a disco para permitir la ejecución de otros </li></ul></ul></ul><ul><ul><ul><li>Swap in : de disco a memoria </li></ul></ul></ul><ul><ul><ul><li>Swap out : de memoria a disco </li></ul></ul></ul>
  6. 6. Direcciones Virtuales <ul><li>Para facilitar el manejo de memoria de múltiples procesos, procesos manejan memoria virtual </li></ul><ul><ul><li>Direcciones virtuales son independientes de las direcciones de memoria física (donde realmente código y datos están) </li></ul></ul><ul><ul><ul><li>SO determina ubicación de memoria física </li></ul></ul></ul><ul><ul><li>Las instrucciones con las cuales trabaja la CPU usan direcciones virtuales </li></ul></ul><ul><ul><ul><li>punteros, argumentos de load/store, PC, etc </li></ul></ul></ul><ul><ul><li>Traducción de direcciones virtuales a físicas se realiza por hardware con ayuda del SO </li></ul></ul>
  7. 7. Direcciones Virtuales cont <ul><li>El conjunto de direcciones virtuales que un proceso puede direccionar corresponde a su espacio de direccionamiento </li></ul><ul><ul><li>Existen muchos mecanismos para la traducción de direcciones virtuales a físicas </li></ul></ul><ul><ul><ul><li>Particiones fijas </li></ul></ul></ul><ul><ul><ul><li>Particiones variables </li></ul></ul></ul><ul><ul><ul><li>Paginación (técnica moderna) </li></ul></ul></ul><ul><ul><ul><li>Segmentación (técnica moderna) </li></ul></ul></ul><ul><ul><ul><li>Paginación y segmentación </li></ul></ul></ul>
  8. 8. Traducción con Particiones Fijas <ul><li>Memoria física se divide en particiones fijas </li></ul><ul><ul><li>Todas las particiones son de tamaño fijo y nunca cambian </li></ul></ul><ul><ul><ul><li>Pero pueden haber particiones de diferentes tamaños </li></ul></ul></ul><ul><ul><li>Hardware requerido: registro base y registro límite </li></ul></ul><ul><ul><ul><li>dirección física = dirección virtual + registro base </li></ul></ul></ul><ul><ul><ul><li>Registro base es cargado por el SO después de cambio de contexto, y entonces un proceso se va a ejecutar </li></ul></ul></ul><ul><ul><ul><li>Como se asegura la protección? </li></ul></ul></ul><ul><ul><ul><ul><li>Si (dirección física > base + limite) entonces error </li></ul></ul></ul></ul><ul><ul><li>Ventajas </li></ul></ul><ul><ul><ul><li>Sencillo, cambio de contexto rápido </li></ul></ul></ul><ul><ul><li>Desventajas </li></ul></ul><ul><ul><ul><li>Fragmentación interna </li></ul></ul></ul><ul><ul><ul><ul><li>Partición mas grande de lo necesario (sobra memoria que no puede utilizar otro proceso) </li></ul></ul></ul></ul><ul><ul><ul><li>Fragmentación externa </li></ul></ul></ul><ul><ul><ul><ul><li>Caso en que dos particiones disponibles pero ambas muy pequeñas para contener un proceso mas grande </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Tamaño de la partición (cuál debería ser?) </li></ul></ul></ul></ul>
  9. 9. 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
  10. 10. Traducción con Particiones Variables <ul><li>Memoria física es dividida en particiones variables </li></ul><ul><ul><li>Tamaño de particiones varía dinámicamente no preestablecidas como en caso de particiones fijas </li></ul></ul><ul><ul><li>Requerimientos Hardware: registros base y límite </li></ul></ul><ul><ul><li>Dirección física = dirección virtual + registro base </li></ul></ul><ul><ul><ul><li>Registro límite se usa para protección </li></ul></ul></ul><ul><ul><ul><ul><li>if (dirección física < registro limite) then </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>dirección física = dirección virtual + registro base </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Else </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Error de direccionamiento </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Registro base : contiene valor de la dirección física menor posible </li></ul></ul></ul><ul><ul><ul><li>Registro límite : contiene mayor rango de direcciones virtuales </li></ul></ul></ul>
  11. 11. 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 + <
  12. 12. Traducción con Particiones Variables cont <ul><li>Ventajas </li></ul><ul><ul><ul><li>No hay fragmentación interna ( si sabemos cuanto necesita proceso) </li></ul></ul></ul><ul><ul><ul><li>Asignar partición solo lo suficiente para contener proceso </li></ul></ul></ul><ul><li>Problemas </li></ul><ul><ul><ul><li>Fragmentación externa </li></ul></ul></ul><ul><ul><ul><ul><li>a medida que procesos de distinto tamaño entran y salen van quedando porciones de memoria sin posibilidades de ser reutilizada </li></ul></ul></ul></ul>
  13. 13. Qué hacer con fragmentación? <ul><li>Swap out : Sacar programa de memoria </li></ul><ul><li>recargar programas alrededor poniedolos cercanos y generando huecos </li></ul><ul><li>No muy eficiente </li></ul>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
  14. 14. Paginación (Técnica actual) <ul><li>Para solucionar el problema de fragmentación externa dada con particiones variables. Usar particiones fijas en memoria virtual y física </li></ul>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
  15. 15. Visión del usuario <ul><li>Procesos ven memoria como un espacio contiguo de 0 a M </li></ul><ul><li>En realidad la memoria física esta desparramada </li></ul><ul><ul><li>Cada página virtual se mapea a una página real (marco de página) que esta en cualquier parte en memoria física </li></ul></ul><ul><ul><li>Mapeo es invisible al programa </li></ul></ul><ul><li>Protección esta dada porque un programa no puede referenciar memoria que esta fuera de su espacio de direccionamiento virtual </li></ul><ul><ul><li>Si dos procesos tienen la misma dirección virtual su mapeo a memoria física es distinta para cada proceso </li></ul></ul>
  16. 16. Paginación <ul><li>Traduciendo direcciones virtuales </li></ul><ul><ul><li>Una dirección virtual tiene dos partes: </li></ul></ul><ul><ul><ul><li>Número de página virtual y offset </li></ul></ul></ul><ul><ul><li>Número de página virtual es un índice en tabla de páginas </li></ul></ul><ul><ul><li>Entrada en tabla de página contiene número de marco de página </li></ul></ul><ul><ul><li>Dirección física se traduce a: </li></ul></ul><ul><ul><ul><ul><li>Número Marco de página:offset </li></ul></ul></ul></ul>
  17. 17. Tablas de Páginas <ul><li>Manejadas por el SO </li></ul><ul><li>Mapea Número de Pagina Virtual a Número de Marco de Página </li></ul><ul><ul><li>Número de Página Virtual es índice en la tabla </li></ul></ul><ul><ul><li>Existe una Entrada en la Tabla de Páginas por página en el espacio de direccionamiento virtual </li></ul></ul><ul><ul><ul><li>Normalmente denominada como PTE (Page Table Entry) </li></ul></ul></ul>
  18. 18. 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
  19. 19. Ejemplo de Paginación <ul><li>Asumir direcciones de 32 bits </li></ul><ul><ul><li>Páginas de 4KB (4096 bytes, 2 12 bytes) </li></ul></ul><ul><ul><li>Número de páginas virtuales de 20 bits, offset es de 12 bits ( 2 20 posibles páginas virtuales) </li></ul></ul><ul><li>Traducir la dirección virtual 0x 13325 328 (representación Hexa) </li></ul><ul><ul><li>Número Página Virtual : 0x 13325 , offset 0x 328 </li></ul></ul><ul><ul><li>Asumir que en tabla de páginas, entrada direccionada por 0x 13325 es 0x 03876 (Número de Marco de Página) </li></ul></ul><ul><ul><ul><li>0x13325 se mapea a 0x03876 </li></ul></ul></ul><ul><ul><li>Dirección de memoria física : 0x 03876 328 </li></ul></ul>
  20. 20. Entradas de Tablas de Páginas (PTE) <ul><li>Estructura de cada entrada en la tabla de páginas </li></ul><ul><ul><li>Usualmente mas que solo el número de marco de página </li></ul></ul>1 1 1 2 20 V R M Prot Marco de pagina <ul><ul><ul><li>V : Bit válido . indica si página es válida </li></ul></ul></ul><ul><ul><ul><li>R : Bit de Referencia se setea cuando página ha sido leída o escrito </li></ul></ul></ul><ul><ul><ul><li>M : Dirty bit , es seteado cuando la página ha sido escrita </li></ul></ul></ul><ul><ul><ul><li>Prot : Bits de protección de Lectura, Escritura, Ejecución </li></ul></ul></ul>
  21. 21. Ventajas de la Paginación <ul><li>Fácil para asignar memoria física </li></ul><ul><ul><li>Memoria física se administra usando una lista de marcos de páginas libres </li></ul></ul><ul><ul><ul><li>Para asignar un marco de página, se saca de la lista </li></ul></ul></ul><ul><ul><li>Fragmentación externa no es un problema </li></ul></ul><ul><ul><ul><li>Cómo ? </li></ul></ul></ul><ul><li>Fácil quitarle páginas a programas </li></ul><ul><ul><li>Páginas son del mismo tamaño </li></ul></ul><ul><ul><li>Uso de bit válido para saber que páginas ha perdido el proceso </li></ul></ul><ul><ul><li>Tamaño de páginas definido como múltiplos de tamaños de bloques de disco </li></ul></ul>
  22. 22. Desventajas de Paginación <ul><li>Expone Fragmentación interna </li></ul><ul><ul><li>Proceso no puede usar memoria de marco de página que le sobra a otro proceso </li></ul></ul><ul><ul><li>Referencia a memoria en 2 pasos </li></ul></ul><ul><ul><ul><li>Tabla de página y luego Memoria </li></ul></ul></ul><ul><ul><ul><li>Solución, usar hardware como cache para acelerar referencias : Translation Lookaside buffer (TLBs) </li></ul></ul></ul><ul><ul><li>Memoria requerida para mantener tablas de páginas puede ser grande </li></ul></ul><ul><ul><ul><li>Necesita una entrada en tabla de página por número de página virtual </li></ul></ul></ul>
  23. 23. Desventajas de Paginación cont <ul><li>Direccionamiento virtual de 32 bits, tamaño página de 4KB, entonces </li></ul><ul><ul><li>Se necesitan 2 20 entradas = 1.048.576 Entradas </li></ul></ul><ul><ul><li>Si se tiene 4 bytes/Entrada, entonces se necesitan 4MB por tabla de páginas </li></ul></ul><ul><ul><ul><li>En general SO tiene tablas de páginas separadas por proceso </li></ul></ul></ul><ul><ul><ul><ul><li>Con 25 procesos en el sistema, entonces 100MB en tablas de páginas </li></ul></ul></ul></ul><ul><li>Solución a este gran uso de memoria solo para tablas de páginas </li></ul><ul><ul><li>Paginar las tablas de páginas </li></ul></ul>
  24. 24. Segmentación <ul><li>Paginación </li></ul><ul><ul><li>Vista de espacio de direccionamiento como arreglo de bytes (lineal) </li></ul></ul><ul><ul><li>Divide espacio en páginas de igual tamaño (ejemplo 4KB) </li></ul></ul><ul><ul><li>Usa tabla de página para mapear páginas virtuales a páginas físicas </li></ul></ul><ul><ul><ul><li>Terminología </li></ul></ul></ul><ul><ul><ul><ul><li>Página : página virtual </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Marco : página física </li></ul></ul></ul></ul><ul><li>Segmentación </li></ul><ul><ul><li>Dividir el espacio de direccionamiento en unidades lógicas </li></ul></ul><ul><ul><ul><li>Stack, código, heap, datos, procedimientos </li></ul></ul></ul><ul><ul><li>Una dirección virtual es [número segmento, offset] </li></ul></ul>
  25. 25. Cuál es la idea? <ul><li>Más lógico </li></ul><ul><ul><li>Cada segmento asociado con contenido lógico </li></ul></ul><ul><li>Facilita compartición y reutilización </li></ul><ul><ul><li>Un segmento es una unidad que se puede compartir </li></ul></ul><ul><li>Extensión de la idea de particiones variables </li></ul><ul><ul><li>Un proceso utiliza un segmento (partición variable) </li></ul></ul><ul><ul><li>Con segmentación un proceso tiene asociado un conjunto de segmentos </li></ul></ul>
  26. 26. Soporte Hardware <ul><li>Tabla de segmentos </li></ul><ul><ul><li>Múltiple pares de registros base/límite uno por segmento </li></ul></ul><ul><ul><li>Segmentos identificados por número de segmento </li></ul></ul><ul><ul><ul><li>Identificador se usa como índice a tabla de segmentos </li></ul></ul></ul><ul><ul><ul><li>Dirección virtual [num. segmento, offset] </li></ul></ul></ul><ul><ul><ul><li>Dirección física se obtiene sumando dirección base de segmento + offset </li></ul></ul></ul>
  27. 27. 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
  28. 28. Ventajas y Desventajas <ul><li>Compartir: Más fácil y natural </li></ul><ul><li>Problemas con fragmentación </li></ul><ul><ul><li>asignación de memoria contigua </li></ul></ul><ul><ul><li>cuales deben ser los tamaños de los fragmentos para los diversos tipos de requerimientos en el sistema? </li></ul></ul><ul><li>Qué hacer? </li></ul>
  29. 29. Combinar Segmentación con Paginación <ul><li>Quienes </li></ul><ul><ul><li>Arquitectura x86 soporta los dos mecanismos </li></ul></ul><ul><li>Usar segmentos para manejar unidades lógicas </li></ul><ul><ul><li>Segmentos de diversos tamaños en base a páginas </li></ul></ul><ul><ul><li>Usar páginas para particionar segmentos </li></ul></ul><ul><ul><ul><li>Cada segmento tiene propia tabla de páginas ( en lugar de una tabla de páginas por proceso de usuario) </li></ul></ul></ul><ul><ul><ul><li>Luego asignación de memoria se simplifica a paginación </li></ul></ul></ul><ul><ul><ul><li>Dirección virtual [num segmento, num página, offset] </li></ul></ul></ul>
  30. 30. Linux <ul><li>Un segmento de código para kernel, un segmento para datos </li></ul><ul><li>Un segmento de código para usurio, un segmento para datos de usuario </li></ul><ul><li>N segmentos de estado para N tareas (almacena estado para cambio de contexto) </li></ul><ul><li>Una “tabla de segmentos de descriptores local” </li></ul><ul><li>Todos los segmentos son paginados </li></ul><ul><li>http://www.ibm.com/developerworks/linux/library/l-memmod/ </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×