2010-10-13 20 views
14

que buscando un poco (personalizados) administradores de memoria/asignador escrito en C y fue a través de algunos artículos, -asignador/administrador de memoria personalizado en C? cual enfoque?

Algunos enlaces:

tengo sandbox un pequeño servidor web utilizando cualquiera disponible y no tengo ningún problema en envolturas de escritura para el esquema de manejo de rosca/asignación. Apache WS utiliza pools de memoria para manejar la memoria y los pools no son persistentes, es por solicitud. ¿Pueden ustedes sugerir algo? ¿Algún buen/mejor enfoque para este problema? Mis requisitos son los siguientes; -

  1. (Limitado Tiempo de respuesta) la asignación y desasignación tiene que ser conocida de antemano, es decir algunos costo constante O (c), donde c es constante.

  2. fragmentación de tamaños heterogéneos asignación/desasignación o secuencias debe ser manejado, puedo escribir el esquema/envoltura para proporcionar la misma.

De verdad le agradecemos su ayuda y sus ideas!

+0

Estoy buscando algo similar y revisé el sitio web de IBM pero lo que muestran como 'malloc_init' es para Unix y la biblioteca incluida no está en Windows. En particular, estoy buscando una función para utilizar en su lugar 'sbrk()' - encontrar la última dirección válida del sistema operativo. – frank17

Respuesta

2

fragmentación de tamaños heterogéneos asignación/desasignación o secuencias debe ser manejado, puedo escribir el esquema /envoltura para proporcionar la misma.

Para evitar la fragmentación, tendrá que utilizar una estrategia de asignación de bloques híbrida. Híbrido aquí significa bloques de elementos de diferentes tamaños que tener bloques de elementos de un solo tamaño, es decir, el asignador (o una envoltura alrededor de él) debe mantener bloques de elementos de diferentes tamaños (pequeño, mediano y grande, etc.). Todas las solicitudes de asignación deben redondearse al límite del bloque más cercano. Esta estrategia asegurará que no sufrirá fragmentación externa, pero puede causar fragmentación interna. Puede encontrar más información en los siguientes enlaces:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

1

Sólo para añadir uno más a la lista de

Google Performance Tools

Mejora significativamente el rendimiento de asignación de memoria y tiene perfiles de CPU y memoria. Su implementación Thread-Caching Malloc está diseñada para ser bastante eficiente para aplicaciones multiproceso.

+0

¡Gracias! Se ve muy bien. Pero una duda, puedo estar equivocado, debido a la recolección de basura, ¿se convertirá en tiempo no real, me refiero a no tener "Tiempo de respuesta limitada"? – yadab