Sei sulla pagina 1di 36

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, pila usuario, etc ...

Programa Programa a ejecutar

Pila Pila sistema: paso parámetros al proceso.

Información control proceso: identificación


BCP
proceso, estado del proceso, ...

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


Introducción
Modelo procesos 5 estados:
Pasar a Ejecución

Nuevo Adm itir Listo Ejecución Liberar Terminado

Tim e-Out

Ocurre
Suceso
Espera Suceso

Bloqueado

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


Introducción
Modelo procesos 6 estados:

Pasar a Ejecución

Nuevo Adm itir Listo Ejecución Liberar Terminado

Tim e-Out

Activar
Ocurre
Suceso
Espera Suceso

Suspendido Suspender Bloqueado

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


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), no nos dice que
error es, pero hay variable global del sistema
que indica el error producido

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


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)

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


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.Telemática (UC3M) 9


Procesos: Definiciones
„ Proceso cuyo padre muere es heredado
inmediatamente por el proceso init. 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.Ing.Telemática (UC3M) 10


Procesos: POSIX

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

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


Procesos: fork()
„ Es la única llamada para crear procesos
„ Cada 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 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.Ing.Telemática (UC3M) 12


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);

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


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ón
„ De todo proceso padre sale una línea
hacia su hijo

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


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

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


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.

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


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,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.Ing.Telemática (UC3M) 17


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);
}
}
}

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


Procesos: Diagrama de Procesos

100

101
102 103 105

104 106

107
108

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


Procesos: Tabla de variables

100 101 102 103 104 105 106 107 108

var 0, 0 101 101 0 101 0 101 0


[0] 101

var 0, 0, 0 0 0 103 104 0 0


[1] 103 104

var 0, 0, 0 0, 0, 0 0 0 0
[2] 105 106 107 108

b 0, 0 0, 102 0 102 0 102 0


102 2, 5

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


Procesos: exit(status)
„ Cuando un proceso termina su ejecución
realiza un exit
„ status marca el código de salida. 0 si es
correcto o un número del 1 al 255
„ Si un proceso hace un exit, el resto de código
si lo hubiera no se ejecuta
„ Si 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)

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


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 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. Tenemos 3 opciones: (0,0) (n,0) (0,n)
„ Opts: acción realiza el proceso llamante:
bloquearse (0) o no bloquearse.
Marzo 2006 Dep.Ing.Telemática (UC3M) 22
Procesos: n=execve(name, argv, envp)

„ No crea nuevos procesos, utiliza el que había


„ Es una llamada sin retorno. 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.Ing.Telemática (UC3M) 23


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.

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


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.

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


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.Ing.Telemática (UC3M) 26


Señales: POSIX

„ s=sigaction(sig, &act, &oldact)


„ s=signal(sig, fname)

„ s=kill(pid, sig)

„ s=alarm(seconds)

„ s=pause()

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


Señales: s=sigaction(sig, &act,&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. 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.Ing.Telemática (UC3M) 28


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 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.Ing.Telemática (UC3M) 29


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 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.Ing.Telemática (UC3M) 30


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);
}
}
}

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


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.
Se indica el par como (numseñal, numveces)

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


Procesos: Diagrama de Procesos con Señales

15
15

100 15

101
15
102 103 105

104 15 106 15

107
15
108

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


Simulación Planificación
„ Para 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.

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


Simulación Planificación: Ejemplo
signal (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);
}
}
}

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


Bibliografía
„ Arquitectura de Ordenadores
„ Procesos
„ Parte 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, 1998
„ Silberschatz, J. Peterson, P.galvin "Sistemas
Operativos: Conceptos
fundamentales", Addison Wesley 3ª Edición

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

Potrebbero piacerti anche