PDF de programación - Sistemas Operativos: Procesos

<<>>
Imágen de pdf Sistemas Operativos: Procesos

Sistemas Operativos: Procesosgráfica de visualizaciones

Publicado el 3 de Junio del 2019
502 visualizaciones desde el 3 de Junio del 2019
218,8 KB
39 paginas
SISTEMAS OPERATIVOS:
PROCESOS

Señales

ADVERTENCIA

2

¨ Este material es un simple guión de la clase: no son

los apuntes de la asignatura.

¨ El conocimiento exclusivo de este material no
garantiza que el alumno pueda alcanzar los
objetivos de la asignatura.

¨ Se recomienda que el alumno utilice los materiales

complementarios propuestos.

Sistemas Operativos – Hilos y procesos

Contenido

3

¨ Señales.
¨ Temporizadores.
¨ Excepciones.
¨ Entorno de un proceso

Sistemas Operativos – Hilos y procesos

Señales. Concepto

4

¨ 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

Sistemas Operativos – Hilos y procesos

Señales. Concepto

5

¨ Permite avisar a un proceso de la ocurrencia de un

evento.
¤ Y reaccionar a dicho evento

¨ Ejemplos:

¤ Un proceso padre recibe la señal SIGCHLD cuando

termina un proceso hijo.

¤ Un proceso recibe una señal SIGILL cuando intenta

ejecutar una instrucción máquina ilegal.

Son un mecanismo propio de los sistemas UNIX

Sistemas Operativos – Hilos y procesos

Señales: interrupciones al proceso

6

¨ Las señales son interrupciones al proceso
¨ Envío o generación

¤ Proceso- Proceso (dentro del grupo) con el kill
¤ SO - Proceso

Sistemas Operativos – Hilos y procesos

Señales. Tratamiento

7

¨ El SO las transmite al proceso

¤ El proceso debe estar preparado para recibirla

n Especificando un procedimiento de señal con sigaction.
n Dirección de la rutina de tratamiento (nombre)

¨ Enmascarando la señal con sigprogmask.
¨ Ignorando la señal

¤ Trtamiento con SIG_IGN

¨ Si no está preparado à acción por defecto (SIG_DFL)

n El proceso, en general, muere.
n Hay algunas señales que se ignoran o tienen otro efecto.

¨ Para enviar una señal a un proceso:

¤ int kill(pid_t pid, int sig);

¨ El servicio pause() para el proceso hasta que recibe una señal

Sistemas Operativos – Hilos y procesos

Señales. Envío y espera

8

¨ Para enviar una señal a un proceso:

int kill(pid_t pid, int sig);
¤ CTRL-C -> SIGINT
¤ CTRL-Z -> SIGSTOP

¨ Un proceso se puede enviar una señal a sí mismo

#include <signal.h>
int raise(int sig);

¨ El servicio pause() bloquea el proceso hasta que

recibe una señal cualquiera

Sistemas Operativos – Hilos y procesos

Lista de señales

9

¨ El sistema operativo cuenta con un conjunto definido

de señales
¤ Archivo en “include”: signal.h

¨ Señales importantes:

¤ SIGILL instrucción ilegal
¤ SIGALRM vence el temporizador
¤ SIGKILL mata al proceso
¤ SIGSGEV violación segmento memoria
¤ SIGUSR1 y SIGUSR2 reservadas para el uso del

programador.

Sistemas Operativos – Hilos y procesos

Señales predefinidas

10

Sistemas Operativos – Hilos y procesos

Servicios POSIX para la gestión de
señales
¨ int kill(pid_t pid, int sig)

11

¤ Envía al proceso "pid" la señal "sig“.
¤ Casos especiales:

n pid=0 à Señal a todos los procesos con gid igual al gid

del proceso.

n pid < -1 à Señal a todos los proceso con gid igual al

valor absolute de pid.

¨ int sigaction(int sig,

struct sigaction *act,
struct sigaction *oact)

¤ Permite especificar la acción a realizar como

tratamiento de la señal "sig”

¤ La configuración anterior se puede guardar en “oact”.

Sistemas Operativos – Hilos y procesos

La estructura sigaction

12

struct sigaction {

void (*sa_handler)(); /* Manejador */
sigset_t sa_mask; /* Señales bloqueadas */
int sa_flags; /* Opciones */

};

¨ Manejador:

¤ SIG_DFL: Acción por defecto (normalmente termina el proceso).
¤ SIG_IGN: Ignora la señal.
¤ Dirección de una función de tratamiento.

¨ Máscara de señales a bloquear durante el manejador.
¨ Opciones normalmente a cero.

Sistemas Operativos – Hilos y procesos

Conjuntos de señales

13

¨ int sigemptyset(sigset_t * set);

¤ Crea un conjunto vacío de señales.

¨ int sigfillset(sigset_t * set);

¤ Crea un conjunto lleno con todas la señales posibles.

¨ int sigaddset(sigset_t * set, int signo);

¤ Añade una señal a un conjunto de señales.

¨ int sigdelset(sigset_t * set, int signo);

¤ Borra una señal de un conjunto de señales.
¨ int sigismember(sigset_t * set, int signo);

¤ Comprueba si una señal pertenece a un conjunto.

Sistemas Operativos – Hilos y procesos

Ejemplo

14

¨ Ignorar la señal SIGINT

¤ Se produce cuando se pulsa la combinación de teclas

Ctrl+C

struct sigaction act;
act.sa_handler = SIG_IGN;
act.flags = 0;
sigemptyset(&act.sa_mask);
Sigaction(SIGINT, &act, NULL);

Sistemas Operativos – Hilos y procesos

Servicios POSIX para la gestión de
señales
¨ int pause(void)

15

¤Bloquea al proceso hasta la recepción de una

señal.

¤No se puede especificar un plazo para

desbloqueo.

¤No permite indicar el tipo de señal que se espera.
¤No desbloquea el proceso ante señales ignoradas.

¨ int sleep(unsigned int sec)

¤Suspende un proceso hasta que vence un plazo o

se recibe una señal.

Sistemas Operativos – Hilos y procesos

Ejemplo: capturar SIGSEV

16

/*Programa que provoca que se eleve la seneal SIGSEGV
escribiendo en la posicion 0 de memoria la captura. */
#include …
#include <signal.h>
void capturar_senyal(int senyal){

printf(“Error por ocupacion indebida de memoria\n");
signal(SIGSEGV,SIG_DFL);}

main(void){

int *p;
signal(SIGSEGV,capturar_senyal);
printf ("Ya he colocado el manejador\n");
p=0;
printf ("Voy a poner un 5 en la variable\n");
*p=5; }

Sistemas Operativos – Hilos y procesos

Contenido

17

¨ Señales.
¨ Temporizadores.
¨ Excepciones.
¨ Entorno de un proceso

Sistemas Operativos – Hilos y procesos

Temporizadores

18

¨ El sistema operativo mantiene un temporizador por

proceso (caso UNIX).
¤ Se mantiene en el BCP del proceso un contador del
tiempo que falta para que venza el temporizador.
¤ La rutina del sistema operativo actualiza todos los

temporizadores.

¤ Si un temporizador llega a cero se ejecuta la función

de tratamiento.

¨ En UNIX el sistema operativo envía una señal

SIGALRM al proceso cuando vence su temporizador.

Sistemas Operativos – Hilos y procesos

Servicios POSIX para temporización

19

¨ int alarm(unsigned int sec)

¤Establece un temporizador.
¤Si el parámetro es cero, desactiva el temporizador.

Sistemas Operativos – Hilos y procesos

Ejemplo: Imprimir un mensaje cada 10
segundos

20

#include <signal.h>
#include <stdio.h>
void tratar_alarma(void) {

printf("Activada \n");

}

int main() {

struct sigaction act;

/* establece el manejador para SIGALRM */
act.sa_handler = tratar_alarma;
act.sa_flags = 0; /* ninguna acción especifica */
sigaction(SIGALRM, &act, NULL);

act.sa_handler = SIG_IGN;
sigaction(SIGINT, &act, NULL);
for(;;){ /* recibe SIGALRM cada 10 segundos */

/* ignora SIGINT */

alarm(10);
pause();

}

}

Sistemas Operativos – Hilos y procesos

Finalización temporizada

21

#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
pid_t pid;
void tratar_alarma(void) {
}
main(int argc, char **argv) {

kill(pid, SIGKILL);

int status;
char **argumentos;
struct sigaction act;
argumentos = &argv[1];
pid = fork();

}

switch(pid) {

perror ("fork");

case -1: /* error del fork() */
exit(-1);
case 0: /* proceso hijo */

default: /* padre */

execvp(argumentos[0], argumentos);
perror("exec");
exit(-1);
/* establece el manejador */
act.sa_handler = tratar_alarma;
act.sa_flags = 0;
sigaction(SIGALRM, &act, NULL);
alarm(5);
wait(&status);

}
exit(0);

Sistemas Operativos – Hilos y procesos

Contenido

22

¨ Señales.
¨ Temporizadores.
¨ Excepciones
¨ Entorno de un proceso.

Sistemas Operativos – Hilos y procesos

Excepciones

23

¨ El hardware detecta conditiones especiales:

¤ Fallo de página, escritura a página de solo lectura,

desbordamientos de pila, violación de segmento, syscall,


¨ Transfiere control al SO para su tratamiento, que:

¤ Salva contexto proceso
¤ Ejecuta rutina si es necesario
¤ Envía una señal al proceso indicando la excepción

¨ Las excepciones son una optimización de

rendimiento:
¤ Evitan mucho código extra de comprobación en

programas

Sistemas Operativos – Hilos y procesos

Exceptions

24

¨ Many languages (Java, C++, ..) use a mechanism

know as Exceptions to handle errors at runtime
¤ Try {} Catch (exception) {}

¨ In Java, for example, Exception is a class with many

descendants.
¤ ArrayIndexOutOfBoundsException
¤ NullPointerException
¤ FileNotFoundException
¤ ArithmeticException
¤ IllegalArgumentException

Contenido

25

¨ Señales.
¨ Temporizadores.
¨ Excepciones.
¨ Entorno de un proceso.

Sistemas Operativos – Hilos y procesos

Concepto

26

¨ El entorno de un proceso se hereda del padre los siguientes

datos:
¤ Vector de argumentos con el que se ejecutó el comando del

programa

¤ Vector de entorno, una lista de variables <nombre, valor> que

el padre pasa al hijo

¨ El paso de variable de entorno entre padre e hijo

¤ Es una forma flexible de comunicar ambos procesos y determinar

aspectos de la ejecución del hijo en modo usuario

¨ El mecanismo de las variables de entorno permite

particularizar aspectos a nive de cada proceso particular
¤ En lugar de tener una configuración común para todo el sistema

Sistemas Operativos – Hilos y procesos

Entorno de un proceso

27

¨ Variables de entorno:

¤ Mecanismo de paso de información a un proceso.

¨ ¿Se puede ver? Comando: “env”
¨ Ejemplo:

PATH=/usr/bin:/home/pepe/bin
TERM=vt100
HOME=/home/pepe
PWD=/home/pepe/libros/primero
TIMEZONE=MET

Sistemas Operativos – Hilos y procesos

Entorno de un proceso

28

¨ El entorno de un proceso se coloca en la pila del

proceso al iniciarlo.

¨ Acceso:

¤ El sistema operativo coloca algunos valores por defecto

(p. ej. PATH).

¤ Acceso mediante mandatos (set, export).
¤ Acceso mediante API de SO (putenv, geten
  • Links de descarga
http://lwp-l.com/pdf16032

Comentarios de: Sistemas Operativos: Procesos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad