Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M)...

36
Procesos y Señales Laboratorio de Arquitectura de Ordenadores

Transcript of Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M)...

Page 1: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Procesos y Señales

Laboratorio de Arquitectura de Ordenadores

Page 2: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 2

Índice

IntroducciónProcesosSeñalesBibliografía

Page 3: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 3

Introducción

Proceso: unidad mínima expedida por el planificador.Proceso formado por:- Programa ejecutable- Datos asociados al programa (variables,

buffers,etc)- El contexto de ejecución del programa

Page 4: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 4

Introducción

Imagen de un proceso:

Datos Usuario Almacena datos programa, pila usuario, etc ...

Programa Programa a ejecutar

Pila Pila sistema: paso parámetros al proceso.

BCPInformación control proceso: identificación proceso, estado del proceso, ...

Page 5: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 5

Introducción

Modelo procesos 5 estados:

Nuevo Listo

Bloqueado

Ejecución TerminadoAdmitir

Pasar a Ejecución

Time-Out

Liberar

Espera Suceso

OcurreSuceso

Page 6: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 6

Introducción

Modelo procesos 6 estados:

Nuevo Listo

Bloqueado

Ejecución TerminadoAdmitir

Pasar a Ejecución

Time-Out

Liberar

Espera Suceso

OcurreSuceso

Suspendido Suspender

Activar

Page 7: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 7

Introducción UNIX se diseño en CEn C tenemos un conjunto de funciones con parámetros y un valor devuelto (puede también ser void)Valor que devuelve una función en UNIX suele ser si hay error (-1) o no (0), no nos dice que error es, pero hay variable global del sistema que indica el error producido

Page 8: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 8

Introducción En un programa de usuario en C podemos usar:Llamadas al sistema. Interfaz con el SO (Páginas del manual:2)Funciones del sistema. (Páginas del manual:3)POXIS: Llamadas al sistema comunes a varios SO (son las que veremos). En particular UNIX tiene estas llamadas (aparte tiene más)

Page 9: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 9

Procesos: Definiciones

Procesos en el sistema en un determinado momento pueden estar: 1) Preparado para ejecutarse o ejecutándose2) Bloqueado3) Terminado sin liberar memoria (ha hecho exit) 4) Terminado y liberado memoria (proceso muerto) (ha hecho exit y su padre actual le lanza un wait)

Page 10: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 10

Procesos: Definiciones

Proceso cuyo padre muere es heredado inmediatamente por el proceso init. Proceso init está continuamente lanzando waits a todos sus hijosProceso huérfano: Su proceso padre inicial ha inicial ha muerto y es heredado por inito por initterminado pero no ha liberado memoria

e su padre no le ha lanzado un waitdo un wait

Page 11: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 11

Procesos: POSIX

pid=fork()exit(status)pid=getpid() pid del propio procesopid=getppid pid del proceso padrepid=waitpid(pid, &status, opts)s=execve(name, argv, envp)

Page 12: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 12

Procesos: fork()

Es la única llamada para crear procesosCada proceso en UNIX se le asigna un número. INIT es el primer proceso en el sistema, tiene el número 1. Número para los demás procesos es un criterioCriterio establecido para práctica: Primer proceso que creemos el número 100 los sucesivos que se creen incrementan en 1

Page 13: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 13

Procesos:fork()

Proceso que se crea con fork es una copia exacta de su padre, tanto en el código del programa como en los datos. Unica diferencia valor devuelto en x (hijo vale 0, padre vale el pid del hijo). Si hay error no se crea el hijo y devuelve -1 (p ej. si el sistema no permite crear nuevo proceso por falta de recursos)Ejemplo: y=30;

x=fork();printf(y);

Page 14: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 14

Procesos: Arbol de procesos

Un árbol de procesos es un diagrama que nos muestra la estructura y evolución de los procesos en el sistema.Cada proceso se representa por un círculo y tiene dentro un número. Están numerados según el orden de creaciónDe todo proceso padre sale una línea hacia su hijo

Page 15: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 15

Procesos: Arbol de Procesos

Criterios:Primer proceso nº 100 y numeración creciente en orden de aparición (101, 102, etc.)Si dos procesos van ejecutándose en paralelo y es aleatorio (dependerá del planificador), supondremos que el de menor número llega antes

Page 16: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 16

Procesos: Criterio de Planificación

Criterios de planificación:i) De entre los procesos que estén preparados para ejecución en un momento t se elige primero para ejecutarse aquel cuya siguiente línea a ejecutar esté más retrasada en el código del programa y en caso de empate el de menor número. ii) Una vez que un proceso ejecuta una instrucción el planificador saca a ese proceso y, pasa a elegir un nuevo proceso entre los que estén preparados para ejecución siguiendo el criterio i)Excepción: bucle infinito: Menor prioridad para ejecutar ese proceso que ningún otro.

Page 17: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 17

Procesos: Tabla de variables

Es una tabla n x m donde n es el número de variables del programa y m es el número de procesos que ha habido en el programa durante la ejecución del mismoEn una casilla (i,j) se rellenará la sucesión de valores de la variable i correspondiente (ordenados según el cambio en el tiempo) en el proceso j

Page 18: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 18

Ejemplo

for (i==0, i<3, i++) {var[i]=fork();if ((var[i] !=0)&&(i==0)) {

b=fork();if (b==0){

b=2;b=5;exit (0);

}}

}

Page 19: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 19

Procesos: Diagrama de Procesos

100

106104

105103102101

107

108

Page 20: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 20

Procesos: Tabla de variables

100 101 102 103 104 105 106 107 108

var[0]

0, 101

0 101 101 0 101 0 101 0

var[1]

0, 103

0, 104

0 0 0 103 104 0 0

var[2]

0, 105

0, 106

0 0, 107

0, 108

0 0 0 0

b 0, 102

0 0, 2, 5

102 0 102 0 102 0

Page 21: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 21

Procesos: exit(status)

Cuando un proceso termina su ejecución realiza un exitstatus marca el código de salida. 0 si es correcto o un número del 1 al 255Si un proceso hace un exit, el resto de código si lo hubiera no se ejecutaSi un proceso se ejecuta y llega al final de su código, aunque no ponga nada en el código es como si realizara un exit(0)

Page 22: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 22

Procesos: pid=waitpid(pid, &status, opts)

Proceso que lo lanza a la espera que uno de sus hijos termine (si pid=-1) o bien que reciba una señal. Si no tiene hijos la llamada da un error (código -1) Si pid es distinto a -1 espera sólo por el hijo con ese pid concretoProceso se bloquea hasta que un hijo termine o bien reciba una señalEn status devuelve 2 bytes. El más alto es el código del EXIT y el más bajo el número de señal. Tenemos 3 opciones: (0,0) (n,0) (0,n)Opts: acción realiza el proceso llamante: bloquearse (0) o no bloquearse.

Page 23: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 23

Procesos: n=execve(name, argv, envp)

No crea nuevos procesos, utiliza el que habíaEs una llamada sin retorno. En caso de éxito el código del programa actual se elimina y se carga el nuevo programaSi hay error quedamos con el mismo código y obtendremos el valor de la nname: nombre del programa a ejecutarargv: Array de parámetros que son los argumentos que se le pasan al programaenvp: Array de entorno

Page 24: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 24

Señales

Mecanismo software informa proceso del acontecimiento suceso asíncrono.Las señales pueden enviarlas los procesos a otros procesos y también se pueden generar automáticamente (Ej. Al pulsar tecla DEL o llamada al sistema KILL)Proceso cuando recibe señal puede: ignorar la señal, realizar una acción por defecto o asociar una rutina específica de tratamiento a esa señal.

Page 25: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 25

Señales: Acciones por defecto

Las acciones por defecto asociadas a una señal cuando un proceso la recibe (acción pueden darse como una combinación de varias de las siguientes) : A: Terminación del proceso, B: Ignorar la señal, C: Volcar un fichero core, D: Parar el proceso, E: La rutina de servicio no puede modificarse F: La señal no puede ser ignorada.

Page 26: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 26

Señales:Tipos

Están numeradas, cada una tiene un nombre dependiendo lo que representa15: SIGTERM (A) (terminación amistosa)9: SIGKILL (AEF) (eliminación a la fuerza)3: SIGQUIT (AC) (salir)2: SIGINT (A) (Interrupción)19: SIGSTOP (DEF) (Para el proceso)

Page 27: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 27

Señales: POSIX

s=sigaction(sig, &act, &oldact)s=signal(sig, fname)s=kill(pid, sig)s=alarm(seconds)s=pause()

Page 28: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 28

Señales: s=sigaction(sig, &act,&oldact)

Sirve para que un proceso trate una señal y no se realice la acción por defectosig es el número de la señal a tratar (no SIGKILL ni SIGSTOP pq no se pueden bloquear)act es la nueva acción que se instala para tratar a la señal. Puede ser un FLAG con la acción a desempeñar (SIG_IGN ignora todas las llegadas consecutivas de la señal y SIG_DFL para reestablecer acción por omisión de la señal cuando llegue)

Page 29: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 29

Señales: s=signal(sig, fname)

Sirve para que un proceso trate una señal y no se realice la acción por defecto cuando la recibasig es el número de la señal a tratar (no SIGKILL ni SIGSTOP pq no se pueden bloquear)fname es la función que tratará la señal o bien un FLAG con la acción a desempeñar (SIG_IGN ignora todas las llegadas consecutivas de la señal y SIG_DFL para reestablecer acción por omisión de la señal cuando llegue)

Page 30: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 30

Señales: s=kill(pid, sig) , alarm(seconds), pause()

Manda al proceso con PID pid el número de señal sig alarm(seconds) tras un tiempo de secondssegundos se envía la señal SIGALARM al proceso que lo invocópause() suspende un proceso hasta que le llegue una señal

Page 31: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 31

Señales: Ejemplo

signal (15, SIG_IGN);for (i==0, i<3, i++) {

var[i]=fork();if (var[i] != 0) { kill(var[i], 15); }if ((var[i] !=0)&&(i==0)) {

b=fork();if (b==0){

b=2;b=5;exit (0);

}}

}

Page 32: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 32

Diagrama de Procesos con señales

Se toma como base el diagrama de procesos tal y como se ha explicado y se añaden flechas discontínuas que van desde el proceso origen hacia el proceso destino receptor de la señal acompañando el número de señal a la flechaSi se manda más de una vez la misma señal entre los procesos se indicará al mismo lado de la señal el número de veces que se ha enviado. Se indica el par como (numseñal, numveces)

Page 33: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 33

Procesos: Diagrama de Procesos con Señales

100

106104

105103102101

107

108

15

15

15

15

15

15

15

Page 34: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 34

Simulación PlanificaciónPara simular la planificación con los criterios establecidos debemos hacer uso de sleep, de forma que garantizamos que unos procesos se ejecuten antes que otros.Supuesto: sólo tenemos en el sistema los procesos que lanzamos y el tiempo en ejecutar cualquier instrucción de nuestro programa o el tiempo para la selección de un proceso para ejecutar por parte del planificador es despreciable frente a 1 segundo.

Page 35: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 35

Simulación Planificación: Ejemplosignal (15, SIG_IGN);for (i==0, i<3, i++) {

var[i]=fork();sleep(2);if (var[i]==0) {sleep(i+1);} if (var[i] != 0) { kill(var[i], 15); }if ((var[i] !=0)&&(i==0)) {

b=fork();if (b==0){

b=2;b=5;exit (0);

}}

}

Page 36: Procesos y Señales - UC3Mpedmume/asignaturas/2006/LAO/Lab_3...Marzo 2006 Dep.Ing.Telemática (UC3M) 28 Señales: s=sigaction(sig, &act,&oldact) Sirve para que un proceso trate una

Marzo 2006 Dep.Ing.Telemática (UC3M) 36

Bibliografía

Arquitectura de OrdenadoresProcesosParte de Señales de Comunicación Entre procesos

A. S. Tanembaum, A. B. Woodhall, “Sistemas Operativos: Diseño e implementación”, 2ª Ed. Prentince Hall, 1998Silberschatz, J. Peterson, P.galvin "Sistemas Operativos: Conceptos fundamentales", Addison Wesley 3ª Edición