Você está na página 1de 20

Programacin Concurrente y

Tiempo Real

Tema 3. Paso de Mensajes


D. Vallejo, M.A. Redondo, C. Villarrubia,
F.J. Villanueva, J. Ruiz

Escuela Superior de Informtica


Universidad de Castilla-La Mancha

Curso 2016/2017 Grado en Ingeniera Informtica


Tema 3. Paso de Mensajes

1. Conceptos bsicos [Stallings 5.5]


2. El problema del bloqueo
3. Problemas clsicos de sincronizacin

Curso 2016/2017 Grado en Ingeniera Informtica


Tema 3. Paso de Mensajes

1. Conceptos bsicos [Stallings 5.5]


2. El problema del bloqueo
3. Problemas clsicos de sincronizacin

Curso 2016/2017 Grado en Ingeniera Informtica


Conceptos | Bloqueo | Problemas

Fundamentos bsicos

Info a Copia
Mensaje
compartir de info

Mecanismo de comunicacin
entre procesos (IPC) del
Espacio de direcciones sistema operativo Espacio de direcciones
de p0 de p1

T3 Paso de Mensajes Trp 4


Conceptos | Bloqueo | Problemas

Fundamentos bsicos

Concepto de cola o buzn de mensajes

send () Message receive ()


Proceso1 Message Proceso2
Mensaje

Cola de mensajes

T3 Paso de Mensajes Trp 5


Conceptos | Bloqueo | Problemas

Fundamentos bsicos

Proceso 1 Proceso 2
while (1) { while (1) {
// W_previo_1 // W_previo_2
send ('*', P2) receive (&msg, P1)
// W_restante_1 // W_restante_2
} }

Sincronizacin (P2 no avanza


hasta que no recibe de P1)

T3 Paso de Mensajes Trp 6


Conceptos | Bloqueo | Problemas

Fundamentos bsicos

Aspectos de diseo en el paso de mensajes

Sincronizacin Direccionamiento Formato Disciplina de cola

Send Receive Directo Indirecto Contenido Longitud FIFO Prioridad

Bloqueante Bloqueante Send Esttico Fija


No bloq. No bloq. Receive Dinmico Variable
Comprob. llegada Propiedad

T3 Paso de Mensajes Trp 7


Conceptos | Bloqueo | Problemas

El problema de la seccin crtica


do {

SECCIN_ENTRADA

SECCIN_CRTICA

SECCIN_SALIDA

SECCIN_RESTANTE

while(1);

T3 Paso de Mensajes Trp 8


Conceptos | Bloqueo | Problemas

El problema de la seccin crtica


do {

La cola de mensajes
receive (buzn, &msg)
acta de
semforo!
SECCIN_CRTICA

Mutex ~ Cola 1 msg


send (buzn, msg)

SECCIN_RESTANTE
Semforo contador
~
while(1); Cola n msg

T3 Paso de Mensajes Trp 9


Tema 3. Paso de Mensajes

1. Conceptos bsicos [Stallings 5.5]


2. El problema del bloqueo
3. Problemas clsicos de sincronizacin

Curso 2016/2017 Grado en Ingeniera Informtica


Conceptos | Bloqueo | Problemas

El problema del bloqueo

Con POSIX Message Queues, no es posible


recuperar mensajes por tipo

Cmo atender distintas peticiones


(tipos de tareas) de manera eficiente?

Sin bloquearse en una cola...

Ver qt_notify ()

Ver [Roch 5.18]


T3 Paso de Mensajes Trp 11
Conceptos | Bloqueo | Problemas

Esquema beeper

Procesos bloqueados (receive ()) a la espera


de una tarea (mensaje)

Buzn Beeper

1 e( ) r ec
ce iv receive () eiv
re e ()

Proceso1 Proceso2 Proceso3

T3 Paso de Mensajes Trp 12


Conceptos | Bloqueo | Problemas

Esquema beeper

Buzn Beeper
Garantiza
no bloqueo!
r ec
e iv

receive ()
e ()

Proceso1 Proceso2 Proceso3


2
receive ()

Buzn A Buzn B

T3 Paso de Mensajes Trp 13


Tema 3. Paso de Mensajes

1. Conceptos bsicos [Stallings 5.5]


2. El problema del bloqueo
3. Problemas clsicos de sincronizacin

Curso 2016/2017 Grado en Ingeniera Informtica


Conceptos | Bloqueo | Problemas

Productor/Consumidor

Se bloquea si no hay
while (1) {
// Producir... elementos (mensajes)
producir();
// Nuevo item...
send (buzn, msg);
}

while (1) {
recibir (buzn, &msg)
// Consumir...
consumir();
Se bloquea si la }
cola est llena

T3 Paso de Mensajes Trp 15


Conceptos | Bloqueo | Problemas

Filsofos comensales

Proceso filsofo

while (1) {
// Pensar...
wait(palillos[i]);
wait(palillos[(i+1) % 5]);
// Comer...
signal(palillos[i]);
signal(palillos[(i+1) % 5]);
}

T3 Paso de Mensajes Trp 16


Conceptos | Bloqueo | Problemas

Filsofos comensales

Proceso filsofo

while (1) {
// Pensar...
receive(mesa, &m);
receive(palillo[i], &m);
receive(palillo[i+1], &m);
// Comer...
send(palillo[i], m);
send(palillo[i+1], m);
send(mesa, m);
}

T3 Paso de Mensajes Trp 17


Conceptos | Bloqueo | Problemas

Los fumadores de cigarrillos

Tabaco Papel Fsforos

Fumador1 Fumador2 Fumador3

Tabaco
Papel Agente Tabaco Papel
Fsforos

T3 Paso de Mensajes Trp 18


Conceptos | Bloqueo | Problemas

Traduccin concurrente de cadenas

Entero 1 2 ... 25 26 27 28 ... 51 52 53 54 55 56 57

Traduccin a b ... y z A B ... Y Z . , ! ? _

ASCII 97 98 ... 121 122 65 66 ... 89 90 46 44 33 63 95

Ejemplo:
26.27.2.1.56 122 65 98 97 63 = zZba?
TRADUCCIN

Entrada Valores ASCII Traducidos Caracteres

cliente puntuacin traduccin


traduccin
traduccin

T3 Paso de Mensajes Trp 19


Conceptos | Bloqueo | Problemas

Traduccin concurrente de cadenas

Puntuacin

4 5

Buzn Buzn
Puntuacin Notificacin

3 6
1 2
Buzn
Cliente Traduccin
Traduccin

8 7
Buzn
Cliente

T3 Paso de Mensajes Trp 20

Você também pode gostar