martes, 12 de julio de 2011

UNIDAD 2 Comunicación en los sistemas operativos distribuidos


UNIDAD 2 Comunicación en los sistemas operativos distribuidos
2.1 Comunicación Sod
Conceptos de los sistemas distribuidos
Los sistemas distribuidos están basados en las ideas básicas de transparencia, eficiencia, flexibilidad, escalabilidad y fiabilidad. Sin embargo estos aspectos son en parte contrarios, y por lo tanto los sistemas distribuidos han de cumplir en su diseño el compromiso de que todos los puntos anteriores sean solucionados de manera aceptable.
Transparencia
El concepto de transparencia de un sistema distribuido va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red, independientemente de la posición del usuario. Queda como labor del sistema operativo el establecer los mecanismos que oculten la naturaleza distribuida del sistema y que permitan trabajar a los usuarios como si de un único equipo se tratara.
En un sistema transparente, las diferentes copias de un archivo deben aparecer al usuario como un único archivo. Queda como labor del sistema operativo el controlar las copias, actualizarlas en caso de modificación y en general, la unicidad de los recursos y el control de la concurrencia.
El que el sistema disponga de varios procesadores debe lograr un mayor rendimiento del sistema, pero el sistema operativo debe controlar que tanto los usuario como los programadores vean el núcleo del sistema distribuido como un único procesador. El paralelismo es otro punto clave que debe controlar el sistema operativo, que debe distribuir las tareas entre los distintos procesadores como en un sistema multiprocesador, pero con la dificultad añadida de que ésta tarea hay que realizarla a través de varios ordenadores.
Eficiencia
La idea base de los sistemas distribuidos es la de obtener sistemas mucho más rápidos que los ordenadores actuales. Es en este punto cuando nos encontramos de nuevo con el paralelismo.
Para lograr un sistema eficiente hay que descartar la idea de ejecutar un programa en un único procesador de todo el sistema, y pensar en distribuir las tareas a los procesadores libres más rápidos en cada momento.
La idea de que un procesador vaya a realizar una tarea de forma rápida es bastante compleja, y depende de muchos aspectos concretos, como la propia velocidad del procesador, pero también la localidad del procesador, los datos, los dispositivos, etc. Se han de evitar situaciones como enviar un trabajo de impresión a un ordenador que no tenga conectada una impresora de forma local.
Flexibilidad
Un proyecto en desarrollo como el diseño de un sistema operativo distribuido debe estar abierto a cambios y actualizaciones que mejoren el funcionamiento del sistema. Esta necesidad ha provocado una diferenciación entre las dos diferentes arquitecturas del núcleo del sistema operativo: el núcleo monolítico y el micronúcleo. Las diferencias entre ambos son los servicios que ofrece el núcleo del sistema operativo. Mientras el núcleo monolítico ofrece todas las funciones básicas del sistema integradas en el núcleo, el micronúcleo incorpora solamente las fundamentales, que incluyen únicamente el control de los procesos y la comunicación entre ellos y la memoria. El resto de servicios se cargan dinámicamente a partir de servidores en el nivel de usuario.
Núcleo monolítico
Como ejemplo de sistema operativo de núcleo monolítico está UNIX. Estos sistemas tienen un núcleo grande y complejo, que engloba todos los servicios del sistema. Está programado de forma no modular, y tiene un rendimiento mayor que un micronúcleo. Sin embargo, cualquier cambio a realizar en cualquier servicio requiere la parada de todo el sistema y la recompilación del núcleo.
Micronúcleo
La arquitectura de micronúcleo ofrece la alternativa al núcleo monolítico. Se basa en una programación altamente modular, y tiene un tamaño mucho menor que el núcleo monolítico. Como consecuencia, el refinamiento y el control de errores son más rápidos y sencillos. Además, la actualización de los servicios es más sencilla y ágil, ya que sólo es necesaria la recompilación del servicio y no de todo el núcleo. Como contraprestación, el rendimiento se ve afectado negativamente.
En la actualidad la mayoría de sistemas operativos distribuidos en desarrollo tienden a un diseño de micronúcleo. Los núcleos tienden a contener menos errores y a ser más fáciles de implementar y de corregir. El sistema pierde ligeramente en rendimiento, pero a cambio consigue un gran aumento de la flexibilidad.
Escalabilidad
Un sistema operativo distribuido debería funcionar tanto para una docena de ordenadores como varios millares. Igualmente, debería no ser determinante el tipo de red utilizada (LAN o WAN) ni las distancias entre los equipos, etc.
Aunque este punto sería muy deseable, puede que las soluciones válidas para unos cuantos ordenadores no sean aplicables para varios miles. Del mismo modo el tipo de red condiciona tremendamente el rendimiento del sistema, y puede que lo que funcione para un tipo de red, para otro requiera un nuevo diseño.
La escalabilidad propone que cualquier ordenador individual ha de ser capaz de trabajar independientemente como un sistema distribuido, pero también debe poder hacerlo conectado a muchas otras máquinas.
Fiabilidad
Una de las ventajas claras que nos ofrece la idea de sistema distribuido es que el funcionamiento de todo el sistema no debe estar ligado a ciertas máquinas de la red, sino que cualquier equipo pueda suplir a otro en caso de que uno se estropee o falle.
La forma más evidente de lograr la fiabilidad de todo el sistema está en la redundancia. La información no debe estar almacenada en un solo servidor de archivos, sino en por lo menos dos máquinas. Mediante la redundancia de los principales archivos o de todos evitamos el caso de que el fallo de un servidor bloquee todo el sistema, al tener una copia idéntica de los archivos en otro equipo.
Otro tipo de redundancia más compleja se refiere a los procesos. Las tareas críticas podrían enviarse a varios procesadores independientes, de forma que el primer procesador realizaría la tarea normalmente, pero ésta pasaría a ejecutarse en otro procesador si el primero hubiera fallado.
Comunicación
La comunicación entre procesos en sistemas con un único procesador se lleva a cabo mediante el uso de memoria compartida entre los procesos. En los sistemas distribuidos, al no haber conexión física entre las distintas memorias de los equipos, la comunicación se realiza mediante la transferencia de mensajes.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.
2.1.1 Comunicación Cliente Servidor Sockets
Sockets Son el mecanismo de sincronización distribuida más importan. Se les denomina conectores porque pueden unir un proceso cliente y un proceso servidor de manera semejante a como se puede unir un enchufe de un dispositivo eléctrico a su respectivo zócalo.
De los mecanismos de sockets el mas conocido es referente a al API de Berkeley y esta implementado en prácticamente todos los sistemas Unix por lo que se maneja C, pero también esta portado a otras arquitecturas como Windows (WinSock) y otros lenguajes como Java.
Para la comunicación de procesos remotos se necesita conocer la dirección de la maquina destino y el puerto. Para hacer uso de los sockets necesitamos dos cosas una familia de protocolos para comunicación y un tipo de conexión.
Para establecer una comunicación a través de sockets se necesitan 5 requerimientos:
v  Dirección del servidor
v  Puerto del servidor
v  Dirección del cliente
v  Puerto del cliente
v  Canal de comunicación abierto
Para leer datos de un socket se pueden utilizar las siguientes primitivas: read, readv,
recv, recvfrom y recvmsg; siendo las más utilizadas read y recv(sfd, buf, len, flags).
Para escribir datos en un socket se utilizan las siguientes primitivas: write, writev, send,
sendto y sendmsg, siendo las más utilizadas write y send(sfd, buf, len, flags).
La programación de sockets proporciona un mecanismo de muy bajo nivel para la comunicación e intercambio de datos entre dos ordenadores uno que se considera como cliente que es el que inicia la conexión con el servidor que esta esperando la requisición de conexiones de clientes.
El protocolo de comunicación entre ambos es el que determinara lo que suceda después de que se establezca la conexión. Para que las dos maquinas puedan entenderse ambas deben implementar un protocolo común y conocido por ambas.
En la programación de sockets el flujo de comunicación es Full Duplex en ambos sentidos siendo responsabilidad del sistema llevar los datos de una maquina a otra, parte de la información que fluye entre las dos maquinas es para implementar el protocolo y el resto son los propios datos que se quieren transferir.
2.1.2 Comunicación con Rpc
El mecanismo general para las aplicaciones cliente-servidor se proporciona porel paquete Remote Procedure Call (RPC). RPC fue desarrollado por SunMicrosystems y es una colección de herramientas y funciones de biblioteca.
Un servidor RPC consiste en una colección de procedimientos que un clientepuede solicitar por el envío de una petición RPC al servidor junto con los parámetrosdel procedimiento. El servidor invocará el procedimiento indicado en nombre delcliente, entregando el valor de retorno, si hay alguno. Para ser independiente de lamáquina, todos los datos intercambiados entre el cliente y el servidor se convierten al formato Externar Data Representation (XDR) por el emisor, y son reconvertidos a la representación local por el receptor. RPC confía en sockets estándar UDP y TCP paratransportar los datos en formato XDR hacia el host remoto. Son amablemente a puesto RPC en el dominio público; se describe en una serie de RFCs.
Un servidor RPC ofrece una o más colecciones de procedimientos; cadaconjunto se llama un programa y es identificado de forma única por un número deprograma.
La llamada remota toma 10 pasos, en el primero de los cuales el programacliente (o procedimiento) llama al procedimiento stub enlazado en su propio espacio de direcciones. Los parámetros pueden pasarse de la manera usual y hasta aquí el cliente no nota nada inusual en esta llamada ya que es una llamada local normal.
El stub cliente reúne luego los parámetros y los empaqueta en un mensaje. Esta operación se conoce como reunión de argumentos (para meter marshalling).Después que se ha construido el mensaje, se lo pasa a la capa de transporte para su transmisión (paso 2). En un sistema LAN con un servicio sin conexiones, la entidad de transporte probablemente sólo le agrega al mensaje un encabezamiento y lo coloca en la subred sin mayor trabajo (paso 3). En una WAN, la transmisión real puede ser más complicada. Cuando el mensaje llega al servidor, la entidad de transporte lo pasa al stub del servidor (paso 4), que desempaqueta los parámetros. El stub servidor llama luego al procedimiento servidor (paso 5), pasándole los parámetros de manera estándar. El procedimiento servidor no tiene forma de saber que está siendo activado remotamente, debido a que se lo llama desde un procedimiento local que cumple con todas las reglas estándares. Únicamente el stub sabe que está ocurriendo algo particular.
Después que ha completado su trabajo, el procedimiento servidor retorna (paso6) de la misma forma en que retornan otros procedimientos cuando terminan y, desde luego, puede retornar un resultado a un llamador. El stub servidor empaqueta luego el resultado en un mensaje y lo entrega a la interfaz con transporte (paso 7), posiblemente mediante una llamada al sistema, al igual que en el paso 2. Después que la respuesta retorna a la máquina cliente (paso 8), la misma se entrega al stubcliente (paso 9) que desempaqueta las respuestas. Finalmente, el stub cliente retorna a su llamador, el procedimiento cliente y cualquier valor devuelto por el servidor en el paso 6, se entrega al cliente en el paso 10. El propósito de todo el mecanismo de laFig.1 es darle al cliente (procedimiento cliente) la ilusión de que está haciendo una llamada a un procedimiento local. Dado el éxito de la ilusión, ya que el cliente no puede saber que el servidor es remoto, se dice que el mecanismo es transparente. Sin embargo, una inspección más de cerca revela algunas dificultades en alcanzar la total transparencia.
2.1.3 Comunicación en Grupo
Una hipótesis subyacente e intrínseca de RPC es que la comunicación solo es entre dos partes: el cliente y el servidor.
A veces existen circunstancias en las que la comunicación es entre varios procesos y no solo dos
Ej.: un grupo de servidores de archivo que cooperan para ofrecer un único servicio de archivos tolerante a fallos:
Sería recomendable que un cliente envíe el mensaje a todos los servidores para garantizar la ejecución de la solicitud aunque alguno falle.
RPC no puede controlar la comunicación de un servidor con muchos receptores, a menos que realice RPC con cada uno en forma individual.
Un grupo es una colección de procesos que actúan juntos en cierto sistema o alguna forma determinada por el usuario.
La propiedad fundamental de todos los grupos es que cuando un mensaje se envía al propio grupo, todos los miembros del grupo lo reciben.
Se trata de una comunicación uno - muchos (un emisor, muchos receptores), que se distingue de la comunicación puntual o punto a punto (un emisor, un receptor).
Los grupos son dinámicos:
 Ø   Se pueden crear y destruir. 
 Ø   Un proceso se puede unir a un grupo o dejar a otro 
 Ø   Un proceso puede ser miembro de varios grupos a la vez.
La implantación de la comunicación en grupo depende en gran medida del hardware:

En ciertas redes es posible crear una dirección especial de red a la que pueden escuchar varias máquinas:
Cuando se envía un mensaje a una de esas direcciones se lo entrega automáticamente a todas las máquinas que escuchan a
esa dirección.
Ø     Esta técnica se denomina multitransmisión.
Ø      Cada grupo debe tener una dirección de multitransmisión distinta.
Las redes que no soportan multitransmisión operan con transmisión simple:
Significa que los paquetes que tienen cierta dirección se entregan a todas las máquinas.
Se puede utilizar para implantar los grupos, pero es menos eficiente que la multitransmisión.
Cada máquina debe verificar, mediante su software, si el paquete va dirigido a ella:
En caso negativo se descarta, pero para analizarlo se generó una Interrupción y se dedicó ciclos de cpu.
Otra solución es implantar la comunicación en grupo mediante la
transmisión por parte del emisor de paquetes individuales a cada uno de los
miembros del grupo:
En vez de un paquete se precisan “n” paquetes.
Es menos eficiente que las soluciones anteriores.
Es una solución valida particularmente con grupos pequeños.
El envío de un mensaje de un emisor a un único receptor se llama unitransmisión.
2.  1.4 Tolerancia a Fallos
Que el sistema de archivos sea tolerante a fallos implica qué el sistema debe guardar copias del mismo archivo en distintos ordenadores para garantizar la disponibilidad en caso de fallo del servidor original.
Se debe aplicar un algoritmo que nos permita mantener todas las copias actualizadas de forma constante, o un método alternativo que solo nos permita al archivo actualizado como invalidar el resto de copias cuando en cualquiera de ellas se vaya a realizar una operación de escritura.
FACTORES QUE AFECTAN LA FIABILIDAD EN LOS SISTEMAS
TECNICAS QUE PERMITEN TOLERAR FALLOS EN EL SISTEMA
ALGUNOS FALLOS EN EL FUNCIONAMIENTO DE UN SISTEMA PUEDEN 
ORIGINARSE POR:
Especificaciones impropias o con errores.
Diseño deficiente e la creación del software y/o el hardware.
Deterioros o averías en al hardware.
Interferencias en las comunicaciones (temporales o permanentes).
1.     Fallos temporales o transitorios: Desaparecen por si solos al cabo de un tiempo.
2.     Fallos permanentes: Duran hasta que se raparan.
3.     Fallos intermitentes: Ocurren solo de vez en cuando.
2.2 Sincronización Sistemas Distribuidos

La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten en forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. Para lograr esto existen varios métodos o algoritmos que se programan dentro del sistema operativo, entre los cuales tenemos:
Este algoritmo está basado en el uso del tiempo coordenado universal (siglas en inglés, UTC), el cual es recibido por un equipo dentro del sistema distribuido. Este equipo, denominado receptor de UTC, recibe a su vez solicitudes periódicas del tiempo del resto de máquinas del sistema a cada uno de los cuales les envía una respuesta en el menor plazo posible informando el tiempo UTC solicitado, con lo cual todas las máquinas del sistema actualicen su hora y se mantenga así sincronizado todo el sistema. El receptor de UTC recibe el tiempo a través de diversos mediosdisponibles, entre los cuales se menciona las ondas de radioInternet, entre otros.
Un gran problema en este algoritmo es que el tiempo no puede correr hacia atrás:
El tiempo del receptor UTC no puede ser menor que el tiempo de la máquina que le solicitó el tiempo.
El servidor de UTC debe procesar las solicitudes de tiempo con el concepto de interrupciones, lo cual incide en el tiempo de atención.
El intervalo de transmisión de la solicitud y su respuesta debe ser tomado en cuenta para la sincronización. El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.
2.2.1 Relojes Físicos
SINCRONIZACIÓN DE RELOJES FÍSICOS
Para conocer en que hora del día ocurren los sucesos en los procesos de nuestro sistema distribuido Q, es necesario sincronizar los relojes de los procesos Ci con una fuente de tiempo externa autorizada. Esto es la SINCRONIZACIÓN EXTERNA. Y silos relojes están sincronizados con otro con un grado de precisión conocido, entonces podemos medir el intervalo entre dos eventos que ocurren en diferentes computadores llamando a sus relojes locales, incluso aunque ellos no estén necesariamente sincronizados con una fuente externa de tiempo. Esto es SINCRONIZACIONINTERNA. Definimos estos dos modos de sincronización mas detalladamente, sobre un intervalo de tiempo real I:
Sincronización Externa: para una sincronización dada D>0, y para una fuente S de tiempo UTC,  Si (t) – Ci (t)<D, para i = 1, 2,...., N y para todos los tiempos reales ten I. Otra forma de decir esto es que los relojes Ci son precisos con el límite D.
Sincronización Interna: para una sincronización dada D>0,Ci(t) – Cj(t)<D, para
i = 1,2,....N y para todos los tiempos reales t en I.
Los relojes que están sincronizados internamente no están necesariamente sincronizados externamente, puesto que pueden desplazarse colectivamente desde una fuente de tiempo externa incluso aunque estén de acuerdo entre si. Sin embargo, se deduce de las definiciones que si el sistema Q está sincronizado externamente con un límite D entonces el mismo sistema esta sincronizado internamente con un límite 2D.
2.2.2 Relojes Lógicos
TIEMPO LÓGICO Y RELOJES LÓGICOS
Los relojes lógicos son aquellos por los cuales están ordenados los sucesos de
Una forma única. Para poder usaren general el tiempo físico se debe sincronizar
perfectamente bien los relojes a lo largo de un sistema distribuido para poder así
obtener el orden de cualquier par arbitrario de sucesos que ocurran en el, pero es poco
probable que esto ocurra por que no se puede sincronizar perfectamente los relojes a lo
largo de un sistema distribuido.
Se puede utilizar un esquema que similar a la casualidad física, que se aplica en
los sistemas distribuidos, para controlar el orden de algunos sucesos que ocurren en
diversos procesos. La cual esta basada en dos puntos sencillos y obvios.
Cuando se envía un mensaje entre procesos, el suceso de enviar el mensaje ocurrió antes del de recepción del mismo.
Lamport llamo a la ordenación obtenida al generalizar estas dos relaciones la realización suceder antes. También se le conoce como la relación de orden casual u ordenación casual del mismo.
La relación captura un flujo de información entre dos eventos.
La información puede fluir de formas distintas de la de paso de mensajes.
Por ejemplo: Si Pérez presenta un mandato a su proceso para que envíe un mensaje, acto seguido telefonea a Gómez, quien ordena a su proceso que envíe otro mensaje, luego el envío del primer mensaje claramente sucedió antes que el segundo.
Desafortunadamente, como no se ha enviado mensajes de red entre los procesos que los
emitieron, no podemos modelar este tipo de relaciones en nuestro sistema.
Otro punto a señalar es que aun produciéndose la relación sucedió antes entre
dos sucesos, el primero podría o no haber causado realmente el segundo. Un proceso
podría recibir un mensaje y consecuentemente enviar otro mensaje, pero no que él emite
cada cinco minutos en cualquier caso y no tiene ninguna relación específica con el
primer mensaje. No se ha supuesto ninguna causalidad real, pero la relación debe
ordenar estos sucesos.
Lamport invento un mecanismo simple con el cual la relación sucedió antes
pueda capturarse numéricamente, denominado reloj lógico. Un reloj es un contador
software que se incrementa monótonamente, y sus valores no necesitan tener relación
alguna con el reloj físico.
RELOJES LÓGICOS TOTALMENTE ORDENADOS.
Algunos pares de sucesos distintos, generados por diferentes procesos, tienen
marcas de tiempo de Lamport numéricamente idénticas. Sin embargo, podemos crear un
orden, uno para el que todos los pares de sucesos distintos están ordenados, teniendo en
cuenta los identificadores de los procesos en los que ocurren los sucesos.
Lamport la utilizo, para ordenar la entrada de procesos en una sección.
2.2.3 Usos de la Sincronización manejo de cache, comunicación en grupo exclusión mutua elección transacciones atómicas e interbloqueo.
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 el objetivo es reducir el tráfico en la red. Esquema Básico, el concepto de memoria caché es sencillo, si los datos necesarios para satisfacer la solicitud de acceso no se encuentran en la memoria cache, se trae una copia de servicio al usuario y los accesos se llevan a cabo con la copia de memoria caché.
La idea es conservar allí los bloques de disco de acceso mas reciente, para así manejar localmente los accesos repetidos a la misma información y no aumentar el tráfico de la red. Se utiliza una política de reemplazo (por ejemplo, la de utilización menos reciente) para limitar el tamaño de la memoria caché. Políticas de Actualización, la política empleada para escribir los bloques de datos modificados en la copia maestra del servidor tiene un efecto decisivo sobre la confiabilidad y el rendimiento del sistema. La política mas sencilla consiste en escribir los datos directamente en el disco tan pronto se coloquen en una memoria caché. La ventaja de la escritura directa es su confiabilidad, ya que se pierde poca información si un sistema cliente falla. Sin embargo, esta política requiere que cada acceso de escritura espere hasta que se envíe la información al servidor, por lo que representa una escritura de escaso rendimiento. La memoria caché con escritura directa equivale a usar el servicio remoto para accesos de escritura y explotar la memoria cache únicamente para accesos de lectura. NFS proporciona el acceso de escritura directa.
Consistencia, una maquina cliente se enfrenta al problema de decidir si una copia de datos en memoria caché local es consistente con la copia maestra ( y por tanto, puede usarse). Si la maquina cliente determina que sus datos en memoria caché están desfasados, ya no pueden servir para los accesos y hay que colocar en la memoria caché una copia actualizada de los datos.
Comunicación en grupos (Algoritmos Para la Sincronización de Relojes)
Si una máquina tiene un receptor de UTC, todas las máquinas deben sincronizarse con ella. Si ninguna máquina tiene un receptor de UTC:
• Cada máquina lleva el registro de su propio tiempo. 
• Se debe mantener el tiempo de todas las máquinas tan cercano como sea posible. Se supone que cada máquina tiene un cronómetro que provoca una interrupción “h” veces por segundo. Cuando el cronómetro se detiene, el manejador de interrupciones añade “1” a un reloj en software. El reloj en software mantiene un registro del número de marcas (interrupciones) a partir de cierta fecha acordada antes; al valor de este reloj se lo llama “C”.
Algoritmo de Cristian
 El despachador del tiempo responde prontamente con un mensaje que contiene el tiempo actual “CUTC”. Cuando el emisor obtiene la respuesta puede hacer que su tiempo sea “CUTC”. Un gran problema es que el tiempo no puede correr hacia atrás: • “CUTC” no puede ser menor que el tiempo actual “C” del emisor. • La atención del requerimiento en el servidor de tiempos requiere un tiempo del manejador de interrupciones. • También se debe considerar el tiempo de transmisión. r / 2 dEs adecuado para sistemas en los que: • Una máquina tiene un receptor UTC, por lo que se la llama despachador del tiempo. • El objetivo es sincronizar todas las máquinas con ella. Cada máquina envía un mensaje al servidor para solicitar el tiempo actual, periódicamente, en un tiempo no mayor que
 La corrección por el tiempo del servidor y el tiempo de transmisión se hace midiendo en el emisor: • El tiempo inicial (envío) “T0”. • El tiempo final (recepción) “T1”. • Ambos tiempos se miden con el mismo reloj. El tiempo de propagación del mensaje será (T1 - T0) / 2. Si el tiempo del servidor para manejar la interrupción y procesar el mensaje es “I”: • El tiempo de propagación será (T1 - T0 - I) / 2. Para mejorar la precisión: • Se toman varias mediciones. • Se descartan los valores extremos. • Se promedia el resto. El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.
Algoritmo de Berkeley
En el algoritmo de Cristian el servidor de tiempo es pasivo. En el algoritmo de Berkeley el servidor de tiempo: • Es activo. • Realiza un muestreo periódico de todas las máquinas para preguntarles el tiempo.Es adecuado cuando no se dispone de un receptor UTC.
Al inicio de cada intervalo cada máquina transmite el tiempo actual según su reloj. Debido a la diferente velocidad de los relojes las transmisiones no serán simultáneas. Luego de que una máquina transmite su hora, inicializa un cronómetro local para reunir las demás transmisiones que lleguen en cierto intervalo “S”. Cuando recibe todas las transmisiones se ejecuta un algoritmo para calcular una nueva hora para los relojes. Una variante es promediar los valores de todas las demás máquinas. Otra variante es descartar los valores extremos antes de promediar (los “m” mayores y los “m” menores). Una mejora al algoritmo considera la corrección por tiempos de propagación.
Varias Fuentes Externas de Tiempo
Los sistemas que requieren una sincronización muy precisa con UTC se pueden equipar con varios receptores de UTC. Las distintas fuentes de tiempo generaran distintos rangos (intervalos de tiempo) donde “caerán” los respectivos UTC, por lo que es necesaria una sincronización. Como la transmisión no es instantánea se genera una cierta incertidumbre en el tiempo. Cuando un procesador obtiene todos los rangos de UTC: • Verifica si alguno de ellos es ajeno a los demás y de serlo lo descarta por ser un valor extremo. • Calcula la intersección (en el tiempo) de los demás rangos. • La intersección determina un intervalo cuyo punto medio será el UTC y la hora del reloj interno. Se deben compensar los retrasos de transmisión y las diferencias de velocidades de los relojes. Se debe asegurar que el tiempo no corra hacia atrás. Se debe resincronizar periódicamente desde las fuentes externas de UTC.
Exclusión Mutua
Cuando un proceso debe leer o actualizar ciertas estructuras de datos compartidas: • Primero ingresa a una región crítica para lograr la exclusión mutua y garantizar que ningún otro proceso utilizará las estructuras de datos al mismo tiempo. En sistemas monoprocesadores las regiones críticas se protegen con semáforos, monitores y similares. En sistemas distribuidos la cuestión es más compleja.
Un Algoritmo Centralizado
La forma más directa de lograr la exclusión mutua en un sistema distribuido es simular a la forma en que se lleva a cabo en un sistema monoprocesador. Se elige un proceso coordinador. Cuando un proceso desea ingresar a una región crítica: • Envía un mensaje de solicitud al coordinador:
• Si ningún otro proceso está en ese momento en esa región crítica:
• Cuando llega la respuesta el proceso solicitante entra a la región crítica. Si un proceso pide permiso para entrar a una región crítica ya asignada a otro proceso:
• El coordinador no otorga el permiso y encola el pedido. Cuando un proceso sale de la región crítica envía un mensaje al coordinador para liberar su acceso exclusivo: • El coordinador extrae el primer elemento de la cola de solicitudes diferidas y envía a ese proceso un mensaje otorgando el permiso, con lo cual el proceso queda habilitado para acceder a la región crítica solicitada. Es un esquema sencillo, justo y con pocos mensajes de control. La limitante es que el coordinador puede ser un cuello de botella y puede fallar y bloquear a los procesos que esperan una respuesta de habilitación de acceso.
Un Algoritmo Distribuido
El objetivo es no tener un único punto de fallo (el coordinador central). Un ej. es el algoritmo de Lamport mejorado por Ricart y Agrawala. Se requiere un orden total de todos los eventos en el sistema para saber cuál ocurrió primero. Cuando un proceso desea entrar a una región crítica:
• Construye un mensaje con el nombre de la región crítica, su número de proceso y la hora actual.
• Envía el mensaje a todos los demás procesos y de manera conceptual a él mismo.
• Se supone que cada mensaje tiene un reconocimiento. Si el receptor no está en la región crítica y no desea entrar a ella, envía de regreso un mensaje o.k. al emisor. Si el receptor ya está en la región crítica no responde y encola la solicitud. Si el receptor desea entrar a la región crítica pero aún no lo logró, compara:
• La marca de tiempo del mensaje recibido con, • La marca contenida en el mensaje que envió a cada uno. • La menor de las marcas gana. • Si el mensaje recibido es menor el receptor envía un o.k. • Si su propio mensaje tiene una marca menor el receptor no envía nada y encola el pedido. Luego de enviar las solicitudes un proceso: • Espera hasta que alguien más obtiene el permiso.
• Cuando llegan todos los permisos puede entrar a la región crítica. Cuando un proceso sale de la región crítica: • Envía mensajes o.k. a todos los procesos en su cola. • Elimina a todos los elementos de la cola. La exclusión mutua queda garantizada sin bloqueo ni inanición. El número de mensajes necesarios por entrada es “2(n - 1)”, siendo “n” el número total de procesos en el sistema. No existe un único punto de fallo sino “n”: • Si cualquier proceso falla no responderá a las solicitudes.
• La falta de respuesta se interpretará como negación de acceso: o Se bloquearán los siguientes intentos de los demás procesos por entrar a todas las regiones críticas. Se incrementa la probabilidad de fallo en “n” veces y también el tráfico en la red. Se puede solucionar el bloqueo si: • El emisor espera y sigue intentando hasta que regresa una respuesta o, • El emisor concluye que el destinatario está fuera de servicio. Otro problema es que: • Se utilizará una primitiva de comunicación en grupo o, • Cada proceso debe mantener la lista de miembros del grupo, incluyendo los procesos que ingresan, los que salen y los que fallan. • Se complica para gran número de procesos. Un importante problema adicional es que:
• Todos los procesos participan en todas las decisiones referentes a las entradas en las regiones críticas. • Se sobrecarga el sistema. Una mejora consiste en permitir que un proceso entre a una región crítica con el permiso de una mayoría simple de los demás procesos (en vez de todos): • Luego de que un proceso otorgó el permiso a otro para entrar a una región crítica, no puede otorgar el mismo permiso a otro proceso hasta que el primero libere su permiso.
Estructuras de Nominación.
Existen dos conceptos que hay que distinguir en relación con al correspondencia de nombres en un SAD. Transparencia de Nominación, El nombre de archivo no revela ningún indicio sobre de la ubicación del almacenamiento físico del archivo.
Independencia de Ubicación, No es necesario modificar el nombre de un archivo cuando cambia su ubicación en el almacenamiento físico.
Esquema de Nominación.
Hay tres enfoques principales para los esquemas de nominación en un SAD. En el enfoque mas sencillo, 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. Por ejemplo, en Ibis, un archivo se identifica de manera única con el Nombre Anfitrión Local, donde nombre local es una ruta semejante a las de UNIX.
El segundo enfoque popularizado por el sistema de archivos de red (NFS, Network File System) de sun, ofrece una forma de unir directorios remotos a directorios locales, lo que da la apariencia a un árbol de directorios coherentes.
El tercer enfoque es la estructura mas compleja y difícil de mantener en la NFS, ya que cualquier directorio se puede unir a cualquier árbol de direcciones locales y la jerarquía resultante puede estar poco estructurada.
2.3.2 Tipos de nombres usuario y de sistema
Usuario registrado
Se denomina así a la persona que tiene derechos especiales en algún servicio de Internet por acreditarse en el mismo mediante un identificador y una clave de acceso, obtenidos con previo registro en el servicio, de manera gratuita o de pago. Normalmente, un usuario registrado tiene asignada una cuenta propia que mantiene información personalizada del usuario en el servidor, (como puede ser dirección de e-mail y espacio correspondiente).
También puede dar acceso a ciertos contenidos no Sistemas Operativos II Licenciatura en Informática Página 33 accesibles al público en general, como por ejemplo un usuario registrado en un periódico on-line con acceso por suscripción. Usuario anónimo Es usuario anónimo en informática aquel que navega en sitios web (o usa cualquier servicio de la red) sin autenticarse como usuario registrado. En algunos servicios en Internet se dispone de un modo de uso como usuario registrado y otro como usuario anónimo; normalmente, el usuario registrado goza de mayores privilegios. El anonimato en Internet es uno de sus puntos fuertes, a la vez que motivo habitual de discusión.
A los usuarios les gusta sentirse libres para expresarse, mientras que ciertos organismos quisieran un mayor control de todo el movimiento por la red para actuar con más eficacia contra la delincuencia online. Usuario "beta tester" En el proceso de desarrollo de software, existe un usuario intermedio entre el desarrollador y el usuario final que se encarga de comprobar y testear que el programa trabaje de la forma prevista. La tarea de los Beta Testers es reportar errores al programador/desarrollador, y es en gran medida responsable de que el programa llegue al usuario final sin errores. Tipos de nombre sistema Sistemas operativos por servicios (visión externa). Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final.
Esta clasificación se comprende fácilmente con el cuadro sinóptico que a continuación se muestra: Sistemas Operativos II Licenciatura en Informática Página 34 Por Número de Usuarios: Sistema operativo monousuario: Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón. En otras palabras los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se esté ejecutando.
Sistema operativo Multiusuario:
Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede Sistemas Operativos II Licenciatura en Informática Página 35 ejecutar simultáneamente. En esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Por el número de tareas:
Sistema operativo monotarea. Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez. Los sistemas operativos monotareas son más primitivos y, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Sistema Operativo Multitarea. Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se está procesando la aplicación que se encuentra en primer plano (la que ve el usuario. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación está esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo.
Un sistema operativo multitarea puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad. Un sistema operativo multitarea se distingue por su capacidad para soportar la ejecución concurrente de dos o más procesos activos. La multitarea se implementa generalmente manteniendo el código y los datos de varios procesos simultáneamente en memoria y multiplexando el procesador y los dispositivos de E/S entre ellos. La multitarea suele asociarse con soporte hardware y software para protección de Sistemas Operativos II Licenciatura en Informática Página 36 memoria con el fin de evitar que procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes. Por el número de procesadores:
Sistema operativo de uniproceso: Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.
Sistema operativo de multiproceso: Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Asimétrica: Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Simétrica: Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cual quiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto.
Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial.
2.3.3 Resolución y Distribución
La resolución es el proceso de convertir un nombre hacia la ubicación real del recurso. La distribución es el proceso por el cual un nombre puede difundirse a través de todo el sistema y ser reconocido por cualquier entidad en cualquier momento.
2.3.4 Servidores y agentes de nombres
Los agentes de nombres son los procesos que permiten actualizar el repositorio de datos con los nombres y la ubicación de cada uno de los recursos en la red.
2.3.5 Mapeo de Direcciones
Para poder ejecutar instrucciones, si no sabemos en qué parte de la memoria estarán cargado, debemos tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas. Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones. Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso. De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.
Nótese que en el diagrama se tiene una tabla de proceso y ahí mismo se maneja la dirección inicial de la tabla de páginas. En algunos sistemas operativos, estas dos tablas se manejan por separado.
La traducción de direcciones virtuales para segmentos se maneja de manera similar.
Existe un esquema adicional, paginación/segmentación, que es la combinación de ambos. La memoria se divide en marcos de página, idealmente más pequeños que el tamaño del marco de página en un sistema de paginación tradicional. Cada segmento está compuesto por cierto número de páginas. Es decir, el tamaño del segmento es un múltiplo del tamaño de página. Este esquema pretende sacar ventaja de los beneficios de los otros dos. Este mismo mecanismo de traducción de direcciones virtuales puede aplicarse en paginación/segmentación.
Recordemos que este mapeo debe efectuarse siempre, instrucción por instrucción ejecutada. Por ello, entre más rápido sea el mecanismo, mejor. Existe una manera de mejorar dicho mecanismo mediante hardware.
Una memoria asociativa es muy cara, pero permite buscar en toda la memoria en un mismo pulso de reloj. Implementando memoria asociativa, podemos traducir direcciones para páginas o segmentos.
Sin embargo, el utilizar memoria asociativa implica que el número de marcos de página y/o el número de segmentos, se ve limitado por el tamaño de la memoria asociativa. Es decir, no puede haber más marcos de página que número de celdas en la memoria asociativa. Por ello, hay sistemas operativos que manejan una combinación de ambos. Se cargan a memoria las páginas/segmentos más utilizados, y la traducción se utiliza de manera normal. Solamente en aquellos casos en los que no encontrara la página/segmento en la memoria asociativa, efectuaría la traducción directa. Para esa instrucción, haría un doble mapeo. Sin embargo, el principio de localidad nos asegura que esto no sucederá con frecuencia.
2.3.6 Mapeo de Rutas
El “Technology Roadmapping” o mapeo de rutas tecnológicas, es un método específicamente desarrollado para la realización de estudios de Prospectiva Tecnológica. El modelo se basa en las directrices dictadas por las necesidades del mercado ayudando a identificar, seleccionar y desarrollar con posterioridad las alternativas de tecnología necesarias para satisfacer un conjunto de necesidades de un producto. Se trata de una prospectiva por objetivos que, entre otras funciones, ayuda a identificar necesidades y tecnologías, proporciona información necesaria en la toma de decisiones, identifica tecnologías críticas o vacíos en tecnología que deben llenarse para poder desarrollar productos con desempeños específicos y analiza el proceso a través del tiempo.

QUE ES EL ROADMAP?
El Roadmap o “Mapeo de rutas” describe un ambiente futuro, los objetivos que pueden llegar a obtenerse con ese ambiente y los planes para lograr los objetivos planteados a través del tiempo. Explicita una estructura, o arquitectura, como una vía para el entendimiento de cómo las partes de un complejo sistema tecnológico encajan, interactúan y evolucionan. Así mismo, articula aplicaciones, desafíos tecnológicos y soluciones tecnológicas en forma conjunta y ayuda a establecer las prioridades para la consecución de los objetivos.
QUE ES EL ROADMAPPING?
La mejor hoja de ruta es creada a partir de un trabajo en equipo, recibiendo las visiones y el conocimiento de un grupo de personas que llevan a cabo el plan de mapeo de rutas. El proceso de Roadmapping ayuda al equipo a reunir diversas perspectivas sobre todos los aspectos del ambiente y del plan. Así mismo ayuda al equipo a construir un consenso para llevar a cabo el plan de acción. El mapeo de rutas también es la base para la descripción de los objetivos.
ESTRUCTURA DEL ROADMAPPING
El mapeo de rutas explicita campos de acción y permite trazar directrices para el planteamiento de acciones orientadas a responder o desarrollar completamente un conjunto de preguntas:
“Por qué – Qué – Cómo - Cuándo” elementos importantes para poder desarrollar planes y proyectos de acción en la dirección de los objetivos planteados y alcanzar las metas buscadas. La siguiente figura describe las cuatro partes de la arquitectura con base en un mapeo de rutas.
El mapeo de rutas puede ser construido comenzando con la definición de las principales necesidades del mercado para luego definir las tecnologías necesarias. (Prospectiva por entradas del mercado). Recíprocamente, al mapeo también puede comenzar con la definición de tecnologías claves y proseguir con los requerimientos del mercado que pueden ser satisfechos con esas tecnologías. (Prospectiva por entradas de tecnología).
2.3.7 Modelo de Terry
Los mensajes remitentes entre los procesos y objetos soportados por un sistema operativo precisa la presentación para el sistema operativo de los nombres de los objetos que los procesos quieren ganar acceso a. El problema es cómo localizar objetos nombrados. Esto está directamente conectado a la gerencia del espacio de nombre y las estructuras de la facilidad de nombramiento.
Como ha visto, acto de servidores de nombre como agentes obligatorios distribuidos que amarran el nombre de un objeto para una cierta cantidad de sus propiedades, incluyendo la posición del objeto. Algunos servidores de nombre pueden almacenar información acerca de los objetos particulares. Tales servidores de nombre se llaman las autoridades que nombra o servidores autoritarios de nombre para eso objetan. El problema es cómo distribuir servidores de nombre, esto es, que de las estructuras de una facilidad de nombramiento es el mejor.
Los criterios diferentes pueden ser tomados en cuenta al desarrollar la facilidad de nombramiento para sistemas de cómputo distribuidos. En la etapa de análisis de la estructura de facilidad de nombramiento, usaremos la mayor parte de importante de esos criterios, a saber actuación. Este criterio es importante para un ambiente distribuido porque que hay usualmente un número de redes interconectadas (lo mismo es cierto en caso de una red de área local conectando un número grande de computadoras personales y / o los puestos de trabajo, y los servidores diferentes), lo cual insinúa que el costo de comunicación entre clientes y servidores de nombre es el cuello de botella principal en localizar recursos remotos. En este caso, la actuación de averiguaciones del servidor de nombre es dominada por el número de servidores de nombre que deben ser a los que se ganó acceso y el costo de ganar acceso a esos los servidores de nombre.
Los factores que afectan la eficiencia con la cual el espacio de nombre puede ser manejado y el costo de recuperar información del servidor de nombre son:
+ El di denota el costo de ejecutar una averiguación en NS, éste costado depende de tales factores como el tamaño global de la base de datos mantenida por NSi, y la clase de instalaciones de la base de datos utilizaron. Se asume que se compone con el paso del tiempo. + El cui es el costo de comunicar con NSi de cliente u, depende del sitio en el cual el cliente ejecuta, Este costo depende de tales factores como el número de portales de acceso atravesados, y la velocidad de líneas de transmisión. + El CUi especifica el costo completo de ganar acceso al servidor de nombre, NSi, remotamente de cliente u, y sea expresada por la siguiente fórmula:
El costo de recuperar la información del servidor de nombre acerca de un set de denominado así es que urce s depende de posición del cliente relativo a servidores diversos de nombre y la mezcla remisiva del cliente y puede ser expresado por la fórmula:
Donde Luk representa el coste total de poner en duda la información en partición de la base de datos dk, incluir el costo de localizar los datos deseados. Porque estamos interesados en el costo de recuperar la entrada del servidor de nombre de un objeto individual, ignoraremos los patrones de acceso del cliente en E (Lu) ‘ concentrándose sólo en Luk ‘
Los sistemas replegados de nombramiento
Una facilidad replegada de nombramiento maneja un espacio plano de nombre también. Cada nodo de la computadora (el sitio) del sistema distribuido mantiene una copia de la base de datos con tal que los mapeos del nombre a la dirección necesarios para el sistema entero. En este caso, Sk = { NS1. . . , NSN } ‘ Porque cada servidor de nombre contiene una” colección completa ‘ De información aproximadamente toda nombró objetos (los recursos) del sistema distribuido, cualquier cliente puede interrogar el servidor de nombre físicamente más cercano, implícito aquí N Smain?” que éste significa que el costo de recuperación es simplemente cañería maestra Lk = C.

Este sistema tiene las siguientes ventajas: Es muy rápido, que no tiene retrasos de levantes obligatorios de operación, el número de mensajes de orientes obligatorio es cero, y tiene fiabilidad alta. El problema mantienen consistencia entre copias, nombran problemas de materialización (si un proceso muere, entonces o un servicio se vuelve agotado) y requisitos grandes de memoria de cada nodo.
La entrada de la base de datos de nombre orientó descentralizó sistemas
Una entrada de la base de datos de nombre orientó descentralizó sistema también maneja un espacio plano de nombre, pero cada entrada del servidor de nombre es almacenada en algún sitio arbitrario. En este caso, Sk = { NS ¡ }. Tal solución para una estructura de facilidad de nombramiento insinúa que el almacenamiento y los problemas de consistencia, mencionadas en el acercamiento previo, es evitado. Ésta es la ventaja principal de esta estructura. El inconveniente de este sistema localiza los datos deseados, porque eso arruine necesite interrogar cada servidor de nombre. Por término medio, la mitad de servidores de nombre deben ser a los que se ganó acceso para recuperar información del objeto. Dado que los saques de nombre son puestos en duda en la ordenación numérica, la recuperación costada es como sigue:
Este sistema es valioso en términos de búsquedas del servidor de nombre.
Una modificación simple del citado anteriormente sistema es la facilidad distribuida de nombramiento. En este sistema cada nodo de la computadora (el sitio) mantiene una base de datos con tal que la dirección - nombre necesaria haciendo mapas para sus propios objetos locales (los procesos, los puertos, los servicios, los recursos). Este sistema requiere difundir en la red el nombre de un objeto pedido.
Ninguno de los sistemas descritos anteriormente son muy prácticos para sistemas distribuidos grandes. La situación puede ser mejorada añadiendo estructura para el nombre de un objeto. Esta estructura debería reflejar la autoridad de la gerencia para el nombre.
Los sistemas descentralizados de nombramiento
Una facilidad descentralizada de nombramiento es implementada usando un número de servidores de nombre operando en los dominios estrictamente definidos. La estructura se agrega para el nombre de un objeto (resource’s) para reflejar la autoridad de la gerencia para el nombre. La siguiente convención de nombramiento puede ser usada:
_ el servidor (1) correcto de @ nombre de _ nombre, donde _ el servidor de nombre identifica el servidor de nombre esto es responsable para información directiva acerca del objeto, y _ el nombre (2) correcto sin ambigüedades identifica el objeto en el contexto de la autoridad que nombra.

Si los servidores de nombre son sin ambigüedades nombrados luego el nombre completo _ servidor correcto de @ nombre de _ nombre es globalmente inequívoco. La gerencia efectiva de tal espacio de nombre siguiendo esta convención de nombramiento requiere que cada servidor de nombre sabe la posición de otros servidores de nombre.
Hay avances diferentes para descentralizar un espacio de nombre:
La partición de discos (1) geográfica (el reconocimiento médico): Si el sistema está compuesto de redes de área local múltiples conectadas de por ahí cruzan s y portales de acceso, entonces es natural tener un servidor de nombre para cada red; Y La partición de discos (2) organizativa (funcional): La partición del sistema entero en los dominios puede estar hecha con base en organizaciones.
Básicamente dividieron en partes nombrando sistemas individuales mapeo existe entre particiones de la base de datos y servidores de nombre, esto es, = la N de kilobyte y Sk = { NSk }. Tal estructura requiere dos accesos para obtener la información acerca de un objeto dado (el recurso): Uno para hallar la autoridad que nombra y uno para ganar acceso a los datos. Sólo un acceso es menester cuando la información deseada de nombramiento es almacenada en el servidor primario de nombre, N Smain. El costo de búsqueda es expresado por la fórmula:
Organizacionalmente dividieron en partes nombrando sistemas las particiones de la base de datos corresponda a las organizaciones en vez de servidores de nombre. Cada servidor de nombre puede ser la autoridad para algún subconjunto de las organizaciones. En este caso los nombres toman la forma @ organización correcta de _ nombre en la cual la autoridad para asignar nombres es explícitamente reconocida. En este caso el servicio de nombre puede ser con holgura uso reconfigurado del beca la asignación de objeto nombres es independiente de la asignación de la responsabilidad para mantener información acerca de los objetos.
Consideremos los costos de búsqueda. Suponga, por el momento, que los datos de cada organización están bajo la dirección de un servidor solo de nombre al igual que con un espacio de nombre físicamente subdividido, Sk = { NSJ. Para eficazmente ganar acceso a información acerca de un objeto dado, cada servidor de nombre debería saber cuál servidor de nombre tiene responsabilidad para cada organización. Basadas en esta estructura, las averiguaciones del servidor de nombre pueden ser tramitadas en pasos dobles como en sistemas de nombramiento físicamente subdivididos. El costo de búsqueda es expresado como sigue:
Dos recuperaciones de la base de datos son siempre precisadas desde que un servidor de nombre no puede determinar de todos modos es la autoridad para los datos deseados sin consultar la base de datos local. Si el servidor primario de nombre puede recuperar y puede devolver la entrada del servidor de nombre directamente al descubrir que es el sitio de almacenamiento para los datos deseados, entonces luego Una de las ventajas más importantes de un espacio de nombre de organizacional-Partición es la facilidad con la cual la información replegada de nombramiento puede ser acomodada.
Esto quiere decir que la base de datos del servidor de nombre puede a medias ser redundante. Del punto de la gerencia de vista, la copia soportadora requiere que el algoritmo de búsqueda describió arriba esté extendido de tal manera en lo que se refiere a reconocer varios servidores autoritarios de nombre para cada organización en vez de uno responsable solo. Como consecuencia, cada servidor de nombre debería saber la colección completa de servidores autoritarios de nombre para cada organización, Sk. Un ejemplo de un sistema basado en este acercamiento es el sistema Grapevine (Birrell Et Al. 1982). El costo de búsqueda del servidor de nombre viene bien
Esta fórmula fue desarrollada en la suposición que el servidor autoritario más cercano de nombre puede ser determinado con costo insignificante. El costo para un sistema con datos replegados debería estar menos del costo pues un sistema con espacio de nombre de organizacional-Partición desde que el servidor de nombre ganó acceso a por clientes diversos,‘ puede diferir de cliente para el cliente, considerando en el caso previo cada cliente se ve forzado a ganar acceso al mismo servidor de nombre.
La influencia de la copia de datos puede ser ilustrada por un ejemplo muy simple. Deje la R ser número de materiales noticiosos, R~N, distribuido uniformemente, esto es, R servidores autoritarios de nombre está seleccionado al azar para cada partición de la base de datos. Doy por supuesto que los servidores de nombre son ordenados algo semejante que C<C para yo < la j y NS. = NS.. Esta suposición no insinúa cualquier pérdida de generalidad.
Los sistemas jerárquicos de nombramiento
Una facilidad jerárquica de nombramiento es una extensión del sistema previo por nombres estructurados de dos partes extensibles para los nombres jerárquicos consistente en más que dos partes. Hay dos avances básicos: El número fijo de estratos, o una jerarquía arbitraria. Con gerencia jerárquica del espacio de nombre, los datos completos (Sk para toda k) de configuración del servidor de nombre no necesitan guardarse en cada servidor de nombre.
Es suficiente que cada tienda del servidor de nombre lo suficientemente sólo información localizar los servidores autoritarios de nombre para el nivel de la parte superior de la jerarquía. Los servidores nivelados máximos de nombre deberían saber que los servidores autoritarios de nombre para el nombre espacian subárboles directamente bajo su control administrativo. Un análisis de estructuras jerárquicas de nombramiento puede ser realizado por recursivamente aplicar las técnicas para los nombres de dos partes. Considere un sistema usando los nombres de la forma _ nombre local: El dominio:La organización, esto es, una jerarquía con tres niveles.




No hay comentarios:

Publicar un comentario