tengo - Modelo de memoria Linux IA-32
ver disco duro en linux (5)
Creo que las áreas grises simplemente representan regiones de tamaño indefinido. El texto del programa ciertamente no comenzaría en 0x0, porque la mayoría de los sistemas operativos los usan como páginas no válidas, por lo que las desreferencias nulas se pueden capturar fácilmente. Las pilas de subprocesos tampoco llegarían hasta 0xffffffff porque usualmente el cuarto superior (o mitad) tiene memoria de kernel mapeada.
Estoy mirando el modelo de memoria Linux IA-32 de un proceso y tengo una pregunta simple para él. ¿Qué contienen las áreas grises de la imagen? ¿Están solo incluidos para mostrar el comienzo y el final de la memoria? Entonces, ¿el texto comienza en 0x0 y la pila comienza en 0xFFFFFFFF?
Reabrió: Hola, en un curso de SO, estoy asistiendo a esta pregunta que se vuelve relevante de nuevo. Específicamente, necesito saber qué contienen las áreas grises. En base a las respuestas hasta ahora, puedo ver que contiene el código del núcleo en la parte superior y una página de eliminación de referencias del puntero nulo en la parte inferior. Pero, ¿cuál es el código del kernel? No asumo que es todo el sistema operativo en sí mismo, pero ¿podría ser un programador incrustado, llamadas a la biblioteca del kernel o?
Un saludo, Lasse Espeholt
texto alternativo http://img403.imageshack.us/img403/3156/capturecj.png
También tenga en cuenta que debido a la asignación al azar del diseño del espacio de direcciones , las direcciones iniciales de algunas de las secciones se compensan aleatoriamente con respecto a los valores en los diagramas.
Tenga en cuenta que el área de la página cero en la parte inferior del espacio de direcciones no está realmente prohibido para el uso de la aplicación en las distribuciones comunes de Linux. El kernel solía hacer esto, y luego terminaba sacando esa decisión al módulo LSM (por ejemplo, SELinux, AppArmor). Y no aplicaron la misma regla, por lo que resultó posible que los procesos mapeen la memoria en 0x0. Esto era parte de la vulnerabilidad detrás de los recientes exploits "kernel null puntero dereference".
Nadie parece haber mencionado que no toda la memoria en el espacio disponible está necesariamente mapeada (y casi nunca lo es).
Creo que esto es más preciso: