UNIDAD II Comunicacion en Los Sistemas Distribuidos

INSTITUTO TECNOLÓGICO DE CHETUMAL Ingeniería en Tecnologías de la Información y Comunicaciones Sistemas Operativos II

Views 50 Downloads 0 File size 868KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO TECNOLÓGICO DE CHETUMAL Ingeniería en Tecnologías de la Información y Comunicaciones

Sistemas Operativos II

Docente: Calos Azueta.

Alumno: Albores Chi Juan Leonel, Wilmer Morales Gómez, Jorge Francisco Miguel. Unidad 2: Comunicación en los sistemas operativos distribuidos. Semestre: 7°

Fecha: Viernes 11 de Septiembre de 2015

Contenido Contenido ........................................................................................................................................ 1 1 Comunicación: comunicación con cliente–servidor, comunicación con llamada a procedimiento remoto, comunicación en grupo, tolerancia a fallos. .............................. 3 1.2 Comunicación Cliente-Servidor....................................................................................... 3 1.3 Comunicación por RPC (Remote Call Procedure) ...................................................... 4 1.4 Comunicación entre grupos de procesos. ................................................................... 5 1.5 Tolerancia a Fallos .............................................................................................................. 7 2 Sincronización: relojes físicos, relojes lógicos, usos de la sincronización. ............ 12 1.1 Relojes Físicos ................................................................................................................... 13 1.2 Relojes Lógicos ................................................................................................................. 13 1.3 Sincronización .................................................................................................................... 14 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. ............................................................................................................... 16 1.1 Características ................................................................................................................... 17 1.2 Estructuras de nombres .................................................................................................. 17 1.3 Tipos de nombre ................................................................................................................ 18 1.4 Agentes y Servidores de nombres. .............................................................................. 20 1.5 Mapeo de rutas ................................................................................................................... 20 1.6 Mapeo de direcciones ...................................................................................................... 20 1.7 Modelo Terry ....................................................................................................................... 21 4 Comunicación de procesos a través del paso de mensajes en sistemas distribuidos. ................................................................................................................................... 22 Comunicación Simétrica. ....................................................................................................... 23 Comunicación Asimétrica. ..................................................................................................... 23 Conclusión ..................................................................................................................................... 25 Bibliografía ..................................................................................................................................... 26

Modelos de comunicación. Una de las tareas más complejas en S.O.D. es la implementación y uso de memoria compartida, ya que esto nos obliga a atravesar las capas de software construyendo un puente de comunicación con una estructura de memoria no monolítica sobre la arquitectura de red. Han sido estudiadas desde hace tiempo y están establecidas como paradigma tecnológico; para poder transferirlas se requiere un mecanismo de paso de mensajes, (mediante colas FIFO y buffers), el paso de mensajes parece el mecanismo de comunicación natural en sistemas débilmente acoplados, pero al igual que cualquier tecnología tiene ventajas y desventajas, en este caso respecto a las alternativas con RPC's (llamada a procedimientos remotos) independientemente de si usa o no variables compartidas; Entonces el costo de recursos para mantener variables compartidas en un ambiente multi-equipos es alto y equivalente al costo de diseñar y operar los algoritmos de paso de mensajes o administrar RPC's, y si se desea restar complejidad a cualquiera de ambos métodos habrá de ser mediante el sacrificio de la eficiencia por la simplicidad.

1 Comunicación: comunicación con cliente–servidor, comunicación con llamada a procedimiento remoto, comunicación en grupo, tolerancia a fallos. 1.2 Comunicación Cliente-Servidor. Es una arquitectura de paso de mensajes, que puede operar variables compartidas mediante un archivo público de acceso remoto (tipo CGI-BIN o MIME); es una solución muy socorrida pues su propiedad de distribución de trabajo aprovecha la versatilidad de que un servidor puede también ser cliente de otros servidores. El acceso a los terceros recursos se hace mediante el intermedio del servidor, quien se convierte en cliente de otros. Por ejemplo un servidor web puede ser cliente de los servicios DNS, MySQL, POP3, SMTP, pero ser anfitrión de Java, PHP, ASP, HTML, FTP; o por ejemplo un buscador web es servidor de consultas para usuarios pero es cliente de toda la web en dónde hace sus búsquedas. El número de encadenamiento entre nodos cliente-servidor con otros iguales debería ser muy grande pues esto exigiría tareas extra de administración de tráfico, que están contempladas inherentemente en el propio esquema de paso de mensajes. El número de encadenamiento de clientes-servidores se define como Modelo de N capas. En un sistema distribuido, las necesidades de comunicación conducen a utilizar esquemas específicos de gestión de los recursos para los que el paso de mensajes resulta adecuado. Un recurso estará a cargo de un proceso gestor, con quien deberá comunicarse cualquier proceso que pretenda acceder a él, siguiendo un esquema cliente-servidor; lo que permite expresar el acceso a servicios mediante un protocolo de petición-respuesta. El modelo cliente-servidor se puede implementar mediante un mecanismo de paso de mensajes específico, como por ejemplo el mecanismo de transporte TCP para HTTP y HTTPS, la Interfaz CGI/BIN o la interfaz de sockets de UNIX para TCP/IP o UDP/IP.

1.3 Comunicación por RPC (Remote Call Procedure) Para trabajar con procesos distribuidos que necesitan compartir recursos con otros procesos también se han diseñado interfaces que permiten manejar un espacio de direcciones común sobre un sistema de memoria física distribuida: sistemas de memoria compartida distribuida (DSM). La idea es ofrecer a las aplicaciones diseñadas según un modelo de memoria compartida, un soporte para su ejecución en un entorno distribuido. Con el objetivo de disminuir la diferencia semántica entre programas que usan servicios locales (mediante llamadas al sistema) y programas que usan servicios remotos, se han desarrollado mecanismos que encapsulan los detalles de direccionamiento y sincronización del envío-recepción de la petición y/o respuesta. Así, en los lenguajes procedurales, las llamadas a procedimientos remotos RPC's (Remote Precedure Call), proporcionan una sintaxis de llamada a función como interfaz para el acceso a servicios. Ejemplo de RPC: En los lenguajes orientados a objetos, cada recurso es un objeto identificado unívocamente en el sistema distribuido, al que se accede invocando los métodos definidos para esa clase de objeto. El acceso a os objetos se realiza mediante una interfaz de invocación de métodos remotos (por ejemplo, RMI de Java). La Tabla siguiente resume los mecanismos que implementan los modelos de comunicación sobre arquitecturas de memoria independiente y memoria compartida.

1.4 Comunicación entre grupos de procesos. En sistemas distribuidos es de gran interés el soporte de primitivas de paso de mensajes de amplia cardinalidad es decir de 1:N, ya que existe la necesidad de intercomunicar a los procesos con otros, ya sea replicados o similares, ya sean procesos anfitriones o clientes de otros. El concepto de grupos de procesos que se comunican entre sí crea la necesidad de un gestor, cuyas funciones son similares a aquellas de las tareas de Control de Acceso a Usuarios. Una de las formas de comunicación con cardinalidad múltiple es el de difusión; que permite enviar un mensaje a todas las direcciones accesibles por el emisor, y se usa en redes locales. Un caso particular de defunción, el multicast, permite seleccionar un subconjunto de direcciones a las que enviar el mensaje. El soporte para multicast es muy útil en sistemas replicados, como se verá más adelante. Como ejemplo, el protocolo IP reserva un conjunto de direcciones para multicast. Ejemplo de Comunicación entre Grupos: El estándar de POSIX significa Interfaz de Sistema Portable tipo UNIX, (Portable Operating System Interface UniX type) y establece una familia de estándares de llamadas al sistema operativo definidos por el IEEE y especificados formalmente en el IEEE 1003. Persiguen generalizar las interfaces de los sistemas operativos para que una misma aplicación pueda ejecutarse en distintas plataformas. Estos estándares surgieron de un proyecto de normalización de las API y describen un conjunto de interfaces de aplicación adaptables a una gran variedad de implementaciones de sistemas operativos. Los grupos de procesos que se diseñan bajo una especificación POSIX trabajan en función de señales. Una señal es una instrucción de alto nivel que se dirige a un

grupo de procesos, la razón de esto es que a diferencia de un S.O. centralizado, en el que se ha de multiplexar (Intercalar) la ejecución de varios procesos, aquí la distribución de un proceso obedece a una necesidad de terminarlo en menor tiempo dividiéndolo en tareas más pequeñas, todas idénticas repartidas por la red; de tal manera que es fácil entender las funciones del administrador de grupos de procesos pues es más simple replicar un proceso idéntico muchas veces, que manejar un conjunto diverso de procesos. Los grupos de procesos están a su vez agrupados en sesiones, que residen en una capa de software que se encarga de administrarlos de la misma forma en que se administran las sesiones de usuarios. Los grupos de procesos no pueden migrar de una sesión a otra, y un proceso sólo puede crear nuevos grupos de procesos que pertenezcan a la misma sesión a la que pertenece. Un proceso únicamente puede unirse a un grupo de procesos que esté en su misma sesión. Nuevas imágenes de proceso creadas por una llamada a una función de la familia exec heredarán el grupo de proceso y la sesión de la imagen original. Un segundo uso no relacionado del término grupo de procesos aparece en el contexto de sincronía virtual, un modelo de ejecución distribuido en el que grupos de procesos corriendo en diferentes máquinas se asocian para compartir eventos, replicar datos o coordinar acciones, no tanto basado en un reloj de tiempo real sino en un esquema de eventos disparadores. El desarrollo de Internet está forzando la evolución de los protocolos de nivel de red. Así, el protocolo IPv4, cuyas direcciones de 32 bits suponen un problema de escalabilidad, está dejando paso al IPv6, que especifica direcciones de 128 bits. Internet y los nuevos paradigmas de cómputo están imponiendo sus estilos de comunicación. De este modo, se aprecia una tendencia general a la utilización de HTTP como protocolo de acceso a servicios, como evolución del esquema RPC clásico. Por otra parte, la distribución de servicios ha provocado una evolución del esquema cliente-servidor clásico hacia estructuras peer-to-peer, donde los roles de cliente y servidor son intercambiables. En tales sistemas, habitualmente dinámicos, los nodos indistintamente ofrecen y solicitan servicios, y eventualmente cooperan en la búsqueda de servicios y en el encaminamiento de peticiones.

Podemos resumir la Disposiciones Generales de la comunicación: Utilizando el servicio básico de acceso al medio, el cliente debe localizar e iniciar la comunicación con el servidor.

No se utiliza la metodología de compartición de archivos, ya que todos los accesos a la información se llevan a cabo a través de servicios de datos (paquetes o datagramas). Los programas de manejo y control de información solo se envían y reciben los resultados de las operaciones. Debido a la flexibilidad de establecer sesiones con múltiples servidores y manejo de información en varias bases de datos (en sitios remotos es requerido el uso de estilos transaccionales y cooperativos). Tolerancia a fallos. La tolerancia a fallas es considerada la principal característica que debe de tener un sistema distribuido para alcanzar el principio de transparencia. Para lograr la tolerancia a fallos se necesita de una buena comunicación entre procesos distribuidos y sobre todo de una correcta coordinación entre ellos. Un Sistema Distribuido en base a la coordinación de sus procesos puede ser: Asíncrono: no hay coordinación en el tiempo. Síncrono: se suponen límites máximos para el retraso de mensajes. El primer factor a tomar en cuenta es que el canal de comunicación esté libre de errores (canal confiable). Para garantizar que el canal sea confiable se debe tener QoS (Calidad en el Servicio) que implica realizar lo siguiente: - Retransmisión de mensajes. - Establecer redundancia de canales. - Poner límite al tiempo de entrega de un paquete en lapso especificado. En general, se considera que los canales de comunicación son fiables y que cuando falla la comunicación es debido a la caída del proceso, sin embargo algunos fallos en el funcionamiento de un Sistema Distribuido pueden originarse por: - Especificaciones impropias o con errores. - Diseño deficiente del software o el hardware. - Deterioros o averías en hardware.

1.5 Tolerancia a Fallos Existen dos formas de aumentar la fiabilidad de un sistema. 1. Prevención de fallos: Se trata de evitar que se implementen sistemas que pueden introducir fallos.

2. Tolerancia a fallos: Se trata de conseguir que el sistema continué funcionando correctamente aunque se presenten algunos fallos. Un sistema que sea tolerante a fallos debería tener disponibilidad, confiabilidad, seguridad y con un programa de Mantenimiento. Disponibilidad: La cualidad de un sistema de estar preparado en todo momento para operar. Confiabilidad: La garantía de que el Sistema puede llevar a cabo su trabajo con muy bajas probabilidades de una caída repentina. Seguridad: La característica de que el Sistema puede recuperarse o repararse a sí mismo en caso de presentarse algún tipo de fallo. Mantenimiento: Se refiere a que el sistema puede ser remplazado o reparado rápidamente mediante los lineamientos un programa preventivo y un plan de contingencia. En el aspecto preventivo deben tomarse en cuenta que se pueden presentar Fallos Transitorios (se presentan una vez y al volver a intentar la operación ya no ocurren), Intermitentes (se presentan de forma cíclica o al ejecutar ciertas operaciones) y Permanentes (no se resuelven hasta remplazar lo dañado). La orientación del mantenimiento debe definir cuál de estos escenarios es el que se presenta; de hecho el primero es el más difícil de atender pues el primer paso para reparar una falla es aislarla e identificarla. Una buena estrategia comienza con la clasificación e identificación del universo de fallas, ya que cada una de ellas debe tener un plan emergente en consecuencia, la siguiente figura resume un esquema de este tipo:

El aspecto fundamental es identificar las causas de la falla, que es la labor más complicada, sobre todo en el entendido de que no se debe interrumpir el servicio. Nuevamente, los fallos que no presentan un patrón repetitivo son los más difíciles de identificar y por lo tanto de resolver. La experiencia y el hecho de conocer a detalle el sistema funcionando por largo tiempo pueden ayudar en este respecto. Una de las acciones necesarias se conoce como enmascaramiento de errores por redundancia, que consiste en ocultarlos a los procesos no locales por medio de: a) Redundancia de Tiempo. b) Redundancia de Información. c) Redundancia física. Todos estos significan duplicar el recurso correspondiente, de tal manera que siempre haya un remplazo disponible, un mecanismo de corrección de errores en datos, y un esquema de reintentos de operaciones; la estrategia resultante se establece bajo la premisa de que es inevitable que aparezcan fallos, sobre todo en comunicaciones. De tal suerte los mecanismos de checksum, paridad etc. son muy socorridos para operar el ambiente distribuido. Otro punto clave es el uso de Grupos de Procesos, que entre otras cosas facilita la comunicación con múltiples entidades remotas, así es más fácil el direccionamiento por grupos que por entidades individuales; especialmente en el ámbito de fallos en procesos, es importante comunicarse con la entidad donde ocurre el fallo, pero

también el notificar a las otras entidades que comparten el recurso que falla. Los grupos pueden dar tratamiento a los errores de forma cooperativa o mediante una jerarquía que delimita quienes participan en ello, las soluciones generalmente tienen efectos colaterales, por ejemplo las jerarquías de procesos pueden generar procesos huérfanos, o las cooperativas pueden ser ineficientes si la dispersión aumenta. Fallos en sistemas cliente-servidor. En este esquema la capa de transporte se encarga de los fallos en comunicaciones, sin embargo si se usan datagramas en vez de paquetes, es la aplicación la que tendrá que encargarse de ordenar dichos datagramas fuera de secuencia, solicitar su retransmisión y/o restablecer los enlaces. La capa de transporte por sí misma otorga el concepto de Calidad en el Servicio, (QoS) pero no es una solución definitiva para todos los casos. Fallos en sistemas con RPC. Pueden presentarse varias fallas, que el cliente no encuentre al servidor, que la petición del cliente se pierda dentro del servidor o en la red, que el servidor se caiga al procesar un mensaje, que la respuesta del servidor a una petición se pierda o que el cliente haga crash al recibir un mensaje. La responsabilidad principal en este tema es la de restablecer y detener procesos para rebootear las maquinas, lo cual puede implicar que no se restablezcan o no se detengan ciertos procesos concurrentes. Nuevamente, lo importante es el plan de acción del sistema y la detección del origen del problema, ya que de ahí surge el mecanismo de restablecimiento del fallo. Errores Parciales vs. Errores graves. Una característica de los S.O. distribuidos que los difiere de los sistemas centralizados es la noción de errores parciales. Un error parcial es cuando algún componente del sistema falla, lo cual puede afectar algunos otros componentes dentro de la red pero otros pueden seguir continuando sin ningún problema. EL secreto de la buena operación es recuperar el fallo sin interrupción del servicio o afectación del rendimiento global, hecho que depende a su vez del tipo de fallo, consideremos los siguientes: 

Falla de procesos: La ejecución arroja un estado incorrecto, los procesos provocan que el sistema se desvíe de las especificaciones y el proceso con fallo pueda suspenderse momentáneamente.

 Falla de sistema: Ocurre por el algún desorden en el software y problemas del HW (como errores de CPU, falla en la memoria principal, falla de energía,



 

etc.) En caso de una falla de este tipo el sistema es detenido y reiniciado a un estado correcto, no obstante que es un error generalizado no es tan grave, pero vale la pena documentarlo. Falla de amnesia: Ocurre cuando se reinicia el sistema a un estado predefinido, no depende del estado del sistema antes de la falla sino de una mala calendarización. Tampoco es grave. Falla de Pausa: Ocurre cuando se reinicia el sistema al mismo estado en que se encontraba antes de la falla. Tampoco es grave. Falla en medio de almacenamiento secundarios: Se dice que ocurre una falla de este tipo cuando los datos almacenados no pueden ser accedidos (cualquiera de sus partes o en su totalidad) entonces buscamos el restablecimiento por redundancia. Nótese que no obstante la naturaleza crítica de los fallos mencionados, su efecto en el sistema en general es menos severo por virtud de la distribución.

RECUPERACIÓN DE ERRORES Una forma prospectiva de trabajar con los errores es considerar que un error es un estado del sistema que es distinto a los valores esperados, de tal suerte que la recuperación de una falla se aborda como un proceso de recuperación de estados hasta un estado libre de error, puede ser previo o posterior. Hay dos enfoques para hacer lo anterior: 1- Si la naturaleza del error y los daños causados pueden ser completamente calculados, entonces es posible remover esos errores del estado del proceso (o sistema) y habilitar el movimiento hacia adelante del proceso a un estado libre de error. Esta técnica es conocida como recuperación hacia adelante. 2- Si no es posible prever la naturaleza de las fallas y remover todos los errores en el estado del proceso (o sistema), entonces el estado del proceso puede ser restaurado a un estado previo libre de error. Esta técnica es conocida como recuperación hacia atrás. La recuperación hacia adelante significa cercenar el fallo, y soslayarlo, de tal suerte que se asume la pérdida del tiempo de procesamiento y los recursos involucrados. En cambio, en la recuperación hacia atrás, el proceso con revertido a un estado previo con la esperanza de que ese estado previo esté libre de errores. Hay dos formas de implementar una recuperación de error hacia atrás: el enfoque basado en la operación y el enfoque basado en estado. Supongamos que tenemos un sistema modelo, que consiste de una máquina simple. Asumimos que la máquina está conectada a un sistema de almacenamiento secundario y a un sistema de

almacenamiento estable que no pierde datos en caso de falla. El almacenamiento estable es usado para almacenar un registro de las transacciones y puntos de recuperación. En comparación al almacenamiento secundario, el almacenamiento estable es mucho más seguro, pero el almacenamiento secundario trabaja continuamente. a) Enfoque basado en la operación. Aquí, todas las modificaciones que se hacen al estado de un proceso son registradas con suficiente detalle; para revertir el proceso a un estado previo, se procesan las transacciones de este registro pero marcha atrás. b) Enfoque basado en estado. El estado completo de un proceso es guardado en una instancia llamada punto de restauración o verificación y su recuperación involucra reiniciar la ejecución del proceso en alguno de esos puntos. Establecer esta instancia se conoce como tomar un punto de verificación. El punto de restauración es entonces también un punto de revisión. Al proceso de restauración de un proceso a un estado anterior se le refiere como rolar al proceso hacia atrás y al proceso de reiniciar la ejecución en un estado se le conoce como transición forzada. Ambos métodos significan el consumo de tiempo de CPU y retardan la terminación del proceso, mas es preferible retroceder el proceso que cancelarlo. Por ello se acostumbra establecer muchos puntos de revisión.

2 Sincronización: relojes físicos, relojes lógicos, usos de la sincronización. Sincronización. 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.

Sincronización es la forma de forzar un orden parcial o total en cualquier conjunto de evento. Se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos tienen las siguientes propiedades: Inaceptable que se concentre en un nodo, a toda la información y procesamiento.

1.1 Relojes Físicos Los relojes físicos son relojes que: Deben ser iguales (estar sincronizados).No deben desviarse del tiempo real más allá de cierta magnitud. En ciertos sistemas es importante la hora real del reloj:  

Se precisan relojes físicos externos (más de uno). Se deben sincronizar: Con los relojes del mundo real.

1.2 Relojes Lógicos El software del reloj lógico

El software para el reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque. Las principales funciones del software manejador del reloj son:  

Mantener la hora del día o tiempo real Evitar que los procesos se ejecuten durante más tiempo del permitido.

 

Mantener un registro del uso del CPU. Controlar llamadas al sistema tipo "alarm" por parte de los procesos del usuario. Proporcionar cronómetros guardianes de partes del propio sistema Realizar resúmenes, monitoreo y recolección de estadísticas.

 

1.3 Sincronización La sincronización es la coordinación de procesos que se ejecutan simultáneamente para completar una tarea, con el fin de obtener un orden de ejecución correcto y evitar así estados inesperados que interrumpan la Comunicación en los sistemas operativos distribuidos. Memoria Caché

En los sistemas de archivos convencionales, el fundamento para la memoria caché es la reducción de la E/S de disco (lo que aumenta el rendimiento), en un SAD (Sistema de Archivos Distribuido) el objetivo es reducir el tráfico en la red. La copia de memoria caché. Conservar allí los bloques de disco de acceso más reciente, para así manejar localmente los accesos repetidos a la misma información y no aumentar el tráfico de la red. La caché es un área de memoria utilizada para agilizar los procesos de lectura-escritura. Exclusión mutua La condición de exclusión mutua se aplica a los os que no pueden ser compartidos. Por ejemplo, varios procesos no pueden compartir simultáneamente una impresora. Los archivos de sólo lectura son un buen ejemplo de recurso que puede compartirse. Si varios procesos intentan abrir un archivo de sólo lectura al mismo tiempo, puede concedérseles acceso al archivo de forma simultánea. Un proceso no necesita esperar nunca para acceder a un recurso compartible Algoritmos de Elección Son los algoritmos para la elección de un proceso coordinador, iniciador, secuenciador. El objetivo de un algoritmo de elección es garantizar que iniciada una elección ésta concluya con el acuerdo de todos los procesos con respecto a la identidad del nuevo coordinador. Transacción atómica, transacción o acción atómica. La principal propiedad de la transacción atómica es el “todo o nada”: O se hace todo lo que se tenía que hacer como una unidad o no se hace nada. Un esquema para garantizar la adecuada sincronización de la información en sistemas centralizados como distribuidos es el uso de transacciones. Las transacciones manejan 4 propiedades básicas: atómicas, consistentes, aisladas y durables (ACID por sus siglas en inglés). Las primitivas de las transacciones son:     

BEGIN_TRANSACTION (inicio de transacción) END_TRANSACTION (fin de transacción) ABORT_TRANSACTION (deshacer operación) READ (leer datos de un archivo u objeto) WRITE (escribir datos a un archivo u objeto)

Interbloqueo

Una situación de interbloqueo tiene lugar cuando ninguno de los procesos que compiten. Por los recursos del sistema o interactúan entre sí puede avanzar por carecer de algún recurso o esperar a que se produzca algún tipo de evento. El interbloqueo se define como el conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión de concurrente de procesos, para el caso general no existe una solución eficiente.

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. Nominación: En los sistemas distribuidos los nombres hacen referencia a cualquier entidad, ya sea un archivo, un periférico, un proceso, etc. que se pueden encontrar en máquinas remotas.

Los servidores de nombres ayudan a localizar fácilmente y hacer transparente el acceso a los recursos (transparencia de localización). 1.1 Características Una de las tareas más relevantes en la operación de Sistema Operativo Distribuido. 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. 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.

1.2 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 dónde 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. Hay por lo menos cuatro principios básicos que una convención de nombramiento debe satisfacer: Generalidad: Una convención de nombramiento debe poder nombrar una variedad de entidades en diversas aplicaciones tanto como en diversos ambientes. 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. 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. 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.

1.3 Tipos de nombre Hay tres enfoques principales para los esquemas de nominación. El primero 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 a 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 nombre 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 mensajes relativos a los recursos. Algunas consideraciones generales para el uso de nombres son las siguientes: 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. 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. 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). Los nombres 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 UNIX, pero

en un ambiente distribuido no existe de manera explícita un control de transacciones ya que éstas están dispersas. 1.4 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 público y los agentes que son los módulos de software encargados de solicitar la solución de los nombres. 1.5 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 específica 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 enrutadores y las rutas en las tableas de enrutamiento.

1.6 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á qué 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 cuál de ellos obtiene el mensaje. 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.

1.7 Modelo 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 Internet 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 NameSpace (espacio de nombres) administrado por un NameServer con la 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:     

Los patrones de referencia de los clientes hacia la información del servidor. La elección de servidores autoritativos (maestros) que sólo contienen repositorios de nombre pero no atienden a usuarios. La cantidad de espejeo de la información de nombres de servidores. El número de servidores de nombres, en línea. 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.

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 del 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: Los primitivos 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 cuál 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 pasó 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).

Conclusión En este presente trabajo realizamos una investigación acerca de los diferentes tipos de comunicación que se pueden realizar con los Sistemas Distribuidos, a partir de este punto ya tenemos una amplio conocimiento de las formas de operar de cada uno de los métodos antes mencionados para poder elegir cual podríamos aplicar en un momento dado que los requieras con el fin de no tomar decisiones erróneas. Pero sobre todo temas antes vistos nos dan una gran claridad de cómo es que funcionan las comunicaciones en los sistemas que normalmente utilizamos sin darnos cuenta que realmente estamos haciendo un uso de ellos en la vida diaria.

Bibliografía Romero, Fernando, Tinetti, Fernando Gustavo (2007). Sincronización de relojes en ambientes distribuidos. Recuperado de http://sedici.unlp.edu.ar/handle/10915/20474 Patricia López Martínez, Julio Medina y José M. Drake. Recuperado de http://www.ctr.unican.es/publications/plm-jlm-jmd-2004.pdf mc. j. adrian herrero perezrul. Recuperado de https://sites.google.com/site/mrtripus/home/sistemas-operativos-2/2-3-nominacioncaracteristicas-y-estructuras-tipos-de-nombres-resolucion-y-distribucionservidores-y-agentes-de-nombres-mapeo-de-direcciones-mapeo-de-rutas-modelode-terry