¿Cuál es la necesidad de traducir la dirección virtual a la dirección física?

0

Estos son los puntos que leí en la Unidad de administración de memoria de la arquitectura ARM:

  1. Las direcciones virtuales (o direcciones lógicas) son direcciones proporcionadas por el sistema operativo a los procesos.
  2. Un espacio de direcciones virtuales por proceso
  3. Los programas utilizan direcciones virtuales. A medida que se ejecuta un programa, el hardware (con ayuda desde el sistema operativo) convierte cada dirección virtual en una dirección física.
  4. La conversión de una dirección virtual a una dirección física se llama dirección traducción
  5. Cuando se apaga la MMU, lo virtual actúa como salida en la dirección física.

Después de leer el quinto punto, quiero entender por qué se requiere la traducción de la dirección. ¿Es porque el tamaño de la memoria virtual es más pequeño que la memoria física? ¿Y por qué / cuándo se apaga la MMU?

    
pregunta Krishna Shweta

1 respuesta

4

La traducción de direcciones virtuales es necesaria por varias razones:

  1. Se puede abordar más RAM de las que hay disponibles. Por ejemplo, la CPU de mi computadora portátil puede ocupar 256 TB de memoria, mientras que solo tiene 8 Gb de memoria. Este espacio de direcciones adicional le permite al kernel asignar mucha más memoria de la que está disponible, y puede intercambiar páginas a disco por aplicaciones que no se están utilizando.

  2. La traducción de direcciones virtuales evita la fragmentación de la memoria. Imagine un programa que la frecuencia asigna y desasigna objetos grandes, el tamaño de una página de memoria. Si las direcciones fueran físicas, el espacio de la memoria se fragmentaría rápidamente, sin grandes áreas de memoria libres. Sin embargo, el kernel puede volver a asignar las direcciones físicas y virtuales para que siempre haya una gran parte de la memoria libre, y si parte del espacio de direcciones está fragmentado, ¿y qué? Solo las páginas de la memoria que están en uso deben estar respaldadas por la memoria física, y hay un montón de espacio de direcciones para poner nuevas asignaciones.

  3. Las direcciones virtuales brindan mayor seguridad. ¿Recuerdas esos errores de CPU a principios de este año, Spectre y Meltdown? Se basan en conocer cierta información sobre el mapeo de direcciones virtuales para diferentes procesos y el kernel. Si desactivas el direccionamiento virtual, ellos y otros ataques se vuelven mucho más fáciles porque entonces conoces las direcciones del kernel y otros procesos.

En cuanto a por qué apagaría la MMU, solo puedo suponer que se refiere al estado de la MMU durante el inicio del procesador, antes de que el núcleo haya configurado la tabla de páginas. No apagaría la MMU durante el funcionamiento normal de un sistema operativo.

    
respondido por el C_Elegans

Lea otras preguntas en las etiquetas