Señales de sistemas Unix

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,57 KB

 
A continuación, se van a describir las 19 señales que toman como base la mayoría de los sistemas operativos Unix.
-
SIGHUP (1): Hangup. Esta señal se envía a todos los procesos de un grupo cuando su líder de grupo termina su ejecución. También se envía cuando un terminal se desconecta de un proceso del que es terminal de control. La acción por defecto de esta señal es terminar la ejecución del proceso que la recibe.
-
SIGINT (2): Interrupción. Es enviada cuando en medio de un proceso se pulsa las teclas de interrupción (Ctrl + c). Por defecto se termina la ejecución del proceso que recibe la señal.
-
SIGQUIT (3): Salir. Similar a SIGINT, pero es generada al pulsar la tecla de salida (Ctrl + ). Su acción por defecto es generar un fichero core y terminar el proceso.
-
SIGILL (4):Instrucción ilegal. Es enviada cuando el hardware detecta una instrucción ilegal. En los programas escritos en C suele producirse este tipo de error cuando se maneja punteros a funciones que no han sido correctamente inicializados. Su acción por defecto es generar un fichero core y terminar el proceso.
-
SIGTRAP (5): Trace trap.Es enviada después de ejecutar cada instrucción cuando el proceso se está ejecutando paso a paso.
-
SIGIOT (6):I/O trap instruction. Es enviada a los procesos cuando se detecta un fallo hardware.
-
SIGEMT (7): Emulator trap instruction.Advierte de errores detectados por el hardware.
-
SIGFPE (8):Error en coma flotante. Es enviada cuando el hardware detecta un error en coma flotante, como el uso de número en coma flotante con un formato desconocido, errores de overflow o underflow, etc.
-
SIGKILL (9):Kill. Esta señal provoca irremediablemente la terminación del proceso. No puede ser ignorada ni tampoco se puede modificar la rutina por defecto. Siempre que se recibe se ejecuta su acción por defecto, que consiste en terminar el proceso.
-
SIGBUS (10):Bus error. Se produce cuando se intenta acceder de forma errónea a una zona de memoria o a una dirección inexistente. Su acción es terminar el proceso que la recibe.
-
SIGSEGV(11):Violación de segmento. Es enviada a un proceso cuando intenta acceder a datos que se encuentran fuera de su segmento de datos. Su acción por defecto es terminar el proceso.
-
SIGSYS (12):Argumento erróneo en una llamada al sistema. Si uno de los argumentos de una llamada al sistema es erróneo se envía esta señal.
-
SIGPIPE (13): Intento de escritura en una tubería de la que no hay nadie leyendo. Esto suele ocurrir cuando el proceso de lectura termina de una forma anormal. De esta forma se evita perder datos. Su acción es terminar el proceso.
-
SIGALRM(14): Alarm clock. Cada proceso tiene asignados un conjunto de temporizadores. Si se ha activado alguno de ellos y este llega a cero, se envía esta señal al proceso.
-
SIGTERM(15):Finalización software. Es la señal utilizada para indicarle a un proceso que debe terminar su ejecución. Esta señal no es tajante como SIGKILL y puede ser ignorada. Lo correcto es que la rutina de tratamiento de esta señal se encargue de tomar las acciones necesarias antes de terminar un proceso (como, por ejemplo, borrar los archivos temporales) y llame a la rutina exit. Esta señal es enviada a todos los procesos cuando se produce una para del sistema. Su acción por defecto es terminar el proceso.
-
SIGUSR1(16): Señal número 1 de usuario. Esta señal está reservada para el usuario. Su interpretación dependerá del código desarrollado por el programador. Suelen emplearse para sincronización de procesos. Ninguna aplicación estándar va a utilizarla y su significado es el que le quiera dar el programador en su aplicación. Por defecto termina el proceso que recibe.
-
SIGUSR2(17):Señal número 2 de usuario. Su significado es idéntico al de SIGUSR1.
-
SIGCLD (18):Muerte del proceso hijo. Es enviada al proceso padre cuando alguno de sus procesos hijos termina. Esta señal es ignorada por defecto.
-
SIGPWR (19): Fallo de alimentación. Esta señal tiene diferentes interpretaciones. En algunos sistemas es enviada cuando se detecta un fallo de alimentación y le indica al proceso que dispone tan sólo de unos instantes de tiempo antes de que se produzca una caída del sistema. En otros sistemas, esta señal es enviada, después de recuperarse de un fallo de alimentación, a todos aquellos procesos que estaban en ejecución y que se han podido rearrancar. En estos casos, los procesos deben disponer de mecanismos para restaurar las posibles pérdidas producidas durante la caída de la alimentación.
Enviar una señ al:
Desde un proceso a otro o a un grupo de procesos se emplea la llamada kill (pid,sig) que devolverá un 0 si es satisfactorio o sino un -1.
Pid ->num. entero y puede tomar los siguientes significados:
PID>0 es el PID del proceso al que se le envía la señal.
PID=0 la señal se envía a todos los procesos que pertenecen al mismo grupo que el proceso que la envía.
Sig -> entero que representa la señal que se quiere enviar. Sig=0 señal nula.


5. PRIORIDAD DE EJECUCIÓ N Y VALOR nice
-Cuando hay mas de un proceso en estado listo para ejecutar el kernel le da aviso de CPU al de mayor prioridad (varia dinámicamente) -> algoritmos de Scheduling (Son justos con los diferentes procesos y dan buena respuesta a programas interactivos).
-El administrador del sistema o el usuario dueño del proceso puede influir en el algoritmo de Scheduling a través del valor nice (es un num. que se asigna a cada proceso e indica que tan bueno es para los demás). Un proceso con valor nice alto esta en desventaja frente a otro valor nice menor a la hora de decidir a quien asignar la CPU.
P= min + nice + (0,5 * recent)
P: priorida dinámica a menor P mayor prioridad.
RECENT: cuanto ha recibido la CPU al procesador. Se calcula: inicialmente vale 0. Se incrementa en 1 para el proceso que usa CPU. Una vez por segundo se divide por 2 el valor de recent para todos los procesos.
-El valor nice se hereda del proceso padre. Puede variar entre -20 y +20, en system V van de 0 a 39.

6.PLANIFICACIÓ N DE TAREAS
-Planificar la ejecución de los comandos será útil para tareas que requieren un uso intensivo de los recursos del sistema cuando la carga de trabajo sea ligera.
-El comando at ejecuta los comandos en el directorio inicial a la hora que se especifique.
-El comando crontab ejecuta los comandos en el directorio inicial a intervalos específicos.
-Para utilizar los comando crontab o at el administrador del sistema debe configurar determinados archivos para poder ejecutar dichos comandos.
-Hay dos archivos, at.allow y at.deny que están en /usr/lib/cron y determina quien puede utilizar el comando at. Si aparece mi nombre en at.allow podré utilizarlo. Sino existe el sistema comprueba si estoy en el archivo at.deny de ser así se me denegara el acceso al comando at. Sino existen ninguno de los dos archivos los únicos que pueden utilizar el comando at son quienes tengan permiso de superusuario. Y si sólo existiera el archivo at.neny y esta vacío entonces todos los usuarios podrán utilizar el comando at.
-Para el comando crontab se determina de la misma forma.
Sintaxis: At 4am lp archivogrande (imprime el archivogrande)

Entradas relacionadas: