sábado, 3 de octubre de 2015

Unidad II: Comunicación en los Sistemas Operativos Distribuidos

2.1 Comunicación: comunicación con cliente - servidor, comunicación con llamada a procedimiento remoto, comunicación en grupo, tolerancia a fallos.

La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes.
Un cliente realiza peticiones a otro programa, el servidor, que le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

  1. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.
La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.
Las Llamadas a Procedimientos Remotos, o RPC por sus siglas en ingles (Remote Procedure Call), es un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. De esta manera el programador no tenía que estar pendiente de las comunicaciones, estando éstas encapsuladas dentro de las RPC.
Las RPC son muy utilizadas dentro del cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado de dicha operación al cliente.
Hay distintos tipos de RPC, muchos de ellos estandarizados como pueden ser el RPC de Sun denominado ONC RPC , el RPC de OSF denominado DCE/RPC, Invocación de Métodos Remotos de Java y el Modelo de Objetos de Componentes Distribuidos de Microsoft DCOM, aunque ninguno de estos es compatible entre sí. La mayoría de ellos utilizan un lenguaje de descripción de interfaz que define los métodos exportados por el servidor.

Hoy en día se está utilizando el XML como lenguaje para definir el IDL y el HTTP como protocolo de red, dando lugar a lo que se conoce como servicios web. Ejemplos de éstos pueden ser SOAP o XML-RPC.


Tolerancias a fallos es a la capacidad de un sistema de almacenamiento de acceder a información aún en caso de producirse algún fallo. Esta falla puede deberse a daños físicos (mal funcionamiento) en uno o más componentes de hardware lo que produce la pérdida de información almacenada. La tolerancia a fallos requiere para su implementación que el sistema de almacenamiento guarde la misma información en más de un componente de hardware o en una máquina o dispositivo externos a modo de respaldo. De esta forma, si se produce alguna falla con una consecuente pérdida de datos, el sistema debe ser capaz de acceder a toda la información recuperando los datos faltantes desde algún respaldo disponible.

2.2 Sincronización: relojes físicos, relojes lógicos, usos de la sincronización.

 Un sistema distribuido debe permitir el apropiado uso de los recursos, debe encargarse de un buen desempeño y de la consistencia de los datos, además de mantener seguras todas estas operaciones La sincronización de procesos en los sistemas distribuidos resulta más compleja que en los centralizados, debido a que la información y el procesamiento se mantienen en diferentes nodos.
Un sistema distribuido debe mantener vistas parciales y consistentes de todos los procesos cooperativos y de cómputo. Tales vistas pueden ser provistas por los mecanismos de sincronización.




El término sincronización se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre sí:

1. La sincronización entre el emisor y el receptor.
2. La especificación y control de la actividad común entre procesos cooperativos.
3. La socialización de accesos concurrentes a objetos compartidos por múltiples procesos.
Haciendo referencia a los métodos utilizados en un sistema centralizado, el cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos.

2.3. Nominación: características y estructuras, tipos de nombres, resolución y distribución, servidores y agentes de nombres, mapeo de direcciones, mapeo de rutas, modelo de Terry.

CARACTERÍSTICAS

Una de las tareas más relevantes en la operación de S.O.D. es la administración de recursos, que se presentan estructurados en plataformas o catálogos de servicios y aplicaciones. Las fronteras entre plataformas de trabajo son muy relativas, pero imponen restricciones porque las prestaciones   del sistema operativo operan siempre en el direccionamiento de bajo nivel, y al trasladar su servicio a un ambiente distribuido tenemos que diferenciar cada entidad para que puedan compartir los recursos, (por ejemplo en procesamiento paralelo). Entonces el direccionamiento normal del S.O. puede extenderse a un ambiente de red mediante una capa de software que etiqueta los identificadores de recursos nombres que pueden ser o no simbólicamente más significativos, pero que establecen un conjunto de elementos del sistema con reglas particulares en una nomenclatura. Este conjunto y sus reglas constituyen un pequeño universo llamado Dominio. El uso de etiquetas en un dominio es un elemento creador de contexto, que nos ayudará a localizar y transparentar el acceso a los recursos, logrando la conectividad de entidades y la transparencia de localización.


www.michoacan.gob.mx


Identifica de manera oficial un sitio web del gobierno del estado de Michoacán en México, de tal suerte que ninguna otra entidad en el mundo puede reclamar ese mismo dominio. Si se usan  otros prefijos como .com, .net,.edu, la identificación de los elementos previos es igualmente válida. La novedad del sistema DNS es que tiene varias jerarquías que operan todas de manera conjunta-excluyente, sin ninguna regla semántica que no sea el lenguaje natural, cuya validez es interpretada solo por el usuario que lee el nombre de dominio. Por ejemplo el nombre:


wwwwww.mipagina.gob.ue


Es correcto sintácticamente y el sistema DNS lo puede usar sin ningún problema, pero identifica un recurso imposible o inexistente; y usuario competente se percataría inmediatamente de su invalidez. Lo curioso es que en la www un nombre de dominio  DNS es un nombre de un servidor con ruta de archivo en una cadena de caracteres y su procesamiento involucra sólo una delgada capa de software de direccionamiento llamada ARP y RARP (Address Resolution Protocol y Reverse ARP). Esto nos muestra que DNS puede direccionar recursos en archivos remotos y que su servicio es útil e interactúa con muy diversas aplicaciones, lo cual es prueba de la relevancia del tema en otros sistemas similares como los S.O.D.
Los servidores DNS permiten acceder a un dominio en Internet entre los millones existentes al traducir fragmentos de texto a direcciones IP con recursos por default según el servicio (directorio HTTPD, servicio SMTP/POP3, login a FTP,  TELNET, etc.); de manera similar un S.O.D. convierte los nombres en recursos de bajo nivel, pero su operación es distinta en esencia, ya que DNS es un servicio con su propio protocolo, mientras que un sistema de nominación para una S.O.D. es toda una nomenclatura de servicios que puede abarcar desde la capa física hasta la capa de aplicación, no obstante que puede implementarse mediante un servidor DNS. DNS es un modelo cliente-servidor de dos capas, por eso cuando un servidor requiere una conversión de otro dominio remoto, comienza la búsqueda a través de uno o varios Servidores DNS contiguos hasta encontrar una respuesta positiva o negativa. Esto implica la existencia de un algoritmo con una política de enrutamiento de solicitudes y porlotanto yn esquema simple de distribución de carga, algo que también debe tomarse en cuenta si el S.O.D. maneja cierta complejidad en sus recursos.
El sistema de nombres es entonces una tabla de recursos y su punto de acceso hacia objetos. Los sistemas de nombres deben de almacenarse en un repositorio de datos proveyendo interfaces de acceso, que implican estructuras abstractas como los servicios de directorios, los cuales permiten compartir información más allá de la frontera de las redes locales. Los nombres pueden enfocarse a ser más compactos, más significativos (llave compuesta) y por lo tanto más simples de localizar y administrar, o pueden diseñarse para ser más entendibles a los humanos; sin importar lo anterior deben permitir localizar los objetos desde cualquier punto y/o servicio de la red sin importar su ubicación física o lógica.  

En términos simples, un nombre es equivalente a la noción de clases y herencia múltiple en Programación Orientada  a Objetos, lo cual garantiza consistencia, formalidad y completitud; La característica principal de unsistema de nombres es que no debe presentar ambigüedades, cada nombre se refiere a uno y sólo un recurso en el sistema. Existen tipos de nombres para tipos de recursos, como vimos en DNS, por lo que es importante que éstos guarden una jerarquía, que corresponde a la arquitectura de la red. Entonces un sistema de nombres en un S.O.D. deberá crear etiquetas para: 

ü  Identificadores de puertos y procesos.

ü  Nombres textuales de servicios.

ü  Identificadores de recursos.

ü  Nombres de archivos.

ü  Direcciones físicas y lógicas de redes.

ü  Objetos y librerías de clase.

ü  Especificaciones para acceder a un recurso que es solicitado por un un proceso.

ü  Rutas de archivos compartidos, variables de entorno global y funciones remotas.

ü  Conexiones y usuarios.


ESTRUCTURAS DE NOMBRES

La nominación es una correspondencia entre objetos de datos lógicos y físicos. Por ejemplo, los usuarios tratan con objetos de datos lógicos representados por nombre de archivos, mientras que el sistema manipula bloques de datos físicos almacenados en las pistas de los discos. Generalmente un usuario se refiere a un archivo utilizando un nombre , el cual se transforma en un identificador numérico de bajo nivel, que a su vez se corresponde con bloques en disco. Esta correspondencia multinivel ofrece a los usuarios la abstracción de un archivo, que oculta los detalles de cómo y donde se almacena el archivo en disco, pero implica el manejo de una estructura semántica que si bien no requiere de ser perfecta, debe ser consistente y formal para permitir la escalabilidad en el recurso.


Una noción importante es que el sistema de nombres debe tener una estructura, generalmente una jerarquía, que representa las capas estratificadas donde residen los recursos de la red. Puesto que tenemos que direccionar objetos diversos, desde programas, máquinas, sesiones, procedimientos remotos, procesos, servicios, los identificamos de manera jerárquica de acuerdo a las capas de software que tenemos que atravesar para llegar a ese recurso.
Hay por lo menos cuatro principios básicos que una convención de nombramiento debe satisfacer:

1. Generalidad - Una convención de nombramiento debe poder nombrar una variedad de entidades en diversas aplicaciones tanto como en diversos ambientes.
2. Múltiples definiciones de la misma entidad (alias) - porque una entidad puede ser conocida por diversos nombres en diversos ambientes, la convención de nombramiento debe permitir la característica de nombres múltiples y dejar el problema de la resolución a algunos mecanismos de la conversión de dirección.
3. Distribuible - Es probable que la convención de nombramiento se manifieste, en una cierta forma, como directorio, ayudar a la validación y a la conversión de direcciones conocidas. Los nombres de la base de datos se pueden fragmentar entre los anfitriones de la red, basados posiblemente en la organización geográfica ó en los requerimientos de los usuarios.
4. Amigable al usuario - El usuario debe estar en una posición para deducir el nombre de entradas del conocimiento que él posee. El convenio del nombramiento no debe permitir ningún alcance para la interpretación incorrecta de los nombres.

TIPOS DE NOMBRES

Hay tres enfoques principales para los esquemas de nominación, el enfoque más sencillo consiste en que los archivos se nombran con una combinación del nombre de su anfitrión y su nombre local, lo que garantiza un nombre único dentro de todo el sistema. El segundo enfoque popularizado por el sistema de archivos de red NFS (Network File System) de Sun Microsystems, ofrece una forma de unir directorios remotos a directorios locales, lo que da la apariencia a un árbol de directorios monolítico. El tercer enfoque utiliza la noción de que cualquier directorio se puede unir a cualquier árbol de direcciones locales con la jerarquía resultante que puede estar poco estructurada.

Hay que tener presente que la complejidad semántica de la estructura puede balancearse hacia sistemas de nombres menos compactos pero más largos. Al final hay que gastar ese recurso informático en espacio de almacenamiento o tiempo de procesamiento (un algoritmo). La elección de un enfoque u otro nos llevará igual al un esquema conceptual de nominación, por ejemplo usar nombres de animales para los servidores. Ya que se busca evitar en lo posible la ambigüedad, es deseable que ningún objeto tenga el mismo nombre que otro objeto, sin importar que sean idénticos, deben ser inconfundibles. Las primitivas de acceso a a los servicios no se compilan y por lo tanto queda a las capas de aplicación procesarlas (refinarlas o prepararlas) si esto es necesario, por ejemplo para evitar fallas por errores.


Los nombres de ciertos recursos pueden ser absolutos o relativos dependiendo de la importancia del domicilio de su ubicación, es una cuestión de rol, ya que un nmbre relativo cumple un rol definido en su contexto (root, anonymous, invitado); mientras que un nombre absoluto no requiere   necesariamente de ello. Otro mecanismo de optimización es que los nombres pueden tener alias, los cuales son otros nombres más compactos que se usan en contextos específicos para hacer referencia al mismo objeto de forma más económica lo que permite usar encabezados más pequeños en los mesajes relativos a los recursos.
Algunas consideraciones generales para el uso de nombres son las siguientes:
a) Los identificadores se utilizan para una variedad amplia de propósitos, tales como: referencia, localización,  programación, manejo de recurso, control de errores, sincronización, protección, y compartición de recursos.
b) Los identificadores (nombres; Nombres del usuario y de sistema, y puertos; direcciones; y las rutas) existen en diversas formas en todos los niveles de la arquitectura de un SD.
c)Los identificadores aparecen en diversas formas (convenientes para la gente o las computadoras). Algunos son únicos dentro de un contexto global para el sistema entero (Internet), otros son únicos solamente dentro de un contexto local (red sencilla).
d) Los nombre pueden referir el objeto directa o indirectamente : 

 por un nombre o una dirección explícita

 por la fuente

 por el identificador del grupo

 por la ruta de acceso


RESOLUCIÓN Y DISTRIBUCIÓN.

La resolución es el proceso de convertir un nombre hacia la ubicación real del recurso, como mencionamos antes, esto nos obliga crear una tabla  de asociaciones de nombres lógicos con los recursos físicos. Aunque es un trabajo simple, vale la pena considerarlo seriamente desde un punto de vista de la cardinalidad; la cual surge de la necesidad de comunicar a cualquier recurso con todos los demás. 


Aunque el mecanismo es bastante sencillo, los S.O.D. requieren que en todo momento el acceso a un recurso se controle y/o documente; por lo que en toda transacción se registra el objeto y/o el usuario que accede al recurso transparente. Esto funciona de manera natural en los servidores HTTP o en sistemas UINIX, pero en un ambiente distribuido no existe de manera explicita un control de transacciones ya que éstas están dispersas. 


La distribución es el procedimiento por el cual un nombre puede difundirse a través de todo el sistema y ser reconocido por cualquier entidad en cualquier momento. El el Sistema DNS hay una formación de servidores que corresponden en jerarquía a los prefijos (.net, .org, .com, etc.) y que tienen como maestros a los servidores del último prefijo ( el que determina el país), son estos servidores maestros los encargados de la distribución de nombres, pues cuando un recurso no existe en un dominio menor, ellos se encargan de buscarlo. La distribución puede ser es un proceso dinámico en aquellas aplicaciones cuyo número de recursos sea tan grande que requiera parametrizarlos, o puede ser necesaria si la aplicación distribuida contiene un catálogo de recursos aplicaciones sujetos a disponibilidad.

AGENTES Y SERVIDORES DE NOMBRES.

Las entidades que contienen los repositorios donde se almacenan los nombres en los modelos de 3-capas en adelante, atienden a un solo cliente que a su vez es quien entrega los nombres resueltos a los destinatarios. Existen entonces 2 roles para el servicio de nombres, los servidores que tienen un estructura completa de acceso publico y los agentes que son los módulos de software encargados de solicitar la solución de los nombres.

MAPEO DE RUTAS 

Como hemos visto, en algunos recursos como los nombres, las direcciones de memoria y dispositivos de e/s, existe el concepto del recurso físico, cuando es direccionado directamente; y del recurso lógico cuando es direccionado mediante un mecanismo de abstracción. El mapeo de rutas es un mecanismo imprescindible para el acceso a recursos en directorios compartidos, es una abstracción que permite compactar los encabezados y establecer la sintaxis para adaptarlos a variables de entorno locales de las entidades.
En un sistema distribuido, el usar un nombre para los propósitos de la comunicación no es bastante, ya que los procesos se comunican desde diferentes computadoras. El conocimiento de su localización actual es necesario, lo que conduce a los parámetros mínimos de referencia: un nombre, una dirección, y una ruta. 

Este conjunto contiene un objeto (por ejemplo, un recurso o un servidor) específico, al cual busca el proceso solicitante,  mediante una dirección especifica y  la ruta dentro de esa dirección específica. Cada uno de estos identificadores representa un atascamiento más apretado de la información; Los nombres son mapeados en direcciones, este mapeo es necesario para la aplicación en ejecución, puesto que la sintaxis y la semántica de nombres dependen enteramente de qué tipos de entidades se están nombrando y también qué uso se está haciendo de ellas. A su vez las direcciones son mapeadas en los ruteadores y las rutas en las tableas de enrutamiento.

MAPEO DE DIRECCIONES.

Para que un cliente pueda enviar un mensaje a un servidor, debe conocer la dirección de éste. El Kernel del emisor tiene que construir un mensaje con el número de la solicitud, la dirección de enlace de los datos y colocar el mensaje en la LAN. La tarjeta de interfaz de servidor vera el mensaje y reconocerá la solicitud como propia y la aceptara.
Si solo existe un proceso en ejecución en la máquina de destino, su núcleo sabrá que hacer con el mensaje recibido (dárselo al único proceso en ejecución). Sin embargo si existen existen varios procesos en ejecución en la máquina de destino, no hay forma de identificar cual de ellos obtiene el mensaj. Como el núcleo no tiene forma de decidirlo, se necesita un esquema de direccionamiento en el que solo se puede ejecutar un proceso en cada máquina. esta solución simple y económica a veces es una seria restricción.
Otro tipo de sistema de direccionamiento consiste en enviar mensajes a los procesos en vez de a las máquinas. Aunque este método elimina toda ambigüedad a cerca de quien es el verdadero receptor, presenta el problema de cómo identificar los procesos. Un esquema común consiste en utilizar pares nombre-proceso, similar al concepto del dominio. Con este esquema el núcleo lee el número de máquina para identificar a quién solicitar la recepción, y el número del proceso en esta máquina para determinar a cual proceso va dirigido el mensaje. 


MODELO DE TERRY

·         Un modelo de denominación creado por Douglas Brian Terry, que propone tener: 

ü  Facilidad centralizada de nombramiento.

ü  Facilidad replegada de nombramiento.

ü  Facilidad descentralizada de nombramiento.

ü  Facilidad distribuida de nombramiento.

ü  Facilidad jerárquica de nombramiento.

Entre otros trabajos, Terry participó en la creación de BIND (Berkeley Internet Name Domain) que es el software más difundido en Inernet y sistemas UNix para la implementación de sistemas DNS. El modelo plantea la uniformidad en la convención de usos de nombres en la idea de un Name Space (espacio de nombres) administrado por un Name Server conla figura de un servidor maestro llamado autoritativo.

Para entornos con un número considerable de subredes y anfitriones, la comunicación e identificación de nombres de recursos constituye un cuello de botella, de tal suerte que el desempeño de un servidor de nombres será proporcional a la cantidad de servidores de nombres que contienen repositorios, y por ello es necesario establecer métricas que minimicen el costo promedio de localización de recursos.

Una vez adoptada una convención de nombres, los siguientes factores influirán en la eficiencia:

1.- Los patrones de referencia del los clientes hacia la información del servidor.

2.- La elección de servidores  autoritativos (maestros) que sólo contienen repositorios de nombre pero no atienden a usuarios.

3.- La cantidad de espejeo de la información de nombres de servidores.

4.- El número de servidores de nombres, en línea.

5.- La potencia de cada servidor de nombres en individual.

El modelo se basa en la implementación  de un conjunto de servidores de nombres NS1-NS2-NS3....  y en la suposición de que una fracción de ellos estar disponible en un momento dado. A su vez un número de F servidores se encuentran fuera de línea o desconectados,  y se considera que los tiempos y periodos de interrupción del servicio están distribuidos uniformemente, es decir que todos los servidores tienen las mismas probabilidades y frecuencia de desconexión.

Los clientes de estos servidores pueden ser usuarios, programas, subredes, anfitriones, procesos etc. se numeran 1,2,3,4,.....U.   Si un cliente requiere un recurso, selo solicita al servidor más próximo, el cual devolverá la respuesta en caso de tenerlo, y si no enviará el nombre de otro servidor contiguo que pudiera responder. Si aún no hay respuesta se hacen más iteraciones hasta obtener el servidor con la resolución del recurso. De esta forma los clientes sólo consultan su servidor de nombre correspondiente, obteniendo con ello la transparencia de localización.


el repositorio de nombres es una base de datos fragmentada en los servidores, donde cada servidor es responsable de su fragmento, y tiene conexión a una serie de su fragmentos relativos o adyacentes al suyo. 

El modelo calcula un costo esperado para una consulta a un conjunto de nombres, basado en el costo unitario de consulta de su servidor particular y el costo de comunicarse con él. Se obtiene un valor esperado en función de la sumatoria sobre el número de particiones dela B.D.;  de la fracción de clientes que acceden a la partición de nombres, multiplicada por el costo estándar de hacer una consulta en el entorno.


2.4. Comunicación de procesos a través del paso de mensajes en sistemas distribuidos.


Los procesos de un S.O. pueden comunicarse entre sí al compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de Comunicación Interprocesos

Para comunicar procesos en un ambiente distribuido, además de el uso de un sistema de nombres de recursos, se necesita un esquema de comunicación lógico que dé sentido a estas transacciones. El sistema operativo provee mínimamente dos primitivas, enviar y recibir, normalmente llamadas send y receive, pero tendrá que implementar un enlace de comunicación entre los procesos. Este enlace puede ser unidireccional o multidireccional según permita la comunicación en solo uno o en varios sentidos, y dependiendo de la forma en que se dispara la comunicación.

Comunicación Síncrona.

Quien envía permanece bloqueado esperando a que llegue una respuesta del receptor antes de realizar cualquier otro ejercicio.

Comunicación Asíncrona.

Quien envía continúa con su ejecución inmediatamente después de enviar el mensaje al receptor.
Comunicación Persistente.

El receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicación, el mensaje se almacena tanto tiempo como sea necesario para poder ser entregado.

Comunicación Transitoria.

El mensaje se descarta si el receptor no está operativo al tiempo que se realiza la comunicación. Por lo tanto no será entregado.


Comunicación Directa.
Las primitivas enviar y recibir  usan directamente el nombre del proceso con el que se comunican. Por ejemplo:
enviar (mensaje, A) envía un mensaje al proceso A. Obsérvese que la primitiva sólo debe especificar cual va a ser el proceso Destino, ya que el proceso fuente viene direccionado en la comunicación.
Las operaciones básicas Send y Receive se definen de la siguiente manera: Send (P, mensaje); envía unmensaje al proceso P. Receive (Q, mensaje); espera la recepción de un mensaje por parte del proceso Q.


Comunicación Indirecta

Es aquella donde la comunicación está basada en un gateway, enrutador, puente o switch, ya que el emisor y el receptor están a distancia.


Comunicación Simétrica. 
Todos los procesos pueden enviar o recibir. También establece una llamada bidireccional para el caso de dos procesos.


Comunicación Asimétrica.
Un proceso puede enviar, los demás procesos solo reciben. También llamada unidireccional o no interactiva. Es el esquema típico de algunos servidores de Internet.
Comunicación con uso de buffers automático.

El transmisor se bloquea hasta que el receptor recibe el mensaje completo, pero éste tiene capacidad para recibirlo aunque no esté listo para procesarlo.
La comunicación y sincronización en S.O.D. es más compleja y se establece en canales lentos y menos confiables que los buses internos de una computadora, lo que incorpora problemas como la pérdida de mensajes, la llegada de datagramas desordenados, la heterogeneidad de los nodos  y su diferente rendimiento, etc.
La forma natural de comunicar y sincronizar procesos en los sistemas distribuidos es mediante paso de mensajes; los procesos intercambian mensajes mediante las primitivas que además establecen una extensión de los semáforos en la que se transmite más información en un contexto sincronizado.

 Una de las ventajas de emplear mecanismos de comunicación y sincronización basados en paso de mensaje  es la portabilidad de las soluciones programadas para diferentes arquitecturas de computadoras, incluidos los sistemas con memoria compartida, otra ventaja es que no existe el problema del acceso en exclusión mutua a datos compartidos, ya que no hay contienda por el acceso al recurso, sino un fila en espera.
Un sistema operativo o lenguaje de programación podría ofrecer herramientas, algunas basadas en memoria compartida y otras basadas en la comunicación mediante paso de mensajes, por lo que podríamos llegar a tener un mismo proceso o hilo que empleara las dos posibilidades. Los siguientes son aspectos relevantes en el diseño de los sistemas de paso de mensajes:


1. Identificación en el proceso de comunicación.
2. Sincronización.
3. Características del canal (capacidad, flujo de datos, etc).


No hay comentarios:

Publicar un comentario