Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
S.O.: Asignacion de memoria dinamica
Gorka Guardiola
Laboratorio de Sistemas,Grupo de Sistemas y Comunicaciones,
URJC
10 de noviembre de 2011
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
(cc) 2008 Grupo de Sistemas y Comunicaciones.
Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Attribution-ShareAlike.
Para obtener la licencia completa, vease http://creativecommons.org/licenses/by-sa/2.1/es. Tambien puede
solicitarse a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Asignacion de memoria
I Tenemos un trozo (grande) de memoriaI Queremos repartirlo
I Dos operaciones, reservar, liberarI malloc(2), free(2)
I Dentro del kernel/runtime o en espacio de usuario
I Espacio de usuario, se reparte el heap (monton), parte delBSS,
I El BSS (y por tanto el heap) puede crecer con brk(2)
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Asignacion de memoria
I ¿Por que?
I Es importante para poder reutilizar
I ¿Que significa reservar y liberar?
I No tiene que ver con el contenido
I Me apunto en otro sitio que esta reservado
I ¿Donde lo apunto?: en la memoria
I El hueco que reservo y los metadatos compiten por el mismoespacio
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Limitaciones
I No puedo mover las reservas (¿Quien reescribe los punteros?)
I Tengo que servir las reservas/liberaciones en el orden quellegan
I Las reservas/liberaciones son irrevocables
I Hay que usar un algoritmo en lınea, servir las peticiones segunvienen
I Alineamiento a palabra (en el kernel mas)
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
¿Como se hace?
I Tengo que apuntarme que trozos hay libres y cuales estanocupados
I Intento hacerlo utilizando y desperdiciando poca memoria
I Exponiendo lo mınimo del mecanismo interno al usuario (porejemplo, free(2) no recibe el tamano)
I Tiene que costar poco tiempo (es un operacion comun)
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Herramientas
I El asignador puede elegir donde pone las cosas
I Y cuanto reserva de mas
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Fragmentacion
I ExternaI Posiciones ocupadas en medio no me dejan reservarI Ejemplo: en el cine solo quedan huecos de 2 personas pero
tenemos un grupo de 5.
I InternaI Reparto en cuantos mınimosI Para evitar la fragmentacion externaI Desperdicio espacioI Ejemplo: Mesas de 5 en el restaurante, si solo viene 1,
desperdicio 4.
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategia, polıtica, mecanismo
I Estrategia: de que nos vamos a aprovechar paraimplementarlo de forma eficiente
I Los programas reservan las cosas con una cierta regularidadI Hay tamanos mas comunesI Se liberan y reservan muchas cosas similares juntasI Como aprovecharemos esto, puede haber muchas polıticas que
lo implementen
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategia, polıtica, mecanismo
I Polıtica: como vamos a hacerloI El algoritmo en abstractoI Por ejemplo, buscar el primer hueco libre, o el que mejor se
ajusta
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategia, polıtica, mecanismo
I Mecanismo: que estructura de datos/funciones (detallado)I lista enlazada de libres y ocupados. . . ,I Cabeceras/Pies (headers/footers)I Funciones, implementacion del algoritmo
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategia, polıtica, mecanismo
I No estan aislados, la estrategia determina una familia depolıticas
I Las polıticas determinan que mecanismos son utiles o no
I En el sentido contrario, mecanismos inadecuados hacen unapolıtica ineficaz
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategias
I Minimizar la fragmentacion externaI Reservar huecos en un sitio que luego no se queden en
medio/dispersosI Agrupar juntas cosas que se crean y destruyen a la vezI Agrupar juntas cosas del mismo tamanoI Redondear a un tamano mınimo para que no queden recortes
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategias
I Minimizar la fragmentacion internaI Elegir con cuidado como ajusta el hueco a la reserva
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Estrategias
I Hacer que vaya rapidoI Caching de los trozos mas usadosI Segregacion por tamano o momento
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Polıticas
I Minimizar la fragmentacion externaI Best fit: buscar el hueco que mejor encajaI Worst fit: buscar el hueco que peor encajaI Tener un tamano mınimo
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Polıticas
I Hacerlo rapidoI First fit: el primero que encajaI Segregacion por tamanos
I Quick fit: caches por tamanosI Asignador compuesto: un algoritmo para bloques pequenos (se
usan mucho) y otros grandesI Buddy system: Dividir en dos recursivamente los huecos
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Polıticas
I Juntar huecos libres (coalescing) es costoso
I Si no lo hago, tengo mas fragmentacion (potencialmente)
I A veces no es tan importante, espero a que seaimprescindible, mantengo los huecos separados y luego losjunto (deferred coalescing)
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Mecanismos
I Tener una lista enlazada de libres
I Una estructura de datos con los diferentes tipos de tamanoslibres (un arbol binario para el buddy system, por ejemplo)
I Lo que hay libre lo apunto en lo que no estoy usando
I Poner una cabecera, un trozo de memoria justo antes de cadatrozo reservado, por ejemplo apunto tamano para saber enque lista buscar o mas.
I Poner un pie, para hacer mas facil juntar los trozos libres(coalescing), puedo aprovechar parte de la cabecera anterior
I Todo esto ocupa (desperdicia), mas espacio
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Mecanismos
I Envenenar la memoria para encontrar bugs
I Incluso aunque no tenga apuntados los ocupados, puedoponer un patron cuando los libero para detectar doble free
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Definicion del problema Limitaciones ¿Como se hace? Fragmentacion Estrategia, polıtica, mecanismo Estrategia Polıticas Mecanismos Compromisos
Compromisos
I A un lado de la balanza esta la cantidad de memoria que uso
I En estructuras de datos (cabeceras, pies, parte constante), enfragmentacion
I Al otro lado esta lo rapido que reserva y libera memoria
S.O.: Asignacion de memoria dinamica Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC