es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se ejecuta una instrucción en un modelo de memoria plana, cuando tanto la instrucción como los datos accedidos están ubicados en la misma página de la memoria?

El segundo párrafo en la sección 3.2.1 Modelo Básico de Memoria Plana en el “Manual del Desarrollador de Software de Arquitecturas Intel® 64 e IA-32 Volumen 3” tiene la siguiente frase:

Para implementar un modelo básico de memoria plana con la arquitectura IA-32, al menos se deben crear dos descriptores de segmento, uno para hacer referencia a un segmento de código y otro para hacer referencia a un segmento de datos (ver Figura 3-2). Ambos de estos segmentos, sin embargo, están mapeados al espacio de direcciones lineal completo: es decir, ambos descriptores de segmento tienen el mismo valor de dirección base de 0 y el mismo límite de segmento de 4 GBytes.

Por lo tanto, estoy inclinado a pensar que estos dos segmentos pueden superponerse en memoria, es decir, pueden contener páginas que pertenecen a los segmentos de código y datos. Pero esto va en contra de la imagen bien comportada mostrada en la Figura 3.2 (ver abajo), donde los dos segmentos (CS y DS) no se interceptan entre sí.

Imagen

Desde este enlace puedo ver que mi conjetura es correcta, es decir, el segmento de código y el segmento de datos pueden superponerse.

Supongamos ahora que una instrucción perteneciente a una página X en el segmento de código accede a datos en la misma página X. ¿Cómo maneja el sistema este caso? Me parece que la página X perteneciente al segmento de código tendrá que ser intercambiada al disco antes de que la instrucción sea ejecutada realmente. Entonces, ¿cómo se va a ejecutar?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la arquitectura IA-32, si una instrucción en el segmento de código intenta acceder a datos en la misma página, se producirá una falta de página. El manejador de falta de página luego verificará las entradas de la tabla de páginas para la dirección lineal que causó la falta y determinará la dirección física de la página. Si la página no está presente en la memoria física, se intercambiará desde el disco. Una vez que la página está en la memoria física, la instrucción continuará su ejecución. Sin embargo, no se recomienda tener segmentos superpuestos, ya que puede generar confusión y errores en la gestión de memoria.

Comments are closed.