2011-11-02 5 views
5

si he mmap () algunos PRIVADO y ANÓNIMOS páginas y luego extenderlos con mremap(), que hace el nuevo espacio también consigue inicializa a ceros?¿Correlación de mapa de bits "inicializar" la memoria en el crecimiento?

he tratado de leer el código de mremap (mm/mremap.c) en la fuente de Linux, pero requiere algo de conocimiento específico del dominio que no tienen actualmente (VMA ### _ cosas). Ni siquiera seguro de que es el lugar adecuado para buscar ...

Pero, de lo que me he reunido creo que mremap() ed memoria se borra, es esto correcto?

asignación se hace de la siguiente

list = mmap(NULL, newSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) 

y después de reasignación se hace de la siguiente

newList = mremap(list, oldSize, newSize, MREMAP_MAYMOVE) 

Ah, y última, es una Linux pregunta específica, la ejecución de un núcleo reciente (> = 2.6.28) y libc (> = 2.11.1)

Respuesta

4

Las páginas anónimas son asignaciones de copia de escritura e universal página cero. Siempre han sido (en todos los sistemas, no solo Linux, que ofrece asignaciones anónimas) y siempre lo serán. Cuando mremap (o brk) amplía una asignación anónima, obtiene nuevas páginas anónimas (cero). No hay necesidad de inicializarlos usted mismo.

+0

Sí. Cualquier cosa menos cero páginas sería un agujero de seguridad también. –

+0

Se confunde con las asignaciones de copia en escritura de la página cero universal. Al menos en Linux, no es así como funciona 'mmap()'. Obtiene páginas físicas asignadas en el primer acceso a la memoria asignada, y este es el controlador de errores de página del kernel que pone a cero la página física y la mapea. No hay ninguna página cero universal involucrada. –

+1

¿Estás seguro? Ciertamente, para las asignaciones anónimas de solo lectura, no crea una página física para cada página. Lo que dije es definitivamente cierto en cierto sentido si habilitas la fusión de páginas duplicadas, pero puedo estar equivocado en general; No lo he probado RTFS o probado. –

Cuestiones relacionadas