You are on page 1of 27

Procesos

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

Sistemas Operativos Procesos

Objetivos
 Introducir la nocin de proceso un programa

en ejecucin, el cual conforma la base de toda


computacin
 Describir varias caractersticas de procesos,

incluyendo planificacin, creacin y


terminacin, y comunicacin
 Describir la comunicacin en sistemas cliente-

servidor

Sistemas Operativos Procesos

JRA 2008

Concepto de Proceso
 Un SO ejecuta una variedad de programas:

Sistema Batch jobs


 Sistemas de Tiempo Compartido programas de usuario
o tareas
 Los trminos job, tarea y proceso se usan con similar sentido.
 Proceso un programa en ejecucin; la ejecucin de los
procesos debe progresar en forma secuencial.
 Un proceso incluye:
 contador de programa
 stack
 seccin de datos


JRA 2008

Sistemas Operativos Procesos

Procesos en Memoria

datos
texto

Sistemas Operativos Procesos

JRA 2008

Estado de los Procesos


 En tanto que un proceso ejecuta, cambia de

estado
 nuevo: el proceso es creado.





JRA 2008

corriendo: las instrucciones estn siendo


ejecutadas.
espera: el proceso est esperando que
ocurra algn evento.
listo: el proceso est esperando ser
asignado a la CPU.
terminado: el proceso ha finalizado su
ejecucin.

Sistemas Operativos Procesos

Diagrama de Estados de un Proceso

despacho

corriendo
listos

nuevo

interrup

exit

evento e/s

terminado
evento
completado

espera

Sistemas Operativos Procesos

JRA 2008

Diagrama de Estados de un Proceso


Diagrama con cinco estados
despacho

corriendo
listos

nuevo

interrup

evento
comp
react

susp

exit

evento e/s

terminado
espera
susp
react

Susp-esp

Susp-listo
evento comp
JRA 2008

Sistemas Operativos Procesos

Bloque de Control de Procesos (PCB)


Es una estructura de dato que contiene informacin
asociada con cada proceso.
 Estado de Proceso
 Contador de Programa
 Registros de CPU
 Informacin de planificacin de CPU
 Informacin de administracin de memoria
 Informacin contable
 Informacin de estado E/S
PCB: Process Control Block

JRA 2008

Sistemas Operativos Procesos

Bloque de Control de Proceso (PCB)

JRA 2008

Sistemas Operativos Procesos

Conmutacin de CPU de Proceso a Proceso


P-0

SO
interrupcin o llamada al sistema

P-1

ejecucin
salva estado en PCB-0
..
.

ocioso

carga estado de PCB-1


ocioso

interrupcin o llamada al sistema


salva estado en PCB-1
..
.

ejecucin

JRA 2008

ejecucin

ocioso

carga estado de PCB-0

Sistemas Operativos Procesos

Colas de Planificacin de Procesos


 Cola de Job (o tareas) conjunto de todos los

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

Sistemas Operativos Procesos

Colas de listos y de Dispositivos de E/S


cola de
listos

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

Sistemas Operativos Procesos

JRA 2008

Representacin de Planificacin de Procesos

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

Sistemas Operativos Procesos

requiere
recurso

Planificadores de Procesos
 Planificador de largo trmino ( o planificador

de jobs ) selecciona que procesos deberan


ser puestos en la cola de listos.
 Planificador de corto trmino (o planificador de

CPU ) selecciona que procesos deberan ser


proximamente ejecutados y colocados en la
CPU.

Sistemas Operativos Procesos

JRA 2008

Planificacin de mediano trmino

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

Sistemas Operativos Procesos

Planificadores de Procesos (Cont.)


 El planificador de corto trmino es invocado muy

frecuentemente (milisegundos) (debe ser rpido).


 El planificador de largo trmino es invocado poco
frecuentemente (segundos, minutos) (puede ser muy
lento).
 El planificador de largo trmino controla el grado de
multiprogramacin.
 Los procesos pueden ser descriptos como:
 Procesos limitados por E/S pasa mas tiempo
haciendo E/S que computaciones, rfagas (burst) de
CPU muy cortas.


Procesos limitados por CPU pasa mas tiempo


haciendo computaciones que E/S, rfagas (burst) de
CPU muy largas.
Sistemas Operativos Procesos

JRA 2008

Cambio de contexto
 Cuando la CPU conmuta a otro proceso, el sistema

debe salvar el estado del viejo proceso y cargar el


estado para el nuevo proceso va un cambio de
contexto.
 El contexto de un proceso est representado en el

PCB
 El tiempo que lleva el cambio de contexto es

sobrecarga; el sistema no hace trabajo til mientras


est conmutando.
 El tiempo depende del soporte de hardware .

JRA 2008

Sistemas Operativos Procesos

Creacin de Procesos
 Procesos padres crean procesos hijos, lo cuales, a su

vez crean otros procesos, formando un rbol de


procesos.
 Recursos compartidos
 Padres e hijos comparten todos los recursos.


Hijo comparte un subconjunto de los recursos del


padre.

Padre e hijo no comparten ningn recurso.


 Ejecucin
 Padres e hijos ejecutan concurrentemente.


Padres esperan hasta que los hijos terminan.

Sistemas Operativos Procesos

JRA 2008

Creacin de Procesos (Cont.)


 Espacio de direcciones


El hijo replica el del padre.

El hijo tiene un programa cargado en l.

 Ejemplos de UNIX

JRA 2008

La llamada a sistema fork crea un nuevo proceso

La llamada a sistema execve es usada despus del


fork para reemplazar el espacio de memoria del
proceso con un nuevo programa.

Sistemas Operativos Procesos

Creacin de Procesos

padre

hijo

JRA 2008

Sistemas Operativos Procesos

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

Sistemas Operativos Procesos

Se reactiva

Un Arbol de Procesos en Solaris

JRA 2008

Sistemas Operativos Procesos

rbol de Procesos en UNIX

JRA 2008

Sistemas Operativos Procesos

Terminacin de Procesos
 El proceso ejecuta la ltima sentencia y espera que el SO

haga algo (exit).


 Los datos de salida del hijo se pasan al padre (via wait).


Los recursos de los procesos son liberados por el SO.

 El padre puede terminar la ejecucin del proceso hijo

(abort).
 El hijo ha excedido los recursos alocados.



La tarea asignada al hijo no es mas requerida.


El padre est terminando.
 El SO no permite a los hijos continuar si su padre
termina.
 Terminacin en cascada.

Sistemas Operativos Procesos

JRA 2008

Comunicacin Interprocesos (IPC)


 Los procesos en un sistema pueden ser independientes o

cooperativo
 Los procesos cooperativos pueden afectar o ser afectados por

otros procesos, cuando incluyen datos compartidos


 Razones para procesos cooperativos


Informacin compartida

Speedup de computacin

Modularidad

Conveniencia

 Los procesos cooperativos necesitan comunicacin

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

Sistemas Operativos Procesos

JRA 2008

Procesos Cooperativos
 Un proceso independiente no puede afectar ni ser

afectado por la ejecucin de otro proceso.


 Un proceso cooperativo puede afectar o ser afectado

por la ejecucin de otro proceso.


 Ventajas de los procesos cooperativos

JRA 2008

Informacin compartida

Aceleracin de la computacin

Modularidad

Conveniencia

Sistemas Operativos Procesos

Problema del Productor-Consumidor


 Paradigma procesos cooperativos, el proceso

productor produce informacin que es


consumida por un proceso consumidor .
 buffer

ilimitado - no tiene lmites prcticos en


el tamao del buffer.

 buffer

limitado supone que hay un tamao fijo


de buffer.

Sistemas Operativos Procesos

JRA 2008

Buffer limitado Solucin con memoria compartida


 Datos compartidos

var n;
type item = ;
var buffer. array [0..n1] of item;
in, out: 0..n1;
 Proceso Productor

repeat

produce un item en nextp

while in+1 mod n = out do no-op;


buffer [in] :=nextp;
in :=in+1 mod n;
until false;
JRA 2008

Sistemas Operativos Procesos

Buffer limitado Solucin con memoria compartida


 Datos compartidos

#define BUFFER_SIZE 10
typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;

Sistemas Operativos Procesos

JRA 2008

Buffer limitado (cont.)


 Proceso Consumidor

repeat
while in = out do no-op;
nextc := buffer [out];
out := out+1 mod n;

consume un item en nextc

until false;
 La solucin es correcta, pero solo puede llenar el buffer hasta n1.

JRA 2008

Sistemas Operativos Procesos

32

Buffer limitado - Productor

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

Sistemas Operativos Procesos

JRA 2008

Buffer limitado Consumidor


while (true) {
while (in == out)
; // do nothing --/* nada a consumir */
/* remueve un item del buffer*/
item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
JRA 2008

Sistemas Operativos Procesos

Comunicacin entre Procesos (IPC)


 Mecanismo de los procesos para comunicarse y sincronizar

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:


Establecer un vnculo de comunicacin entre ellos


 Intercambiar mensajes via send/receive
 Implementacin de un vnculo de comunicacin
 lgico (p.e., propiedades lgicas)
 fsicol (p.e., memoria compartida, canal hardware)


Sistemas Operativos Procesos

JRA 2008

Preguntas sobre la Implementacin


 Cmo se establecen los vnculos?
 Puede un vnculo ser asociado con mas de dos

procesos?
 Cuntos vnculos puede haber entre cada par de

procesos que se comunican?


 Cul es la capacidad de un vnculo?
 El vinculo puede aceptar tamao de mensajes fijo o

variable?
 Es vnculo unidireccional o bi-direccional?

JRA 2008

Sistemas Operativos Procesos

Comunicacin Directa
 Los procesos deben nombrar al otro explicitamente:



send (P, mensaje) enva un mensaje al proceso


P
receive(Q, mensaje) recibe un mensaje del
proceso Q

 Propiedades del vnculo de comunicacin




Los vnculos son establecidos automaticamente.

Un vnculo est asociado con exactamente un par


de procesos que se comunican.
Entre cada par existe exactamente un vnculo.
El vnculo puede ser unidireccional, pero es
usualmente bi-direccional.




Sistemas Operativos Procesos

JRA 2008

Comunicacin Indirecta
 Los mensajes son dirigidos y recibidos desde mailboxes

(tambin referidas como ports).


 Cada mailbox tiene una nica identificacin.
 Los procesos pueden comunicarse solo si comparten un
mailbox.
 Propiedades de un vnculo de comunicacin
 El vnculo se establece solo si los procesos comparten un
mailbox comn.
 Un vnculo puede ser asociado con muchos procesos.
 Cada par de procesos puede compartir varios vnculos de
comunicacin.


JRA 2008

Los vnculos pueden ser unidireccionales o bi-direccionales.

Sistemas Operativos Procesos

Comunicacin Indirecta (cont.)


 Operaciones


crear un nuevo mailbox

enviar y recibir mensajes por medio del mailbox

destruir un mailbox

 Las primitivas son definidas como:

send(A, mensaje) enva un mensaje al mailbox A


receive(A, mensaje) recibe un mensaje del
mailbox A

Sistemas Operativos Procesos

JRA 2008

Comunicacin Indirecta (cont.)


 Mailbox compartida

P1, P2, y P3 comparten el mailbox A.


 P1, enva; P2 y P3 reciben.
 Quin toma el mensaje?
 Solucin
 Permitir que un vnculo est asociado a lo sumo con dos
procesos.
 Permitir que un solo proceso a la vez ejecute la operacin
receive.
 Permitir que el sistema seleccione arbitrariamente el
receptor. El enviador es notificado quien fue el receptor
del mensaje.


JRA 2008

Sistemas Operativos Procesos

Sincronizacin
 El pasaje de mensajes puede ser bloqueante o no

bloqueante.
 Bloqueante es considerado sincrnico


Send bloqueante mantiene al enviador bloqueado hasta


que el mensaje es recibido

Receive bloqueante mantiene al receptor bloqueado


hasta que el mensaje est disponible

 No bloqueante es considerado asincrnico

JRA 2008

Send no bloqueante: el emisor enva el mensaje y


contina

Receive no bloqueante : el receptor recibe un mensaje


vlido o nulo

Sistemas Operativos Procesos

Buffering
 La cola de mensajes asociada al vnculo se puede

implementar de tres maneras.


1. Capacidad 0 mensajes
El enviador debe esperar por el receptor (rendezvous).
2. Capacidad limitada longitud finita de n mensajes
El enviador debe esperar si el vnculo est lleno.
3. Capacidad ilimitada longitud infinita
El enviador nunca espera.

JRA 2008

Sistemas Operativos Procesos

Ejemplos de Sistemas IPC - POSIX


 Memoria compartida POSIX


El proceso primero crea un segmento de memoria compartida

segment id = shmget(IPC PRIVATE, size, S IRUSR | S


IWUSR);


El proceso que quiere acceder a la memoria compartida debe


adjuntarse a ella

shared memory = (char *) shmat(id, NULL, 0);




Ahora el proceso puede escribir en la memoria compartida

sprintf(shared memory, "Writing to shared memory");




Finalizado el proceso debe liberar a su espacio de direcciones del la


memoria compartida

shmdt(shared memory);

Sistemas Operativos Procesos

JRA 2008

Ejemplos de Sistemas IPC - Mach


 La comunicacin en Mach est basada en mensajes


Las llamadas a sistema son mensajes

Desde su creacin cada proceso tiene dos mailbox


Kernel y Notify

Se necesitan solo tres llamadas a sistema para


transferir mensajes

msg_send(), msg_receive(), msg_rpc()




Las mailbox necesarias para la comunicacin, son


creadas va:

port_allocate()

JRA 2008

Sistemas Operativos Procesos

Ejemplos de Sistemas IPC Windows XP


 Centrado en el pasaje de mensajes va facilidades de llamadas a

procedimientos locales (local procedure call (LPC) )




Slo funciona entre procesos sobre el mismo sistema

Usa prticos (como mailboxes) para establecer y mantener


canales de comunicacin

La comunicacin funciona de la siguiente manera:


 El

cliente abre un handle del prtico del subsistema de


conexin

 El

cliente enva una peticin de conexin

 El

servidor crea dos prticos privados de comunicacin y


retorna el handle de uno de ellos al cliente

 El

cliente y el servidor usan el correspondiente handle del


prtico para enviar mensajes o retornos y para escuchar por
rplicas

JRA 2008

Sistemas Operativos Procesos

Llamadas a Procedimientos Locales en Windows XP

JRA 2008

Sistemas Operativos Procesos

Comunicacin Cliente-Servidor
 Sockets
 Llamadas a Procedimientos Remotors

(RPC:Remote Procedure Calls)


 Invocacin a Mtodos Remotos (RMI:Remote

Method Invocation (Java))

Sistemas Operativos Procesos

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

Sistemas Operativos Procesos

Comunicacin por Sockets

JRA 2008

Sistemas Operativos Procesos

Llamadas a Procedimientos Remotos


(RPC: Remote Procedure Calls)
 Las RPCs produce una llamada a procedimiento entre

procesos sobre un sistema de redes.


 Stubs proxy del lado del cliente y del lado del

procedimiento del servidor.


 El stub del lado del cliente localiza el servidor y hace

marshall de los parmetros.


 El stub del lado del servidor recibe este mensaje,

desempaca los parmetros y ejecuta el procedimiento


en el servidor.

JRA 2008

Sistemas Operativos Procesos

Ejecucin de RPC

JRA 2008

Sistemas Operativos Procesos

Invocacin de Mtodos Remotos (RMI)


 RMI es un mecanismo de Java similar a los RPCs.
 RMI permite a un programa Java, sobre una mquina,

invocar un mtodo sobre un objeto remoto.

JRA 2008

Sistemas Operativos Procesos

Marshalling de Parmetros

JRA 2008

Sistemas Operativos Procesos

Fin
Mdulo 3
Departamento de Informtica
Facultad de Ingeniera
Universidad Nacional de la Patagonia San Juan Bosco

You might also like