Consideraciones sobre el uso de las Señales

Al ser eventos asíncronos, las señales pueden llegar durante cualquier instante de la ejecución del programa. En particular pueden hacerlo durante una llamada a un servicio del sistema operativo o cuando el intérprete Perl esta haciendo alguna labor de gestión de sus estructuras de datos para el manejo de la memoria.

Manejo de Señales en Versiones Anteriores a la 5.7.3

En las versiones de Perl anteriores a la 5.7.3 puede ocurrir que si el manejador de la señal hace alguna operación que implica la reorganización de la memoria (creación/destrucción) después del retorno del manipulador el intérprete se encuentre con un estado incoherente del sistema y que eventualmente se derrumbe. Es por ello que se aconseja que para esas versiones los manejadores de interrupciones deben mantenerse lo mas simples posibles. Preferentemente deben limitarse a cambiar una variable de valor indicando la presencia de la interrupción. También deben evitarse las operaciones de entrada/salida.

Manejo de Señales en Versiones Posteriores a la 5.7.3

En las versiones posteriores a la 5.7.3 las señales son postergadas. Esto es, cuando el sistema operativo entrega la señal es recibida por el código C que implementa el intérprete Perl. Este ejecuta un manejador especial que establece una flag y termina inmediatamente. Posteriormente, tan pronto como se alcanza un punto seguro de la ejecución, por ejemplo cuando se va a ejecutar un nuevo opcode 3.1 se comprueban las flags y el manejador instalado por el usuario en %SIG es ejecutado.



Subsecciones
Casiano Rodríguez León
Licencia de Creative Commons
Programación Distribuida y Mejora del Rendimiento
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19