Next: Puertos de Excepción.
Up: Mach
Previous: Espacio de direcciones virtuales
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:
- Acceso ilegal (errores de bus, violaciones de proteción y
segmentación).
- Errores aritméticos (sobreflujo, división por cero, etc.).
- Instrucciones del hardware destinadas para el soporte de facilidades
como emulación, depuración y detección de errores.
El manejo de excepciones en Mach tiene los siguientes objetivos:
- Una facilidad con la semántica consistente para todas las excepciones.
- Una interfaz clara y simple.
- Soporte para depuración y manejo de errores.
- Evitar la duplicidad de la funcionalidad con el núcleo.
- Soporte de excepciones definidas por el usuario.
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:
- Puertos de envío y respuesta para el RPC.
- Las identidades de la tarea e hilo que ocacionan la excepción.
- Una clase excepción independiente de la máquina (ver
clasificaciones de excepciones).
- Dos campos dependientes de la máquina que identifican la
excepción.
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: Puertos de Excepción.
Up: Mach
Previous: Espacio de direcciones virtuales
Amilcar Meneses
2002-10-03