
¿Cómo se realizará la traducción de la dirección en modo usuario? Si el usuario tiene una tabla de páginas separada, ¿dónde se almacenan? Además, ¿cómo accederá el usuario a las tablas de páginas almacenadas en el espacio de direcciones del kernel en un sistema que tiene un mecanismo de recorrido por tablas de páginas de hardware?
Respuesta1
El kernel configura las tablas de páginas para cada proceso. El mapeo de direcciones virtuales a físicas lo realiza la unidad de administración de memoria (MMU) en el hardware. Esto se hace de forma transparente para el código del modo de usuario. El modo de usuario no cambia las tablas de páginas y solo son visibles para el kernel.
El espacio de direcciones virtuales del proceso se divide en áreas con diferentes propiedades: algunas áreas son de solo lectura, otras de lectura y escritura y, por lo general, la mayoría de las direcciones virtuales no tienen ningún mapeo. Las violaciones de acceso son manejadas por el kernel. Por ejemplo, cuando un proceso accede a una ubicación de memoria que no tiene asignación a un marco de memoria física, se genera una excepción. Esta excepción (trampa) es manejada por el código del kernel, que puede finalizar el proceso, enviarle una señal o el kernel puede crear de forma transparente una asignación para la página.
De forma transparente (para el código de modo de usuario), la asignación de una página puede ocurrir porque la página se ha intercambiado. En este caso, el llamado controlador de errores de página asigna la página a un marco de RAM físico libre y organiza la lectura de la página desde el espacio de intercambio. Cuando se ha restaurado la página, el proceso está programado para ejecutarse nuevamente y el proceso puede continuar su ejecución como si nada hubiera sucedido.