6

Centrémonos en los sistemas informáticos de un solo procesador. Cuando se crea un proceso, hasta donde yo sé, la tabla de la página se configura, lo que asigna las direcciones virtuales al espacio de direcciones de la memoria física. Cada proceso obtiene su propia tabla de página, almacenada en el espacio de direcciones del kernel. Pero, ¿cómo elige la MMU la tabla de página correcta para el proceso, ya que no solo se está ejecutando un proceso y habrá muchos cambios de contexto?¿Cómo el sistema elige la tabla de la página correcta?

¡Se agradece cualquier ayuda!

mejor, Simon

Respuesta

2

La MMU en este caso no se da cuenta por completo de lo que es un proceso. El sistema operativo, que mantiene el seguimiento de los procesos, genera una tabla de páginas para cada proceso, como dices, a medida que se crean. El proceso para el cambio de contexto es el siguiente:

  1. El sistema operativo le dice a la MMU para usar la tabla de páginas se encuentra en la dirección física 0xFOO

  2. los programas del sistema de funcionamiento del temporizador de interrupción programable (PIT) para causar una interrupción de hardware después de BAR milisegundos.

  3. El sistema operativo restaura el estado del proceso (registros de CPU, contador de programa, etc.) y salta a la dirección correcta.

  4. El proceso se ejecuta hasta que el PIT desencadena una interrupción.

  5. La rutina del sistema operativo para manejar la interrupción PIT guarda el estado del programa (registros etc.), utiliza un algoritmo de programación para determinar el próximo proceso a ejecutar (en un caso simple, una lista circular vinculada), luego vuelve a comenzar en el paso 1.

Espero que aclare cualquier duda que pueda tener. La respuesta corta: la MMU es independiente del proceso y no sabe qué es un proceso.

+0

Gracias por su rápida respuesta. ¿Entonces dices que el sistema operativo limpia y restaura la tabla de páginas en cada cambio de contexto? – saimn

+0

@ user1435023 Esencialmente. El sistema operativo le dice a la MMU dónde se encuentra la tabla en la memoria física como un puntero, luego la MMU maneja el enjuague del TTL y otras tareas de hardware. Dependiendo de la MMU, el sistema operativo puede tener un control más detallado de los detalles de bajo nivel, pero esto no es estrictamente necesario. En el nivel más simple, todo lo que le importa al sistema operativo es decirle a la MMU qué tabla de páginas usar. – Dougvj

+0

@ user1435023 Corrección: significa TLB anterior, * no * TTL. Nathan Binkert respondió más sobre el aspecto TLB de las cosas – Dougvj

13

Los procesadores tienen un registro privilegiado llamado el registro base de la tabla de páginas (PTBR), en x86 es CR3. En un cambio de contexto, el sistema operativo cambia el valor de la PTBR para que el procesador sepa qué tabla de página usar. Además del PTBR, muchos procesadores modernos tienen una noción de un número de espacio de direcciones (ASN). Los procesos reciben un número de espacio de dirección (de un grupo limitado) y este ASN también se establece en un registro en un cambio de contexto. Este ASN se usa como parte de la coincidencia de TLB y permite que las entradas de TLB provenientes de múltiples espacios de direcciones coexistan. Solo cuando se reutiliza un ASN es necesario purgar el TLB, y luego solo para las entradas que coincidan con ese ASN. La mayoría de las implementaciones de x86 son más generales que esto y hay una noción de páginas globales (para bibliotecas compartidas y datos compartidos).

+0

Eso fue útil gracias – JohnnyCat

Cuestiones relacionadas