Mdulo 3
Departamento de Informtica
Facultad de Ingeniera
Universidad Nacional de la Patagonia San Juan Bosco
Procesos
Concepto de Proceso
Planificacin de Proceso
Operaciones sobre Procesos
Comunicaciones Interprocesos (IPC)
Ejemplos de Sistemas de IPC
Comunicacin en un Sistema Cliente-
Servidor
JRA 2008
Objetivos
Introducir la nocin de proceso un programa
servidor
JRA 2008
Concepto de Proceso
Un SO ejecuta una variedad de programas:
JRA 2008
Procesos en Memoria
datos
texto
JRA 2008
estado
nuevo: el proceso es creado.
JRA 2008
despacho
corriendo
listos
nuevo
interrup
exit
evento e/s
terminado
evento
completado
espera
JRA 2008
corriendo
listos
nuevo
interrup
evento
comp
react
susp
exit
evento e/s
terminado
espera
susp
react
Susp-esp
Susp-listo
evento comp
JRA 2008
JRA 2008
JRA 2008
SO
interrupcin o llamada al sistema
P-1
ejecucin
salva estado en PCB-0
..
.
ocioso
ejecucin
JRA 2008
ejecucin
ocioso
procesos en el sistema.
Cola de listos conjunto de todos los procesos
residentes en memoria principal, listos y esperando
para ejecutar.
Colas de dispositivos conjunto de procesos
esperando por una E/S en un dispositivo de E/S.
Migracin de procesos entre las colas.
JRA 2008
inicio
cinta mag
unidad 0
inicio
reg
reg
PCB-4
PCB-7
PCB-0
PCB-14
PCB-5
reg
reg
reg
final
final
disco
unidad 0
inicio
terminal
unidad 0
inicio
final
reg
final
PCB-6
JRA 2008
cola de listo
i/o
join
cpu
cola I/O
ejecuta
hijo
req I/O
Expira tajada de tiempo
fork hijo
cola espera
cola recurso
JRA 2008
requiere
recurso
Planificadores de Procesos
Planificador de largo trmino ( o planificador
JRA 2008
fuera de
swapping
procesos parcialmente
ejecutados al swapping
fin
cola de listos
E/S
JRA 2008
entrada en
swapping
CPU
cola de
espera E/S
JRA 2008
Cambio de contexto
Cuando la CPU conmuta a otro proceso, el sistema
PCB
El tiempo que lleva el cambio de contexto es
JRA 2008
Creacin de Procesos
Procesos padres crean procesos hijos, lo cuales, a su
JRA 2008
Ejemplos de UNIX
JRA 2008
Creacin de Procesos
padre
hijo
JRA 2008
Fork de Procesos en C
int main()
{
pid_t pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
exit(-1);
}
else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for the child to complete */
wait (NULL);
printf ("Child Complete");
exit(0);
}
}
JRA 2008
Se reactiva
JRA 2008
JRA 2008
Terminacin de Procesos
El proceso ejecuta la ltima sentencia y espera que el SO
(abort).
El hijo ha excedido los recursos alocados.
JRA 2008
cooperativo
Los procesos cooperativos pueden afectar o ser afectados por
Informacin compartida
Speedup de computacin
Modularidad
Conveniencia
interprocesos (IPC)
Dos modelos de IPC
JRA 2008
Memoria compartida
Pasaje de Mensajes
Sistemas Operativos Procesos
Modelos de Comunicacin
Pasaje de mensajes
Memoria compartida
proceso A
proceso A
memoria compartida
proceso B
proceso B
kernel
kernel
JRA 2008
Procesos Cooperativos
Un proceso independiente no puede afectar ni ser
JRA 2008
Informacin compartida
Aceleracin de la computacin
Modularidad
Conveniencia
buffer
JRA 2008
var n;
type item = ;
var buffer. array [0..n1] of item;
in, out: 0..n1;
Proceso Productor
repeat
#define BUFFER_SIZE 10
typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
JRA 2008
repeat
while in = out do no-op;
nextc := buffer [out];
out := out+1 mod n;
until false;
La solucin es correcta, pero solo puede llenar el buffer hasta n1.
JRA 2008
32
while (true) {
/* Produce un item */
while (((in = (in + 1) % BUFFER SIZE count) == out)
; /* no hace nada -- no hay buffers libres */
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
JRA 2008
sus acciones.
Sistema de mensajes los procesos se comunican uno con
otro sin necesidad de variables compartidas.
Las facilidades de IPC provee dos operaciones:
send(mensaje) mensaje de tamao fijo o variable
receive(mensaje)
Si P and Q desean comunicarse, necesitan:
JRA 2008
procesos?
Cuntos vnculos puede haber entre cada par de
variable?
Es vnculo unidireccional o bi-direccional?
JRA 2008
Comunicacin Directa
Los procesos deben nombrar al otro explicitamente:
JRA 2008
Comunicacin Indirecta
Los mensajes son dirigidos y recibidos desde mailboxes
JRA 2008
destruir un mailbox
JRA 2008
JRA 2008
Sincronizacin
El pasaje de mensajes puede ser bloqueante o no
bloqueante.
Bloqueante es considerado sincrnico
JRA 2008
Buffering
La cola de mensajes asociada al vnculo se puede
JRA 2008
shmdt(shared memory);
JRA 2008
port_allocate()
JRA 2008
El
El
El
JRA 2008
JRA 2008
Comunicacin Cliente-Servidor
Sockets
Llamadas a Procedimientos Remotors
JRA 2008
Sockets
Un socket es definido como un punto final de
comunicacin.
Concatenacin de direccin IP y prtico
El socket 161.25.19.8:1625 se refiere al prtico 1625 en
el host 161.25.19.8
La comunicacin se lleva a cabo entre un par de
sockets.
JRA 2008
JRA 2008
JRA 2008
Ejecucin de RPC
JRA 2008
JRA 2008
Marshalling de Parmetros
JRA 2008
Fin
Mdulo 3
Departamento de Informtica
Facultad de Ingeniera
Universidad Nacional de la Patagonia San Juan Bosco