Comunicación entre Procesos por pase de mensajes Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822 Prof. Yudith.

Slides:



Advertisements
Presentaciones similares
Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
Advertisements

Tabla de Contenido Concurrencia.
TEMA 1 Introducción a la Programación Concurrente
Introducción Características de la nueva API E/S antes de Java 1.4 ¿Por qué NIO? E/S orientada a bloques El patrón Reactor Canales y Buffers Lectura y.
Sistemas Peer-To-Peer La plataforma JXTA
UNIDAD N° 5 PROTOCOLOS Y ARQUITECTURA.
Sistema operativo Componentes de un sistema operativo
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Sockets y Threads en JAVA
Algoritmos paralelos Lab. 1: Introducción
INTRODUCCIÓN ESTADO DE LA TÉCNICA PROCESAMIENTO DISTRIBUIDO CON MPI PROCESAMIETNO DISTRIBUIDO DE IMÁGENES GENÉRICO CON VTK PROCESAMIENTO DISTRIBUIDO DE.
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Sistemas en estratos. Descripción: se organiza en una jerarquía de estratos, estando construido cada uno de ellos sobre el otro que tiene menor jerarquía.
MODELO TCP/IP Conectividad de extremo a extremo especificando como los datos deberian ser formateados,direccionados,transmitidos,enrutados y recibidos.
Comunicación y sincronización entre procesos
TIPOS DE SERVIDORES 4/2/2017 3:29 PM
HERRAMIENTAS INFORMATICAS
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Sistemas Operativos Distribuidos Plataforma Cliente/Servidor
HILOS Y COMUNICACIÓN ENTRE PROCESOS
INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN.
Semana 5 Subprogramas..
Tres Algoritmos Paralelos para Multiplicación Matriz Vector
Algoritmos Distribuidos Semana 1. Parte 2 Comunicación por Pase de Mensajes Claudia León Universidad Central de Venezuela Facultad de Ciencias Escuela.
2. ASYNCRONOUS TRANSFER MODE 2.1Características generales 2.2 Modelo de referencia del protocolo 2.3 Categorías de servicio ATM.
Sincronización de Procesos Semáforos Emely Arráiz Ene-Mar 08.
Unidad III Administración de procesos
Ing. Karen Torrealba de Oblitas
Archivos.
EL MODELO OSI GIAN PAOLO ALMEIDA ROMMEL CHIFLA GABRIEL VALENZUELA
Introducción a la Programación. Lenguaje de Máquina.
MPISistemas Distribuidos1 MPI Un estándar de paso de mensajes para Clusters y Workstations Communications of the ACM, July 1996 J.J. Dongarra, S.W. Otto,
Programación de Memoria Compartida
Sistemas Concurrentes: Paso de mensajes
Sincronización de procesos Mariano Gómez Plaza.  Mariano Gómez Plaza Sincronización de procesos 2 Tipos de procesos IndependientesCooperantes.
SISTEMAS OPERATIVOS.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
5. Sistemas de archivos avanzados1 Tema 5: Sistemas de Archivos Avanzados Resumen: –Sistema de archivos distribuido –File Replication Service.
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
Introducción a los Sistemas Operativos
Programación secuencial vs programación concurrente
RESUMEN CAPITULO 6.
COMPONENTES DEL SISTEMA OPERATIVO.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
Introducción a los Sistemas Operativos
Integrantes: Ma Carmen Zaragoza Santiago Leticia González Hernández Abraham Obispo Antonio Alexis González Ramírez Eduardo Hernández Tolentino.
(agradecimiento: Ruben Weht
- 1 - Sistema Embebidos: Propiedades de los Lenguajes y SDL Agustín J. González 1s06 Se ha tomado como base el material generado por Peter Marwedel de.
Introducción a los SOs.
Redes de Area Local, LAN Una red de área local es una red de datos de alta velocidad que cubre un área geográfica relativamente pequeña. Típicamente conecta.
Estructura de los Sistemas Operativos
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Funcionamiento del servicio de correo electrónico
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
Unidad 2 – Gestión de Procesos
Servicio “streaming”.
INTRODUCCION A LA PROGRAMACION
LIA. SUEI CHONG SOL, MCE..  1.- SOFTWARE BÁSICO O DE SISTEMA. Conjunto de programas imprescindibles para el funcionamiento del sistema.  2.- SOTWARE.
APLICACIÓN: Provee el conjunto de aplicaciones de red, como por ejemplo: Transferencia de archivos, emulación de terminal, correo electrónico, discos virtuales,
Tema 1 – Introducción a las Redes informáticas
INTEGRANTES: Giovanna Kristhel Mendoza Castillo Eduardo Solis Lara Gustavo Antonio González Morales.
Nivel de Transporte en Internet
Ing. Horacio sagredo tejerina
Modelo OSI Para redes………
C1-Sistemas Distribuidos Concurrencia Varias componentes en una misma máquina-> Concurrencia Inteleaving (1 sola CPU, N procesos) Paralelo (N CPU, M procesos)
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Gestión de Procesos Hilos.
Presentado por : Grisales Ramírez Jhonier las capas del modelo osi.
Desventajas Poco eficiente: lectura y escritura en disco es lenta Necesita otro mecanismo de sincronización para acceder a los datos Son los procesos.
Transcripción de la presentación:

Comunicación entre Procesos por pase de mensajes Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822 Prof. Yudith Cardinale Ene - Mar 2011

Introducción  Comunicación entre Procesos:  Memoria Compartida: sistemas centralizados, sistemas paralelos  Cliente-servidor: sistemas distribuidos (RPC, RMI)  Pase de mensajes: sistemas centralizados, distribuidos y paralelos  Comunicación basada en streams: sistemas distribuidos. El tiempo y orden de los mensajes es vital (transferencia de audio y video)  Comunicación en grupo: sistemas centralizados, distribuidos y paralelos

Introducción  Comunicación por Memoria Compartida:  El sistema de operación se encarga de proveer el servicio de comunicación  Resuelven problemas de sincronización y exclusión mutua  Existen mecanismos de bajo nivel (semáforos, contadores de eventos y secuenciadores) y de alto nivel (monitores)

Introducción  Comunicación por Pase de Mensajes:  Para aplicaciones en Sistemas Distribuidos y Paralelos  Memoria Distribuida  Se puede usar combinado con memoria compartida  Soportado por llamadas al sistema de operación o a través de librerías especiales  Las primitivas principales son: send(destination, this_msg, msg_length) receive(source, a_msg, &how_long)

Introducción  Sistemas donde la comunicación por memoria compartida es apropiada:  Sistemas con poca protección (PCs)  Sistemas en tiempo real  Sistemas con soporte de Multi-hilos  Sistemas uniprocesador o multiprocesadores con memoria compartida

Introducción  Sistemas donde la comunicación por memoria compartida no es apropiada:  Sistemas protegidos (sistemas multiusuarios)  Sistemas con computadores independientes conectados por redes  Sistemas con soporte de migración

Aspectos relacionados a la comunicación por pase de mensajes  Pérdida de mensajes: se puede usar Acks e intervalos de tiempos para retransmitir  Se pierden los Acks: se puede usar número de secuencias de mensajes y protocolos de reconocimiento  Confiabilidad: autentificación y encriptamiento

Aspectos relacionados a la comunicación por pase de mensajes  Tamaño del mensaje:  Fijo: es fácil para el sistema de operación pero difícil para el programador. Ocurre fragmentación interna  Variable: es fácil para el programador pero difícil para el sistema de operación. Ocurre fragmentación externa.  Enlaces o canales de comunicación

Enlaces de comunicación  Enlaces físicos: memoria, buses, cable coaxial, microondas, fibra óptica, etc.  Enlaces lógicos: provistos a nivel de software y sirven para administrar la comunicación  Aspectos importantes:  ¿Cómo se establecen?  ¿A cuántos procesos está asociado?  ¿Cuántos enlaces son posibles entre cada par de procesos?  Capacidad del enlace y tamaño del mensaje  Es bidireccional o unidireccional

Enlaces de comunicación  De acuerdo a cómo son definidos los enlaces, se tienen diferentes implementaciones de los send y receive:  Comunicación directa o indirecta  Comunicación simétrica o asimétrica  Comunicación síncrona o asíncrona  Comunicación transitoria o persistente  Con buffering explícito o automático  Enviar los mensajes por copia o por referencia

Comunicación Directa Simétrica  Nombran explícitamente al proceso  No hay entidades intermediarias  El receptor debe conocer la identidad de todos los posibles emisores (es una mala solución para servidores)  El enlace se establece automáticamente  Un enlace se asocia sólo con dos procesos  Entre cada par de procesos existe sólo un enlace  Los enlaces pueden ser unidireccionales o bidireccionales send(tothisprocess, this_msg, msg_length) receive(fromthisprocess, a_msg, &how_long)

Comunicación Directa Simétrica: ejemplos... void producer()  void consumer()  int item; int item; message m; message m; while (true)  for (i=0;i  N; i++) produce_item(&item);  send(producer,&m); receive(consumer,&m); while (true)   built_message(&m,item); receive(producer,&m);  send(consumer,&m); extract_item(&m,&item);   send(producer,&m);  consumer_item(item);  

Comunicación Directa Simétrica: ejemplos... void producer()  void consumer()  int item; int item; message m; message m; repeat  repeat...  receive(productor,m); produce_item(m);... ... consume_item(m);  send(consumer,m);...  until false;  until false; 

Comunicación Directa Simétrica  La comunicación directa también es simétrica por ser comunicación uno-a-uno.  La comunicación directa asimétrica permite comunicar más de 2 procesos al estilo uno-a-muchos.  La comunicación directa permite comunicación transitoria en la cual los mensajes son mantenidos por el subsistema de comunicación sólo mientras se ejecutan enviador y receptor

Comunicación Directa Asimétrica  broadcast(P0,m) o multicast(P0,m):  scatter(P0,m  i  ): ABCDP0 P1 P2 P3 B C D P0 P2 P1 P3 m

Comunicación Directa Asimétrica  gather(P0,m):  allgather(), alltoall()....  send(P,m) id=receive(m): el proceso P está listo para recibir un mensaje de cualquier proceso. ABCDP0 P1 P2 P3 B C D

Comunicación Indirecta  Send (M, mensaje) Receive(M, mensaje)  Un enlace se establece entre un par de procesos sólo si comparten un buzón (mailbox), un puerto o un pipe.  Un enlace se puede asociar con más de un par de procesos  Entre cada par de procesos puede haber más de un enlace  Los enlaces pueden ser unidireccionales o bidireccionales  Permite comunicaci ón persistente: el mensaje se puede mantener en el subsistema de comunicaciones

Comunicación Indirecta  ¿Qué sucede si varios procesos leen a la vez?: Pede haber problemas de inconsistencia. Se puede resolver:  Permitiendo sólo un enlace asociado a cada par de procesos  Permitiendo sólo un receive ejecutarse a la vez  Permitiendo que el sistema de operación seleccione arbitrariamente el proceso que hará la recepción

Comunicación Indirecta: Buzón o Mailbox  Propiedad del subsistema de comunicación, el cual provee llamadas para:  Crear un buzón  send, receive a través del buzón  Destruir un buzón  Protección por grupos  Puede ser usado por múltiples enviadores y receptores que no necesariamente se conocen  Son bidireccionales

Comunicación Indirecta: Buzón o Mailbox  Se puede añadir fácilmente un nuevo servidor en sustitución de uno que ha fallado  Este mailbox persiste aunque finalicen los procesos que solicitaron su creación.  El sistema tiene que soportar la existencia de un objeto cuyo nombre pueden conocer el resto de los procesos. P1 send(message) P2 Send(message) Proceso receptor Proceso receptor Mailbox global

¿Qué pasa si el mailbox está lleno? – Borrar el mensaje – El kernel espera un tiempo hasta contar con espacio en el buffer. – No dejar a ningún proceso enviar mensajes si no hay espacio Cliente Servidor kernel Espacio destinado a almacenar los mensajes Comunicación Indirecta: Buzón o Mailbox

Comunicación Indirecta: Puertos  Propiedad de los procesos. El proceso que creó el puerto (y su descendencia) son los únicos procesos que pueden utilizarlo.  Cuando el proceso muere, muere el puerto  Son unidireccionales  Un proceso puede definir múltiples puertos  El puerto tiene exactamente un receptor pero puede tener múltiples emisores.

Comunicación Indirecta: Puertos  Los procesos pueden utilizar múltiples puertos para recibir mensajes.  Cualquier proceso que conozca el número de puerto de otro proceso, puede enviarle mensajes.  Generalmente los servidores hacen público su número de puerto para que sea utilizado por los clientes.

Comunicación Indirecta: Puertos Proceso P X Y reply a P request P.X request P.Y Puerto 0 Puerto 1 Puerto 2 outputinput send(m)receive(m) output input

Comunicación Indirecta: Puertos input output

Comunicación Indirecta: Puertos Proceso P cliente Servidor socket Cualquier puerto mensaje Puerto acordado Sockets  La abstracción de sockets se utiliza para la comunicación UDP y TCP  La comunicación consiste entre la transmisión de un mensaje entre un conector de un proceso y un conector de otro proceso.

Comunicación Indirecta: Puertos Sockets  Los conectores deben estar asociados a un puerto local y a una dirección Internet.  Los procesos pueden usar el mismo conector para leer y escribir mensajes.  Cada computador permite 2 16 puertos  Cada proceso puede utilizar varios puertos para recibir mensajes, pero un proceso no puede compartir puertos con otros procesos del mismo computador.  Cada conector se asocia con un protocolo concreto que puede ser UDP o TCP.

Comunicación Indirecta: Puertos  Sockets. socket. bind. listen. accept. read. write. close. socket. connect. write. read. close Punto de sincronización Comunicación

Comunicación Indirecta: Pipes  No tienen noción de mensajes (stream de bytes)  Generalmente no se comparten  Permanecen en memoria principal si son no nominales y se guardan en memoria secundaria si son nominales  Cuando el pipe está lleno el proceso que escribe se bloquea  Cuando el pipe está vacío el proceso que lee se bloquea  Son unidireccionales

Comunicación Síncrona y Asíncrona send con bloqueo: espera hasta que el receptor haya recibido sin bloqueo: continúa aunque el receptor no haya recibido receive con bloqueo: espera hasta que el enviador haya enviado sin bloqueo: continúa aunque el enviador no haya enviado

Comunicación Síncrona y Asíncrona Bloqueantes(síncronas):  El emisor (send) se suspende hasta tanto el mensaje no es recibido.  Una llamada a receive no retorna hasta que el mensaje no ha sido colocado en el buffer que especifica el receptor.  En algunos sistemas el receptor puede especificar de qué emisor desea recibir, en cuyo caso permanecerá bloqueado hasta que lleguen los mensajes que le interesan.

Comunicación Síncrona y Asíncrona No bloqueantes(asíncronas):  Un send no bloqueante retorna el control al llamador inmediatamente antes que el mensaje sea enviado.  Un receive no bloqueante le indica al kernel el buffer donde se dejará el mensaje y la llamada retorna inmediatamente.

Comunicación Síncrona y Asíncrona  Normalmente la comunicación sin bloqueo está acompañada de buffering. Cuando se ejecuta el send, éste se bloquea hasta que el mensaje se copie en el buffer del subsistema de comunicaciones. send(Q,m) receive(P,m) buffer del subsistema de comunic.

Cliente ejecutándose Cliente Bloqueado Se está enviando el mensaje Cliente continua con su ejecución. trap Cliente ejecutándose Se está enviando el mensaje Cliente continua con su ejecución. trap El mensaje se copia al buffer del kernel Cliente Bloqueado Send Bloqueante Send No-bloqueante Comunicación Síncrona y Asíncrona

 Receive asíncrono: ¿cómo se entera el llamador que el mensaje ha llegado? - wait explícito: el receptor se bloquea cuando él lo desea. - Adicionalmente se puede ofrecer una primitiva test no bloqueante o un conditional_receive no bloqueante. - Usar interrupciones para avisar al receptor. Comunicación Síncrona y Asíncrona

 Transitoria:  Los mensajes son almacenados por el sistema de comunicaciones sólo mientras los procesos enviador y receptor se están ejecutando  Si alguno de los 2 procesos falla, el mensaje es eliminado  Típicamente son servicios de comunicación a nivel de transporte  Enfoque store-and-forward  Persistente:  Los mensajes son almacenados por el sistema de comunicaciones hasta que el receptor los tome.  No requiere la ejecución simultánea de enviador y receptor Comunicación Transitoria o Persistente

Buffering  Capacidad de los enlaces de mantener mensajes no recibidos  El buffering en los enlaces puede ser de:  Capacidad 0 (Sin buffer)  Capacipad Limitada  Capacida Ilimitada ( teórica )

Buffering  Capacidad 0 (Sin buffer):  Define una comunicación síncrona con bloqueo.  Cominicación Rendezvous  Fácil de implementar y segura  Poco flexible  receive(p, &m): el proceso está preparado para recibir un único mensaje y se dispone de un único buffer en el espacio de direcciones del proceso usuario. m Cliente ServidorDirección del buffer kernel

Buffering  Las primitivas no-bloqueantes requieren de buffering, i.e. un lugar donde el SOP pueda almacenar temporalmente los mensajes que se han enviado pero no han sido recibidos:  Capacidad Limitada:  Buzones, puertos, pipes...  Define una comunicación asíncrona  La comunicación se bloquea sólo si está lleno o vacío el buffer  Permite concurrencia  El enviador no está seguro si el receptor leyó el mensaje

Buffering  El buffering en los enlaces puede ser de:  Capacidad Ilimitada:  Define una comunicación asíncrona  Cuando el buffer está lleno, el send no se bloquea sino que retorna un error  Permite concurrencia  El enviador no está seguro si el receptor leyó el mensaje

Resumen de los estilos de comunicación  Directa e indirecta  Simétrica y asimétrica  Síncrona y asíncrona  Persistente y transitoria  Con Buffer y sin buffer  Ejemplos combinados:

Ejemplo 1: Comunicación Directa Asíncrona Proceso AProceso B send(receiver_id,m)receive(sender_id,m´) Nivel de implementación buffer de B routine send(...) routine receive(...)

Ejemplos 2  Comunicación asíncrona persistente: sistema de mensajes electrónicos  Comunicación síncrona persistente: sistema de mensajes electrónicos Proceso A ejecutándose Proceso A detiene ejecución. Proceso B no esta ejecutándose A Bloqueado Proceso B se inicia y recibe Proceso A ejecutándose Proceso A detiene ejecución. Proceso B no esta ejecutándose Proceso B se inicia y recibe

Ejemplos 3  Comunicación asíncrona transitoria: servicios de datagramas a nivel de transporte (UDP)  Comunicación síncrona transitoria receipt-based: A envía y continua A Bloqueado Proceso B recibe Proceso A ejecutándose Puede ser: - receipt-based - delivery-based - response-based recibe el mensaje El mensaje se envía si B se está ejecutando pero está realizando otra tarea

Ejemplos 4  Comunicación síncrona transitoria delivery-based:  Comunicación síncrona transitoria response-based (request- reply ): A Bloqueado Proceso A ejecutándose Procesa el mensaje B se está ejecutando pero está realizando otra tarea A Bloqueado Proceso A ejecutándose recibe el mensaje B se está ejecutando pero está realizando otra tarea recibe el mensaje

MPI (Message Passing Interface)  Es una librería de comunicación con facilidades para desarrollar programas paralelos (Fortran 77,HPF,F90, C y Java)  Permite modelar programas paralelos con el enfoque Maestro-Esclavos  Permite modelar topologías lógicas  Soporta el modelo SPMD (Single Process Multiple Data)

MPI (Message Passing Interface)  Facilidades de comunicación:  Punto-a-punto  Colectiva  Definición de grupo de procesos  Definición de comunicadores  Definición de topologías de procesos  Interfaz de profiling  Operaciones de memoria compartida  Soporte de threads

Ejemplo de programa paralelo con MPI  include “mpi.h”  define N 10 int main(int argc, char **argv)  int myId, numprocess,i; //Inicializaciones MPI_Init(&argc,&argv); MPI_COMM_SIZE(MPI_COMM_WORLD,&numprocess); MPI_COMM_RANK(MPI_COMM_WORLD,&myId); if (myId==0)  printf(“Soy el proceso %d”,myId);  for (i=0;i  N;i++) MPI_Send(&i,1,MPI_INT,1,0, MPI_COMM_WORLD);  else  printf(“Soy el proceso %d”,myId);  for (i=0;i  N;i++) MPI_Receive(&i,1,MPI_INT,0,0, MPI_COMM_WORLD, &status);  MPI_Finalize() 

Ejemplo de programa paralelo con MPI  include “mpi.h”  include  math.h  int main(int argc, char **argv)  int myId, numprocess,n,i,rc; double mypi, pi, h, sum, x, a; //Inicializaciones MPI_Init(&argc,&argv); MPI_COMM_SIZE(MPI_COMM_WORLD,&numprocess); MPI_COMM_RANK(MPI_COMM_WORLD,&myId); while (1)  if (myId==0)  printf(“Introduzca el nro. de intervalos” ); scanf(“%d”,&n);  MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD); if (n==0) break; else  for (i=myId+1;i  n;i+=nunprocess)

Ejemplo de programa paralelo con MPI  realizar calculos de h y sum  mypi=h*sum; MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0, MPI_COMM_WORLD); if (myid==0) printf(“pi es aprox. %.16f “,pi);  else  while MPI_Finalize(); 