Español
Electrónica industrial

MMU

Siglas de memory management unit (unidad de gestión de memoria).

MMU: hardware que traduce direcciones para un acceso seguro a la memoria

Una unidad de gestión de memoria (MMU) es un componente de hardware, generalmente integrado en un chip de procesador, que traduce las direcciones de memoria lógicas (o virtuales) generadas por un programa en ejecución a direcciones físicas en la RAM real. Cuando el software solicita datos de la ubicación de memoria 0x1000, la MMU intercepta esa solicitud, consulta sus tablas de traducción y dirige el hardware para recuperar datos de la dirección física real, que podría ser 0x5A000 o cualquier otra. Esta traducción ocurre en nanosegundos y es transparente para la aplicación.

La función principal de una MMU es la protección de la memoria y el aislamiento de direcciones. Cada proceso que se ejecuta en un sistema obtiene su propio espacio de direcciones virtuales, que generalmente comienza en la dirección cero. La MMU asegura que un programa no pueda leer o escribir accidentalmente (o maliciosamente) en la memoria que pertenece a otro programa o al kernel. Esto lo hace manteniendo tablas de páginas, que son estructuras de búsqueda que mapean páginas virtuales a marcos físicos, cada uno marcado con permisos de acceso. Si un programa intenta escribir en una memoria a la que no tiene derechos, la MMU señala una falla y el sistema operativo termina el proceso infractor.

Diseño físico y funcionamiento

Una MMU generalmente funciona con una granularidad de páginas, comúnmente de 4 KB en procesadores x86 y ARM, aunque algunos sistemas admiten tamaños de página variables o más grandes. La traducción ocurre a través de un recorrido de página: el procesador presenta una dirección virtual, la MMU busca en las tablas de páginas (a menudo una estructura de árbol de varios niveles para ahorrar memoria) y recupera la dirección física correspondiente y los bits de permiso. Las MMU modernas incluyen un búfer de traducción anticipada (TLB), una pequeña caché asociativa que almacena las traducciones utilizadas recientemente; un acierto de TLB devuelve una dirección física en uno o dos ciclos, mientras que un fallo de TLB requiere un recorrido completo de la tabla de páginas, lo que cuesta decenas o cientos de ciclos.

Las MMU son esenciales para los sistemas operativos modernos. Sin una, cada programa necesitaría cargarse en una ubicación fija y no debe exceder sus límites; esto dificulta la multitarea y hace que la seguridad sea casi imposible. Con una MMU, el sistema operativo puede cargar programas en cualquier lugar de la memoria física, intercambiar páginas inactivas al disco y evitar que un proceso bloquee a otros. Los sistemas embebidos sin una MMU (como los microcontroladores que ejecutan código bare-metal o kernels RTOS simples) sacrifican estas protecciones por una menor latencia y un hardware más simple.

Cuando una MMU falla o está mal configurada, el acceso a la memoria se vuelve poco fiable. Un TLB defectuoso o una tabla de páginas corrupta pueden hacer que un proceso lea o escriba datos incorrectos silenciosamente, o que falle repetidamente en direcciones válidas. Los desarrolladores que solucionan problemas de corrupción de memoria o fallos de página deben comprender cómo la MMU está traduciendo las direcciones, razón por la cual los depuradores de bajo nivel y las herramientas del kernel proporcionan comandos para inspeccionar las tablas de páginas y el contenido del TLB.

Fuentes

Entrada IG659909/04/2015

Más de Electrónica industrial

Ver todo

Reciba la palabra del día

Un término industrial cada día, con el oficio al que pertenece y por qué vale la pena conocerlo. Sin publicidad.