Lección 13: el espacio de direcciones virtual
Todo proceso en Linux ve su propio espacio de direcciones virtual — la ilusión de tener memoria privada. Esta lección explica la organización del VAS (text/data/heap/stack/mmap), muestra cómo leer /proc/self/maps, y explica por qué ASLR es importante para la seguridad.
Un espacio de direcciones virtual es como una casa de números: cada proceso cree que tiene una casa enorme solo para él, pero el sistema operativo traduce esos números a direcciones físicas reales.
- espacio de direcciones virtual (VAS)
- El espacio de direcciones privado que recibe cada proceso. Las direcciones virtuales se traducen a direcciones físicas mediante la MMU.
- stack
- Una región de memoria que crece hacia abajo (hacia direcciones más bajas). Contiene variables locales, direcciones de retorno y frames de funciones. Tiene un tamaño limitado.
- heap
- Región de memoria dinámica que crece hacia arriba. Se gestiona con malloc/new. Requiere liberación explícita o garbage collection.
- región mmap
- Una región creada por la llamada al sistema mmap() — contiene librerías compartidas (.so), archivos mapeados en memoria, y mapeos anónimos.
- ASLR
- Address Space Layout Randomisation — el sistema operativo aleatoriza las direcciones de carga de stack/heap/mmap en cada ejecución para dificultar la explotación de vulnerabilidades.