Desarrollo de Aplicaciones Distribuidas
3º Grado en I. de Tecnologías de Telecomunicación
Diapositivas de la presentación en clase
del Tema 2:
IPC*- Comunicación entre
procesos
5 de octubre de 2020
Presentación correspondiente al Capítulo 2 del libro:
[Link]; Computación Distribuida, Fundamentos y Aplicaciones; Ed.
Pearson Addison Wesley; 2004.
*IPC, siglas de Inter-Process comunication
1
0 Comunicación entre procesos
- En Sistemas Distribuidos las entidades que se
comunican son procesos y emplean un protocolo
- La comunicación puede ser Unicast o Multicast
2
0 Comunicación entre procesos
- Los sistemas operativos facilitan la comunicación
entre procesos mediante colas de mensajes,
semáforos, y memoria compartida.
- Hoy en día, la complejidad del la comunicación
entre procesos es ABSTRAÍDA al programador de
aplicaciones distribuidas.
3
1 Interfaz de comunicación entre procesos
Una interfaz con el mínimo nivel de abstracción
contendrá las 4 operaciones primitivas siguientes:
• Enviar. Operación invocada por el emisor.
• Recibir. Operación invocada por el receptor.
• Conectar. Opcional. Sólo en protocolos orientados a
conexión.
• Desconectar. Opcional. Sólo en protocolos
orientados a conexión.
4
1.1 Comunicación entre procesos básica en HTTP
C1
S1
C2 HTTP operations:
request
C1: make connection
a process S1: accept connection
Web S2
Web C2: send (request)
an event browser HTTP server S2: receive (request)
S3 S3: send (response)
response
C3: receive (response)
C3 C4: disconnect
data flow
S4: disconnect
C4
S4
5
2 Sincronización de eventos
En la comunicación entre procesos es necesario
seguir un orden determinado, p.e. no enviar hasta
que el otro no está escuchando.
Una programación sencilla de comunicación entre
procesos es mediante peticiones BLOQUEANTES.
Es programación sencilla ya que los procesos sólo
tienen que hacer a la vez una tarea (escuchar o
enviar).
6
2 Sincronización de eventos
Si un proceso inicia una operación BLOQUEANTE,
entonces no hará nada más hasta que esa operación
finalice, p.e., si un proceso invoca una operación RECIBIR
BLOQUEANTE, se quedará esperando hasta que no haya
recibido el conjunto de datos esperado. Una técnica
bloqueante es el muestreo o polling.
A las aplicaciones con operaciones BLOQUEANTES
también se las denomina SÍNCRONAS. Con NO
BLOQUEANTES se denominan ASÍNCRONAS.
En aplicaciones síncronas es fácil que se produzcan
“cuelgues” si la programación no está muy depurada.
7
2 Sincronización de eventos
APLICACIÓN SENCILLA
P2 se pone a escuchar
esperando que P1 empiece
a enviarle datos en breve.
Cuando se envían los
datos (por ejemplo un
número determinado de
bits), P1 y P2 continuan
ejecutando programa.
8
2 Sincronización de eventos
POSIBLE PROBLEMA en APLICACIÓN SENCILLA
Ambos procesos se quedan bloqueados esperando que el otro
les envíe dados. Se produce un INTERBLOQUEO, que es un
“cuelgue” o un malfuncionamiento de la aplicación. Una
programación depurada y/o temporizadores pueden evitan los
9 interbloqueos.
2 Sincronización de eventos
APLICACIÓN “ELABORADA”
El mecanismo de
comunicación es capaz de
almacenar los datos
10
3 Temporizadores e hilos de ejecución
Temporizadores e hijos
process (threads) se suelen
main thread emplear cuando las
operaciones primitivas de
new thread issues a blocking IPC operation
comunicación son
main thread continues with
other processing
thread is blocked
BLOQUEANTES
thread is unblocked after the operation is fulfilled
11
5 Represenación de los datos
A nivel de enlace se transmite una señal asociada a un flujo
de ceros y unos.
A nivel de aplicación tenemos, entre otros, números enteros,
números reales, cadenas de caracteres, matrices, y objetos.
MARSHALLING: conversión a un formato externo de
unos y ceros, evitando problemas como que emisor use big
endian (ordenadores Macs, protocolo tcp/ip) y receptor little
endian (ordenadores PCs).
SERIALIZACIÓN DE OBJETOS es el MARSHALLING
aplicado a objetos.
12
5 Represenación de los datos
"This is a test."
1.2 7.3 -1.5
1. flattening of structured data items
host A marshalling
2. converting data to external (network)
representation
110011 ... 10000100 ...
1. convert data to internal representation
unmarshalling
2. rebuild data structures.
"This is a test."
-1.5 External to internal representation and vice versa
is not required
7.3 - if the two sides are of the same host type;
1.2 - if the two sides negotiates at connection.
host B
13
6 Codificación de los datos
Cuando se comunican procesos, asociados a aplicaciones
desarrolladas por diferentes empresas, es conveniente que
lo hagan usando estándares de codificación de datos como
por ejemplo XML.
level of
abstraction data encoding schemes Sample Standards
application specific data encoding language XML:(Extensible Markup Language)
general data encoding language ASN.1(Abstract Syntax Notation)
network data encoding standard Sun XDR(External Data Representation)
14
6 Codificación de los datos
XML permite la definición de etiquetas.
HTML es una implementación de XML en la que ya se han
definido las posibles etiquetas.
Otra pequeña diferencia entre HTML y XML, es que
HTML indica mediante etiquetas como se presenta en
pantalla cada uno de los campos, mientras que XML indica
mediante etiquetas lo que representa cada uno de los
campos.
15
7 Protocolos basados en texto
Un protocolo es un conjunto de reglas que gobierna la
comunicación entre entidades. Indica cómo deben ser
los mensajes y su secuencia.
En los protocolos basados en texto se intercambian
cadenas de caracteres
Son fáciles de interpretar por el ser humano.
FTP, HTTP y SMTP son protocolos basados en texto.
Ejemplo inicio de una sesión FTP
16
8 Protocolos de solicitud-respuesta
Un lado invoca una petición y espera una
respuesta del otro extremo.
FTP (File Transfer Protocol), HTTP (HyperText
Transfer Protocol) y SMTP (Simple Mail Transfer
Protocol) además de ser protocolos basados en
texto, son también protocolos de solicitud
respuesta.
17
9 Diagrama de eventos y de secuencia
Un diagrama de EVENTOS documenta la ejecución
detalla de eventos y bloqueos en la ejecución de un
protocolo. Línea continua representa proceso activo, y
discontinua bloqueado. Process 1
Process 2
time
request 1
response 1
request 2
interprocess communication
execution flow
response2
process blocked
18 Event diagram for a protocol
9 Diagrama de eventos y de secuencia
Un diagrama de SECUENCIA es una simplificación de un
diagrama de eventos. No se diferencia entre bloqueo.
Los mensajes se representan por líneas horizonaltes.
Process A Process B
request 1
response 1
request 2
interprocess communication
response 2
19
Protocolo HTTP
web server web browser
request is a message in 3 parts:
request
- <command> <document adddress> <HTTP version>
- an optional header
- optional data for CGI data using post method
response response is a message consisting of 3 parts:
- a status line of the format <protocol><status code><description>
- header information, which may span several lines;
- the document itself.
20
Protocolo HTTP
Script started on Tue Oct 10 [Link] 2000
9:49pm telnet [Link] 80
Trying [Link]...
Connected to [Link].
Escape character is '^]'.
GET /~mliu/ HTTP/1.0 HTTP Request Mensaje petición
HTTP/1.1 200 OK HTTP response status line
Date: Wed, 11 Oct 2000 [Link] GMT HTTP response header
Server: Apache/1.3.9 (Unix) ApacheJServ/1.0
Last-Modified: Tue, 10 Oct 2000 [Link] GMT
ETag: "1dd1e-e27-39e3492a"
Accept-Ranges: bytes
Content-Length: 3623
Connection: close
Content-Type: text/html Mensaje de
respuesta
<HTML> document content
<HEAD>
<TITLE> Mei-Ling L. Liu's Home Page
</TITLE>
</HEAD>
<BODY bgcolor=#ffffff>
…
21
10 Paradigmas (modelos) de comunicación
entre procesos
Tanto los esquemas de codificación de datos como los
paradigmas de comunicación entre procesos se pueden
llevar a cabo a diferentes niveles de abstracción.
level of IPC paradigms Example IPC Implementations
abstraction
remote procedure/method Remote Procedure Call (RPC), Java RMI
,
socket API Unix socket API Winsock
data transmission serial/parallel communication
Un driver de una tarjeta de red podrá tratar con la transmisión
de los datos a nivel serie o paralelo.
Los programadores de APIs de comunicación, y
programadores de aplicaciones sencillas podrán trabajar a
nivel de sockets.
Programadores de aplicaciones complejas en red, trabajarán
con APIs de alto nivel como llamadas a métodos remotos en
22 Java (Java RMI).