3.2. Las señales de software (signals)
Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.
Señales de Software — Descripción
Resumen
Las señales de software son el mecanismo que el SO proporciona para trasladar las interrupciones de hardware al ámbito del proceso. Permiten a los procesos recibir notificaciones de acontecimientos imprevistos o asíncronos.
Analogía con interrupciones de hardware
- Igual que las interrupciones de hardware, las señales dan soporte a situaciones que los procesos deben conocer y atender con urgencia.
- Ejemplo: un proceso puede necesitar saber si hubo un error de acceso a memoria, si un terminal fue apagado, etc.
Procedencia de las señales
-
Dispositivos de E/S: informan de situaciones como desconexión de terminal, pulsación de tecla de control, etc.
-
Excepciones: provocadas involuntariamente durante la ejecución (división por cero, overflow, acceso a memoria inválido, instrucción anómala).
-
Llamadas explícitas al sistema: un proceso envía una señal a otro (con permiso; generalmente entre procesos del mismo dominio de protección). Ejemplo: orden para eliminar un proceso, sincronización entre procesos.
-
Reloj del sistema: acciones a intervalos concretos de tiempo (timeout). Ejemplo: detectar si una línea de módem se ha cortado.
-
Efecto lateral de una llamada al sistema: el proceso padre recibe una señal cuando un hijo ha sido destruido.
Tratamiento de las señales
Cuando un proceso recibe una señal, puede:
- Tratamiento definido por el usuario: el proceso indica qué procedimiento ejecutar al recibir la señal.
- Ignorar: el proceso continúa su ejecución normalmente.
- Tratamiento por defecto del SO: normalmente la destrucción del proceso. El SO informa al proceso padre del motivo.
Destrucción de procesos
Un proceso será destruido por el SO si recibe una señal no esperada a causa de:
- Error en su ejecución.
- Acontecimiento imprevisto en un dispositivo.
- Actuación deliberada de otro proceso.
El SO envía el estado de finalización al proceso padre.
Programación de señales
La programación de señales (qué tratamiento asociar a cada señal) es información propia de cada proceso. Debe almacenarse en el PCB (Process Control Block) y tenerse en cuenta al crear un nuevo proceso.
Ideas clave
- Las señales son la versión de software de las interrupciones de hardware.
- Proceden de dispositivos, excepciones, llamadas explícitas, reloj o efectos laterales.
- Tres opciones de tratamiento: usuario, ignorar o por defecto del SO.
- El tratamiento por defecto suele ser la destrucción del proceso.
- La programación de señales se almacena en el PCB.