PDF de programación - PROGRAMACION CONCURRENTE - II.1 Comunicación síncrona

Imágen de pdf PROGRAMACION CONCURRENTE - II.1 Comunicación síncrona

PROGRAMACION CONCURRENTE - II.1 Comunicación síncronagráfica de visualizaciones

Publicado el 14 de Enero del 2017
718 visualizaciones desde el 14 de Enero del 2017
223,4 KB
17 paginas
Creado hace 15a (19/09/2008)
PROGRAMACION CONCURRENTE

II.1 Comunicación síncrona

J.M. Drake

Notas:

1

Concurrencia por intercambio de mensajes.

Modelos de interacción.

Transmisión síncrona de mensajes.

Invocación remota de procedimientos.

Procesos
procesos.

auxiliares de

interacción

entre

Procodis’08: II.1- Comunicación síncrona

José M.Drake

2

Notas:

2

Interacción entre procesos

Históricamente los lenguajes de programación concurrente y
las APIs de los sistemas operativos ofrecen un conjunto de
primitivas que facilitan la interacción entre procesos de forma
sencilla y eficiente.
Estas primitivas deben hacer posible:
Sincronización: Un proceso tiene acceso al estado de flujo de control

que en ese instante tiene otro proceso.

Exclusión mutua: Garantiza que mientras que un proceso accede a un

recurso o actualiza una variables compartida, ningún otro proceso
accede al mismo recurso o a la variable compartida.

Sincronización condicional: Garantiza que un recurso sólo es

accedido cuando se encuentra en un determinado estado interno.

Cada lenguaje o cada API debe ofrecer un conjunto completo
de primitiva que permita implementar los tres tipos de
interacciones.

Procodis’08: II.1- Comunicación síncrona

José M.Drake

3

Notas:

3

Modelos de interacción entre procesos

Existe dos modelos semánticos básico:
Los procesos interaccionan intercambiando mensajes entre ellos.
Los procesos interaccionan entre ellos accediendo a variables o

regiones de memoria compartida.

En el modelo basado en intercambio de mensajes la
interacción de sincronización es explícita, y por el contrario,
la exclusión mutua debe ser construida de forma indirecta.
En el modelo basado en memoria compartida la interacción de
exclusión mutua es directa
la
y por el contrario,
sincronización debe ser implementada de forma indirecta.
El modelo semántico de las primitivas hace referencia a la
formulación de la primitiva de sincronización, y no al
mecanismo físico o lógico con el que se implementa.

Procodis’08: II.1- Comunicación síncrona

José M.Drake

4

Notas:

4

Sincronización por intercambio de mensajes.

Se basa en la introducción de dos primitivas:
send: Primitiva a través de la que un proceso envía un mensaje a otro

proceso.

wait: Primitiva a través de la que un proceso se suspende a la espera

de recibir un mensaje enviado desde otro proceso.

Ambas primitiva tienen una doble función: intercambio de
datos y establecer una sincronización entre el proceso emisor
y receptor.
Admiten una gran variedad de modelos. Estos se diferencian
en dos aspectos:
Mecanismo de sincronización.
Modo de designar los procesos fuente y destino.

Procodis’08: II.1- Comunicación síncrona

José M.Drake

5

Notas:

Uno de los mecanismos abstractos de sincronización de procesos en un programa
concurrente es el intercambio de mensajes. Básicamente este mecanismo se basa en dos
primitivas:

* send: es la primitiva por la que un proceso envía un mensaje a otro proceso.
* wait: es la primitiva por la que un proceso se suspende a la espera de recibir un

mensaje enviado desde otro proceso.

Ambas primitivas tienen una doble función: la de intercambio de datos y la de establecer un
sincronismo entre el proceso emisor y el proceso receptor.

Aunque conceptualmente ambas sentencias son muy simples, admiten una gran variedad
de modelos que serán el objeto de este tema.

Existen dos aspectos fundamentales que deben establecerse para desarrollar las primitivas
de intercambio de mensajes:

* Mecanismo de sincronización que incorpora.
* Método de denominación de los procesos origen y destino de los mensajes.

5

Mecanismos de sincronización

tres protocolos básicos para

Existen
primitivas Send-Wait:
Envío Asíncrono: El proceso emisor continua con independencia del estado

del receptor.

implementar

las

Envío Síncrono (Rendezvous simple): El proceso emisor permanece
suspendido hasta confirmar que el mensaje ha sido recibido. Las sentencias
Send y Wait terminan síncronamente.

Invocación Remota (Rendezvous completo): El proceso emisor
permanece suspendido hasta confirmar que el mensaje ha sido aceptado.
Emisor y receptor ejecutan síncronamente un segmento de código. Las
sentencias Send y Wait terminan síncronamente.

Todas las interacciones pueden llevar consigo una transferencia de datos
que puede ser en un único sentido, o en ambos.
En
los mecanismos de comunicación síncrona los procesos que
interaccionan intercambian información sobre el estado instantáneo de sus
líneas de flujo de control.

Procodis’08: II.1- Comunicación síncrona

José M.Drake

6

Notas:

Existen tres alternativas de sincronización, al implementar la entencia SEND:
* Envío asíncrono: Tras ejecutar SEND, el proceso emisor continua la ejecución de su
código, sin esperar a confirmar que el mensaje sea recibido por el proceso receptor. En
este caso no se produce ninguna sincronización entre ambos procesos.
* Envío síncrono (rendezvous simple): El proceso que ejecuta la sentencia SEND
permanece suspendido hasta confirmar que el proceso destino lo acepta. En este caso se
produce una sincronización entre ambos procesos. Las sentencias SEND y WAIT
concluyen síncronamente.
* Invocación remota (rendezvous extendido): El proceso que ejecuta la sentencia
SEND permanece suspendido hasta que el proceso destino acepta la llamada. En este
caso, ambos procesos permanecen sincronizados durante la ejecución de un segmento de
código común, tras lo que las sentencias Send y Wait concluyen síncronamente.

El mecanismo de comunicación asíncrona se reduce a un proceso de transmisión de un
mensaje. El proceso emisor, no obtiene información de si el proceso receptor lo recibe, ni
en que estado se encuentra (puede que ya ni siquiera exista). Así mismo, cuando el
proceso receptor recibe el mensaje no obtiene información del estado actual del proceso
emisor (solo que en cierto instante anterior estuvo en un estado conocido). Este es un mero
mecanismo de transferencia de información, y no un mecanismo de sincronización, por lo
que no tiene un interés relevante.

En los mecanismos de comunicación síncrona, el aspecto más importante es la acción de
sincronización entre los procesos que intervienen. La comunicación puede llevar consigo, o
no, una transferencia de información entre los procesos, que a su vez puede ser en una o
en las dos direcciones.

6

Aspectos sobre designación de los procesos.

En función de como un proceso hace referencia al otro:
Designación directa: Cada proceso utiliza el identificador del otro proceso.

send Mensaje to Nombre_Proceso_Destino
wait Mensaje from Nombre_Proceso_Emisor

Designación indirecta: Ambos procesos hacen referencia a un identificador

común.

send Mensaje to Nobre_de_Canal
wait Mensaje from Nombre_de_Canal

Simetría de la comunicación:
Simétrica: Ambos procesos conocen al otro con el que comunican.

send Mensaje to Nombre_Proceso_Destino
wait Mensaje from Nombre_Proceso_Emisor

Asimétrica: El receptor no conoce al emisor.

send Mensaje to Nombre_Proceso_Destino
wait Mensaje

Procodis’08: II.1- Comunicación síncrona

José M.Drake

7

Notas:

Existen dos aspectos importantes a considerar respecto a la forma en que se nombran
los procesos que intervienen en el intercambio de mensajes:
* Si los procesos se designan directamente o indirectamente.
* Si los procesos emisor y receptor intervienen de una forma simétrica o asimétrica.

En las primitivas que designan de forma directa los procesos que intervienen, utilizan un
identificador o nombre que identifica de forma única al proceso dentro del programa. Las
que utilizan un método de denominación indirecta, en ambas sentencias se hace referencia
a un nombre o identificador común, a través del cual el sistema induce que son
complementarias. Ese nombre suele recibir la denominación de canal o buzón.

En la forma simétrica, el receptor conoce en su llamada a la sentencia WAIT el nombre del
proceso emisor de la que espera el mensaje, por el contrario, en la forma asimétrica el
proceso receptor no necesita conocer el proceso origen de la llamada.

7

Transmisión síncrona de mensajes.
Modelos utilizados en OCCAM y CSP.
Es un mecanismo síncrono de comunicación con denominación
simétrica e indirecta a través de un identificador que
denominamos canal.
Sintaxis de las primitivas:

var Canal : channel of Type_de_Mensaje;
send Expresión to Canal;
wait Variable from Canal;
Semántica de las primitivas:
El primer proceso que requiere el canal se suspende hasta que el

segundo ejecuta la operación complementaria.

Cuando ambos han accedido se realiza la asignación: Variable:=

Expresión

Las sentencias send y wait finalizan de forma síncrona.

Procodis’08: II.1- Comunicación síncrona

José M.Drake

8

Notas:

El modelo de comunicación por canal es un mecanismo de envío síncrono de mensajes
entre dos procesos en una sola dirección, con denominación indirecta de los procesos
emisor y receptor, a través de un identificador que se denomina canal.

Este modelo es el que se utiliza en OCCAM y seguiremos el formalismo CSP de Hoare
(1985).

La comunicación por un canal (de ahí su nombre) es entre dos procesos particulares que
previamente han accedido a sus terminales.

8

Semántica de la comunicación sincrona

Semántica de las primitivas:
El primer proceso que requiere
el canal se suspende hasta que
el segundo ejecuta la operación
complementaria.

Cuando ambos han accedido se

realiza la asignación:
vari
  • Links de descarga
http://lwp-l.com/pdf1017

Comentarios de: PROGRAMACION CONCURRENTE - II.1 Comunicación síncrona (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad