investigacion de sistemas distribuidos

42
Sistemas distribuidos: se trata de una agrupación de computadores conectados desde una red y con el software adecuado para proporcionar facilidades a los usuarios. Esto se emplean en diversas plataformas hardware como en los trabajos, área local e internet ya sea en una are local o extensa. http://www.dia.eui.upm.es/Asignatu/Sis_dis/Paco/SOD.pdf http://html.rincondelvago.com/sistemas-operativos- distribuidos_2.html 1.1 Sistemas Distribuidos Sistemas cuyos componentes hardware y software, están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor. Colección de elementos de cómputo autónomo que se encuentran físicamente separados y no comparten una memoria común, se comunican entre sí a través del intercambio de mensajes utilizando un medio de comunicación. Los sistemas autónomos pueden tener características no homogéneas. 1.1.1 Ventajas Desventajas contra Sistemas Centralizados Ventajas * Aumento de la disponibilidad. * Mejora del desempeño. * Balanceo en la carga de trabajo. * Compartición de recursos. * Compartición de información. * Confiabilidad, disponibilidad y tolerancia a fallas. * Modularidad en el desarrollo. * Flexibilidad. * Crecimiento incremental. * Reducción de costos. * Mayor capacidad de modelar estructuras organizacionales. Desventajas * Uso ineficiente de los recursos distribuidos. * Capacidad reducida para administrar apropiadamente grupos de procesadores y memoria localizada en distintos sitios. * Enorme dependencia del desempeño de la red y de la confiabilidad de la misma. * Debilitamiento de la seguridad. * Mayor complejidad en la administración y mantenimiento. * Mayor complejidad en su construcción.

Upload: carlos-alberto-marval

Post on 30-Nov-2015

26 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Investigacion de Sistemas Distribuidos

Sistemas distribuidos: se trata de una agrupación de computadores conectados desde una red y con el software adecuado para proporcionar facilidades a los usuarios. Esto se emplean en diversas plataformas hardware como en los trabajos, área local e internet ya sea en una are local o extensa.

http://www.dia.eui.upm.es/Asignatu/Sis_dis/Paco/SOD.pdf

http://html.rincondelvago.com/sistemas-operativos-distribuidos_2.html

1.1 Sistemas DistribuidosSistemas cuyos componentes hardware y software, están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor.Colección de elementos de cómputo autónomo que se encuentran físicamente separados y no comparten una memoria común, se comunican entre sí a través del intercambio de mensajes utilizando un medio de comunicación. Los sistemas autónomos pueden tener características no homogéneas.

1.1.1 Ventajas Desventajas contra Sistemas Centralizados

Ventajas* Aumento de la disponibilidad.* Mejora del desempeño.* Balanceo en la carga de trabajo.* Compartición de recursos.* Compartición de información.* Confiabilidad, disponibilidad y tolerancia a fallas.* Modularidad en el desarrollo.* Flexibilidad.* Crecimiento incremental.* Reducción de costos.* Mayor capacidad de modelar estructuras organizacionales.

Desventajas* Uso ineficiente de los recursos distribuidos.* Capacidad reducida para administrar apropiadamente grupos de procesadores y memorialocalizada en distintos sitios.* Enorme dependencia del desempeño de la red y de la confiabilidad de la misma.* Debilitamiento de la seguridad.* Mayor complejidad en la administración y mantenimiento.* Mayor complejidad en su construcción.

Page 2: Investigacion de Sistemas Distribuidos

1.1.2 Modelo Cliente Servidor

Hardware cliente-servidorLa arquitectura cliente-servidor permite al usuario en una máquina, llamada el cliente, requerir algún tipo de servicio de una máquina a la que está unido, llamado el servidor, mediante una red como una LAN (Red de Area Local) o una WAN (Red de Area Mundial). Estos servicios pueden ser peticiones de datos de una base de datos, de información contenida en archivos o los archivos en sí mismos, o peticiones de imprimir datos en una impresora asociada.

Aunque clientes y servidores suelen verse como máquinas separadas, pueden, de hecho, ser dos áreas separadas en la misma máquina. Por tanto, una única máquina Unix puede ser al mismo tiempo cliente y servidor. Además una máquina cliente unida a un servidor puede ser a su vez servidor de otro cliente y el servidor puede ser un cliente de otro servidor en la red. También es posible tener el cliente corriendo en un sistema operativo y el servidor en otro distinto.

Hay varios tipos comunes de máquinas clientes en entornos cliente-servidor. Uno de los clientes más populares es una computadora personal basada en Intel que ejecuta aplicaciones de DOS en un entorno Windows. Otra cliente popular es una terminal X; de hecho, el sistema X Windows es un modelo cliente-servidor clásico.

Hay también clientes Unix que ejecutan sistemas operativos como UnixWare. Un servidor que pide cosas a otro servidor es un cliente de la máquina a la que está pidiendo. Sin considerar el tipo de cliente que se esté usando en una red cliente-servidor, se realizando al menos una de las funciones básicas descritas aquí como funciones del cliente.

Los clientes en una red cliente-servidor son las máquinas o procesos que piden información, recursos y servicios a un servidor unido. Estas peticiones pueden ser cosas como proporcionar datos de una base de datos, aplicaciones, partes de archivos o archivos completos a la máquina cliente. Los datos, aplicaciones o archivos pueden residir en un servidor y ser simplemente accedidos por el cliente o pueden ser copiados o movidos físicamente a la máquina cliente.

Esta disposición permite a la máquina cliente ser relativamente pequeña. Para cada tipo de entorno de cliente, hay habitualmente software específico (y a veces hardware) en el cliente, con algún software y hardware análogo en el servidor. Los servidores pueden ser sistemas operativos diferentes como Windows NT, Windows 95, OS/2, Unix. Unix es popular porque, como sistema operativo de servidores, puede ser utilizado en muchos tipos de configuraciones sobre máquinas servidor, además de como servidores de archivos y servidores de impresión.

Ventajas e inconvenientes del esquema Cliente/ServidorSe mencionan a continuación algunas de las ventajas de la utilización del esquema Cliente/Servidor.

Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor es la existencia de plataformas de hardware cada vez más baratas. Esta constituye a su vez una de las más palpables ventajas de este esquema, la posibilidad de utilizar máquinas considerablemente más baratas que las requeridas por una solución centralizada, basada en sistemas grandes. Además de lo anterior, se pueden utilizar componentes, tanto de hardware como de software, de varios fabricantes, lo cual contribuye considerablemente a la reducción de costos y favorece la flexibilidad en la implantación y actualización de soluciones.

Además de lo anterior, el esquema Cliente/Servidor facilita la integración entre sistemas diferentes y compartir información, permitiendo, por ejemplo que las máquinas ya existentes puedan ser utilizadas pero utilizando interfaces más amigables al usuario. De esta manera podemos, por ejemplo, integrar PCs con sistemas medianos y grandes, sin que todas las máquinas tengan que utilizar el mismo sistema operacional.

Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos con este esquema tienen una interacción más intuitiva con el usuario. Si se utilizan interfaces gráficas para interactuar con el usuario, el esquema Cliente/Servidor presenta la ventaja, con respecto a uno centralizado, de que no es siempre necesario transmitir información gráfica por la red pues esta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.

La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.

Page 3: Investigacion de Sistemas Distribuidos

El esquema Cliente/Servidor contribuye además a proporcionar a los diferentes departamentos de una empresa soluciones locales, pero permitiendo además la integración de la información relevante a nivel global.

El esquema cliente/servidor tiene algunos inconvenientes que se mencionan a continuación.

Por una parte, el mantenimiento de los sistemas es más difícil pues implica la interacción de diferentes partes de hardware y de software, distribuidas por distintos proveedores, lo cual dificulta el diagnóstico de fallas.

Además de lo anterior, se cuenta con muy escasas herramientas para la administración y ajuste del desempeño de los sistemas.

En el desarrollo de aplicaciones Cliente/Servidor se deben tener en cuenta diferentes aspectos, que se mencionan a continuación.

1.1.3 Características Hardware Sistemas Distribuidos

Todos los sistemas distribuidos constan de varias cpu, organizadas de diversas formas, especialmente respecto de:

· La forma de interconectarlas entre sí.· Los esquemas de comunicación utilizados.·Existen diversos esquemas de clasificación para los sistemas de cómputos con varias cpu:

· Uno de los mas conocidos es la “Taxonomía de Flynn”:· Considera como características esenciales el número de flujo de instrucciones y el número de flujos de datos.

· La clasificación incluye equipos SISD, SIMD, MISD y MIMD.SISD (Single Instruction Single Data: un flujo de instrucciones y un flujo de datos):· Poseen un único procesador.

SIMD (Single Instruction Multiple Data: un flujo de instrucciones y varios flujos de datos):· Se refiere a ordenar procesadores con una unidad de instrucción que:

Busca una instrucción.Instruye a varias unidades de datos para que la lleven a cabo en paralelo, cada una con sus propios datos.· Son útiles para los cómputos que repiten los mismos cálculos en varios conjuntos de datos.MISD (Multiple Instruction Single Data: un flujo de varias instrucciones y un solo flujo de datos):· No se presenta en la práctica.MIMD (Multiple Instruction Multiple Data: un grupo de computadoras independientes, cada una con su propio contador del programa, programa y datos):· Todos los sistemas distribuidos son de este tipo.Un avance sobre la clasificación de Flynn incluye la división de las computadoras MIMD en dos grupos:· Multiprocesadores: poseen memoria compartida:Los distintos procesadores comparten el mismo espacio de direcciones virtuales.· Multicomputadoras: no poseen memoria compartida:Ej.: grupo de PC conectadas mediante una red.

Cada una de las categorías indicadas se puede clasificar según la arquitectura de la red de interconexión en:· Esquema de bus:Existe una sola red, bus, cable u otro medio que conecta todas las máquinas:Ej.: la televisión por cable.· Esquema con conmutador:

No existe una sola columna vertebral de conexión:Hay múltiples conexiones y varios patrones de conexionado.

Page 4: Investigacion de Sistemas Distribuidos

Los mensajes de mueven a través de los medios de conexión.Se decide explícitamente la conmutación en cada etapa para dirigir el mensaje a lo largo de uno de los cables de salida.Ej.: el sistema mundial telefónico público.

· Otro aspecto de la clasificación considera el acoplamiento entre los equipos:Sistemas fuertemente acoplados:El retraso al enviar un mensaje de una computadora a otra es corto y la tasa de transmisión es alta.

1.1.4 Características Software Sistemas Distribuidos

La importancia del software supera frecuentemente a la del hardware

La imagen que un sistema presenta queda determinada en gran medida por el software del S. O. y no por el hardware.

Los S. O. no se pueden encasillar fácilmente, como el hardware, pero se los puede clasificar en dos tipos:

· Débilmente acoplados.· Fuertemente acoplados.

El software débilmente acoplado de un sistema distribuido:

· Permite que las máquinas y usuarios sean independientes entre sí en lo fundamental.· Facilita que interactúen en cierto grado cuando sea necesario.· Los equipos individuales se distinguen fácilmente.

Combinando los distintos tipos de hardware distribuido con software distribuido se logran distintas soluciones:

· No todas interesan desde el punto de vista funcional del usuario:Ej.: un multiprocesador es un multiprocesador:· No importa si utiliza un bus con cachés monitores o una red omega.

1.1.5 Direccionamiento Lógico Físico Sistemas Distribuidos

Direccionamiento lógico y físico El proceso desde que los datos son incorporados al ordenados hasta que se transmiten al medio se llama encapsulación. Estos datos son formateados, segmentados, identificados con el direccionamiento lógico y físico para finalmente ser enviados al medio. A cada capa del modelo OSI le corresponde una PDU (Unidad de Datos) siguiendo por lo tanto el siguiente orden de encapsulamiento: DATOS-SEGMENTOS-PAQUETES-TRAMAS-BITS

CAPA TRANSMITEAPLICACIÓN DATOSPRESENTACIONSESIÓNTRANSPORTE SEGMENTOSRED PAQUETESENLACE DED DATOS TRAMASFÍSICA BITS

Debido a que posiblemente la cantidad de los datos sean demasiados, la capa de transporte desde de origen, se encarga de segmentarlos para así ser empaquetados debidamente, esta misma capa en el destino se encargara de reensamblar los datos y colocarlos en forma secuencial, ya que no siempre llegan a su destino en el orden en que han sido segmentados, así mismo acorde al protocolo que se este utilizando habrá corrección de errores. Estos segmentos son empaquetados (paquetes o datagramas) e identificados en la capa de red con la dirección lógica o IP correspondiente al origen y destino. Ocurre lo mismo con la dirección MAC en la capa de enlace de datos formándose las tramas o frames para ser transmitidos a través de alguna interfaz.

1.2 Concepto Características Sor

Page 5: Investigacion de Sistemas Distribuidos

Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Linux,Novell Netware, Personal Netware, LAN Manager, Windows NT Server UNIX.

Una posibilidad es el software débilmente acoplado en hardware débilmente acoplado: Es una solución muy utilizada. Ej.: una red de estaciones de trabajo conectadas mediante una LAN. Cada usuario tiene una estación de trabajo para su uso exclusivo: Tiene su propio S. O. La mayoría de los requerimientos se resuelven localmente. Es posible que un usuario se conecte de manera remota con otra estación de trabajo: Mediante un comando de “login remoto”. Se convierte la propia estación de trabajo del usuario en una terminal remota enlazada con la máquina remota. Los comandos se envían a la máquina remota. La salida de la máquina remota se exhibe en la pantalla local. Para alternar con otra máquina remota, primero hay que desconectarse de la primera: En cualquier instante solo se puede utilizar una máquina. Las redes también disponen de un comando de copiado remoto de archivos de una máquina a otra: Requiere que el usuario conozca: La posición de todos los archivos. El sitio donde se ejecutan todos los comandos. Una mejor solución consiste en un sistema de archivos global compartido, accesible desde todas las estaciones de trabajo: Una o varias máquinas soportan al sistema de archivos: Son los “servidores de archivos”. Los “servidores de archivos”: Aceptan solicitudes de los programas de usuarios: Los programas se ejecutan en las máquinas no servidoras, llamadas “clientes”. Las solicitudes se examinan, se ejecutan y la respuesta se envía de regreso. Generalmente tienen un sistema jerárquico de archivos. Las estaciones de trabajo pueden importar o montar estos sistemas de archivos: Se incrementan sus sistemas de archivos locales. Se pueden montar los servidores en lugares diferentes de sus respectivos sistemas de archivos: Las rutas de acceso a un determinado archivo pueden ser diferentes para las distintas estaciones. Los distintos clientes tienen un punto de vista distinto del sistema de archivos. El nombre de un archivo depende: Del lugar desde el cual se tiene acceso a él. De la configuración del sistema de archivos. El S. O. de este tipo de ambiente debe: Controlar las estaciones de trabajo en lo individual. Controlar a los servidores de archivo. Encargarse de la comunicación entre los servidores. Todas las máquinas pueden ejecutar el mismo S. O., pero esto no es necesario. Si los clientes y los servidores ejecutan diversos S. O., como mínimo deben coincidir en el formato y significado de todos los mensajes que podrían intercambiar. Esquemas como este se denominan “sistema operativo de red”: Cada máquina tiene un alto grado de autonomía. Existen pocos requisitos a lo largo de todo el sistema.

1.3 Concepto Características del Sod

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.

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

EficienciaLa idea base de los sistemas distribuidos es la de obtener sistemas mucho más rápidos que los

Page 6: Investigacion de Sistemas Distribuidos

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.

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

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

FiabilidadUna 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ónLa 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.

Page 7: Investigacion de Sistemas Distribuidos

2. Sistemas Operativos Distribuidos (DOS)

2.1. Presentación

Un sistema distribuido se define como una colección de computadores autónomos conectados por una red, y con el software distribuido adecuado para que el sistema sea visto por los usuarios como una única entidad capaz de proporcionar facilidades de computación.

El desarrollo de los sistemas distribuidos vino de la mano de las redes locales de alta velocidad a principios de 1970. Más recientemente, la disponibilidad de computadoras personales de altas prestaciones, estaciones de trabajo y ordenadores servidores ha resultado en un mayor desplazamiento hacia los sistemas distribuidos en detrimento de los ordenadores centralizados multiusuario. Esta tendencia se ha acelerado por el desarrollo de software para sistemas distribuidos, diseñado para soportar el desarrollo de aplicaciones distribuidas. Este software permite a los ordenadores coordinar sus actividades y compartir los recursos del sistema - hardware, software y datos.Los sistemas distribuidos se implementan en diversas plataformas hardware, desde unas pocas estaciones de trabajo conectadas por una red de área local, hasta Internet, una colección de redes de área local y de área extensa interconectados, que en lazan millones de ordenadores.

Las aplicaciones de los sistemas distribuidos varían desde la provisión de capacidad de cómputo a grupos de usuarios, hasta sistemas bancarios, comunicaciones multimedia y abarcan prácticamente todas las aplicaciones comerciales y técnicas de los ordenadores. Los requisitos de dichas aplicaciones incluyen un alto nivel de fiabilidad, seguridad contra interferencias externas y privacidad de la información que el sistema mantiene. Se deben proveer accesos concurrentes a bases de datos por parte de muchos usuarios, garantizar tiempos de respuesta, proveer puntos de acceso al servicio que están distribuidos geográficamente, potencial para el crecimiento del sistema para acomodar la expansión del negocio y un marco para la integración de sistema usados por diferentes compañías y organizaciones de usuarios.

Page 8: Investigacion de Sistemas Distribuidos

2.1.1. Introducción Histórica

En el inicio de la era de la informática las computadoras eran grandes y caras. Debido a su escasez y coste, éstas funcionaban de forma independiente entre ellas.A partir de los años 70, surgen los primeros miniordenadores, que competirían con los grandes ordenadores tanto por las prestaciones como por su precio, con lo que se extendió su uso. Los grandes sistemas centralizados fueron dejando paso lentamente a sistemas mucho más descentralizados, y formados por varios ordenadores o a sistemas multiprocesador. Pronto surgieron nuevas necesidades de interconexión de los equipos, y se desarrollaron las redes de área local (LAN), como Ethernet o Token ring. En la actualidad, Internet es la red de mayor tamaño y la más usada, y mantiene un impresionante ritmo de crecimiento. Además, Internet es la base de muchos nuevos proyectos de sistemas distribuidos.Aunque los actuales sistemas de red solucionan parte de las necesidades actuales de comunicación entre computadoras, tienen importantes limitaciones, y no son aplicables a una gran cantidad de problemas. Por ello surge la necesidad de crear sistemas distribuidos que sustituyan a los actuales sistemas de red o a los sistemas multiprocesadores.Desde el inicio de la era de la computadora moderna (1945), hasta cerca de 1985, solo se conocía la computación centralizada [25, Tanenbaum].A partir de la mitad de la década de los ochentas aparecen dos avances tecnológicos fundamentales:- Desarrollo de microprocesadores poderosos y económicos con arquitecturas de 8, 16, 32 y 64 bits.- Desarrollo de redes de área local (LAN) de alta velocidad, con posibilidad de conectar cientos de máquinas a velocidades de transferencia de millones de bits por segundo (mb/seg). 

Aparecen los sistemas distribuidos, en contraste con los sistemas centralizados.Los sistemas distribuidos necesitan un software distinto al de los sistemas centralizados.Los S. O. para sistemas distribuidos han tenido importantes desarrollos pero todavía existe un largo camino por recorrer.Los usuarios pueden acceder a una gran variedad de recursos computacionales:- De hardware y de software.- Distribuidos entre un gran número de sistemas computacionales conectados. Un importante antecedente de las redes de computadoras lo constituye Arpanet, iniciada en 1968 en los EE. UU.Abarcan los servicios de los SO de red, logrando integrar recursos (impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso) en una sola maquina virtual que el usuario accesa en forma transparente.Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales:Necesidad (debido a que los problemas a resolver son inherentemente distribuidos). Desea tener mas confiabilidad y disponibilidad de recursos 

Page 9: Investigacion de Sistemas Distribuidos

2.1.2. Características de los DOS

- Distribuye los cálculos entre diferentes procesadores- Principalmente su objetivo es compartir recursos y datos entre usuarios ofreciendo transparencia- Son sistemas débilmente acoplados; cada procesador tiene su propia memoria local; los procesadores se comunican entre si a través de varias líneas de comunicación, tales como buses de alta velocidad o líneas telefónicas- Gestiona los dispositivos de diferentes nodos ofreciendo a usuarios la misma visión que un sistema centralizado.- Además de las siguientes ventajas: 

2.1.3. Ventajas del DOS

TransparenciaEl 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

Page 10: Investigacion de Sistemas Distribuidos

como en un sistema multiprocesador, pero con la dificultad añadida de que ésta tarea hay que realizarla a través de varios ordenadores.

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

FlexibilidadUn 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íticoComo 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úcleoLa 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.

EscalabilidadUn 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

Page 11: Investigacion de Sistemas Distribuidos

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

Economía:El cociente precio/desempeño de la suma del poder de los procesadores separados contra el poder de uno solo centralizado es mejor cuando están distribuidos

SincronizaciónLa sincronización es un punto clave para los sistemas operativos distribuidos. Para computadores únicos no es nada importante, pero en el caso de los recursos compartidos de la red, la sincronización es sumamente importante.

Tolerancia a FallosLos sistemas informáticos a veces fallan. Cuando se producen fallos en el software o en el hardware, los programas podrían producir resultados incorrectos o podrían pararse antes de terminar la computación que estaban realizando. El diseño de sistemas tolerantes a fallos se basa en dos cuestiones, complementarias entre sí: Redundancia hardware (uso de componentes redundantes) y recuperación del software (diseño de programas que sean capaces de recuperarse de los fallos).En los sistemas distribuidos la redundancia puede plantearse en un grano mas fino que el hardware, pueden replicarse los servidores individuales que son esenciales para la operación continuada de aplicaciones críticas.La recuperación del software tiene relación con el diseño de software que sea capaz de recuperar (roll-back) el estado de los datos permanentes antes de que se produjera el fallo.Los sistemas distribuidos también proveen un alto grado de disponibilidad en la vertiente de fallos hardware. La disponibilidad de un sistema es una medida de la proporción de tiempo que esta disponible para su uso. Un fallo simple en una maquina multiusuario resulta en la no disponibilidad del sistema para todos los usuarios. Cuando uno de los componentes de un sistema distribuidos falla, solo se ve afectado el trabajo que estaba realizando el componente averiado. Un usuario podría desplazarse a otra estación de trabajo; un proceso servidor podría ejecutarse en otra maquina. 

2.1.4. Desventajas De Los DOS:

Por muy maravillosos que nos puedan pareces los sistemas operativos distribuidos, también tienen sus desventajas. La sincronización del sistema es una tarea Árdea de la cual nunca se descansa y la estandarización del sistema es un tanto complicada y limitante.Debido a que no todos los sistemas operativos son de de carácter distribuido enlazar los distintos

Page 12: Investigacion de Sistemas Distribuidos

tipos de sistemas operativos es un poco complicado.El interés de hacer el SOD lo mas transparente posible lo hace muy complicado en su programación y el lograr que el sistema operativo no tenga problemas para que no cause problemas a otros equipos que le asignaron tareas es un poco dificultoso. Algunas desventajas mas son:• Reducida capacidad para mantener depósitos de recursos de memoria y procesador entre nodos distintos.• Aumento de la dependencia con respecto al rendimiento y la fiabilidad de la red.• Debilidad en la seguridad.• Administración y mantenimiento más complejos del sistema. 

ELEMENTO DESCRIPCIÓN

Software Existe poco software para los sistemas distribuidos en la actualidad.

Redes La red se puede saturar o causar otros problemas.

seguridad Un acceso sencillo también aplica a datos secretos.

2.1.5. Sistemas Operativos Distribuidos ExistentesEntre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: 

Sprite

Solaris-MC

Mach

Chorus

Spring

Amoeba

Taos

Seti, etc.

2.2. ESTRUCTURA Y COMPONENTES DEL SISTEMA

Como ya se definió anteriormente un sistema operativo distribuido consiste en una colección de computadores conectados por una red de comunicaciones, que el usuario percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). El usuario accesa los recursos remotos de la misma manera en que accesa recursos locales, o un grupo de computadores que usan un software para conseguir un objetivo en común. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se descompone otro componente debe de ser capaz de reemplazarlo.El objetivo de un sistema distribuido es integrar los recursos y servicios conectados por una red de comunicación. Desde el punto de vista del usuario y de las aplicaciones, un sistema distribuido proporciona una visión de máquina única y no difiere de uno centralizado (Figura 1). En cambio, el punto de vista del diseñador (el sistema como gestor de los recursos) la estructura interna está

Page 13: Investigacion de Sistemas Distribuidos

condicionada por la distribución física de los recursos (Figura 2).

Figura 1: Un sistema distribuido desde el punto de vista del usuario.

Lo habitual es que el sistema operativo integre los servicios de red, que ofrecen protocolos abiertos de comunicación, como es el caso de TCP y UDP. Sobre estos se disponen los soportes adicionales para la comunicación distribuida, como es el caso de RPC, RMI o DSM, y los servicios específicos que proporcionan las propiedades del sistema distribuido (servicios middleware), como es el caso de la gestión de tiempos, eventos y estado global, sobre los que se asientan las aplicaciones.

 Figura 2: Estructura de un sistema distribuido.El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts (Local Area Network), centenas de hosts (Metropolitan Area Network), y miles o millones de hosts (Internet). 

 Ejemplo de sistema distribuido simple 

2.2.1. Estructura General De Los DOS

Page 14: Investigacion de Sistemas Distribuidos

Menos autonomía entre computadoresDa la impresión de que solo hay un sistema operativo controlando la red

2.2.2. Estructura General De Un Sistema Distribuido Basado En Middleware

Middelware es una capa adicional por encima de un sistema operativo de red, que implementa servicios de propósito general. Middlware es una capa de software intermedia. En los Sistemas distribuidos basados en Middlware, los protocolos usados por cada capa middlware deben ser los mismos así como las interfaces que ofrecen a las aplicaciones.Middleware es un software que enmascara el hardware y los sistemas operativos. Se aplican en los sistemas distribuidos como sistema de comunicación que proporciona alto grado

Page 15: Investigacion de Sistemas Distribuidos

de transparencia, administración de recursos por nodos, no tienen el mismo sistema operativo en todos los nodos y ofrece n numero de copias del sistema operativo.

En sistemas distribuidos: El Middleware es un software de conectividad que permite ofrecer un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas. Funciona como una capa de abstracción de software distribuida que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red).El Middleware nos abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas.

2.3. MODELOS DE SISTEMA

La mayoría de los sistemas distribuidos se componen de uno o más variedades de modelos de arquitectura. El modelo cliente-servidor es el más usado; el Web y otros servicios de Internet tales como ftp, news, mail así como el DNS se basan en este modelo, así como el sistema local de archivos y otros más.

Los servicios de DNS tiene un número de usuarios grande y tratan con una gran cantidad de información se basan en múltiples servidores, el uso de particiones sobre los datos y la replicación para facilitar la disponibilidad y la tolerancia frente a fallos. El uso de cache en los clientes y servidores Proxy se encuentran ampliamente extendido para mejorar las prestaciones de un servicio. En el modelo de proceso de igual a igual, los procesos de aplicaciones distribuidas se comunican uno con el otro directamente sin emplear servidores intermediarios.La posibilidad de mover código de un proceso a otro ha desembocado en algunas variantes del modelo cliente servidor. El ejemplo más común de esto es el APPLET cuyo código es aportado por un servidor Web para ejecutarse en un cliente, proporcionando funcionalidades no disponibles en el cliente y la mejora de ciertas prestaciones debido a la proximidad con el cliente.La existencia de computadoras portátiles, PDA y otros dispositivos digitales y su integración en los sistemas distribuidos permite que los usuarios accedan a servicios locales y de Internet aunque estén lejos de su computadora de sobremesa. La presencia de dispositivos de computación con

Page 16: Investigacion de Sistemas Distribuidos

posibilidades de comunicación inalámbrica en aparatos cotidianos como las máquinas lavadoras o las alarmas antirrobo les permite dar servicios accesibles desde una red inalámbrica en el hogar. Una característica de los dispositivos móviles de los sistemas distribuidos es que pueden estar conectados o desconectados impredeciblemente, conduciendo a requisitos de descubrimiento de servicios mediante los que los servidores móviles pueden ofrecer sus servicios y los clientes móviles pueden buscarlos.Existen modelos de interacción, fallo y seguridad que identifican las características comunes de los componentes básicos con que se construyen los sistemas distribuidos. El modelo de interacción tiene que ver con las prestaciones de los procesos y los canales de comunicación y con la ausencia de un reloj global. También define un modelo asíncrono como uno en el que no hay límites en el tiempo de ejecución de un proceso, el tiempo de reparto de un mensaje, y la deriva de los relojes; siendo así como se comporta la Internet.El modelo de fallo clasifica los fallos de los procesos y los canales de comunicación básicos en un sistema distribuido. El enmascaramiento es una técnica con la que se construye un servicio más fiable sobre otro menos fiable, de modo que se enmascaran algunos fallos que exhibe este último. En particular, se puede construir un sistema de comunicación fiable desde un canal de comunicación básico simplemente enmascarando sus fallos. Por ejemplo, sus fallos por omisión pueden enmascararse mediante la retransmisión de los mensajes perdidos. La integridad es una propiedad de la comunicación fiable, y requiere que un mensaje al ser recibido sea idéntico al que se envió. La validez es otra propiedad; requiere que cualquier mensaje puesto en el búfer de mensajes de salida se reparta eventualmente en el búfer de mensajes entrantes.El modelo de seguridad identifica las posibles amenazas a los procesos y los canales de comunicación en un sistema distribuido abierto. Algunas de estas amenazas se relacionan con la integridad: Los usuarios mal intencionados pueden modificar o repetir los mensajes. Otros amenazan su privacidad. Otra cuestión de privacidad es la autentificación del principal (usuario o servidor) en cuyo nombre se envía un mensaje. Los canales seguros emplean técnicas criptográficas para asegurar la privacidad y la integridad de los mensajes y para autenticar pares de principales en una comunicación.

2.4. ESTÁNDAR ISO OSI

Capas, in

Page 17: Investigacion de Sistemas Distribuidos

terfaces y protocolos en el modelo OSI.

Para el envío de mensajes se usa el estándar ISO OSI (interconexión de sistemas abiertos), un modelo por capas para la comunicación de sistemas abiertos. Las capas proporcionan varias interfaces con diferentes niveles de detalle, siendo la última la más general. El estándar OSI define las siguientes siete capas: física, enlace de datos, red, transporte, sesión, presentación y aplicación. El modelo OSI distingue dos tipos de protocolos, los orientados hacia las conexiones y los protocolos sin conexión. En los primeros, antes de cualquier envío de datos se requiere una conexión virtual, que tras el envío deben finalizar. Los protocolos sin conexión no requieren este paso previo, y los mensajes se envían en forma de datagramas. 

Page 18: Investigacion de Sistemas Distribuidos

2.5. REDES E INTERCONEXIÓN DE REDES

Las redes de paquetes y los protocolos a capas son la base de las comunicaciones en los sistemas distribuidos. Las redes de área local se basan en la difusión paquetes en un medio común; y Ethernet es la tecnología dominante. Las redes de área amplia se basan en la conmutación de paquetes para encaminar los paquetes hacia sus destinos a través de la red conectada. El encadenamiento es el mecanismo clave y son varios los algoritmos de encaminamiento utilizados, de los cuales el de vectores de distancia es el más básico pero efectivo. Es necesario un control de la congestión para prevenir el desbordamiento de los búferes en el receptor y en los nodos intermedios.Las interredes se construyen colocando una capa virtual de protocolo interred sobre la colección de redes unidas por los routers. Los protocolos de Internet TCP/IP hacen posible que los computadores en Internet se comuniquen con cualquier otro de una forma uniforme, independientemente de que se encuentren en la misma red de área local o en países diferentes. Los estándares de Internet incluyen varios protocolos del nivel de aplicación que resultan adecuados para su uso en aplicaciones distribuidas a gran escala. IPv6 tiene el espacio de direccionamiento necesario para la evolución futura de Internet y aporta los medios para satisfacer los requisitos de las nuevas aplicaciones tales como calidad de servicio y seguridad.Los usuarios móviles tienen soporte IP móvil en su deambular por áreas amplias, y por las LAN inalámbricas basadas en el IEEE 802.11 para una conectividad local. ATM ofrece un ancho de banda muy alto en comunicaciones asíncronas basadas en circuitos virtuales con calidad de

Page 19: Investigacion de Sistemas Distribuidos

servicio garantizada.

 

2.6. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS

La comunicación en grupo tiene que permitir la definición de grupos, así como características propias de los grupos, como la distinción entre grupos abiertos o que permiten el acceso y cerrados que lo limitan, o como la distinción del tipo de jerarquía dentro del grupo. Igualmente, los grupos han de tener operaciones relacionadas con su manejo, como la creación o modificación.Para los sistemas distribuidos de área amplia relativamente lentos, se utilizan los protocolos con capas orientadas hacia la conexión, como OSI y TCP/IP, puesto que el problema principal por resolver es el transporte confiable de los bits a través de líneas físicas y pobres.Para los sistemas distribuidos basados en LAN, los protocolos con capas se utilizan muy poco. En vez de ellos, se adopta por lo general un modelo mucho más sencillo, donde el cliente envía un mensaje al servidor y éste envía de regreso una respuesta al cliente. Se puede lograr un desempeño mucho mejor al eliminar la mayor parte de las capas. Muchos de los aspectos del diseño en estos sistemas de transferencia de mensajes se refieren a las primitivas de comunicación: bloqueo vs. No bloqueo, almacenamiento en buffer vs. No almacenamiento, confiable vs. No confiable, etc.El problema con el modelo básico cliente-servidor es que, desde el punto de vista conceptual, la comunicación entre procesos se maneja como E/S. Para presentar mejor, se utiliza mucho la llamada a procedimientos remotos (RPC). Con RPC, un proceso cliente que se ejecuta en una máquina llama a un procedimiento que se ejecuta en otra. El sistema de tiempo de ejecución, inmerso en los procedimientos de resguardo, maneja la recolección de parámetros, la construcción de mensajes y la interfaz con el núcleo para el desplazamiento real de los bits.Aunque RPC está un paso delante de la simple transferencia de mensajes, tiene sus propios problemas. Hay que localizar al servidor correcto. Es difícil la transferencia de los apuntadores y estructuras de datos complejos. Es difícil utilizar variables globales. La semántica precisa de RPC es un tanto truculenta, puesto que los clientes y servidores pueden fallar en forma independiente entre si.

Page 20: Investigacion de Sistemas Distribuidos

2.6.1. Sincronización

La sincronización en sistemas de un único ordenador no requiere ninguna consideración en el diseño del sistema operativo, ya que existe un reloj único que proporciona de forma regular y precisa el tiempo en cada momento. Sin embargo, los sistemas distribuidos tienen un reloj por cada ordenador del sistema, con lo que es fundamental una coordinación entre todos los relojes para mostrar una hora única. Los osciladores de cada ordenador son ligeramente diferentes, y como consecuencia todos los relojes sufren un desfase y deben ser sincronizados continuamente. La sincronización no es trivial, porque se realiza a través de mensajes por la red, cuyo tiempo de envío puede ser variable y depender de muchos factores, como la distancia, la velocidad de transmisión o la propia saturación de la red, etc.

2.6.2. El reloj

La sincronización no tiene por qué ser exacta, y bastará con que sea aproximadamente igual en todos los ordenadores. Hay que tener en cuenta, eso sí, el modo de actualizar la hora de un reloj en particular. Es fundamental no retrasar nunca la hora, aunque el reloj adelante. En vez de eso, hay que ralentizar la actualización del reloj, frenarlo, hasta que alcance la hora aproximadamente.

2.6.3. Otros problemas de sincronización

El reloj es únicamente uno de tantos problemas de sincronización que existen en los sistemas distribuidos. A continuación planteamos otros problemas relacionados con la sincronización.En el momento de modificar unos datos compartidos, los procesos deben lograr la exclusión mutua que garantice que dos procesos no modifiquen los datos a la vez.Algunos algoritmos distribuidos requieren que un proceso funcione como coordinador. Es necesario establecer ciertos algoritmos de elección de estos procesos.Es necesario ocultar las técnicas de sincronización mediante la abstracción de las transacciones atómicas, que permitan a los programadores salvar los detalles de la programación con sincronización. Soluciones frente a bloqueos son bastante más complejas que en sistemas con un único procesador. 

Page 21: Investigacion de Sistemas Distribuidos

2.7. PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS

En muchos sistemas distribuidos, es posible tener muchos hilos de control dentro de un proceso, ya que un proceso está formado por un entorno de ejecución de hilos.Aunque los hilos de control no son una característica inherente de los sistemas operativos distribuidos, la mayoría de éstos tienen un paquete de hilos. Un hilo es un tipo de proceso ligero, que comparte el espacio de direcciones con uno o más hilos. Cada hilo tiene su propio contador de programa, su propia pila y se planifica de forma independiente de los demás hilos. Cuando un hilo hace una llamada al sistema con bloqueo, los otros hilos del mismo espacio de direcciones no se ven afectados. Los paquetes de hilos se pueden implantar en el espacio del usuario o en el espacio del núcleo, pero de cualquier forma hay que resolver algunos problemas.Se utilizan por lo común dos modelos de organización de los procesadores: el modelo de estación de trabajo y el de la pila de procesadores. En el primero, cada usuario tiene su propia estación de trabajo y a veces puede ejecutar procesos en las estaciones de trabajo inactivas. En el segundo, todas las instalaciones de cómputo son un recurso compartido. Los procesadores se asignan de manera dinámica a los usuarios conforme sea necesario y se regresen a la pila al terminar el trabajo. También son posibles lo modelos híbridos.Dada una colección de procesadores, se necesita un algoritmo para signar los procesos a los procesadores. Tales algoritmos pueden ser deterministas o heurísticos, centralizados o distribuidos, óptimos o subóptimos, locales o globales, iniciados por el emisor o por el receptor. Aunque los procesos se planifican por lo general de manera independiente, se puede mejorar el desempeño mediante la coplanificación, para garantizar que los procesos que deben comunicarse se ejecutan al mismo tiempo.La tolerancia de fallas es importante en muchos sistemas distribuidos. Se puede lograr mediante la redundancia: existen tres tipos posibles; 1) redundancia de la información, se agregan algunos bits para poder recuperar los bits revueltos, 2) redundancia del tiempo, se realiza una acción, y entonces, en caso necesario, se vuelve a realizar, 3) la redundancia física, se agrega un equipo adicional para permitir que el sistema como un todo tolere la pérdida o el mal funcionamiento de algunos componentes; la réplica activa: es una técnica muy conocida para proporcionar la tolerancia de fallas mediante la redundancia física; la réplica con respaldo primario: la idea esencial del método de respaldo primario es que en cualquier instante, un servidor es el primario y realiza todo el trabajo. Si el primero falla, el respaldo ocupa su lugar.

Por último, los sistemas distribuidos de tiempo real también son importantes. Vienen en dos tipos: tiempo real suave y tiempo real duro. Los sistemas activados por eventos son controlados por las interrupciones., mientras que los sistemas activados por el tiempo muestrean los dispositivos externos a intervalos fijos de tiempo. La comunicación de tiempo real debe utilizar protocolos predecibles, como los anillos de fichas o TDMA. Es posible la planificación dinámica y estática de las tareas. La planificación dinámica ocurre al tiempo de ejecución; la planificación estática ocurre de antemano.

2.8. SEGURIDAD

Los ataques a la seguridad son parte de la realidad de los sistemas distribuidos. Es esencial proteger los canales e interfaces de comunicación de cualquier sistema que trate con información que sea susceptible de ser atacada. Los protocolos de seguridad se diseñan cuidadosamente para evitar trampas. El diseño de los sistemas seguros parte de un listado de premisas de ataque y un conjunto de “peores casos posibles”. Los mecanismos de seguridad se basan en la criptografía de

Page 22: Investigacion de Sistemas Distribuidos

clave pública y de clave secreta. Los algoritmos criptográficos disfrazan los mensajes de forma que no puede revestirse el proceso sin el conocimiento de la clave de desencriptación. La criptografía de clave secreta es simétrica: la misma clave sirve tanto para la encriptación como para la desencriptación. Si dos partes comparten una clave secreta, podrán cambiar información encriptada sin riesgo de que sea descubierta o modificada y con garantías de autenticidad.La criptografía de clave pública es asimétrica: se utilizan claves separadas para la encriptación y la desencriptación, y el conocimiento de una de ellas no implica el de la otra. Una de ellas se hace pública, de modo que cualquiera puede enviar mensajes seguros al propietario de la correspondiente clave privada y permitiendo al poseedor de la clave privada firmar mensajes y certificados. Los certificados pueden servir como credenciales para el uso de recursos protegidos. Los recursos se protegen mediante mecanismos de control de acceso. Los esquemas de control de acceso asignan derechos a principales (propietarios de las credenciales) para realizar operaciones sobre objetos y colecciones de objetos distribuidos. Se pueden mantener los derechos en listas de control de acceso (ACL) asociados a conjuntos de objetos o pueden mantenerse en manos de los principales bajo la forma de habilitaciones: claves infalsificables de acceso a conjuntos de recursos. Las habilitaciones son una forma conveniente de delegación de derechos de acceso son difíciles de revocar. Los cambios en una ACL tienen efecto inmediatamente, revocando los derechos de acceso previos, pero son más difíciles y costosas de manejar que las habilitaciones.

2.9. SISTEMA DE ARCHIVOS DISTRIBUIDOS

A diferencia de los sistemas de archivos clásicos, un sistema de archivos distribuido debe ser descentralizado, transparente y tolerante a fallos.

2.9.1. Transparencia

El problema más importante a resolver es el modo de que todos los ordenadores puedan acceder a todos los archivos del sistema. Para ello es necesario que todos los ordenadores lleven siempre y en todo momento una copia actualizada de la estructura de archivos y directorios. Si esta estructura oculta la localización física de los archivos entonces hemos cumplido el criterio de transparencia.

2.9.2. Fallos del sistema

Que el sistema de archivos sea tolerante a fallos implica que el sistema debe guardar varias copias del mismo archivo en distintos ordenadores para garantizar la disponibilidad en caso de fallo del servidor original. Además, se ha de aplicar un algoritmo que nos permita mantener todas las copias actualizadas de forma consistente, o un método alternativo que sólo nos permita acceder al archivo actualizado, como invalidar el resto de copias cuando en cualquiera de ellas se vaya a realizar una operación de escritura. El uso de memorias caché para agilizar el acceso a los archivos también es recomendable, pero este caso requiere analizar con especial atención la consistencia del sistema.

Las características fundamentales de diseño para sistemas de archivos distribuidos son:• La utilización efectiva de la memoria caché en el cliente para conseguir iguales prestaciones o mejores que las de los sistemas de archivos locales.• El mantenimiento de la consistencia entre múltiples copias de archivos en las cachés de los clientes cuando son actualizadas.• La recuperación después de un fallo en el servidor o en el cliente.

Page 23: Investigacion de Sistemas Distribuidos

• El alto rendimiento en la lectura y escritura de archivos de todos los tamaños.• La escalabilidad. El corazón de cualquier sistema distribuido es el sistema distribuido de archivos. El diseño de dicho sistema comienza en la interfaz:• ¿Cuál es el modelo de archivo y qué funcionalidad debe proporcionar? Por regla, la naturaleza de un archivo no debe ser diferente en el caso distribuido y en el caso de un procesador. Como es usual, una parte importante de la interfaz la forman los nombres de los archivos y el sistema de directorios. El problema de los nombres trae consigo el aspecto de la transparencia.La implantación de un sistema distribuido de archivos implica la toma de varias decisiones: ver si el sistema es con estado o sin estado, si se debe hacer el ocultamiento y la forma de administrar la réplica de archivos. Cada una de estas decisiones tiene consecuencias de gran alcance para los diseñadores y los usuarios.Los sistemas de archivos distribuidos son empleados intensamente en la computación de las organizaciones y sus prestaciones han estado sujetas a muchos ajustes.Los futuros sistemas distribuidos de archivos probablemente tengan que enfrentar los cambios en la tecnología del hardware, la escalabilidad, los sistemas de área amplia, los usuarios móviles y la tecnología de fallas, así como la introducción de multimedia.

2.10. MEMORIA COMPARTIDA DISTRIBUIDA

La memoria compartida distribuida o DSM es una abstracción que se propone como alternativa a la comunicación por mensajes.Los sistemas de cómputo con varios CPU caen en alguna de dos categorías: los que tienen memoria compartida y los que no. Las máquinas de memoria compartida (multiprocesadores) son más fáciles de programar pero más difíciles de construir, mientras que las máquinas sin memoria compartida (multicomputadoras) son más difíciles de programar pero más fáciles de construir. La memoria distribuida compartida es una técnica para facilitar la programación de las multicomputadoras, simulando la memoria compartida en ellas. Los pequeños multiprocesadores se basan con frecuencia en un bus, pero los de gran tamaño utilizan conmutadores. Los protocolos utilizados por los de gran tamaño requieren estructuras de datos y algoritmos complejos para mantener la consistencia de los cachés.

Page 24: Investigacion de Sistemas Distribuidos

2.10.1. Memoria compartida basada en páginas

El esquema de DSM propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras. El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.

2.10.2. Memoria compartida basada en objetos

Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.

Page 25: Investigacion de Sistemas Distribuidos

2.10.3. Modelos de consistencia

La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura. Si con cada escritura es necesario actualizar todas las copias, el envío de las páginas por la red provoca que el tiempo de espera aumente demasiado, convirtiendo este método en impracticable. Para solucionar este problema se proponen diferentes modelos de consistencia, que establezcan un nivel aceptable de acercamiento tanto a la consistencia como al rendimiento. Nombramos algunos modelos de consistencia, del más fuerte al más débil: consistencia estricta, secuencial, causal, PRAM, del procesador, débil, de liberación y de entrada.

Las principales cuestiones de diseño e implementación son la estructura DSM, la forma de sincronizar las aplicaciones, el modelo de consistencia de memoria, la utilización de protocolos de escritura actualizante o de invalidación de escritura, la granularidad de la compartición y el thrashing.• DSM puede estructurarse como una serie de bytes, como una colección de objetos compartidos o como una colección de datos inmutables como las tuplas.• Las aplicaciones en DSM necesitan la sincronización para cumplir los requisitos de consistencia específicos de la aplicación. Para este propósito utilizan objetos como los bloqueos, implementados utilizando paso de mensajes por razones de eficiencia.• El modelo de consistencia más estricto implementado en los sistemas DSM es la consistencia secuencial. Debido a su costo, se han desarrollado otros modelos de consistencia más débiles, como la coherencia y la consistencia relajada. La consistencia relajada permite a la implementación utilizar los objetos de sincronización para conseguir mayor eficiencia sin romper las restricciones de consistencia del nivel de aplicación. Existen otros modelos de consistencia, incluyendo la consistencia de entrada, la de ámbito y la débil, todas ellas basadas en la sincronización.• Los protocolos de escritura actualizante son aquellos en los que las actualizaciones de los datos son propagadas a todas sus copias. Normalmente son implementadas en hardware, a pesar de que también existen implementaciones software que utilizan multidifusiones totalmente ordenadas. Los protocolos de invalidación de escritura evitan la lectura de datos no válidos mediante la invalidación de todas las copias cuando los datos son actualizados. Estos protocolos se adaptan mejor a los sistemas DSM basados en páginas, para los que la escritura actualizante puede ser una opción costosa.• La granularidad de DSM modifica la probabilidad de contención entre procesos con compartición falsa de datos ya que dichos están contenidos en la misma unidad de compartición. También afecta el costo por byte de la transferencia de actualizaciones entre computadores.• El thrashing puede ocurrir cuando se utiliza invalidación de escritura. Consiste en la transferencia repetida de datos entre procesos competidores a costa del progreso de la aplicación. Este efecto puede ser reducido mediante la sincronización a nivel de aplicación, permitiendo a los computadores retener una página durante una mínima cantidad de tiempo, o mediante el etiquetado a los datos de forma que las lecturas y las escrituras sean concebidas conjuntamente.

Page 26: Investigacion de Sistemas Distribuidos

Sistemas Operativos distribuidos.

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.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

Características de los Sistemas Operativos distribuidos:

        Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .

        Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.

        Objetivo clave es la transparencia.

        Generalmente proporcionan medios para la compartición global de recursos.

        Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).

 

Page 27: Investigacion de Sistemas Distribuidos

http://www.google.co.ve/search?q=sistemas+operativos+distribuidos&hl=es-419&tbo=u&biw=1366&bih=653&tbm=isch&source=univ&sa=X&ei=64D3UNi6DOqQ0QHk04GYCA&ved=0CCoQsAQ

http://somultiprocesador-y-distribuidos.wikispaces.com/Sistemas+Operativos+Distribuidos

http://www.monografias.com/trabajos6/sidi/sidi.shtml

http://www.slideshare.net/carlos7489/sistemas-operativos-distribuidos

Introducción Histórica

En el inicio de la era de la informática las computadoras eran grandes y caras. Debido a su escasez y coste, éstas funcionaban de forma independiente entre ellas.

A partir de los años 70, surgen los primeros miniordenadores, que competirían con los grandes ordenadores tanto por las prestaciones como por su precio, con lo que se extendió su uso. Los grandes sistemas centralizados fueron dejando paso lentamente a sistemas mucho más descentralizados, y formados por varios ordenadores o a sistemas multiprocesador. Pronto surgieron nuevas necesidades de interconexión de los equipos, y se desarrollaron las redes de área local (LAN), como Ethernet o Token ring. En la actualidad, Internet es la red de mayor tamaño y la más usada, y mantiene un impresionante ritmo de crecimiento. Además, Internet es la base de muchos nuevos proyectos de sistemas distribuidos.

Aunque los actuales sistemas de red solucionan parte de las necesidades actuales de comunicación entre computadoras, tienen importantes limitaciones, y no son aplicables a una gran cantidad de problemas. Por ello surge la necesidad de crear sistemas distribuidos que sustituyan a los actuales sistemas de red o a los sistemas multiprocesadores.

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

Page 28: Investigacion de Sistemas Distribuidos

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.

Page 29: Investigacion de Sistemas Distribuidos

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.

3. El estándar ISO OSI

Para el envío de mensajes se usa el estándar ISO OSI (interconexión de sistemas abiertos), un modelo por capas para la comunicación de sistemas abiertos. Las capas proporcionan varias interfaces con diferentes niveles de detalle, siendo la última la más general. El estándar OSI define las siguientes siete capas: física, enlace de datos, red, transporte, sesión, presentación y aplicación.

El modelo OSI distingue dos tipos de protocolos, los orientados hacia las conexiones y los protocolos sin conexión. En los primeros, antes de cualquier envío de datos se requiere una conexión virtual, que tras el envío deben finalizar. Los protocolos sin conexión no requieren este paso previo, y los mensajes se envían en forma de datagramas.

4. Modo de transmisión asíncrona ATM

El modo de transmisión asíncrona o ATM proporciona un rápido modo de transmisión. Las altas velocidades se alcanzan prescindiendo de la información de control de flujo y de control de errores en los nodos intermedios de la transmisión. ATM usa el modo orientado a conexión, y permite la transmisión de diferentes tipos de información, como voz, vídeo, datos, etc.

El modelo cliente-servidor basa la comunicación en una simplificación del modelo OSI. Las siete capas que proporciona producen un desaprovechamiento de la velocidad de transferencia de la red, con lo que sólo se usarán tres capas: física (1), enlace de datos (2) y solicitud/respuesta (5). Las transferencias se basan en el protocolo solicitud/respuesta y se elimina la necesidad de conexión.

RPC

Otro paso en el diseño de un sistema operativo distribuido plantea las llamadas a procedimientos remotos o RPCs. Los RPC amplían la llamada local a procedimientos, y los generalizan a una llamada a un procedimiento localizado en cualquier lugar de todo el sistema distribuido. En un sistema distribuido no se debería distinguir entre llamadas locales y RPCs, lo que favorece en gran medida la transparencia del sistema.

Una de las dificultades más evidentes a las que se enfrenta el RPC es el formato de los parámetros de los procedimientos. Un ejemplo para ilustrar este problema es la posibilidad de que en un sistema distribuido formado por diferentes tipos de ordenadores, un ordenador con formato little endian llamara a un procedimiento de otro ordenador con formato big endian, etc. Este problema se podría solucionar si tenemos en cuenta que ambos programas conocen el tipo de datos de los parámetros, o estableciendo un estándar en el formato de los parámetros, de forma que sea usado de forma única.

Otro problema de peor solución es el paso de apuntadores como parámetros. Debido a que los apuntadores guardan una dirección del espacio de direcciones local, el procedimiento que recibe el apuntador como parámetro no puede usar inmediatamente el apuntador, ya que no tiene acceso a los datos, que para él son remotos. En el tema 7 se describirá la memoria compartida, que propone una solución a este problema.

Page 30: Investigacion de Sistemas Distribuidos

Por último queda por solucionar la tolerancia a fallos. Una llamada a un procedimiento remoto puede fallar por motivos que antes no existían, como la pérdida de mensajes o el fallo del cliente o del servidor durante la ejecución del procedimiento.

La limitación del RPC más clara en los sistemas distribuidos es que no permite enviar una solicitud y recibir respuesta de varias fuentes a la vez, sino que la comunicación se realiza únicamente entre dos procesos. Por motivos de tolerancia a fallos, bloqueos, u otros, sería interesante poder tratar la comunicación en grupo.

5. Comunicación en grupo

La comunicación en grupo tiene que permitir la definición de grupos, así como características propias de los grupos, como la distinción entre grupos abiertos o que permiten el acceso y cerrados que lo limitan, o como la distinción del tipo de jerarquía dentro del grupo. Igualmente, los grupos han de tener operaciones relacionadas con su manejo, como la creación o modificación.

Sincronización

La sincronización en sistemas de un único ordenador no requiere ninguna consideración en el diseño del sistema operativo, ya que existe un reloj único que proporciona de forma regular y precisa el tiempo en cada momento. Sin embargo, los sistemas distribuidos tienen un reloj por cada ordenador del sistema, con lo que es fundamental una coordinación entre todos los relojes para mostrar una hora única. Los osciladores de cada ordenador son ligeramente diferentes, y como consecuencia todos los relojes sufren un desfase y deben ser sincronizados continuamente. La sincronización no es trivial, porque se realiza a través de mensajes por la red, cuyo tiempo de envío puede ser variable y depender de muchos factores, como la distancia, la velocidad de transmisión o la propia saturación de la red, etc.

El reloj

La sincronización no tiene por qué ser exacta, y bastará con que sea aproximadamente igual en todos los ordenadores. Hay que tener en cuenta, eso sí, el modo de actualizar la hora de un reloj en particular. Es fundamental no retrasar nunca la hora, aunque el reloj adelante. En vez de eso, hay que ralentizar la actualización del reloj, frenarlo, hasta que alcance la hora aproximadamente. Existen diferentes algoritmos de actualización de la hora, tres de ellos se exponen brevemente a continuación.

Algoritmo de Lamport

Tras el intento de sincronizar todos los relojes, surge la idea de que no es necesario que todos los relojes tengan la misma hora exacta, sino que simplemente mantengan una relación estable de forma que se mantenga la relación de qué suceso ocurrió antes que otro suceso cualquiera.

Este algoritmo se encarga exclusivamente de mantener el orden en que se suceden los procesos. En cada mensaje que se envía a otro ordenador se incluye la hora. Si el receptor del mensaje tiene una hora anterior a la indicada en el mensaje, utiliza la hora recibida incrementada en uno para actualizar su propia hora.

Algoritmo de Cristian

Consiste en disponer de un servidor de tiempo, que reciba la hora exacta. El servidor se encarga de enviar a cada ordenador la hora. Cada ordenador de destino sólo tiene que sumarle el tiempo de transporte del mensaje, que se puede calcular de forma aproximada.

Algoritmo de Berkeley

La principal desventaja del algoritmo de Cristian es que todo el sistema depende del servidor de tiempo, lo cual no es aceptable en un sistema distribuido fiable.

El algoritmo de Berkeley usa la hora de todos los ordenadores para elaborar una media, que se reenvía para que cada equipo actualice su propia hora ralentizando el reloj o adoptando la nueva hora, según el caso.

6. Otros problemas de sincronización

El reloj es únicamente uno de tantos problemas de sincronización que existen en los sistemas distribuidos. A continuación planteamos otros problemas relacionados con la sincronización.

En el momento de modificar unos datos compartidos, los procesos deben lograr la exclusión mutua que garantice que dos procesos no modifiquen los datos a la vez.

Algunos algoritmos distribuidos requieren que un proceso funcione como coordinador. Es necesario establecer ciertos algoritmos de elección de estos procesos.

Page 31: Investigacion de Sistemas Distribuidos

Es necesario ocultar las técnicas de sincronización mediante la abstracción de las transacciones atómicas, que permitan a los programadores salvar los detalles de la programación con sincronización.

Soluciones frente a bloqueos son bastante más complejas que en sistemas con un único procesador.

7. Sistema de archivos

A diferencia de los sistemas de archivos clásicos, un sistema de archivos distribuido debe ser descentralizado, transparente y tolerante a fallos.

Transparencia

El problema más importante a resolver es el modo de que todos los ordenadores puedan acceder a todos los archivos del sistema. Para ello es necesario que todos los ordenadores lleven siempre y en todo momento una copia actualizada de la estructura de archivos y directorios. Si esta estructura oculta la localización física de los archivos entonces hemos cumplido el criterio de transparencia.

Fallos del sistema

Que el sistema de archivos sea tolerante a fallos implica que el sistema debe guardar varias copias del mismo archivo en distintos ordenadores para garantizar la disponibilidad en caso de fallo del servidor original. Además, se ha de aplicar un algoritmo que nos permita mantener todas las copias actualizadas de forma consistente, o un método alternativo que sólo nos permita acceder al archivo actualizado, como invalidar el resto de copias cuando en cualquiera de ellas se vaya a realizar una operación de escritura. El uso de memorias cache para agilizar el acceso a los archivos también es recomendable, pero este caso requiere analizar con especial atención la consistencia del sistema.

Modelos de acceso

Debido a la complejidad del acceso a los archivos a través de todo el sistema distribuido, surgen dos modelos para el acceso a los archivos: el modelo carga/descarga, y el modelo de acceso remoto. El primer modelo simplifica el acceso permitiendo únicamente las operaciones de cargar y descargar un archivo. El acceso a cualquier parte del archivo implica solicitar y guardar una copia local del archivo completo, y sólo se puede escribir de forma remota el archivo completo. Este método sería especialmente ineficaz a la hora de realizar pequeñas modificaciones en archivos muy grandes, como podrían ser bases de datos. El modelo de acceso remoto es mucho más complejo, y permite todas las operaciones típicas de un sistema de archivos local.

Memoria compartida distribuida

La memoria compartida distribuida o DSM es una abstracción que se propone como alternativa a la comunicación por mensajes.

Memoria compartida basada en páginas

El esquema de DSM propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras. El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.

Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.

Memoria compartida basada en objetos

Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que

Page 32: Investigacion de Sistemas Distribuidos

todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.

Modelos de consistencia

La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura. Si con cada escritura es necesario actualizar todas las copias, el envío de las páginas por la red provoca que el tiempo de espera aumente demasiado, convirtiendo este método en impracticable. Para solucionar este problema se proponen diferentes modelos de consistencia, que establezcan un nivel aceptable de acercamiento tanto a la consistencia como al rendimiento. Nombramos algunos modelos de consistencia, del más fuerte al más débil: consistencia estricta, secuencial, causal, PRAM, del procesador, débil, de liberación y de entrada.

8. Bibliografía

Andrew S. Tanenbaum: "Sistemas Operativos Distribuidos", Prentice Hall (1996).

George Coulouris, Jean Dollimore, Tim Kindberg: "Distributed Systems, Concepts and Design", Addison-Wesley (1994).