Next: Los modos de Trabajo
Up: Ejecución de instrucciones privilegiadas
Previous: Simulando las instrucciones privilegiadas
Este grupo de instrucciones forma un caso especial dentro de las instrucciones privilegiadas, principalmente porque accesan a dispositivos que están compartidos --por ejemplo puertos y discos duros, por mencionar algunos dispositivos--. Existen dos métodos generales para manejar este tipo de instrucciones. Dependiendo del tipo de MMV que se implante es la estrategia que se sigue para manejar las instrucciones privilegiadas de entrada y salida. El primer método consiste en dejar que se ejecuten las instrucciones y utilicen los dispositivos físicos que requieran (esta opción es muy adecuada para los MMV de tipo I). El segundo método es simular su comportamiento con los recursos del sistema operativo anfitrión (esta técnica la utilizan los demás tipos de MMV y CSIM).
Para implantar la primera técnica se requiere que el MMV corra en el mayor nivel de privilegio (que proporcione el procesador) y así ejecute las instrucciones privilegiadas.
Para implantar la segunda técnica, Rosenblum y Varadarajan [14] proponen atacar estas instrucciones planteando que un sistema operativo es, a final de cuentas, un programa con estradas y salidas (como se muestra en la figura 1.4).
Figure 1.4:
Interacciones de Entrada y Salida de un Sistema Operativo.
|
Las fuentes de las entradas y salidas para un sistema operativo incluyen excepciones y traps que llegan desde el modo de usuario (como son llamados al sistema, fallas de página, errores matemáticos, etc.), interrupciones y DMA de los dispositivos. Las salidas de un sistema operativo controlan el MMU, el contenido de la memoria de usuario, y la entrada y salida a los dispositivos. El hardware se puede simular utilizando servicios proporcionados por un sistema operativo de propósito general, aunque lo que se obtiene en la interfaz de hardware es diferente a lo que obtiene de un sistema operativo. Los sistemas operativos modernos proporcionan un nivel de funcionalidad capaz de emular los servicios del hardware con una velocidad aceptable[20].
Para tener una simulación completa de un núcleo, es necesario proporcionarle una comunicación con los dispositivos de E/S simulados. Las formas en que un SO accesa a los dispositivos de E/S son:
- El SO utiliza instrucciones de carga y almacenamiento para transmitir y
recibir comandos y datos de los dispositivos
- Los dispositivos utilizan el DMA para leer y escribir a la memoria
especificada por una instrucción.
- Los dispositivos utilizan interrupciones para notificar al CPU
condiciones interesantes.
La primera técnica se realiza usando instrucciones de carga y almacenamiento a direcciones de memoria que se marcan para que no se utilicen por el caché. Es posible implementar estas solicitudes de carga y almacenamiento marcando esta direcciones de memoria como inválidas. Entonces una señal atrapa las operaciones y se simula el flujo correcto de información con el simulador de E/S.
El DMA se implanta permitiendo el acceso de los dispositivos simulados al archivo de memoria física del simulador. El dispositivo puede implantar las operaciones de lectura y escritura a DMA leyendo y escribiendo a este archivo.
Las interrupciones se implantan haciendo que los dispositivos envíen una señal al proceso que tiene al simulador del hardware en ejecución. El simulador del hardware atrapa la señal y la convierte en una interrupción, la cual se envía a los manejadores de interrupción del Sistema Operativo.
Next: Los modos de Trabajo
Up: Ejecución de instrucciones privilegiadas
Previous: Simulando las instrucciones privilegiadas
Amilcar Meneses
2002-10-03