Mensajería (Informática)

Click here to load reader

download Mensajería (Informática)

of 17

Transcript of Mensajería (Informática)

1. Sistema Operativo II Luis Alfredo Dilone 2. Camilo Salas A. Juan Pablo Mejia 3. Mensajera Un mensaje es un contenedor que se emplea para intercambiar informacin entre dos o ms procesos. Los mensajes tienen un cierto formato generalmente compuesto por una cabecera, que contiene informacin sobre la fuente y el destinatario, y un cuerpo, que contiene informacin especfica. Los mecanismos de mensajera se refiere al conjunto de funcionalidades que permiten al sistema operativo realizar la entrega de un mensaje a uno o varios procesos. Mediante dicho mecanismo tambin es posible resolver problemas de concurrencia. 4. Los sistemas operativos generalmente ofrecen dos llamadas al sistema para que un proceso pueda enviar y recibir mensajes: Send (destino, mensaje): Enva un mensaje a un destino. Receive (fuente, mensaje): Recibe un mensaje de una fuente. Una operacin compuesta derivada de las primitivas bsicas es: Sendrec (dest_fuent, mensaje): Enva un mensaje a un destino y recoge la respuesta. Cualquier proceso que necesite comprobar si tiene mensajes para ser procesados por l debe invocar la llamada al sistema recv. 5. Formas de identificacin Para identificar la fuente y el destino de nuestro mensaje se pueden emplear dos estrategias. Denominacin Directa En este caso se emplea un ID que permite identificar a la fuente y al destinatario de manera unvoca en el sistema, la denominacin directa permite tres configuraciones: Unicast, de manera que la comunicacin sucede entre una fuente y un destinatario. Broadcast, el emisor enva un mensaje a todos los procesos existentes en el sistema. Multicast, el emisor enva un mensaje a un grupo de procesos, siendo un grupo un subconjunto de procesos existentes en el sistema. El principal inconveniente de la denominacin directa es que se pierde el mensaje si el destino no se encuentra. 6. Denominacin Indirecta Se emplea un elemento intermediario denominado buzn. El sistema operativo ofrece llamadas al sistema que permiten la creacin y destruccin de buzones, por ejemplo, CreateMailbox y DestroyMailbox. Una vez creado el buzn, se emplea ste para realizar la comunicacin entre procesos. Con los buzones se pueden emplear cuatro formas diferentes de comunicacin: Buzn limitado : De un proceso a otro. Buzn de entrada: De varios a uno. Buzn de salida: De uno a varios. Buzn mltiple: Varios procesos entre s con el mismo buzn. El receptor no conoce la identidad de quien enva el mensaje, a menos que el SO se haya encargado de ello. El problema surge cuando un proceso intruso y ste lee los mensajes de los buzones. 7. Formas de transmisin Distinguimos tres formas de transmisin: Transmisin por copia, transmisin por referencia y transmisin por copia en caso de escritura. Transmisin por copia Si se emplea denominacin directa, al invocar el receptor la llamada recv, el mensaje se copia del espacio de memoria del emisor al espacio de receptor. Esta forma de implementar la transmisin tiene un coste de orden lineal O(n) . Si se emplea denominacin indirecta, al invocar send el emisor, el mensaje se copia del espacio de emisor al espacio del buzn, que se encuentra en el espacio de memoria del sistema operativo. Una vez que el receptor invoca receive, se copia el mensaje al espacio de memoria que el receptor ha habilitado para almacenar el mensaje. 8. Transmisin por referencia Es una mejora frente al mecanismo de transmisin por copia. Bsicamente, en lugar de copiar el mensaje, lo que supone un coste de O(n), se le devuelve al receptor una direccin de memoria en la que se encuentra el mensaje. Si se emplea junto a la denominacin directa, el sistema operativo le devuelve al receptor un puntero a la direccin en la que se encuentra el mensaje. Si el mensaje est en el espacio del emisor, son necesarios mecanismos explcitos de comparticin de memoria entre procesos, ya que dos procesos cualquiera no comparten memoria. Si se emplea junto a la denominacin indirecta, el emisor crea un mensaje en el espacio del sistema operativo y se le ofrece un puntero al receptor 9. Transmisin por copia en caso de escritura (COW) Este mtodo permite que los procesos emisor y receptor tengan acceso a la zona de memoria del mensaje de forma controlada. La zona puede pertenecer a uno de los procesos, o al SO, y se accede a ella a travs de una ventana en el espacio de direcciones que inicialmente slo permite consultar la informacin. Cuando uno de los procesos intenta modificar el contenido del mensaje, se detecta esta escritura gracias al mecanismo de proteccin de la memoria. Entonces, el SO hace una copia para uno de ellos, actualiza las referencias, y deja que ambos procesos continen. Se mantiene un nico espacio mientras sea posible. 10. Formas de comunicacin Comportamiento del emisor, send() Sncrona: el proceso emisor que realiza el send() queda bloqueado hasta que el receptor llama a recv() y el proceso bloqueado pasa a estado preparado. Asncrona: suponemos una estructura de datos con capacidad de almacenamiento limitada, dependiente del proceso destinatario o en el buzn del SO. Al ser enviados, los mensajes irn encolndose para que el proceso receptor pueda gestionarlos cuando pueda. Comportamiento del receptor, recv() Bloqueante: una llamada a recv() sin mensajes a procesar pasa el proceso llamante a estado bloqueado. Un send() de otro proceso que aada un mensaje a la cola del proceso bloqueado hace que ste pase a estado preparado. No bloqueante: una llamada a recv() sin mensajes a procesar devuelve un mensaje de error, pero la ejecucin del proceso llamante contina. Entendemos por proceso llamante a aquel que hace uso de las llamadas send() y recv(). 11. Formato de los mensajes Fijo Los procesos acuerdan emplear un formato fijo para sus mensajes. Mixto Los procesos acuerdan emplear mensaje con partes cuyo formato es fijo, como por ejemplo una cabecera inicial, seguido de partes de tamao variable. Mensajera a travs de la red Unicidad del destinatario Fiabilidad en la transmisin Formato de los datos (http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian .html): Enviar un entero a travs de la red puede ser un problema debido a la forma en el que se representan los datos en la memoria dependiente de la arquitectura. 12. Comunicacin entre procesos: Hay dos formas en que se puede comunicar los procesos, los cuales son: Por medio de un esquema de comunicacin por memoria compartida (Buffer) Por medio de un mecanismo de comunicacin entre procesos (IPC, Interprocess comunication). La IPC ofrece un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones. La mejor forma de proveer la comunicacin entre procesos es mediante un sistema de mensajes. La funcin de un sistema de mensaje es permitir a los procesos comunicarse entre s sin tener que recurrir a variables compartidas. Message-queuing system API: put: aadir un mensaje a una cola. get: bloquear hasta que la cola no est vaca, luego quitar el primer elemento. poll: verificar si hay mensaje, quitar el primero. Nunca se bloquea. notify: instalar en la cola un dispositivo que avisar cuando un nuevo mensaje se inserte en la cola. 13. Comunicacin orientada a mensajes Las comunicaciones RPC se basan en la idea que el receptor est operativo para poder invocar una cierta funcin, no podemos suponer que el receptor siempre estar operativo y esperando a comunicarse. La solucin es definir la comunicacin en trmino de paso de mensajes. Mensajes momentneos vs. mensajes persistentes Momentneos: no soportan el envo de mensajes persistentes. (1) Sockets, (2) Message-passing interface (MPI). Sockets Berkeley Sistema fuertemente acoplado a las redes TCP/IP 14. Sockets API: socket: crea una nueva comunicacin. bind: aade la direccin local al socket. listen: queda en espera de conexiones. accept: queda bloqueado hasta la llegada de un pedido de conexin. connect: pedido de establecimiento de conexin. send: enviar datos por la conexin. receive: recibir datos por la conexin. close: desvincula el socket la direccin local. 15. Message-passing interface (MPI) Diseado para aplicaciones paralelas crea un nivel de abstraccin ms alto que el provisto por sockets. Provee una interface con primitivas ms avanzadas. Por el contrario cuenta con una gran cantidad de implementaciones (librera y protocolos) propietarias lo que genera la necesidad de una interface standard. MPI API: MPI_bsend: vincula la salida de mensajes con el buffer de salida local. MPI_send: enva un mensaje y espera hasta que es copiado al buffer. MPI_ssend: enva un mensae y espera hasta que el receptor inicie. MPI_sendrecv: enva un mensaje y espera respuesta. MPI_isend: pasa la referencia de un mensaje y contina. MPI_issend: para la referencia de un mensaje y espera hasta que el receptor inicie. MPI_recv: recibe un mensaje; se bloquea en el caso de no haberlo. MPI_irecv: verifica si hay mensajes entrantes; no se bloquea. 16. Persistentes: el mensaje se encola y se entrega cuando se pide. (1) Message-oriented middleware (MOM) Implementaciones Hay un nmero de APIs que pueden ser usadas por IPC. Un nmero de plataformas independientes de APIs incluidas las siguientes: Tuberas Annimas y con nombre Common Object Request Broker Architecture (CORBA) Distributed Computing Environment (DCE) Message Bus (MBUS) (especificado en RFC 3259) ONC RPC Sockets XML XML-RPC or SOAP ZeroC's Internet Communications Engine (ICE) 17. Gracias El principio de la sabidura es el temor a Jehov Mensajera