Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gestion de Procesos PDF
Gestion de Procesos PDF
Procesos
Procesos ligeros ((threads
threads))
Polticas y algoritmos de planificacin
Seales y excepciones
Temporizadores
Servidores y demonios
Servicios POSIX
15/12/2009
Procesos
Concepto
p de Proceso
Multitarea
Informacin del proceso (BCP)
Creacin de procesos
Terminacin de procesos
Estados de los procesos
Cambio de contexto
Planificacin
Concepto de proceso I
PROGRAMA: Archivo ejecutable en un dispositivo de
almacenamiento permanente (ej. disco)
PROCESO: Un programa en ejecucin, reside en MP y
segn se ejecuta modifica su contexto
Desde el punto de vista del usuario:
cdigo + estructuras de datos
El sistema operativo le asigna recursos y controla su ejecucin
Desde el punto de vista del sistema operativo:
Tcnicas de multiplexado (planificacin)
Caracterizacin de un proceso: tabla o bloque de control de
procesos (BCP). En Linux: task_struct
Cada proceso posee un espacio de direccionamiento virtual
Independiente
15/12/2009
Jerarqua de procesos
Jerarqua de procesos
Proceso hijo
Proceso padre
Proceso hermano
Proceso abuelo
Vida de un proceso
Crea
Ejecuta
Muere o termina
Ejecucin del proceso
Batch
Interactivo
Grupo de procesos
15/12/2009
Conceptos
Usuario: Persona autorizada a utilizar un sistema
Se identifica en la autenticacin mediante:
Cdigo de cuenta
Cl
Clave
((password
password)
d)
Internamente el SO le asigna el uid
uid
(user
(user identification
identification))
Super-usuario
SuperTiene todos los derechos
Administra el sistema
Grupo de usuarios
Los usuarios se organizan en grupos
Alumnos
Profesores
Todo usuario ha de pertenecer a un grupo
Bases de la Multiprogramacin
Paralelismo real entre E/S y UCP (DMA)
Alternancia en los procesos de fases de E/S y de procesamiento
La memoria almacena varios procesos
Procesamiento
Entrada/salida
Tiempo
15/12/2009
Procesamiento
Entrada/salida
Listo
SO
Proceso nulo
Proceso C
Procesador
Tiempo
Conceptos
Multitarea: varios procesos activos a la vez
p
varios usuarios en varias terminales
Multiusuario: soporta
Tiempo compartido: reparto equitativo del tiempo de
CPU entre varios usuarios
Planificador (sheduler): seleciona el siguiente proceso a
ejecutar
Activador (dispacher): Prepara la ejecucin del proceso
planificado -> cambio de contexto
Grado de multiprogramacin: n de procesos activos
Con BCP vigente
Necesidades de memoria principal: Memoria virtual
15/12/2009
Ventajas de la multitarea
Facilita la programacin, dividiendo los programas en
procesos (modularidad)
Permite el servicio interactivo simultneo de varios usuarios
de forma eficiente
Aprovecha los tiempos que los procesos pasan esperando
a que se completen sus operaciones de E/S
Aumenta el uso de la CPU
Concepto de proceso II
INFORMACIN DEL PROCESO (BCP):
Imagen de memoria (core
(core image)
image)
Estado del procesador
(registros del modelo de programacin)
Bloque de control del proceso BCP
Estado actual del proceso
Identificacin pid
pid,
, ppid
Uid
Uid,, gid
gid.. euid,egid
Prioridad del proceso
Registros de procesador cuando el proceso no est en ejecucin
Puntero a la zona de memoria: Segmentos de memoria
Recursos asignados: Ficheros abiertos, Temporizadores, Seales,
Semforos, Puertos
Un puntero al siguiente BCP
15/12/2009
Memoria de un proceso
Contexto
del nucleo
Contexto
de usuario
Registros
especiales
FFFF
Pila
Registros
generales
Heap
PC
Datos
Texto
SP
0000
Estado
seales, mensajes,
15/12/2009
El SO mantiene estructuras de
datos asociadas a los procesos
Mapa de memoria
del Proceso A
Mapa de memoria
del Proceso B
Tabla de procesos
Tablas SO
BCP Proceso A
BCP Proceso B
BCP Proceso C
- Estado (registros) - Estado (registros) - Estado (registros)
- Identificacin
- Identificacin
- Identificacin
- Control
- Control
- Control
Mapa de
Memoria
- Tabla de memoria
- Tabla de E/S: drivers de bloques, de caracteres
- Tabla de ficheros, de montajes
15/12/2009
Memoria
virtual
i t l
Memoria
principal
Cdigo
Datos
Pila
Tamao
Disco
Tabla de
pginas
Una tabla de
pginas
i
por proceso
15/12/2009
Creacin de procesos I
Objeto
ejecutable
Bibliotec a
sistema
Cargador
Mapa de
memoria
Imagen
del proceso
Tabla de procesos
BCP
Creacin de procesos II
El proceso padre crea un proceso, que a su vez, crea
otros procesos, formando un rbol de procesos
Esquemas de comparticin de recursos
recursos::
A. El padre y el hijo comparten todos los recursos
B. El hijo comparte unsubconjunto de los recursos
del padre
C. El padre y el hijo no comparten recursos
Ejecucin
j
El hijo comparte un subconjunto de los recursos
del padre
El padre espera hasta que el hijo termine
10
15/12/2009
Terminacin de procesos
El proceso ejecuta la ltima sentencia y pide al SO
Su eliminacin (exit
(exit):
):
Devuelve la salida desde el hijo al padre (via wait
wait))
Libera los recursos asignados
El padre puede abortar la ejecucin del hijo
hijo::
El hijo excede sus recursos
La tarea asignada al hijo ya no se necesita
Cuando el padre termina
Algunos SSOO no permiten continuar al hijo
cuando el padre ha terminado
Todos los hijos terminan en cascada
11
15/12/2009
Realcin padre
padre--hijo en procesos
padre
Wait()
Fork()
hijo
Exec()
reanuda
Exit()
Ejecucin
Ejecucin:: Se ejecutan las instruciones del cdigo del proceso
Bloqueado
Bloqueado:: El proceso espera la ocurrencia de un evento
Listo
Listo:: El proceso espera que se le asigne tiempo de CPU para
ejecutarse
Zombie: El proceso ha terminado su ejecucin pero an tiene
una entrada en la tabla de procesos (UNIX)
12
15/12/2009
termina
Zombie
se interrumpe
Ejecucin
Listo
Termina la E/S
o elevento
se planifica
Espera E/S
o un evento
Bloqueado
Cambio de contexto I
13
15/12/2009
Cambio de contexto II
Se produce por una interrupcin.
Cambio de contexto es el conjunto de dos operaciones:
Se p
pasa a ejecutar
j
la rutina de tratamiento de interrupcin
p
Se salva el estado del procesador en el correspondiente BCP
Planificador: decide el siguiente proceso a ejecutar.
Activador: pone a ejecutar un proceso.
Copia el estado del BCP a los registros
Termina con una instruccin RETI (retorno de interrupcin)
Restituye
R tit
ell registro
i t de
d estado
t d (bit d
de nivel
i ld
de ejecucin)
j
i )
Restituye el contador de programa (para el nuevo proceso).
El tiempo de cambio de contexto supone una sobrecarga;
sobrecarga; el sistema no
realiza trabajo til durante este tiempo
El tiempo de cambio de contexto depende del soporte hardware
Estado
Registros
especiales
Registros
generales
PC
SP
Tabla de procesos
BCP Proceso A
Estado
(registros)
BCP Proceso B
Estado
(registros)
BCP Proceso N
Estado
(registros)
Informacin de
identificacin
Informacin de
identificacin
Informacin de
identificacin
Informacin de
Control
Informacin de
Control
Informacin de
Control
Estado
14
15/12/2009
Planificacin de procesos I
Los procesos migran entre varias colas:
Cola
C l trabajos
t b j (job):
(j b) soporta
t todos
t d los
l procesos del
d l
sistema
Cola Listos (ready)
ready):: soporta todos los procesos que
residen en memoria
memoria,, preparados para ser ejecutados
Colas Bloqueados
Bloqueados:: soportan los procesos que esperan
por un dispositivo
p
p
de E/S
15
15/12/2009
Llamadas al sistema I
pid = fork
fork()
()
Crea un proceso idntico al padre
int execl(const char *path, const char *arg, ...)
int execlp(const char *file,
*file const char *arg,
*arg ...))
int execvp(const char *file, char *const argv[])
Reemplaza la imagen del proceso ((cdigo+entorno
cdigo+entorno))
exit(status)
exit
(status)
Termina la ejecucin del proceso y devuelve el estado
pid = waitpid
waitpid((pid,
pid, &
&statloc
statloc,, options)
options)
E
Espera
la
l terminacin
t
i
i de
d un hijo
hij
pid_t getpid(
getpid(void)
void)
Devuelve el identificador del proceso.
pid_t getppid(
getppid(void)
void)
Devuelve el identificador del proceso padre.
16
15/12/2009
Tabla de procesos
BCP
A
El proceso A hace un fork y crea
el proceso hijo B
Mapa de
memoria
Imagen del
proceso A
Imagen del
proceso B
Tabla de procesos
BCP
A
BCP
B
Nuevo PID
Nueva descripcin de memoria
Distinto valor de retorno (0 en el hijo)
17
15/12/2009
Llamadas al sistema.Exec
int execl(const char *path, const char *arg, ...)
int execlp(const char *file, const char *arg, ...)
int execvp(const char *file, char *const argv[])
Reemplaza la imagen del proceso (cdigo+entorno
((cdigo
cdigo+entorno)
cdigo entorno)
entorno)
Argumentos:
path, file: nombre del archivo ejecutable
arg: argumentos
Descripcin:
Devuelve -1 en caso de error, en caso contrario no retorna.
Cambia la imagen de memoria del proceso.
El mismo proceso ejecuta otro programa.
Los ficheros abiertos permanecen abiertos
Las seales con la accin por defecto seguirn por defecto,
las seales con manejador tomarn la accin por defecto.
Llamadas al sistema.Exec
Mapa de
memoria
I
Imagen
del proceso
Tabla de procesos
El proc eso h
hac e un exec
BCP
Mapa de
memoria
Tabla de procesos
BCP
Objeto
ejecutable
Biblioteca
sistema
Cargador
Mapa de
memoria
Imagen
del proceso
Tabla de procesos
BCP
18
15/12/2009
Init
Init
Init
Proceso A
fork()
Proceso A
Proceso A
exit()
Proceso B
Proceso B
Init
wait()
Init
wait()
Proceso B
Proceso B
exit()
19
15/12/2009
Init
Init
Init
Init
Init
Proceso A
fork()
Proceso A
Proceso A
Proceso A
Proceso A
wait()
Proceso B
Proceso B
exit()
Proceso B
zombie
Proceso B
zombie
Llamadas al sistema.Ejemplo
Cdigo C para crear un proceso
int main()
{
pid t pid;
pid_t
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork ha fallado");
exit(-1);
}
else if (pid != 0) {
.
wait(NULL);
exit(0);
}
else {
execlp ("/bin/ls", "ls", NULL);
}
}
/* crea un proceso
/* error
/* Es el padre
/* Cdigo del padre
/* Espera el fin del hijo
/* El padre termina
/* Es el hijo
/* Ejecutar cdigo
20
15/12/2009
Threads
Concepto de thread
Modelos multithread
Diseo con threads
Threads en Linux
Threads en Java
Pthreads (POSIX threads)
Concepto de thread I
Proceso sencillo y multithread:
cdigo
registros
datos
ficheros
ficheros
cdigo
datos
pila
registros
registros
registros
registros
registros
pila
pila
pila
thread
thread
21
15/12/2009
Proceso
Procesos ligeros
Tipos de Threads
Threads-kernel (ULT):
Gestin the thread en el kernel
Conocidos y g
gestionados p
por el ncleo del sistema operativo.
p
Ej, libpthread en Linux o threads en WindowsNT
Threads de usuario (KLT):
Gestin the threads a nivel biblioteca de usuario
Conocidos y gestionados por el lenguaje (ej, Java) o una biblioteca de
funciones de usuario sin que el ncleo del sistema operativo los
conozca
Ej Mach c-threads,
Ej,
c threads fibras de WindowsNT
Threads mixtos
Conocidos y gestionados por una biblioteca de funciones de usuario
que recurre al ncleo del sistema operativo para implementarlos
vinculacin o binding segn distintas relaciones: 1 a 1, o varios a 1.
22
15/12/2009
One
One--to
to--One: cada thread de usuario est soportado en un
thread
th
d del
d l kernel
k
l
Windows NT/XP/2000
Linux
Threads de usuario
Solaris posteriores a v9
K
Dos niveles
niveles:: similar a M:M pero cada thread de usuario se
puede enlazar con un thread del kernel
Solaris v8
Threads de usuario
23
15/12/2009
Procedimiento 2
F P
Espera
en E/S
jecuc
F Ejecucin
Espera
en E/S
serie
Procedimiento 1
P
Espera
en E/S
Ejecucin
paralela
p
P
Procedimiento
di i t 2
P
Espera
en E/S
Procesamiento
Ncleo
P t
Puerto
Ncleo
P t
Puerto
S o lic itu d e s
P t
Puerto
S o lic itu d e s
Ncleo
S o lic itu d e s
Trabajador
abajado
Distribuidor
24
15/12/2009
Linux Threads
Linux Threads
Java Threads
Java threads se pueden crear:
crear:
Extendiendo la claseThread
Implementando el interfaz Runnable
Los threads en Java los gestiona
gestiona::
La JVM: green threads
El SO: correspondencia 1 a 1.
25
15/12/2009
PThreads
pthread_t pthread_self(void)
Devuelve el identificador del thread que ejecuta la llamada
llamada.
26
15/12/2009
p_create
p_create
p_create
No independ.
Proceso
ligero D
Proceso
ligero B
Proceso
ligero C
p_exit
p_join
p_exit
Programa de ejemplo I
#include <stdio.h>
#include <pthread.h>
#define MAX_THREADS 10
void func(void) {
printf("Thread %d \n", pthread_self());
pthread_exit(0);
}
main()
{
int j;
pthread_attr_t attr;
pthread_t thid[MAX_THREADS];
pthread attr init(&attr);
pthread_attr_init(&attr);
for(j = 0; j < MAX_THREADS; j ++)
pthread_create(&thid[j], &attr, func, NULL);
for(j = 0; j < MAX_THREADS; j ++)
pthread_join(thid[j], NULL);
}
27
15/12/2009
Programa de ejemplo II
#include <stdio.h>
#include <pthread.h>
#define MAX_THREADS 10
void func(void) {
printf("Thread %d \n", pthread_self());
pthread_exit(0);
}
main() {
int j;
pthread_attr_t attr;
pthread_t thid[MAX_THREADS];
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
for(j = 0; j < MAX_THREADS; j ++)
pthread_create(&thid[j], &attr, func, NULL);
sleep(5);
}
Planificacin
Planificacin a medio y largo plazo
Planificacin a corto plazo
FIFO FCFS
SJF, SRTF
Prioridades
Round
Round--robin
Tiempo real
Planificacin de Pthreads
Planificacin en POXIS
Planificacin en Linux
Planificacin en Windows
Windows--NT
Servicios POXIS para planificacin
28
15/12/2009
Planificacin de la CPU
Planificacin
A largo plazo (aadir procesos a ejecutar)
A medio plazo (aadir procesos a RAM desde disco)
A corto
t plazo
l
((qu
proceso titiene lla UCP)
Planificacin de E/S
Tipos de planificacin
Sin expulsin: el proceso conserva la UCP mientras desee.
Con expulsin: el SO quita la UCP al proceso
Exige un reloj que interrumpe peridicamente
Colas de procesos
Por prioridad
Por tipo
29
15/12/2009
Suspendido
y listo
se expulsa
a disco
se interrumpe
Suspendido
y
bloqueado
Zombie
Ejecucin
Listo
se recupera
de disco
Termina la
E/S o el
evento
termina
se admite
se planifica
Espera E/S
o un evento
Termina la
E/S o el
evento
se expulsa
a disco
Bloqueado
30
15/12/2009
Criterios de planificacin
MXIMIZAR
Utilizacin de la CPU que sea mxima
Productividad bach (throughput) # de procesos que se procesan por
unidad de tiempo
p
MNIMIZAR
Tiempo de respuesta (Turnaround) tiempo en ejecutar un trabajo en
particular
Tiempo de espera tiempo que un proceso pasa en la cola de listos
Tiempo de respuesta interactivo tiempo que pasa desde que se enva
el trabajo hasta que se obtiene una respuesta
CONSEGUIR
Reparto equitativo del procesador
Cumplimiento de plazos (tiempo real)
Calidad de servicio (sistemas multimedia)
Algoritmos de planificacin I
FIFO FCFS
Organizacin en una lista ordenada por tiempo de llegada
SJF, SRTF
Organizacin en lista ordenada por tiempo previsto de ejecucin
Bach: tiempo previsto para la ejecucin de un proceso
Interactivo: tiempo previsto para la prxima rfaga de CPU
Prioridades
Fjas o dinmicas
Organizacin en una lista ordenada por prioridades calculadas
Round--Robin
Round
Organizacin en una lista circular con quantos de tiempo
Expropiacin por agotamiento del quanto y replanificacin
Lotera
Se asigna a cada proceso un rango de valores y se genera un nmero
a leatorio
Tiempo real
A plazo fijo: EDF (prioridades dinmicas)
Peridicos: RMS (prioridades estticas)
31
15/12/2009
FIFO First
First--Come, First
First--Served (FCFS) I
Procesos T. cmputo
P1
24
3
P2
P3
3
Suponiendo que los procesos llegan en el siguiente orden
P1 , P2 , P3
El diagrama de Gantt es:
P1
P2
24
P3
27
30
FIFO First
First--Come, First
First--Served (FCFS) II
Suponiendo que los procesos llegan en el siguiente orden
P2 , P3 , P1
El diagrama de Gantt es:
P2
0
P3
3
P1
6
30
32
15/12/2009
Shortest--Job
Shortest
Job--First (SJF) Scheduling I
Asocia a cada proceso el tiempo previsto de ejecucin. Selecciona
para ejecutar el proceso con menor tiempo.
Dos esquemas:
No expulsor (nonpreemptive) una vez planificado sigue en la
CPU hasta que completa su rfaga de CPU.
Expulso
Expulsor (preemptive) si llega un nuevo proceso con un
tiempo menor que el que se est ejecutanto, este ltimo se
expulda. Tambin se llama
Shortest-Remaining-Time-First (SRTF)
SJF es ptimo da el menor tirmpo de espera medio para un
conjunto de procesos.
Problema
Problema:: se debe suministrar el siguiente tiempo de rfaga
-> estimacin teniendo en cuenta las anteriores
T. llegada
T. cmputo
0.0
20
2.0
4.0
5.0
7
4
1
4
P1
0
P3
7
P2
8
P4
12
16
33
15/12/2009
T. llegada
T. cmputo
0.0
2.0
4.0
5.0
7
4
1
4
P1
P2
P3
P4
SJF (expulsivo)
P1
0
P2
2
P3
4
P2
5
P4
7
P1
11
16
34
15/12/2009
T. llegada
T. Rfaga estimado
Prioridad
P1
P2
P3
P4
0.0
2.0
4.0
5.0
7
4
1
4
3
2
1
2
T. llegada
0.0
2.0
4.0
5.0
Frecuencia
1
3
6
2
Prioridad
4
2
1
3
Performance
q grande FIFO
q pequeo q debe ser grande respecto al tiempo de cambio de
contexto (latencia) para que el overhead no sea demasiado grande
35
15/12/2009
Process
P1
P2
P3
P4
El diagrama de es:
P1
0
P2
20
37
P3
Burst Time
53
17
68
24
P4
57
P1
77
P3
97 117
P4
P1
P3
P3
36
15/12/2009
Colas multilevel I
La cola de Listos se particiona en colas separadas :
foreground (interactivo)
background (batch)
Cada cola tiene su propio algoritmo de planificacin
foreground RR
background FCFS
La planificacin se aplica entre las colas:
Planificacin de prioridad fija; (se sirven todos de foreground y
despus de background)
background). Se puede producir inanicin
inanicin.
Rodaja de tiempo cada cola tiene una cierta cantidad de
tiempo de CPU time que se reparte entres sus procesos;
ej.., 80% to foreground in RR y 20% to background in FCFS
37
15/12/2009
Colas multilevel II
Planificacin
Un nuevo trabajo llega a la Q0 con planificacin FIFO. Cuando
gana la CPU, se ejecuta 8. Si no termina se mueve a Q1.
En Q1 se sirve con FIFO y se le dan 16 m. Si no termina se
mueve a Q1.
38
15/12/2009
1
2
3
Cmputo
4
Plazo= T
Prioridad
10
15
10
35
1
2
3
tiempo
39
15/12/2009
Ui =
Ti
1
U(n) = n(2n - 1)
Resultados:
Si Ui U(n) el conjunto de tareas es planificable.
planificable
If Ui > 1 el conjunto de tareas es no planificable.
Si U(n) < Ui el conjunto de tareas es inconcluso
*si todas las tareas cumplen su plazo en el primer hiperperiodo el
conjunto de tareas es planificable.
Cmputo
1
2
3
Plazo= T
Prioridad
10
15
10
35
U1 = 4 / 10 = 0.4
U2 = 4 / 15 = 0.267
0 267
U3 = 10 / 35 = 0.286
Utotal = 0.953
Resultados:
U1+2 = 0.667, planificanle.
Sin embargo, 0.779 < 0.953 < 1
Por lo que es inconcluso para 3.
Si las tareas cumplen el plazo en el primer
HIPERPERIODO (35 en este caso)
son planificables
40
15/12/2009
Planificacin en POSIX I
Cada poltica de planificacin lleva asociado un rango con al
menos 32 niveles de prioridad.
El planificador elegir el proceso o thread con la prioridad ms alta
Polticas de planificacin
Para comparticin de tiempo prioridad variable
Otra (SCHED_OTHER)
Para tiempo real prioridad fija, superior a SCHED_OTHER
FIFO (SCHED_FIFO)
Cclica (SCHED_RR)
41
15/12/2009
Planificacin Pthread
Polticas de planificacin a definir como en procesos.
Ambitos de planificacin:
p
PTHREAD_SCOPE_PROCESS: Planificacin local
La librera de threads decide que thread se ejecuta.
PTHREAD_SCOPE_SYSTEM: Planificacin global
El kernel decide qu thread se ejecuta.
Los atributos de planificacin se pueden aadir mediante servicios a
los atributos de creacin de un thread:
#include <pthread.h>
42
15/12/2009
Planificacin en Windows NT I
Reiniciado
Iniciado
Sit
Situar
en lla cola
l
de listos
Finalizado
Fin de bloqueo
Bloqueado
Ejecucin
finalizada
Espera
terminada
Bloqueado
Transicin
Listo
Seleccionado Expulsado
para
ejecucin
Expulsado
Ejecucin
Reserva
Planificacin en Windows NT II
Pt: Prioridades
relativas de
threads
Promocin dinmica:
+n si se desbloquea (hasta 15)
Decaimiento dinmico:
-1 si agota el quantum (hasta Pt)
Anti-inanicin:
Si no se ha ejecutado en los
ltimos 3 segundos, adopta
prioridad 15 para ejecutar
2*quantum
43
15/12/2009
Seales y excepciones
Temporizadores
Servidores y demonios
44
15/12/2009
Seales I
Seal: Mecanismo por el que un proceso puede ser
notificado de, o afectado por, un evento que se produce
en el sistema:
- excepciones detectadas por hardware
- expiracin de una alarma o temporizador
- finalizacin de una operacin de I/O asncrona
- llegada de un mensaje
- invocacin de la funcin kill() y similares
-actividad del terminal, etc.
Nmero de seal:
Entero positivo que identifica una seal.
Existen tambin constantes predefinidas para dar nombre
a las seales
Seales II
Las seales son interrupciones al proceso
Envo o generacin
Proceso
Proceso- Proceso (dentro del grupo) con el kill
SO - Proceso
Seal
Proceso
Cdigo
Funcin
tratamiento
45
15/12/2009
Seales III
Una seal se puede generar para un proceso o para
un thread.
Cada thread tiene una mscara de seales,
seales, que define
las seales bloqueadas
bloqueadas..
La mscara se hereda del padre
Seal no bloqueada:
bloqueada: se entrega
Ignorar
Terminar el proceso
Ejecutar manejador
Seal bloqueada:
bloqueada: queda pendiiente hasta que se
acepta con sigwait()
sigwait()
Tratamiento de seales I
Opciones para tratar una seal
seal::
Enviar la seal al thread al q
que la seal se refiere
Enviar la seal a todos los threads del proceso
Asignar un thread especfico para recibir todas las
seales del proceso
Cada seal se trata mediante un manejador
manejador
1. La seal se genera por un evento particular
2. La seal se enva al proceso
3. La seal se trata
46
15/12/2009
Tratamiento de seales II
Hay muchos tipos de seales, segn su origen
SIGILL instruccin ilegal
SIGALRM vence el temporizador
SIGKILL mata al proceso
El SO las transmite al proceso
El proceso debe estar preparado para recibirla
Especificando un procedimiento de seal con sigaction()
Enmascarando la seal con sigprogmask()
Si no est preparado accin por defecto
El proceso, en general, muere
Hay algunas seales que se ignoran o tienen otro efecto
El servicio pause() para el proceso hasta que recibe una seal
47
15/12/2009
Excepciones
Evento que ocurre durante la ejecucin de un programa y que
requiere la ejecucin de un fragmento de cdigo fuera del flujo
normal de ejecucin.
Manejo de excepcion en Java
try {
Bloque donde puede producirse una excepcin
}
catch {
Bloque que se ejecutar si se produce una
excepcin
en el bloque anterior
}
48
15/12/2009
Temporizadores
El SO mantiene un temporizador por proceso
El proceso activa el temporizador con alarm()
El SO enva una seal SIGALRM al proceso cuando vence su
temporizador
Proceso servidor
Es un proceso que:
Est pendiente de recibir rdenes de un proceso cliente
Estructura de bucle infinito
Uso de puertos de comunicacin PROCESOS
CLIENTES
PROCESO
SERVIDOR
RECURSO
Servidor secuencial:
El servidor mismo ejecuta las rdenes
Servidor paralelo:
Delega ejecucin las rdenes a threads o procesos hijos
49
15/12/2009
a)
b)
c)
Servidor
Padre
Servidor
Padre
Servidor
Padre
Servidor
Hijo
Puerto A
Puerto A
Puerto A
Puerto B
Cliente A
Cliente A
Puerto
Cliente
Servidor
ficheros
Servidor
impresin
Servidor
e_mail
SO
SO
SO
SO
RED
50
15/12/2009
Procesos demonios
Es un proceso que ejecuta:
Caractersticas
51
15/12/2009
52