Definición, generación by tratamiento de señales
Las señales son interrupciones de software que pueden enviarse a un
proceso para proporcionar un método con el que tratar eventos
asíncronos. Las interrupciones de software enviadas a un proceso
pueden ser generadas por el kernel del
sistema operativo, por el usuario desde la línea de comandos,
o por cualquier otro proceso que conozca el pid del
proceso.
Las señales generadas por el kernel se producen cuando se
detecta un error de software o de hardware en la ejecución
del proceso. Un error de software sobreviene, por ejemplo,
cuando un proceso intenta acceder a una zona de memoria que no
le corresponde; en ese instante, se genera una señal de
violación de segmentación que puede causar la finalización de
ese proceso. Asimismo, las señales se emplean para
informar de ciertos fallos detectados por el hardware, como
divisiones por cero, referencias inválidas de memoria,
etc.
En el caso de las señales generadas por el usuario, éstas se pueden
producir al pulsar ciertas teclas (por ejemplo, Supr) en un
terminal, y también a través de la línea de comando: el comando
kill permite que el usuario envíe señales a un proceso o grupo
de procesos. Para la generación de señales en un proceso se
utilizan las funciones kill y killpg, con las que un proceso
puede enviar señales a otro proceso o grupo de procesos.
Estas funciones son equivalentes al comando kill y se verán
con más detalle a lo largo de esta unidad. Como las señales
pueden aparecer en cualquier instante, el proceso debe indicar al
kernel qué es lo que ha de hacer cuando recibe una
señal determinada. El kernel puede actuar de tres formas
diferentes: ignorar la señal, capturarla o aplicar
la rutina por defecto.
A. Señales ignoradas
Mediante el establecimiento de la constante
SIG_IGN, el proceso ignorará la recepción de la señal. Esto
implica que el proceso no realizará ninguna acción al recibirla; su
ejecución continuará exactamente en el mismo punto donde se
encontraba. Cuando se ignora una señal, suele decirse que el
proceso se hace inmune a ella. Esta inmunidad no significa que el
proceso no quede afectado por la causa que generó la señal, sino
que simplemente la ignora.
Cuando se ignoran las señales generadas por fallos de hardware, el
comportamiento del proceso es incierto. Por ejemplo, si una
sentencia del código del proceso está produciendo una división por
cero, la sentencia dará como resultado algo que no tendrá sentido
y, sin embargo, el proceso continuará ejecutándose. Por otra parte,
un proceso que ignorara todas las señales no podría ser gestionado
por el administrador de la máquina, ya que ésta no respondería a
sus instrucciones: por ejemplo, si la máquina se instalara en un
bucle infinito y su ejecución no terminara nunca, el
administrador no podría concluir su ejecución con el comando
kill-9. Por este motivo, existen ciertas señales que no
pueden ser ignoradas, a fin de permitir al administrador de la
máquina detener o eliminar cualquier proceso.
Hay 1 opinión. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Técnicas para el desarrollo de computación móvil (orientado a PDA) Uno de los nuevos paradigmas en el desarrollo de proyectos informáticos es la computación móvil (computación Ubicua). Aquí se verá todo lo que involucra la creación de un... [31/03/06] |
|
1.369 | ||
|
Instalación de un Servidor de Correo en Linux Linux es un sistema operativo libre, con lo que no se tiene que pagar por ningún tipo de licencia. También se puede conseguir el código fuente y poderlo modificar libreme... [16/06/04] |
|
13.740 | ||
|
Creación de Paginas Web con Html HTML es el lenguaje básico y muy sencillo que nos permite la creación de Paginas Web. Este curso ha nacido con la intención de complementar los anteriores cursos de JavaS... [26/05/05] |
|
20.578 | ||
Publicar en
del.icio.us
digg
meneame