PROCESOS Y COMUNICACIÓN

 


Objetivo: Examinar las formas en que los procesos desarrollados en diferentes máquinas pueden intercambiar información


COMUNICACIÓN ENTRE PROCESOS


La comunicación entre procesos es un factor clave para construir sistemas distribuidos, los paradigmas de comunicación más usados en sistemas distribuidos son:

  • • Cliente - servidor. 
  • • Llamada a un procedimiento remoto (RPC). 
  • • Comunicación en grupo 
  • Los conceptos fundamentales que deben ser considerados para la comunicación son:
  • • Los datos tienen que ser aplanados antes de ser enviados. 
  • • Los datos tienen que ser representados de la misma manera en la fuente y destino. 
  • • Los datos tienen que empaquetarse para ser enviados. 
  • • Usar operaciones de send para enviar y receive para recibir. 
  • • Especificar la comunicación, ya sea en modo bloqueante o no bloqueante.
  •  • Abstracción del mecanismo de paso de mensaje. 
  • • La confiabilidad de la comunicación. Por ejemplo, usar TCP en lugar de UDP. Mo

Modelo cliente - servidor

El término cliente - servidor (C-S) hace referencia a la comunicación en la que participan dos aplicaciones. Es decir que está basado en la comunicación de uno a uno. La aplicación que inicia la comunicación enviando una petición y esperando una respuesta se llama cliente. Mientras los servidores esperan pasivos, aceptan peticiones recibidas a través de la red, realizan el trabajo y regresan el resultado o un código de error porque no se generó la petición. Una máquina puede ejecutar un proceso o varios procesos cliente. La transferencia de mensaje en el modelo C- S se ejecuta en el núcleo. Una operación general del funcionamiento del cliente - servidor, donde un servidor espera una petición sobre un puerto bien conocido que ha sido reservado para cierto servicio. Un cliente reserva un puerto arbitrario y no usado para poder comunicarse.

MODELO CLIENTE - SERVIDOR

La comunicación cliente - servidor puede ser implementada a través de librerías PVM (Parallel Virtual Machine) o sockets que permiten implementar comunicaciones bloqueantes y no bloqueantes, además de que también pueden usar TCP para tener comunicaciones confiables.

Deficiencias del modelo cliente - servidor
• El paradigma de comunicación es la entrada/salida (E/S), ya que estos no son fundamentales en el cómputo centralizado. 
• No permite la transparencia requerida para un ambiente distribuido. 
• El programador debe de atender la transferencia de mensajes o las E/S, tanto del lado del cliente como del lado del servidor.  

LLAMADA DE PROCEDIMIENTO REMOTO (RPC)

La llamada de procedimiento remoto, mejor conocido como RPC, es una variante del paradigma cliente - servidor y es una vía para implementar en la realidad este paradigma. En el RPC, un programa llama a un procedimiento localizado en otra máquina. El programador no se preocupa por las transferencias de mensajes o de las E/S. La idea de RPC es que una llamada a un procedimiento remoto se parezca lo más posible a una llamada local, esto le permite una mayor transparencia. Para obtener dicha transparencia, el RPC usa un resguardo de cliente, que se encarga de empacar los parámetros en un mensaje y le solicita al núcleo que envíe el mensaje al servidor, posteriormente se bloquea hasta que regrese la respuesta.
Algunos puntos problemáticos del RPC son: 

• Que se deben de usar espacios de direcciones distintos, debido a que se ejecutan en computadoras diferentes. 
• Como las computadoras pueden no ser idénticas, la transferencia de parámetros y resultados puede complicarse. 
• Ambas computadoras pueden descomponerse. 


Se muestra una llamada a un procedimiento remoto, el cual se realiza considerando los siguientes pasos:

1. El procedimiento cliente llama al resguardo del cliente de la manera usual. 
2. El resguardo del cliente construye un mensaje y realiza un señalamiento al núcleo. 
3. El núcleo envía el mensaje al núcleo remoto. 
4. El núcleo remoto proporciona el mensaje al resguardo del servidor. 
5. El resguardo del servidor desempaca los parámetros y llama al servidor. 
6. El servidor realiza el trabajo y regresa el resultado al resguardo. 
7. El resguardo del servidor empaca el resultado en un mensaje y hace un señalamiento mediante el núcleo. 
8. El núcleo remoto envía el mensaje al núcleo del cliente. 
9. El núcleo del cliente da el mensaje al resguardo del cliente. 
10.El resguardo desempaca el resultado y lo entrega al cliente.  


COMUNICACIÓN EN GRUPO 

En un sistema distribuido puede haber comunicación entre procesos de uno a muchos o de muchos a uno. Los grupos son dinámicos, lo cual implica que se pueden crear nuevos grupos y destruir grupos anteriores. Las técnicas para implantar la comunicación en grupos pueden ser:

• Transmisión de multidifusión (multicast) 
• Transmisión completa 
• Transmisión punto a punto 


• Grupos cerrados: Por ejemplo, el procesamiento paralelo. 
• Grupos abiertos: Por ejemplo, el soporte de servidores redundantes. 
• Grupo de compañeros: Permite que las decisiones se tomen de manera colectiva. 
• Ventaja: el grupo de compañeros es simétrico y no tiene punto de falla. Desventaja: la toma de decisiones por votación es difícil, crea retraso y es costosa. 
• Grupo jerárquico: Existe un coordinador y varios trabajadores. 
• Membresía de grupo: Permite crear, eliminar grupos, agregar o eliminar procesos de grupos. 
• Utiliza técnicas como la del servidor del grupo o membresía distribuida. 
• Existen problemas de detección cuando un miembro ha fallado. 

Direccionamiento al grupo: Los grupos deben de poder direccionarse. Estas pueden ser:

• Dirección única grupal 
• Dirección de cada miembro del grupo 
• Direccionamiento de predicados

Primitivas: Las primitivas de comunicación son: • send y receive, de la misma forma que en una comunicación puntual • group_send y grop_receive para comunicación en grupo
 
Atomicidad: Se refiere a que cuando se envía un mensaje a un grupo, este debe de llegarles a todos los miembros o a ninguno, así como garantizar la consistencia

Ordenamiento de mensajes: Está conjuntada con la atomicidad y permite que la comunicación en grupo sea fácil de comprender y utilizar. Los criterios son: 
• Ordenamiento con respecto al tiempo global 
• Ordenamiento consistente 
• Ordenamiento con respecto a grupos traslapados

Escalabilidad: Permite que el grupo continúe funcionando, aun cuando se agreguen nuevos miembros. 

Interfaz de programación de aplicaciones (API) 

Las aplicaciones clientes - servidor se valen de protocolos de transporte para comunicarse. Las aplicaciones deben de especificar los detalles sobre el tipo de servicio (cliente o servidor), los datos a transmitir y el receptor donde situar los datos. La interfaz entre un programa de aplicación y los protocolos de comunicación de un sistema operativo se llama interfaz de programación de aplicaciones (API).

Un API define un conjunto de procedimientos que puede efectuar una aplicación al interactuar con el protocolo. Por lo general, un API tiene procedimientos para cada operación básica. Los programadores pueden escoger una gran variedad de APIs para sistemas distribuidos. Algunas de estas son BSD socket, Sun’s RPC/XDR, librería de paso de mensajes PVM y Windows Sockets. La API de socket, que tuvo sus orígenes en el UNIX BSD, se convirtió en una norma de facto en la industria y muchos sistemas operativos la han adoptado, tanto para computadoras basadas en Widows (winsock) como para algunos sistemas UNIX.

LA INTERFAZ DE SOCKET 


FUNCIONES DE LA API DE SOCKETS



Las funciones relacionadas a la API sockets que permiten establecer una comunicación entre dos computadoras son:



COMUNICACIÓN ORIENTADA A CONEXIÓN (TCP) 

    

Un servicio orientado a conexión requiere que dos aplicaciones establezcan una conexión de transportación antes de comenzar el envío de datos. Para establecer la comunicación, ambas aplicaciones primero interactúan local-mente con protocolo de transporte y después estos protocolos intercambian mensajes por la red. Una vez que ambos extremos están de acuerdo y se haya establecido la conexión, las aplicaciones podrán enviar datos. La secuencia de llamadas para un escenario orientado a conexión


se observa que, después de llamar a listen( ), el servidor se pone en modo pasivo hasta que recibe una solicitud del cliente. Cuando la solicitud de servicio del cliente llega al socket monitoreado por la función accept( ), se crea de modo automático un socket nuevo, que será conectado inmediatamente con el proceso cliente. Este socket se llama de servicio y se cierra al terminar la transferencia de datos. El socket original que recibió la solicitud de servicio permanece abierto en estado de escucha para seguir aceptando nuevas solicitudes. 

Es similar a enviar una carta postal. El lado cliente actúa como la persona que envía la carta y el lado servidor como la persona que lo recibe. El servidor usa las llamadas a socket( ) y bind( ) para crear y unir un socket. Como el socket es sin conexión, se deberán usar las llamadas a recvfrom( ) y sendto( ). Se llama a la función bind( ) pero no a connect( ), dejando esta última como opcional. La dirección destino se especifica en la función sendto( ). La función recvfrom( ) no espera conexión sino que responde a cualquier dato que llegue al puerto que tiene enlazado.







Comentarios

Entradas populares de este blog

LOGICA JUICIO, ORACIÓN Y PROPOSICIÓN

Probabilidad y estadística Métodos de conteo

LEYES DEL ÁLGEBRA PROPOSICIONAL