Mecanismo de procesamiento de señal de señal de Linux

  
 

La señal es una parte muy importante de la programación de Linux. Este artículo presentará los conceptos básicos del mecanismo de la señal, la implementación general del mecanismo de la señal de Linux, cómo usar la señal y varias llamadas del sistema a la señal.

El mecanismo de señal es un método para transferir mensajes entre procesos. La señal se llama señal de interrupción suave, y algunas personas la llaman interrupción suave. Como puede verse por su nombre, su esencia y uso es muy similar a la interrupción. Por lo tanto, se puede decir que la señal es parte del control del proceso.

Primero, el concepto básico de la señal

Esta sección primero introduce algunos conceptos básicos de la señal, y luego da algunos tipos básicos de señales y eventos correspondientes a la señal. Los conceptos básicos son especialmente importantes para entender y utilizar señales. Echemos un vistazo a lo que es la señal.

1. Conceptos básicos

Una señal de interrupción suave (señal, también denominada señal) se utiliza para notificar al proceso que se ha producido un evento asíncrono. Los procesos pueden enviarse señales de interrupción suave entre sí a través de la eliminación de llamadas del sistema. El kernel también puede señalar el proceso debido a un evento interno, notificando al proceso que se ha producido un evento. Tenga en cuenta que la señal solo se utiliza para notificar a un proceso lo ocurrido y no pasa ningún dato al proceso.

El proceso de recibir señales tiene diferentes métodos de procesamiento para varias señales. Los métodos de procesamiento se pueden dividir en tres categorías: El primero es un controlador similar a las interrupciones. Para las señales que deben procesarse, el proceso puede especificar un controlador que sea procesado por la función. El segundo método es ignorar una señal y no hacer nada con ella, como si no hubiera ocurrido. Un tercer método es preservar el valor predeterminado del sistema para el procesamiento de esta señal. Esta operación predeterminada, la operación predeterminada para la mayoría de las señales, es terminar el proceso. El proceso llama a la señal a través del sistema para especificar el comportamiento de procesamiento del proceso en una determinada señal.

Hay un campo de señal de interrupción suave en la tabla de la tabla de procesos. Cada bit en el campo corresponde a una señal. Cuando se envía una señal al proceso, se establece el bit correspondiente. Se puede ver que el proceso puede mantener diferentes señales al mismo tiempo, pero para la misma señal, el proceso no sabe cuántas veces antes de procesar.

2. Tipos de señales

Aquí hay muchas razones para la señalización. Aquí, puede clasificar fácilmente las señales según la razón para enviar señales:

(1) y terminación del proceso Señales relacionadas. Este tipo de señal se emite cuando el proceso finaliza o cuando finaliza el proceso secundario.
(2) Señales relacionadas para procesar eventos de excepción. Si el proceso está fuera de los límites, o intenta escribir un área de memoria de solo lectura (como el área del cuerpo del programa), o ejecutar una instrucción privilegiada y varios otros errores de hardware.
(3) Una señal relacionada con una condición irrecuperable encontrada durante una llamada al sistema. Cuando se ejecuta el exec de llamada del sistema, se han liberado los recursos originales y se han agotado los recursos del sistema actual.
(4) Una señal relacionada con una condición de error no predictivo encontrada al ejecutar una llamada del sistema. Por ejemplo, ejecute una llamada al sistema que no existe.
(5) Una señal de un proceso en modo usuario. Por ejemplo, el proceso llama a la llamada al sistema kill para enviar señales a otros procesos.
(6) Señales relacionadas con la interacción terminal. Por ejemplo, si el usuario cierra un terminal o presiona el botón de interrupción.
(7) Seguimiento de la señal ejecutada por el proceso.

La lista de señales soportadas por Linux es la siguiente. Muchas señales están relacionadas con la arquitectura de la máquina. Las primeras son las señales enumeradas en POSIX.1:

La razón por la cual el valor de la señal procesa las señales de acción ----------- -------------------------------------------------- --------- SIGHUP 1 Un terminal se suspende o el proceso de control termina SIGINT 2 A interrupción del teclado (si se presiona la tecla de interrupción) SIGQUIT 3 C se presiona la tecla de salida SIGILL 4 C comando ilegal SIGABRT 6 C Salir instrucción emitida por abortar (3) SIGFPE 8 C Excepción de punto flotante SIGKILL 9 AEF Señal de cierre SIGSEGV 11 C Referencia de memoria no válida SIGPIPE 13 A Rotura de tubería: escriba una tubería SIGALRM 14 A sin puerto de lectura emitida por alarma (2) Señal SIGTERM 15 A Señal de terminación SIGUSR1 30,10,16 A Señal definida por el usuario 1 SIGUSR2 31,12,17 A Señal definida por el usuario 2 SIGCHLD 20,17,18 B Señal de finalización del subproceso SIGCONT 19,18,25 El proceso continúa ( Proceso que se detuvo) SIGSTOP 17,19,23 DEF Terminar proceso SIGTSTP 18,20,24 D Presione el botón de parada SIGTTIN 21,21,26 en el terminal de control (tty). El proceso en segundo plano intenta leer SIGTTOU desde el terminal de control 22,22 , 27 D detrás del escenario Intento de escribir desde el terminal de control

Las siguientes señales no se enumeran en POSIX.1, y el motivo de la acción de procesamiento del valor de la señal de

se indica en SUSv2 -------- -------------------------------------------------- ---------- SIGBUS 10,7,10 Error de bus C (acceso a memoria incorrecta) SIGPOLL A Evento de Pollable definido por Sys V, sinónimo de SIGIO SIGPROF 27,27,29 Un temporizador de perfilado para SIGSYS 12, -, 12 C Llamada del sistema no válida (SVID) SIGTRAP 5 C Captura de seguimiento /punto de interrupción SIGURG 16,23,21 B Condición de emergencia del zócalo (4.2 BSD) SIGVTALRM 26,26,28 A Hora actual señal de alarma (4.2 BSD) SIGXCPU 24, 24, 30 C excede el límite de tiempo de CPU establecido (4.2 BSD) SIGXFSZ 25, 25, 31 C excede el límite de tamaño de archivo establecido (4.2 BSD)

(para SIGSYS, SIGXCPU, SIGXFSZ, y SIGBUS bajo ciertas arquitecturas de máquina, los valores predeterminados de Linux son A (terminar) y SUSv2 a C (terminar y volcar el núcleo).

Las siguientes son algunas otras señales

La razón por la que el valor de la señal procesa señales de acción ------------------------ ---------------------------------------------- SIGIOT 6 C IO Instrucción de captura, sinónimo de SIGABRT SIGEMT 7, -, 7 SIGSTKFLT -, 16, - A Error de pila del coprocesador SIGIO 23,29,22 A Ahora es posible una operación de E /S (4.2 BSD) SIGCLD -, -, 18 A Sinónimo con SIGCHLD SIGPWR 29,30,19 A Fallo de alimentación (Sistema V) SIGINFO 29, -, - A Sinónimo con SIGPWR SIGLOST -, -, - A Bloqueo de archivo perdido SIGWINCH 28,28,20 B Cambio de tamaño de ventana (4.3 BSD, Sol) SIGUNUSED -, 31, - Una señal no utilizada (será SIGSYS)

(aquí, - indica que la señal no está implementada; hay tres valores que dan el significado, primero Los valores generalmente son válidos en Alpha y Sparc, con valores en el medio para i386 y ppc y sh, y el último valor para mips. La señal 29 es SIGINFO /SIGPWR en Alpha y SIGLOST en Sparc.)

Acción de procesamiento El significado de las letras en un elemento es el siguiente: A La acción predeterminada es terminar el proceso B. La acción predeterminada es ignorar esta señal. C La acción predeterminada es terminar el proceso y ejecutar el kernel. Dump core D La acción predeterminada es detener el proceso. La señal E no se puede capturar. La señal F. no se puede ignorar.

Las señales descritas anteriormente son compatibles con los sistemas comunes. Los nombres, efectos y acciones de procesamiento de las diversas señales se describen en forma de tabla. El significado de varias acciones de procesamiento predeterminadas es: la terminación del programa se refiere a la salida del proceso; ignorar la señal es descartar la señal, no tratar; detener el programa significa que el programa se cuelga, puede continuar después de ingresar a la condición de parada, generalmente en Durante el proceso de depuración (por ejemplo, llamada al sistema ptrace), el volcado de imagen del kernel se refiere al volcado de la imagen de los datos del proceso en la memoria y parte del contenido almacenado en la estructura del kernel al sistema de archivos en un formato determinado, y el proceso sale de la ejecución. El beneficio es que le brinda al programador la comodidad de obtener los valores de datos del proceso en el momento de la ejecución, lo que les permite determinar la razón del volcado y depurar su programa.

Copyright © Conocimiento de Windows All Rights Reserved