SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Sistemas Operativos:
Programación de Sistemas
Oscar Déniz Suárez
Alexis Quesada Arencibia
Francisco J. Santana Pérez
Curso 2006-07
Tema 4 : señales
Señales
 Las señales son un mecanismo para comunicar
eventos a los procesos
 Cuando un proceso recibe una señal, la
procesa inmediatamente.
 Cuando un proceso recibe una señal puede:
 Ignorar a la señal, cuando es inmune a la misma
 Invocar la rutina de tratamiento por defecto
 Invocar a una rutina de tratamiento propia
Señales
Señales
 Algunas señales importantes <signal.h>:
 SIGTERM = Finalización controlada. Se envía para
indicarle a un proceso que debe acabar su
ejecución. Puede ser ignorada. Definiremos una
rutina para definir el comportamiento del sistema si
recibe esta señal.
 SIGKILL = Finalización abrupta. No se puede ignorar
 SIGINT = Interrupción. Se envía cuando se pulsa la
tecla de interrupción (Ctrl+C). Por defecto, se
interrumpe el programa.
 SIGCLD = Terminación de algún proceso hijo. Se
envía al proceso padre. Ignorada por defecto
 OTRAS: SIGTRAP, SIGIOT, SIGEMT, SIGFPE,
SIGBUS, SIGSEGV, SIGSYS, SIGPIPE, SIGALRM,
SIGPWR…
Señales
 Señales disponibles para el programador:
SIGUSR1 y SIGUSR2. Son señales reservadas para el uso
del programador. Ninguna aplicación estándar va a usarla y su significado
es el que quiera definir el programador en su aplicación. Por defecto
tienen la acción de terminar el proceso.
 Para ver una cadena de texto sobre una señal:
#include <string.h>
#include <signal.h>
char *strsignal(int sig);
 Para enviar una señal a un proceso o grupo de
procesos:
#include <signal.h>
int kill(pid_t pid, int sig);
int killpg(int pgrp, int sig);
 Para enviar una señal a sí mismo:
#include <signal.h>
int raise(int sig);
Envío de señales
Si pid > 0, es el PID del proceso al
que enviamos la señal
Si pid = 0, la señal es enviada a todos
procesos del grupo
Si pid = -1, la señal es enviada a los
procesos cuyo id. Real es igual al id.
Efectivo del proceso que la envía.
Envío de señales
 Ejercicio Práctico:
 vamos a crear un programa que cree un
proceso hijo, en el que el hijo estará siempre
haciendo printf de (“soy el hijo con pid = “,
pid), y a continuación un sleep(1).
 El padre, una vez creado el hijo, esperará 10
tiempos (sleep(10)) y luego mandará una
señal al hijo de terminación y luego
terminará.
Tratamiento
de señales
#include <signal.h>
void (*signal (int sig, void (*action) ())) ();
 action puede ser:
 SIG_DFL = acción del manejador por defecto. Por lo
general, es la de abortar e incluso dar core.
 SIG_IGN = la señal se debe ignorar
 Dirección a la rutina de tratamiento
Para especificar qué tratamiento debe
realizar un proceso al recibir una señal.
Sig será el valor de la señal, y *action es
la acción que se tomará al recibir la señal
y puede tomar tres clases de valores:
Tratamiento de señales
 Ejemplo práctico:
 Vamos a crear un programa que intercepte la señal
generada al pulsar las teclas ctrl-C.
 Para ello, programamos la función que va a manejar
la interrupción, y hacemos un printf de “esperando a
ctrl-c”.
 Ver error de primera ejecución y por qué. Podemos
solventarlo??????
 No es el caso de SIGILL, SIGTRAP y SIGPWR,
pues no hay tratamientos por defecto a estas rutinas.
Espera
#include <unistd.h>
int pause(void);
 pause deja al proceso suspendido en espera
por una señal (cualquiera)
 Pause devuelve un -1 cuando le llega la interrupción
y pone errno a EINTR
Espera
 Ejercicio práctico:
 Vamos a utilizar SIGUSR1 para que un programa
genere un número aleatorio cada vez que reciba
dicha señal. Usaremos SIGINT para inhabilitar la
señal mientras se atiende la interrupción.
 La señal la daremos desde la consola del sistema
mediante:
kill -s USR1 pid
 Para finalizar, enviaremos un SIGTERM desde
consola.
Espera (II)
 Para esperar por una señal concreta:
#include <unistd.h>
int sigsuspend (const sigset_t *mask);
Funciones para señales
 Una señal puede ser tratada o estar pendiente (en
espera de ser tratada)
 Un proceso puede bloquear una señal; si se recibe
quedará pendiente.
 La señal deja de estar pendiente cuando el proceso la
desbloquea o cambia la rutina de tratamiento a la rutina
por defecto
 sigaction permite instalar manejadores de señales
 sigprocmask permite especificar un conjunto de señales
que queremos que el proceso bloquee
 sigpending devuelve el conjunto de señales que están
bloqueadas y actualmente pendientes.
Máscaras de señales
sigprocmask ( int how, const sigset_t *set,
sigset_t *oset);
how: SIG_BLOCK (bloquear)
SIG_UNBLOCK (desbloquear)
SIG_SETMASK (poner la máscara al
valor expresado en set)
Si *set es NULL, no se realizan cambios
Conjuntos de señales
 Para cierta funciones (p.ej. sigaction)
necesitamos especificar un conjunto de
señales:
#include <signal.h>
int sigemptyset(sigset_t *set);
int sigfillset(sigset_t *set);
int sigaddset(sigset_t *set, int signo);
int sigdelset(sigset_t *set, int signo);
int sigmember(const sigset_t *set, int signo);
PROGRAMACIÓN
DE SEÑALES
sigset_t = unsigned long
Manejador de señales
 sigaction es más nueva que signal, y es definida por POSIX. Permite ver o
modificar (o ambas cosas) la acción asociada a una señal
#include <signal.h>
struct sigaction {
void (*sa_handler)(int); /* dir. del manejador de señal o SIG_IGN o SIG_DFL */
sigset_t sa_mask; /* señales adicionales a bloquear cuando se maneje ésta*/
int sa_flags;
void (*sa_restorer)(void); /* obsoleto */
}
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
Funciones de tiempo
#include <sys/time.h>
struct itimerval {
struct timeval it_interval; /* next value */
struct timeval it_value; /* current value */
};
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value,
struct itimerval *ovalue);
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
unsigned int sleep(unsigned int seconds);
void usleep(unsigned long usec);
Funciones de tiempo
 Cada proceso puede tener hasta tres
temporizadores; se ponen con setitimer
 alarm genera una señal SIGALRM tras un
número de segundos. La acción por
defecto de SIGALRM es eliminar el
proceso
 sleep y usleep suspenden al proceso un
nº de segundos o microsegundos
Ejercicios Prácticos a entregar
NOTA: lo que no se deduzca del enunciado pueden implementarlo como mejor les parezca, pero usen
llamadas al sistema mientras sea posible
1. Escribir un programa que reciba como parámetro el nº de procesos hijo
que debe crear. Cada proceso hijo deberá dormir un nº aleatorio de
segundos, entre 0 y 30. El padre debe esperar por cada hijo, y presentará
en pantalla su PID a medida que éstos terminen. Cada hijo decide el
tiempo de espera.
2. Realizar una implementación propia de la función de librería system.
3. Hacer un programa que imprima un mensaje cuando se pulse Ctrl-C. El
programa debe terminar tras pulsar Ctrl-C x veces. Si no se producen
ninguno en 30 segundos, el proceso deberá terminar.
4. A) Codificar un programa que envie señales a un proceso. Sintaxis: enviar
señal pid. B) Codificar otro programa que capture las señales SIGINT,
SIGKILL, SIGTERM y SIGUSR1 (muestre un mensaje en pantalla), y que
termine al recibir SIGUSR2.

Más contenido relacionado

La actualidad más candente

Esquema de un sistema de control
Esquema de un sistema de controlEsquema de un sistema de control
Esquema de un sistema de controlEfrain Aguilar
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4Luis Zurita
 
Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480Jomicast
 
Teoria de control (Controladores y sistemas de control)
Teoria de control (Controladores y sistemas de control)Teoria de control (Controladores y sistemas de control)
Teoria de control (Controladores y sistemas de control)Luis Quijada
 
Sistemas automaticos de control
Sistemas automaticos de controlSistemas automaticos de control
Sistemas automaticos de controlEdisson Zharuma
 
Definiciones de Control
Definiciones de ControlDefiniciones de Control
Definiciones de Controlguesta32ead
 
1 basicascontrol
1 basicascontrol1 basicascontrol
1 basicascontroltamapetem
 
2_Camila_Bonilla
2_Camila_Bonilla2_Camila_Bonilla
2_Camila_Bonillacamilabon
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadMiguel sosa
 
Ejemplos 4to Examen Mci
Ejemplos 4to Examen MciEjemplos 4to Examen Mci
Ejemplos 4to Examen MciLuis Zurita
 

La actualidad más candente (14)

Esquema de un sistema de control
Esquema de un sistema de controlEsquema de un sistema de control
Esquema de un sistema de control
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
 
Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480
 
Control pid
Control pidControl pid
Control pid
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Teoria de control (Controladores y sistemas de control)
Teoria de control (Controladores y sistemas de control)Teoria de control (Controladores y sistemas de control)
Teoria de control (Controladores y sistemas de control)
 
Sistemas control
Sistemas controlSistemas control
Sistemas control
 
Sistemas automaticos de control
Sistemas automaticos de controlSistemas automaticos de control
Sistemas automaticos de control
 
Definiciones de Control
Definiciones de ControlDefiniciones de Control
Definiciones de Control
 
1 basicascontrol
1 basicascontrol1 basicascontrol
1 basicascontrol
 
2_Camila_Bonilla
2_Camila_Bonilla2_Camila_Bonilla
2_Camila_Bonilla
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidad
 
Arquitectura interna micro
Arquitectura interna microArquitectura interna micro
Arquitectura interna micro
 
Ejemplos 4to Examen Mci
Ejemplos 4to Examen MciEjemplos 4to Examen Mci
Ejemplos 4to Examen Mci
 

Destacado (20)

Manual de c# 2
Manual de c# 2Manual de c# 2
Manual de c# 2
 
Procesos
ProcesosProcesos
Procesos
 
C# Diferencias
C# DiferenciasC# Diferencias
C# Diferencias
 
Indicador anual materno 2014
Indicador anual materno 2014Indicador anual materno 2014
Indicador anual materno 2014
 
Dualidad en programacion lineal
Dualidad en programacion linealDualidad en programacion lineal
Dualidad en programacion lineal
 
montecaralos metodo
montecaralos metodomontecaralos metodo
montecaralos metodo
 
Ordenes del cmd
Ordenes del cmdOrdenes del cmd
Ordenes del cmd
 
Tesis web transaccionales-rof
Tesis web transaccionales-rofTesis web transaccionales-rof
Tesis web transaccionales-rof
 
Tema3
Tema3Tema3
Tema3
 
Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2
 
Comandos de msdos
Comandos de msdosComandos de msdos
Comandos de msdos
 
Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01
 
Nivel cump metas
Nivel cump metasNivel cump metas
Nivel cump metas
 
Ordenes del cmd
Ordenes del cmdOrdenes del cmd
Ordenes del cmd
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
base de datos
base de datosbase de datos
base de datos
 
Brisayda
BrisaydaBrisayda
Brisayda
 
Curso batch
Curso batchCurso batch
Curso batch
 
Tema4
Tema4Tema4
Tema4
 
Manual ms dos
Manual ms dosManual ms dos
Manual ms dos
 

Similar a sistemas operativos

Ps 10 sos_procesos_señales
Ps 10 sos_procesos_señalesPs 10 sos_procesos_señales
Ps 10 sos_procesos_señalesSan Díaz
 
Linux ud7 - gestion de procesos
Linux   ud7 - gestion de procesosLinux   ud7 - gestion de procesos
Linux ud7 - gestion de procesosJavier Muñoz
 
Trabajo Final Ordinario Biocontroladores
Trabajo Final Ordinario BiocontroladoresTrabajo Final Ordinario Biocontroladores
Trabajo Final Ordinario BiocontroladoresMariannN1
 
PRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoPRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoLuis Leandro Carlo
 
Sincronizacion de procesos
Sincronizacion de procesosSincronizacion de procesos
Sincronizacion de procesoskruskaya salazar
 
Móvil esquiva objetos
Móvil esquiva objetosMóvil esquiva objetos
Móvil esquiva objetosLucasPytel
 
ejercicios de arduino miercoles 1.pdf
ejercicios de arduino miercoles 1.pdfejercicios de arduino miercoles 1.pdf
ejercicios de arduino miercoles 1.pdfMARTIN SOLIS TIPIAN
 
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot ArduinoAplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot ArduinoMaría Emilia Charnelli
 
Arduino: Primeras practicas con arduino
Arduino: Primeras practicas con arduinoArduino: Primeras practicas con arduino
Arduino: Primeras practicas con arduinoSANTIAGO PABLO ALBERTO
 
Ejercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaEjercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaJohnny Parrales
 

Similar a sistemas operativos (20)

Ps 10 sos_procesos_señales
Ps 10 sos_procesos_señalesPs 10 sos_procesos_señales
Ps 10 sos_procesos_señales
 
Linux ud7 - gestion de procesos
Linux   ud7 - gestion de procesosLinux   ud7 - gestion de procesos
Linux ud7 - gestion de procesos
 
Trabajo Final Ordinario Biocontroladores
Trabajo Final Ordinario BiocontroladoresTrabajo Final Ordinario Biocontroladores
Trabajo Final Ordinario Biocontroladores
 
PRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoPRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduino
 
Sincronizacion de procesos
Sincronizacion de procesosSincronizacion de procesos
Sincronizacion de procesos
 
Procesos
ProcesosProcesos
Procesos
 
Móvil esquiva objetos
Móvil esquiva objetosMóvil esquiva objetos
Móvil esquiva objetos
 
Señales en Linux
Señales en LinuxSeñales en Linux
Señales en Linux
 
Ejercicios de arduino_resueltos
Ejercicios de arduino_resueltosEjercicios de arduino_resueltos
Ejercicios de arduino_resueltos
 
Unidad 5: Control y robótica
Unidad 5: Control y robóticaUnidad 5: Control y robótica
Unidad 5: Control y robótica
 
Ejercicios de arduino_resueltos
Ejercicios de arduino_resueltosEjercicios de arduino_resueltos
Ejercicios de arduino_resueltos
 
ejercicios de arduino miercoles 1.pdf
ejercicios de arduino miercoles 1.pdfejercicios de arduino miercoles 1.pdf
ejercicios de arduino miercoles 1.pdf
 
X7manual
X7manualX7manual
X7manual
 
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot ArduinoAplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
 
Arduino: PID para arduino
Arduino: PID para arduinoArduino: PID para arduino
Arduino: PID para arduino
 
Saw Sistema
Saw SistemaSaw Sistema
Saw Sistema
 
Arduino: Primeras practicas con arduino
Arduino: Primeras practicas con arduinoArduino: Primeras practicas con arduino
Arduino: Primeras practicas con arduino
 
arduino
arduinoarduino
arduino
 
Ejercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaEjercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo Sabika
 
Acciones de control
Acciones de controlAcciones de control
Acciones de control
 

Más de Juan Timoteo Cori

Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaJuan Timoteo Cori
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialJuan Timoteo Cori
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarJuan Timoteo Cori
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Juan Timoteo Cori
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad Juan Timoteo Cori
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Juan Timoteo Cori
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesJuan Timoteo Cori
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresJuan Timoteo Cori
 
Paz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionalesPaz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionalesJuan Timoteo Cori
 

Más de Juan Timoteo Cori (20)

multas operadores
multas operadoresmultas operadores
multas operadores
 
Tupa2009 anexo1
Tupa2009 anexo1Tupa2009 anexo1
Tupa2009 anexo1
 
Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieria
 
Estándares tipo-valorativo
Estándares tipo-valorativoEstándares tipo-valorativo
Estándares tipo-valorativo
 
Convalidacion acreditacion
Convalidacion acreditacionConvalidacion acreditacion
Convalidacion acreditacion
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrial
 
essalud
essaludessalud
essalud
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomar
 
requerimientos
requerimientos requerimientos
requerimientos
 
Conflicto social
Conflicto socialConflicto social
Conflicto social
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016
 
aplicaciones moviles
aplicaciones  movilesaplicaciones  moviles
aplicaciones moviles
 
Variables internas
Variables internasVariables internas
Variables internas
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyares
 
Td hm-fi-unlp
Td hm-fi-unlpTd hm-fi-unlp
Td hm-fi-unlp
 
Sirius
SiriusSirius
Sirius
 
Paz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionalesPaz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionales
 

Último

libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMCOMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMcespitiacardales
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 

Último (10)

libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMCOMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 

sistemas operativos

  • 1. Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Tema 4 : señales
  • 2. Señales  Las señales son un mecanismo para comunicar eventos a los procesos  Cuando un proceso recibe una señal, la procesa inmediatamente.  Cuando un proceso recibe una señal puede:  Ignorar a la señal, cuando es inmune a la misma  Invocar la rutina de tratamiento por defecto  Invocar a una rutina de tratamiento propia
  • 4. Señales  Algunas señales importantes <signal.h>:  SIGTERM = Finalización controlada. Se envía para indicarle a un proceso que debe acabar su ejecución. Puede ser ignorada. Definiremos una rutina para definir el comportamiento del sistema si recibe esta señal.  SIGKILL = Finalización abrupta. No se puede ignorar  SIGINT = Interrupción. Se envía cuando se pulsa la tecla de interrupción (Ctrl+C). Por defecto, se interrumpe el programa.  SIGCLD = Terminación de algún proceso hijo. Se envía al proceso padre. Ignorada por defecto  OTRAS: SIGTRAP, SIGIOT, SIGEMT, SIGFPE, SIGBUS, SIGSEGV, SIGSYS, SIGPIPE, SIGALRM, SIGPWR…
  • 5. Señales  Señales disponibles para el programador: SIGUSR1 y SIGUSR2. Son señales reservadas para el uso del programador. Ninguna aplicación estándar va a usarla y su significado es el que quiera definir el programador en su aplicación. Por defecto tienen la acción de terminar el proceso.  Para ver una cadena de texto sobre una señal: #include <string.h> #include <signal.h> char *strsignal(int sig);
  • 6.  Para enviar una señal a un proceso o grupo de procesos: #include <signal.h> int kill(pid_t pid, int sig); int killpg(int pgrp, int sig);  Para enviar una señal a sí mismo: #include <signal.h> int raise(int sig); Envío de señales Si pid > 0, es el PID del proceso al que enviamos la señal Si pid = 0, la señal es enviada a todos procesos del grupo Si pid = -1, la señal es enviada a los procesos cuyo id. Real es igual al id. Efectivo del proceso que la envía.
  • 7. Envío de señales  Ejercicio Práctico:  vamos a crear un programa que cree un proceso hijo, en el que el hijo estará siempre haciendo printf de (“soy el hijo con pid = “, pid), y a continuación un sleep(1).  El padre, una vez creado el hijo, esperará 10 tiempos (sleep(10)) y luego mandará una señal al hijo de terminación y luego terminará.
  • 8. Tratamiento de señales #include <signal.h> void (*signal (int sig, void (*action) ())) ();  action puede ser:  SIG_DFL = acción del manejador por defecto. Por lo general, es la de abortar e incluso dar core.  SIG_IGN = la señal se debe ignorar  Dirección a la rutina de tratamiento Para especificar qué tratamiento debe realizar un proceso al recibir una señal. Sig será el valor de la señal, y *action es la acción que se tomará al recibir la señal y puede tomar tres clases de valores:
  • 9. Tratamiento de señales  Ejemplo práctico:  Vamos a crear un programa que intercepte la señal generada al pulsar las teclas ctrl-C.  Para ello, programamos la función que va a manejar la interrupción, y hacemos un printf de “esperando a ctrl-c”.  Ver error de primera ejecución y por qué. Podemos solventarlo??????  No es el caso de SIGILL, SIGTRAP y SIGPWR, pues no hay tratamientos por defecto a estas rutinas.
  • 10. Espera #include <unistd.h> int pause(void);  pause deja al proceso suspendido en espera por una señal (cualquiera)  Pause devuelve un -1 cuando le llega la interrupción y pone errno a EINTR
  • 11. Espera  Ejercicio práctico:  Vamos a utilizar SIGUSR1 para que un programa genere un número aleatorio cada vez que reciba dicha señal. Usaremos SIGINT para inhabilitar la señal mientras se atiende la interrupción.  La señal la daremos desde la consola del sistema mediante: kill -s USR1 pid  Para finalizar, enviaremos un SIGTERM desde consola.
  • 12. Espera (II)  Para esperar por una señal concreta: #include <unistd.h> int sigsuspend (const sigset_t *mask);
  • 13. Funciones para señales  Una señal puede ser tratada o estar pendiente (en espera de ser tratada)  Un proceso puede bloquear una señal; si se recibe quedará pendiente.  La señal deja de estar pendiente cuando el proceso la desbloquea o cambia la rutina de tratamiento a la rutina por defecto  sigaction permite instalar manejadores de señales  sigprocmask permite especificar un conjunto de señales que queremos que el proceso bloquee  sigpending devuelve el conjunto de señales que están bloqueadas y actualmente pendientes.
  • 14. Máscaras de señales sigprocmask ( int how, const sigset_t *set, sigset_t *oset); how: SIG_BLOCK (bloquear) SIG_UNBLOCK (desbloquear) SIG_SETMASK (poner la máscara al valor expresado en set) Si *set es NULL, no se realizan cambios
  • 15. Conjuntos de señales  Para cierta funciones (p.ej. sigaction) necesitamos especificar un conjunto de señales: #include <signal.h> int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signo); int sigdelset(sigset_t *set, int signo); int sigmember(const sigset_t *set, int signo); PROGRAMACIÓN DE SEÑALES sigset_t = unsigned long
  • 16. Manejador de señales  sigaction es más nueva que signal, y es definida por POSIX. Permite ver o modificar (o ambas cosas) la acción asociada a una señal #include <signal.h> struct sigaction { void (*sa_handler)(int); /* dir. del manejador de señal o SIG_IGN o SIG_DFL */ sigset_t sa_mask; /* señales adicionales a bloquear cuando se maneje ésta*/ int sa_flags; void (*sa_restorer)(void); /* obsoleto */ } int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
  • 17. Funciones de tiempo #include <sys/time.h> struct itimerval { struct timeval it_interval; /* next value */ struct timeval it_value; /* current value */ }; struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; int getitimer(int which, struct itimerval *value); int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue); #include <unistd.h> unsigned int alarm(unsigned int seconds); unsigned int sleep(unsigned int seconds); void usleep(unsigned long usec);
  • 18. Funciones de tiempo  Cada proceso puede tener hasta tres temporizadores; se ponen con setitimer  alarm genera una señal SIGALRM tras un número de segundos. La acción por defecto de SIGALRM es eliminar el proceso  sleep y usleep suspenden al proceso un nº de segundos o microsegundos
  • 19. Ejercicios Prácticos a entregar NOTA: lo que no se deduzca del enunciado pueden implementarlo como mejor les parezca, pero usen llamadas al sistema mientras sea posible 1. Escribir un programa que reciba como parámetro el nº de procesos hijo que debe crear. Cada proceso hijo deberá dormir un nº aleatorio de segundos, entre 0 y 30. El padre debe esperar por cada hijo, y presentará en pantalla su PID a medida que éstos terminen. Cada hijo decide el tiempo de espera. 2. Realizar una implementación propia de la función de librería system. 3. Hacer un programa que imprima un mensaje cuando se pulse Ctrl-C. El programa debe terminar tras pulsar Ctrl-C x veces. Si no se producen ninguno en 30 segundos, el proceso deberá terminar. 4. A) Codificar un programa que envie señales a un proceso. Sintaxis: enviar señal pid. B) Codificar otro programa que capture las señales SIGINT, SIGKILL, SIGTERM y SIGUSR1 (muestre un mensaje en pantalla), y que termine al recibir SIGUSR2.