P. 1
process_signals

process_signals

|Views: 1|Likes:

More info:

Published by: Hernaldo Alvarez Guerrero on Mar 08, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/09/2014

pdf

text

original

Procesos y Señales

Laboratorio de Arquitectura de Ordenadores

Índice
Introducción Procesos Señales Bibliografía

Marzo 2006

Dep.Ing.Telemática (UC3M)

2

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

Marzo 2006

Dep.Ing.Telemática (UC3M)

3

Introducción Imagen de un proceso: Datos Usuario Almacena datos programa. .Ing.. Programa Pila BCP Marzo 2006 Dep. Información control proceso: identificación proceso. pila usuario. estado del proceso..Telemática (UC3M) 4 . Programa a ejecutar Pila sistema: paso parámetros al proceso... etc .

Ing.Introducción Modelo procesos 5 estados: Pasar a Ejecución Nuevo Adm itir Listo Tim e-Out Ocurre Suceso Ejecución Liberar Terminado Espera Suceso Bloqueado Marzo 2006 Dep.Telemática (UC3M) 5 .

Telemática (UC3M) 6 .Introducción Modelo procesos 6 estados: Pasar a Ejecución Nuevo Adm itir Listo Tim e-Out Ejecución Liberar Terminado Activar Ocurre Suceso Espera Suceso Suspendido Suspender Bloqueado Marzo 2006 Dep.Ing.

Ing.Introducción UNIX se diseño en C En 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). pero hay variable global del sistema que indica el error producido Marzo 2006 Dep.Telemática (UC3M) 7 . no nos dice que error es.

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

Telemática (UC3M) 9 .Procesos: Definiciones Procesos en el sistema en un determinado momento pueden estar: 1) Preparado para ejecutarse o ejecutándose 2) Bloqueado 3) 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) Marzo 2006 Dep.Ing.

Proceso init está continuamente lanzando waits a todos sus hijos Proceso huérfano: Su proceso padre inicial ha inicial ha muerto y es heredado por init o por init terminado pero no ha liberado memoria e su padre no le ha lanzado un wait do un wait Marzo 2006 Dep.Procesos: Definiciones Proceso cuyo padre muere es heredado inmediatamente por el proceso init.Telemática (UC3M) 10 .Ing.

envp) Marzo 2006 Dep. opts) s=execve(name.Telemática (UC3M) 11 . &status.Procesos: POSIX pid=fork() exit(status) pid=getpid() pid del propio proceso pid=getppid pid del proceso padre pid=waitpid(pid. argv.Ing.

tiene el número 1. Número para los demás procesos es un criterio Criterio establecido para práctica: Primer proceso que creemos el número 100 los sucesivos que se creen incrementan en 1 Marzo 2006 Dep.Telemática (UC3M) 12 .Ing. INIT es el primer proceso en el sistema.Procesos: fork() Es la única llamada para crear procesos Cada proceso en UNIX se le asigna un número.

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. printf(y). tanto en el código del programa como en los datos.Telemática (UC3M) 13 .Ing. x=fork(). Marzo 2006 Dep. Unica diferencia valor devuelto en x (hijo vale 0.Procesos:fork() Proceso que se crea con fork es una copia exacta de su padre.

Cada proceso se representa por un círculo y tiene dentro un número.Ing.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.Telemática (UC3M) 14 . Están numerados según el orden de creación De todo proceso padre sale una línea hacia su hijo Marzo 2006 Dep.

Ing. etc. 102.Telemática (UC3M) 15 .) Si dos procesos van ejecutándose en paralelo y es aleatorio (dependerá del planificador). supondremos que el de menor número llega antes Marzo 2006 Dep.Procesos: Arbol de Procesos Criterios: Primer proceso nº 100 y numeración creciente en orden de aparición (101.

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. Marzo 2006 Dep. 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. ii) Una vez que un proceso ejecuta una instrucción el planificador saca a ese proceso y.Telemática (UC3M) 16 .Ing.

Telemática (UC3M) 17 .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 Marzo 2006 Dep.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 mismo En una casilla (i.Ing.

i++) { var[i]=fork(). if (b==0){ b=2. i<3. if ((var[i] !=0)&&(i==0)) { b=fork().Ejemplo for (i==0.Telemática (UC3M) 18 .Ing. exit (0). b=5. } } } Marzo 2006 Dep.

Procesos: Diagrama de Procesos 100 101 102 104 106 107 108 103 105 Marzo 2006 Dep.Ing.Telemática (UC3M) 19 .

5 102 0 102 0 Marzo 2006 Dep.Procesos: Tabla de variables 100 101 102 103 104 105 106 107 108 var [0] var [1] var [2] b 0. 0 105 106 0. 102 0 2. 0 103 104 0. 0 107 108 0. 0. 0. 0.Ing. 0 101 101 101 0 0 0 101 0 101 0 0 0 0.Telemática (UC3M) 20 . 0 102 103 104 0 0 0 0.

Telemática (UC3M) 21 .Ing. el resto de código si lo hubiera no se ejecuta Si un proceso se ejecuta y llega al final de su código. 0 si es correcto o un número del 1 al 255 Si un proceso hace un exit.Procesos: exit(status) Cuando un proceso termina su ejecución realiza un exit status marca el código de salida. aunque no ponga nada en el código es como si realizara un exit(0) Marzo 2006 Dep.

Procesos: pid=waitpid(pid.0) (n. Tenemos 3 opciones: (0. 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 concreto Proceso se bloquea hasta que un hijo termine o bien reciba una señal En 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.0) (0.Telemática (UC3M) 22 . opts) Proceso que lo lanza a la espera que uno de sus hijos termine (si pid=-1) o bien que reciba una señal.n) Opts: acción realiza el proceso llamante: bloquearse (0) o no bloquearse.Ing. Marzo 2006 Dep. &status.

Telemática (UC3M) 23 .Ing. En caso de éxito el código del programa actual se elimina y se carga el nuevo programa Si hay error quedamos con el mismo código y obtendremos el valor de la n name: nombre del programa a ejecutar argv: Array de parámetros que son los argumentos que se le pasan al programa envp: Array de entorno Marzo 2006 Dep.Procesos: n=execve(name. envp) No crea nuevos procesos. utiliza el que había Es una llamada sin retorno. argv.

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

Ing. E: La rutina de servicio no puede modificarse F: La señal no puede ser ignorada. B: Ignorar la señal. D: Parar el proceso. Marzo 2006 Dep.Telemática (UC3M) 25 . C: Volcar un fichero core.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.

Ing.Telemática (UC3M) 26 .Señales:Tipos Están numeradas. cada una tiene un nombre dependiendo lo que representa 15: 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) Marzo 2006 Dep.

Telemática (UC3M) 27 . sig) s=alarm(seconds) s=pause() Marzo 2006 Dep. fname) s=kill(pid. &oldact) s=signal(sig.Ing. &act.Señales: POSIX s=sigaction(sig.

&act. 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) Marzo 2006 Dep.Señales: s=sigaction(sig.&oldact) Sirve para que un proceso trate una señal y no se realice la acción por defecto sig 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.Telemática (UC3M) 28 .Ing.

fname) Sirve para que un proceso trate una señal y no se realice la acción por defecto cuando la reciba sig 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) Marzo 2006 Dep.Señales: s=signal(sig.Ing.Telemática (UC3M) 29 .

alarm(seconds).Telemática (UC3M) 30 .Ing. sig) .Señales: s=kill(pid. pause() Manda al proceso con PID pid el número de señal sig alarm(seconds) tras un tiempo de seconds segundos se envía la señal SIGALARM al proceso que lo invocó pause() suspende un proceso hasta que le llegue una señal Marzo 2006 Dep.

if (var[i] != 0) { kill(var[i]. if (b==0){ b=2. i<3. } } } Marzo 2006 Dep. SIG_IGN). i++) { var[i]=fork(). for (i==0. } if ((var[i] !=0)&&(i==0)) { b=fork().Ing. exit (0). 15).Señales: Ejemplo signal (15.Telemática (UC3M) 31 . b=5.

Ing.Telemática (UC3M) 32 . Se indica el par como (numseñal.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 flecha Si 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. numveces) Marzo 2006 Dep.

Procesos: Diagrama de Procesos con Señales 15 15 100 15 15 101 102 15 103 15 105 104 106 107 15 108 Marzo 2006 Dep.Telemática (UC3M) 33 .Ing.

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.Telemática (UC3M) 34 .Ing. de forma que garantizamos que unos procesos se ejecuten antes que otros.Simulación Planificación Para simular la planificación con los criterios establecidos debemos hacer uso de sleep. Marzo 2006 Dep.

Telemática (UC3M) 35 . } if ((var[i] !=0)&&(i==0)) { b=fork().Ing. for (i==0.} if (var[i] != 0) { kill(var[i]. 15). if (var[i]==0) {sleep(i+1). sleep(2). if (b==0){ b=2. exit (0). } } } Marzo 2006 Dep. i++) { var[i]=fork(). b=5.Simulación Planificación: Ejemplo signal (15. SIG_IGN). i<3.

Ing. S. Tanembaum. A. Peterson.galvin "Sistemas Operativos: Conceptos fundamentales". Woodhall.Telemática (UC3M) 36 . Prentince Hall. B. J. P.Bibliografía Arquitectura de Ordenadores Procesos Parte de Señales de Comunicación Entre procesos A. 1998 Silberschatz. “Sistemas Operativos: Diseño e implementación”. Addison Wesley 3ª Edición Marzo 2006 Dep. 2ª Ed.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->