La memoria alta es la parte de la memoria física de un ordenador que no está directamente mapeada por las tablas de páginas del núcleo de su sistema operativo . A veces, esta expresión también se utiliza como abreviatura de Área de Memoria Alta , que es un concepto completamente distinto.
Algunos núcleos de sistemas operativos, como Linux , dividen su espacio de direcciones virtuales en dos regiones, dedicando la más grande al espacio de usuario y la más pequeña al núcleo. En los ordenadores x86 de 32 bits actuales , esto suele (aunque no necesariamente, ya que es una opción configurable) adoptar la forma de una división de 3 GB/1 GB del espacio de direcciones de 4 GB, de modo que las direcciones virtuales del núcleo comienzan en 0xC0000000 y llegan hasta 0xFFFFFFFF. Los 896 MB inferiores, desde 0xC0000000 hasta 0xF7FFFFFF, se asignan directamente al espacio de direcciones físicas del núcleo, y los 128 MB restantes, desde 0xF8000000 hasta 0xFFFFFFFF, son utilizados bajo demanda por el núcleo para ser asignados a la memoria alta. En modo usuario , las traducciones solo son efectivas para la primera región, protegiendo así al núcleo de los programas de usuario ; pero en modo núcleo , las traducciones son efectivas para ambas regiones, lo que le da al núcleo una manera fácil de referirse a los búferes de los procesos: simplemente usa las asignaciones propias del proceso. [ 1 ]
Sin embargo, si el núcleo necesita acceder a memoria física para la cual aún no se ha proporcionado una traducción en el espacio de usuario, solo dispone de 1 GB (por ejemplo) de memoria virtual. En equipos con mucha memoria física, esto puede significar que existe memoria a la que el núcleo no puede acceder directamente; a esto se le llama memoria alta. Cuando el núcleo desea acceder a la memoria alta, crea una asignación sobre la marcha y la destruye al finalizar, lo que conlleva una penalización en el rendimiento.
Véase también
Referencias
- ↑ Memoria virtual I: el problema
Enlaces externos
- Memoria alta
- Memoria virtual I: el problema
- Arquitectura X86
- Gestión de memoria X86
- núcleo de Linux