next up previous contents
Next: Puertos de Excepción. Up: Mach Previous: Espacio de direcciones virtuales

Manejo de excepciones

Las excepciones son interrupciones asíncronas al flujo normal del control de un programa ocasionadas por la ocurrencia de condiciones inusuales durante la ejecución de un programa. Atrapar una excepción ocasiona que el sistema operativo maneje la recuperación desde la condición inusual. Las excepciones incluyen:

El manejo de excepciones en Mach tiene los siguientes objetivos:

Con lo que se evita la noción de que un manejador se esté ejecutando en el mismo contexto en el que ocurre la excepción. Esta no es una forma clara y directa para hacer disponible el contexto del hilo al mismo hilo. Como Mach soporta múltiples hilos en la misma tarea, es suficiente parar el hilo que ocaciona la excepción y ejecutar el manejador como otro hilo en la misma tarea.

La facilidad del manejo de excepciones de Mach permite que el usuario defina y maneje sus propias excepciones, agregándolas a las ya definidas en el sistema. Como el manejador nunca se ejecuta en el contexto del hilo victima, las primitivas de atrapar, esperar, notificar y limpiar constituyen un llamado a un procedimiento remoto (RPC). El manejador de excepciones se implementa utilizando en RPC basado en mensajes.

La excepción RPC consiste de dos mensajes: un mensaje inicial que invoca al RPC y una un mensaje de respuesta que lo completa. El mensaje inicial contine los siguientes elementos:

Si se completa el RPC, el mensaje de respuesta contiene los dos puertos y regresa el código del manejador que atiende la excepción.

Una excepción RPC corresponde a nuestro modelo de excepción de la siguiente forma:

raise
Envía el mensaje inicial.
wait
Espera recibir el mensaje de respuesta.
catch
Recibe el mensaje inicial.
clear
Envía el mensaje de respuesta.



 
next up previous contents
Next: Puertos de Excepción. Up: Mach Previous: Espacio de direcciones virtuales
Amilcar Meneses
2002-10-03