Cómo la MMU traduce direcciones lógicas a físicas

Traducción de direcciones de la Unidad de Gestión de Memoria (MMU)

La MMU permite la memoria virtual al mapear las direcciones lógicas (virtuales) de cada proceso a marcos de RAM físicos.

Paso a paso (Tabla de páginas multinivel estilo x86)

  1. División de la dirección lógica (por ejemplo, 32 bits, páginas de 4 KB):
    • Índice del Directorio de Páginas (10 bits) → selecciona PDE en el Directorio de Páginas (registro CR3).
    • Índice de la Tabla de Páginas (10 bits) → selecciona PTE en la Tabla de Páginas.
    • Desplazamiento de página (12 bits) → desplazamiento de byte dentro del marco de 4 KB.
  2. Búsqueda en el Directorio de Páginas: la MMU lee el PDE. Si Presente=0 → Fallo de página (el SO carga la página desde el disco).
  3. Búsqueda en la Tabla de Páginas: la MMU lee el PTE. Si Presente=0 → Fallo de página.
  4. Dirección del marco físico: el PTE contiene el Número de Página Física (PPN) (bits superiores 20).
  5. Combinar: Dirección Física = (PPN << 12) | Desplazamiento de página.
  6. Caché TLB: el Bufón de Búsqueda de Traducción almacena asignaciones recientes (VPN → PPN) para omitir el recorrido de páginas en aciertos (~99 % de tasa de acierto).

Estructuras clave

  • CR3 (PDBR): Dirección física del Directorio de Páginas del proceso actual.
  • Banderas PDE / PTE: Presente, Lectura/Escritura, Usuario/Supervisor, Escritura directa, Caché deshabilitada, Accedido, Sucio, Global, NX (No-Ejecutar).
  • Manejador de fallo de página (SO): Asigna marco, actualiza PTE, reanuda la instrucción.

Extensiones

  • PAE (36 bits): 3 niveles, páginas grandes de 2 MB/4 MB.
  • x86-64 (4 niveles): PML4 → PDPT → PD → PT → página de 4 KB (48 bits virtuales).
  • ARMv8: Similar 4 niveles (TTBR0/1), granulos de 4 KB/16 KB/64 KB.

Resultado: Cada proceso ve un espacio de direcciones contiguo de 0–4 GB (32 bits) o 0–256 TB (48 bits), aislado y mayor que la RAM física.