Está en la página 1de 13

SISTEMAS OPERATIVOS

Unidad No. 1

Ingeniería en Sistemas y
Tecnologías de La
Información Industrial

Actividad: “Señales”.

Actividad No. 7

Nombre: Alexis Morales Morales


Matrícula: 202139189
Fecha: 09/10/2023

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

Índice
Contenido
Índice.................................................................................................................................................2
Desarrollo .........................................................................................................................................3
Señales del Sistema LINUX .............................................................................................................3
Gestión de los Procesos en C Bajo C Linux .....................................................................................8
1. Creación de Procesos .........................................................................................................8
2. Comunicación entre procesos. ...........................................................................................9
3. Gestión de Señales ...........................................................................................................10
4. Espera de Procesos Hijos ..................................................................................................11
Bibliografía....................................................................................................................................12

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

Desarrollo
Señales del Sistema LINUX

1. SIGHUP (Hangup): Esta señal se envía cuando se detecta una línea


telefónica rota o cuando se ha terminado el proceso líder de la sesión. Suele
utilizarse para reiniciar servicios. Por ejemplo, un servidor de correo podría
reiniciarse si se pierde la conexión telefónica.

2. SIGINT (Interrupt): Se envía cuando el usuario pulsa Ctrl+C en la terminal


para interrumpir un proceso en ejecución. Es una señal común para detener
un programa en curso.

3. SIGQUIT: Similar a SIGINT, pero se activa cuando el usuario pulsa Ctrl+\ en


la terminal. Además de interrumpir el programa, genera un volcado de núcleo
para la depuración.

4. SIGILL (Illegal Instruction): Se envía cuando un proceso intenta ejecutar una


instrucción no válida o no admitida por el hardware.

5. SIGTRAP: Se utiliza para la traza de programas, generalmente por


depuradores, para detener la ejecución en puntos de interés.

6. SIGIOT, SIGABORT: Estas señales se utilizan para manejar una instrucción


IOT (I/O TRAP) o para terminar un proceso de manera anormal. Por ejemplo,
si un proceso encuentra un error grave en la entrada/salida, podría utilizar
SIGIOT para informar sobre el problema y finalizar.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

7. SIGBUS: Se envía cuando ocurre un error de bus durante la ejecución de un


proceso, como intentar acceder a una dirección de memoria no alineada.

8. SIGFPE (Floating-Point Exception): Se envía cuando ocurre un error


aritmético, como la división por cero o el desbordamiento de coma flotante.

9. SIGKILL: Esta señal se utiliza para matar un proceso de manera inmediata


y no puede ser manejada ni bloqueada por el proceso. Es utilizada para forzar
la terminación de un proceso obstinado.

10. SIGUSR1 y SIGUSR2: Son señales definidas por el usuario que pueden
utilizarse para que los procesos realicen acciones personalizadas. Los
programas pueden utilizar estas señales para comunicarse entre sí o realizar
tareas específicas.

11. SIGSEGV (Segmentation Fault): Se envía cuando un proceso intenta


acceder a una parte de la memoria a la que no tiene permiso, como una
dirección de memoria no válida.

12. SIGPIPE: Se envía cuando un proceso intenta escribir en una tubería (pipe)
que no tiene lectores. Puede ocurrir cuando se intenta escribir en una tubería
que ha sido cerrada por el proceso receptor.

13. SIGALRM: Señal enviada por el núcleo cuando expira un temporizador


ITIMER_REAL. Puede utilizarse para programar tareas que deben realizarse
después de cierto tiempo.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

14. SIGTERM: Esta señal es generada por software para solicitar una
terminación controlada de un proceso. Es una forma más suave de detener
un proceso en comparación con SIGKILL.

15. SIGSTKFLT (Stack Fault): Esta señal se utiliza para manejar


desbordamientos del coprocesador matemático. Cuando un programa realiza
operaciones matemáticas que resultan en desbordamiento, esta señal puede
ser utilizada para manejar la situación. Ejemplo: Un programa de cálculo
científico podría utilizar SIGSTKFLT para manejar errores de
desbordamiento en cálculos complejos y tomar medidas como redondear los
resultados.

16. SIGCHLD: Señal enviada por el núcleo a un proceso padre cuando este
llama a la función wait() o waitpid(), para avisarle que un proceso hijo ha
terminado con éxito. Esto permite al padre recoger el estado de su hijo y
realizar cualquier acción necesaria. Ejemplo: Un proceso principal crea varios
procesos secundarios para realizar tareas en paralelo. El proceso principal
utiliza SIGCHLD para detectar cuándo un proceso secundario ha completado
su trabajo y recoge los resultados.

17. SIGCONT (Continue): Esta señal se utiliza para reanudar la ejecución de un


proceso que ha sido detenido previamente, llevándolo de nuevo al primer o
segundo plano. Ejemplo: Si un proceso se ha detenido utilizando SIGSTOP
o SIGTSTP, SIGCONT puede ser utilizado para reanudar su ejecución.

18. SIGSTOP: Señal de suspensión que detiene un proceso. Por ejemplo, un


depurador puede utilizar SIGSTOP para detener un proceso en ejecución
para que el usuario pueda inspeccionar su estado.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

19. SIGTSTP: Señal de suspensión enviada cuando el usuario presiona Ctrl+Z


en la terminal. Esta señal suspende el proceso actual y lo coloca en segundo
plano. Ejemplo: Puedes suspender un proceso en ejecución en la terminal
usando Ctrl+Z.

20. SIGTTIN y SIGTTOU: Estas señales se utilizan para suspender un proceso


en segundo plano que intenta leer (TTIN) o escribir (TTOU) en el terminal.
Por ejemplo, si un proceso en segundo plano intenta leer desde el terminal,
puede recibir SIGTTIN y suspenderse.

21. SIGURG: Esta señal se utiliza para notificar a un proceso cuando llegan
datos urgentes en un socket. Los datos urgentes son generalmente utilizados
para indicar información crítica que debe ser manejada de manera especial.
Ejemplo: Un servidor de chat podría utilizar SIGURG para manejar mensajes
urgentes de ciertos usuarios.

22. SIGXCPU y SIGXFSZ: Estas señales se envían cuando un proceso


sobrepasa el límite de tiempo de CPU (XCPU) o el tamaño máximo de
archivo (XFSZ) permitido. Esto permite que el proceso tome medidas
adecuadas en respuesta a estos límites superados.

23. SIGVTALRM: Señal enviada cuando expira un temporizador


ITIMER_VIRTUAL. Esta señal puede utilizarse para programar tareas que
deben realizarse después de cierto tiempo de tiempo de CPU utilizado por el
proceso.

24. SIGPROF: Señal enviada cuando expira un temporizador ITIMER_PROF. Al


igual que SIGVTALRM, esta señal puede utilizarse para realizar acciones
programadas en función del tiempo de CPU utilizado por el proceso.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

25. SIGWINCH: Señal enviada cuando cambia el tamaño de una ventana,


generalmente utilizado por programas gráficos en X11 para ajustar su diseño
en función del nuevo tamaño de la ventana.

26. SIGIO, SIGPOLL, SIGSLOT: Estas señales se utilizan para indicar la


disponibilidad de datos para una operación de entrada/salida (E/S)
asíncrona. Por ejemplo, un programa de red podría utilizar SIGIO para saber
cuándo se reciben datos en un socket.

27. SIGPWR (Power Failure): Señal enviada en caso de un fallo de alimentación


en el sistema. Esto permite a los programas realizar acciones de apagado o
guardar estados críticos antes de que se apague el sistema debido a un fallo
de alimentación.

28. SIGUNUSED: Anteriormente se usaba para señalar argumentos erróneos en


llamadas al sistema, pero en la práctica, no se utiliza ampliamente.

29. SIGRTMIN (Real-time Signal Minimum): Marca el límite de señales en tiempo


real. Las señales en tiempo real son un conjunto de señales adicionales que
pueden utilizarse en aplicaciones de tiempo real para comunicarse entre
procesos de manera más precisa y confiable.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

Gestión de los Procesos en C Bajo C Linux

La gestión de procesos en C en un sistema Linux es una parte fundamental del


desarrollo de software en este entorno

1. Creación de Procesos

La creación de procesos en C se realiza generalmente mediante la función fork().


Esta función crea un nuevo proceso (el proceso hijo) que es una copia del proceso
actual (el proceso padre). El proceso hijo comienza a ejecutar el mismo código que
el proceso padre, pero tiene su propio espacio de memoria.

El valor devuelto por fork() es diferente en el proceso padre y en el proceso hijo. En


el proceso padre, fork() devuelve el PID (identificador de proceso) del proceso hijo
recién creado, mientras que en el proceso hijo, fork() devuelve 0.

En el ejemplo proporcionado, el proceso padre e hijo imprimen mensajes diferentes


en función del valor devuelto por fork(), lo que demuestra cómo se puede distinguir
entre el padre y el hijo.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

2. Comunicación entre procesos.

La comunicación entre procesos es esencial cuando se necesita que los procesos


intercambien datos o coordinen tareas. En el ejemplo, se utilizó una tubería (pipe)
para transmitir un mensaje desde el proceso padre al hijo.

La tubería es un mecanismo de comunicación que permite que un proceso escriba


datos en un extremo y otro proceso los lea desde el otro extremo.

En el ejemplo, el proceso padre escribe el mensaje en la tubería y el proceso hijo lo


lee. La tubería permite la comunicación bidireccional entre los procesos de manera
eficiente.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

3. Gestión de Señales

Las señales son eventos asíncronos que pueden ser generados por el kernel, otros
procesos o el propio programa. Puedes utilizar funciones como signal() o
sigaction() para manejar señales en tu programa.

En el ejemplo, se mostró cómo manejar la señal SIGINT (generada al presionar


Ctrl+C en la terminal) utilizando la función signal(). Cuando se recibe esta señal, el
programa imprime un mensaje y sale de manera ordenada.

Los manejadores de señales permiten a tu programa responder de manera


específica a eventos como interrupciones del usuario o eventos inesperados.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

4. Espera de Procesos Hijos

En sistemas multi-proceso, a menudo es necesario esperar a que los procesos hijos


finalicen antes de continuar o recoger información sobre su estado de finalización.

Las funciones wait() y waitpid() permiten al proceso padre esperar a que un


proceso hijo termine su ejecución. Estas funciones bloquean al proceso padre hasta
que uno de sus hijos termine.

En el ejemplo, el proceso padre utiliza wait() para esperar a que el proceso hijo
finalice. Luego, utiliza macros como WIFEXITED y WEXITSTATUS para obtener el
estado de finalización del hijo y, en este caso, imprimirlo en pantalla.

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

Bibliografía
A, D., & A, D. (2023). 40 comandos básicos de Linux que todo usuario debe saber.

Tutoriales Hostinger. https://www.hostinger.mx/tutoriales/linux-comandos

Axarnet. (2023, 20 septiembre). https://axarnet.es/blog/comandos-linux. axarnet.

https://axarnet.es/blog/comandos-linux

Carrillo, J. (2020). El manual de comandos de Linux. freeCodeCamp.org.

https://www.freecodecamp.org/espanol/news/comandos-de-linux/

Córdoba, D. (2016). Señales y cómo terminar procesos en GNU/Linux. Junco TIC.

https://juncotic.com/senales-y-terminacion-procesos-en-linux/

Equipo editorial de IONOS. (2020). Los comandos de Linux más importantes. IONOS

Digital Guide.

https://www.ionos.mx/digitalguide/servidores/configuracion/comandos-de-linux-la-

lista-fundamental/

Gestión de procesos — Programación concurrente en Linux. (s. f.).

https://ocw.ehu.eus/pluginfile.php/48902/mod_resource/content/13/html/Recursos/P

03/Gestion_procesos.html

Benemérita Universidad Autónoma de Puebla


SISTEMAS OPERATIVOS

Introducción a las señales POSIX_Weixin_0010034-Linux. (s. f.). Weather PWA.

https://devpress.csdn.net/linux/62ea07eb20df032da732acb1.html

Señalización de procesos. (s. f.).

http://persoal.citius.usc.es/tf.pena/ASR/Tema_3html/node3.html

Es responsabilidad exclusiva de los autores el respeto de los derechos de autor sobre los
contenidos e imágenes en el presente documento, en consecuencia, la BUAP no se hace
responsable por el uso no autorizado, errores, omisiones o manipulaciones de los derechos
de autor y estos serán atribuidos directamente al Responsable de Contenidos, así como los
efectos legales y éticos correspondientes.

Benemérita Universidad Autónoma de Puebla

También podría gustarte