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.
- 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