img no disponible

Unidad 1 Los sistemas operativos en ambientes distribuidos


1.1Sistemas Distribuidos

La computación desde sus inicios ha sufrido muchos cambios, desde los grandes ordenadores que permitían realizar tareas en forma limitada y de uso un tanto exclusivo de organizaciones muy selectas, hasta los actuales ordenadores ya sean personales o portátiles que tienen las mismas e incluso mayores capacidades que los primeros y que están cada vez más introducidos en el quehacer cotidiano de una persona.
Los mayores cambios se atribuyen principalmente a dos causas, que se dieron desde las décadas de los setenta:
El desarrollo de los microprocesadores, que permitieron reducir en tamaño y costo a los ordenadores y aumentar en gran medida las capacidades de los mismos y su acceso a más personas.
El desarrollo de las redes de área local y de las comunicaciones que permitieron conectar ordenadores con posibilidad de transferencia de datos a alta velocidad.
Es en este contexto que aparece el concepto de “Sistemas Distribuidos” que se ha popularizado tanto en la actualidad y que tiene como ámbito de estudio las redes como por ejemplo: Internet, redes de teléfonos móviles, redes corporativas, redes de empresas, etc.
En consecuencia, el presente trabajo que lleva el título de “Sistemas Distribuidos”, tiene como principal objetivo: “describir panorámicamente los aspectos relevantes que están involucrados en los Sistemas Distribuidos”.
Para lograr el objetivo planteado se ha estructurado el trabajo de la siguiente manera:
Definición:
“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”.
Introducción.- Donde especificamos el preámbulo del tema, el objetivo del trabajo y el contenido del mismo.
Desarrollo.- Donde se describen los aspectos involucrados en los sistemas distribuidos.
Referencias.- Donde especificamos las fuentes que fueron consultadas para el presente estudio.
Características:
Concurrencia.- Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.
Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes.
Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.
Evolución:
Procesamiento central (Host).- Uno de los primeros modelos de ordenadores interconectados, llamados centralizados, donde todo el procesamiento de la organización se llevaba a cabo en una sola computadora, normalmente un Mainframe, y los usuarios empleaban sencillos ordenadores personales.
Los problemas de este modelo son:
Cuando la carga de procesamiento aumentaba se tenía que cambiar el hardware del Mainframe, lo cual es más costoso que añadir más computadores personales clientes o servidores que aumenten las capacidades.
El otro problema que surgió son las modernas interfases gráficas de usuario, las cuales podían conllevar a un gran aumento de tráfico en los medios de comunicación y por consiguiente podían colapsar.
Grupo de Servidores.- Otro modelo que entró a competir con el anterior, también un tanto centralizado, son un grupo de ordenadores actuando como servidores, normalmente de archivos o de impresión, poco inteligentes para un número de Minicomputadores que hacen el procesamiento conectados a una red de área local.
Los problemas de este modelo son:
Podría generarse una saturación de los medios de comunicación entre los servidores poco inteligentes y los minicomputadores, por ejemplo cuando se solicitan archivos grades por varios clientes a la vez, podían disminuir en gran medida la velocidad de transmisión de información.
La Computación Cliente Servidor.- Este modelo, que predomina en la actualidad, permite descentralizar el procesamiento y recursos, sobre todo, de cada uno de los servicios y de la visualización de la Interfaz Gráfica de Usuario. Esto hace que ciertos servidores estén dedicados solo a una aplicación determinada y por lo tanto ejecutarla en forma eficiente.

 

1.1.1 Ventajas de los Sistemas Distribuidos
Con respecto a Sistemas Centralizados:
Una de las ventajas de los sistemas distribuidos es la economía, pues es mucho más barato, añadir servidores y clientes cuando se requiere aumentar la potencia de procesamiento.
El trabajo en conjunto. Por ejemplo: en una fábrica de ensamblado, los robots tienen sus CPUs diferentes y realizan acciones en conjunto, dirigidos por un sistema distribuido.
Tienen una mayor confiabilidad. Al estar distribuida la carga de trabajo en muchas máquinas la falla de una de ellas no afecta a las demás, el sistema sobrevive como un todo.
Capacidad de crecimiento incremental. Se puede añadir procesadores al sistema incrementando su potencia en forma gradual según sus necesidades.
Con respecto a PCs Independientes:
Se pueden compartir recursos, como programas y periféricos, muy costosos. Ejemplo: Impresora Láser, dispositivos de almacenamiento masivo, etc.
Al compartir recursos, satisfacen las necesidades de muchos usuarios a la vez. Ejemplo: Sistemas de reservas de aerolíneas.
Se logra una mejor comunicación entre las personas. Ejemplo: el correo electrónico.
Tienen mayor flexibilidad, la carga de trabajo se puede distribuir entre diferentes ordenadores.

DESVENTAJAS DE LOS SISTEMAS DISTRIBUIDOS
El principal problema es el software, es el diseño, implantación y uso del software distribuido, pues presenta numerosos inconvenientes. Los principales interrogantes son los siguientes:
¿Qué tipo de S. O., lenguaje de programación y aplicaciones son adecuados para estos sistemas?.
¿Cuánto deben saber los usuarios de la distribución?.
¿Qué tanto debe hacer el sistema y qué tanto deben hacer los usuarios?.
La respuesta a estos interrogantes no es uniforme entre los especialistas, pues existe una gran diversidad de criterios y de interpretaciones al respecto.
Otro problema tiene que ver con las redes de comunicación. Por ejemplo: -Perdida de mensajes, saturación en el tráfico, etc.
Un problema que puede surgir al compartir datos es la seguridad de los mismos.
En general se considera que las ventajas superan a las desventajas, si estas últimas se administran seriamente.

DESAFÍOS
Heterogeneidad de los componentes.- La interconexión, sobre todo cuando se usa Internet, se da sobre una gran variedad de elementos hardware y software, por lo cual necesitan de ciertos estándares que permitan esta comunicación. Los Middleware, son elementos software que permiten una abstracción de la programación y el enmascaramiento de la heterogeneidad subyacente sobre las redes. También el middleware proporciona un modelo computacional uniforme.
Extensibilidad.- Determina si el sistema puede extenderse y reimplementado en diversos aspectos (añadir y quitar componentes). La integración de componentes escritos por diferentes programadores es un autentico reto.
Seguridad.- Reviste gran importancia por el valor intrínseco para los usuarios. Tiene tres componentes:
Confidencialidad.- Protección contra individuos no autorizados.
Integridad.- Protección contra la alteración o corrupción.
Disponibilidad.- Protección contra la interferencia con los procedimientos de acceso a los recursos.
Escalabilidad.- El sistema es escalable si conserva su efectividad al ocurrir un incremento considerable en el número de recursos y en el número de usuarios.
Tratamiento de Fallos.- La posibilidad que tiene el sistema para seguir funcionando ante fallos de algún componente en forma independiente, pero para esto se tiene que tener alguna alternativa de solución. Técnicas para tratar fallos:
Detección de fallos. Algunos fallos son detectables, con comprobaciones por ejemplo.
Enmascaramiento de fallos. Algunos fallos detectados pueden ocultarse o atenuarse.
Tolerancia de fallos. Sobre todo en Internet se dan muchos fallos y no es muy conveniente ocultarlos, es mejor tolerarlos y continuar. Ej: Tiempo de vida de una búsqueda.
Recuperación frente a fallos. Tras un fallo se deberá tener la capacidad de volver a un estado anterior.
Redundancia. Se puede usar para tolerar ciertos fallos (DNS, BD, etc.)
Concurrencia. Compartir recursos por parte de los clientes a la vez.
Transparencia. Es la ocultación al usuario y al programador de aplicaciones de la separación de los componentes en un sistema distribuido. Se identifican 8 formas de transparencia:
De Acceso. Se accede a recursos locales y remotos de forma idéntica.
De ubicación. Permite acceder a los recursos sin conocer su ubicación.
De concurrencia. Usar un recurso compartido sin interferencia.
De replicación. Permite utilizar varios ejemplares de cada recurso.
Frente a fallos. Permite ocultar los fallos.
De movilidad. Permite la reubicación de recursos y clientes sin afectar al sistema.
De prestaciones. Permite reconfigurar el sistema para mejorar las prestaciones según su carga.
Al escalado. Permite al sistema y a las aplicaciones expandirse en tamaño sin cambiar la estructura del sistema o los algoritmos de aplicación.

APLICACIONES
Sistemas Comerciales.- Inicialmente fueron construidos con hardware dedicado y entornos centralizados, son, por sus características de distribución geográfica y necesidad de acceso a sistemas distintos, ideales para implementarse en sistemas distribuidos. Requieren ciertas características de fiabilidad, seguridad y protección. Algunos ejemplos son:
Sistemas de reservas de líneas aéreas.
Aplicaciones bancarias.
Cajas y gestión de grandes almacenes.
Redes WAN.- Debido al gran crecimiento de este tipo de redes (Internet), ha tomado gran importancia el intercambio de información a través de la red. Y para esto tenemos los siguientes ejemplos:
Los servicios comunes que brinda Internet: Correo electrónico, servicio de noticias, transferencia de archivos, la Wrld Wide Web, etc.
Aplicaciones Multimedia.- Son las últimas incorporaciones a los sistemas distribuidos. Estas aplicaciones imponen ciertas necesidades de hardware para poder tener una velocidad y regularidad de transferencia de una gran cantidad de datos. Los ejemplos de estos sistemas son:
Videoconferencia.
Televigilancia.
Juegos multiusuarios.
Enseñanza asistida por ordenador.
Áreas de la informática aplicada a los Sistemas Distribuidos.- En este punto se tienen en cuenta toda la variedad de aplicaciones de los sistemas distribuidos, pues su diseño involucra a muchas áreas, por ejemplo:
Comunicaciones.
Sistemas operativos distribuidos.
Base de datos distribuidas.
Servidores distribuidos de ficheros.
Lenguajes de programación distribuidos.
Sistemas de tolerancia de fallos.


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.

 

Unidad1SIG

1.1.2 Modelo Cliente-Servidor

Definición:
Sistema donde el cliente es una máquina que solicita un determinado servicio y se denomina servidor a la máquina que lo proporciona. Los servicios pueden ser:
Ejecución de un determinado programa.
Acceso a un determinado banco de información.
Acceso a un dispositivo de hardware.
Es un elemento primordial, la presencia de un medio físico de comunicación entre las máquinas, y dependerá de la naturaleza de este medio la viabilidad del sistema.
Categorías de Servidores:
A continuación se presenta una lista de los servidores más comunes:
Servidores de archivos.- Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sería una gran opción de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los envía.
Servidores de Base de Datos.- Son los que almacenan gran cantidad de datos estructurados, se diferencian de los de archivos pues la información que se envía está ya resumida en la base de datos. Ejemplo: El Cliente hace una consulta, el servidor recibe esa consulta (SQL) y extrae solo la información pertinente y envía esa respuesta al cliente.
Servidores de Software de Grupo.- El software de grupo es aquel, que permite organizar el trabajo de un grupo. El servidor gestiona los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrónico. El Cliente puede indicarle, que se ha terminado una tarea y el servidor se lo envía al resto del grupo.
Servidores WEB.- Son los que guardan y proporcionan Páginas HTML. El cliente desde un browser o link hace un llamado de la página y el servidor recibe el mensaje y envía la página correspondiente.
Servidores de correo.- Gestiona el envío y recepción de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo.
Servidor de objetos.- Permite almacenar objetos que pueden ser activados a distancia. Los clientes pueden ser capaces de activar los objetos que se encuentran en el servidor.
Servidores de impresión.- Gestionan las solicitudes de impresión de los clientes. El cliente envía la solicitud de impresión, el servidor recibe la solicitud y la ubica en la cola de impresión, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresión.
Servidores de aplicación.- Se dedica a una única aplicación. Es básicamente una aplicación a la que pueden acceder los clientes.
Componentes de Software:
Se distinguen tres componentes básicos de software:
Presentación.- Tiene que ver con la presentación al usuario de un conjunto de objetos visuales y llevar a cabo el procesamiento de los datos producidos por el mismo y los devueltos por el servidor.
Lógica de aplicación.- Esta capa es la responsable del procesamiento de la información que tiene lugar en la aplicación.
Base de datos.- Esta compuesta de los archivos que contienen los datos de la aplicación.
Arquitecturas Cliente / Servidor
A continuación mostramos las arquitecturas cliente-servidor más populares:
Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:
Cuando se requiera poco procesamiento de datos en la organización.
Cuando se tiene una base de datos centralizada en un solo servidor.
Cuando la base de datos es relativamente estática.
Cuando se requiere un mantenimiento mínimo.
CLIENTE/SERVIDOR DE DOS CAPAS
Arquitectura Cliente-Servidor de Tres Capas- Consiste en una capa de la Presentación, otra capa de la lógica de la aplicación y otra capa de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:
Cuando se requiera mucho procesamiento de datos en la aplicación.
En aplicaciones donde la funcionalidad este en constante cambio.
Cuando los procesos no están relativamente muy relacionados con los datos.
Cuando se requiera aislar la tecnología de la base de datos para que sea fácil de cambiar.
Cuando se requiera separar el código del cliente para que se facilite el mantenimiento.
Esta muy adecuada para utilizarla con la tecnología orientada a objetos.
CLIENTE/SERVIDOR DE TRES CAPAS
Clasificación de los sistemas cliente servidor:
A continuación mostramos la clasificación de de los sistemas cliente/servidor de acuerdo al nivel de abstracción del servicio que ofrecen:
Representación distribuida.- La interacción con el usuario se realiza en el servidor, el cliente hace de pasarela entre el usuario y el servidor.
Representación Remota.-La lógica de la aplicación y la base de datos se encuentran en el servidor. El cliente recibe y formatea los datos para interactuar con el usuario.
Lógica Distribuida.- El cliente se encarga de la interacción con el usuario y de algunas funciones triviales de la aplicación. Por ejemplo controles de rango de campos, campos obligatorios, etc. Mientras que el resto de la aplicación, junto con la base de datos, están en el servidor.
Gestión Remota de Datos.- El cliente realiza la interacción con el usuario y ejecuta la aplicación y el servidor es quien maneja los datos.
Base de Datos Distribuidas.- El cliente realiza la interacción con el usuario, ejecuta la aplicación, debe conocer la topología de la red, así como la disposición y ubicación de los datos. Se delega parte de la gestión de la base de datos al cliente.
Cliente servidor a tres niveles.- El cliente se encarga de la interacción con el usuario, el servidor de la lógica de aplicación y la base de datos puede estar en otro servidor.
PROTOCOLO
Definición:
Es un conjunto bien conocido de reglas y formatos que se utilizan para la comunicación entre procesos que realizan una determinada tarea. Se requieren dos partes:
Especificación de la secuencia de mensajes que se han de intercambiar.
Especificación del formato de los datos en los mensajes.
Un protocolo permite que componentes heterogéneos de sistemas distribuidos puedan desarrollarse independientemente, y por medio de módulos de software que componen el protocolo, haya una comunicación transparente entre ambos componentes. Es conveniente mencionar que estos componentes del protocolo deben estar tanto en el receptor como en el emisor.
Ejemplos de protocolos usados en los sistemas distribuidos:
IP: Protocolo de Internet.- Protocolo de la capa de Red, que permite definir la unidad básica de transferencia de datos y se encarga del direccionamiento de la información, para que llegue a su destino en la red.
TCP: Protocolo de Control de Transmisión.- Protocolo de la capa de Transporte, que permite dividir y ordenar la información a transportar en paquetes de menor tamaño para su transporte y recepción.
HTTP: Protocolo de Transferencia de Hipertexto.- Protocolo de la capa de aplicación, que permite el servicio de transferencia de páginas de hipertexto entre el cliente WEB y los servidores.
SMTP: Protocolo de Transferencia de Correo Simple.- Protocolo de la capa de aplicación, que permite el envío de correo electrónico por la red.
POP3: Protocolo de Oficina de Correo.- Protocolo de la capa de aplicación, que permite la gestión de correos en Internet, es decir, le permite a una estación de trabajo recuperar los correos que están almacenados en el servidor.
MIDDLEWARE
Definición:
Capa de software intermedio entre el cliente y el servidor. Es la capa de software que nos permiten gestionar los mecanismos de comunicaciones. Ejemplo si se hace la petición de una página web desde un browser en el cliente, el middleware determina la ubicación y envía una petición para dicha página. El servidor Web, interpreta la petición y envía la página al software intermedio, quien la dirige al navegador de la máquina cliente que la solicitó.
Existen dos tipos:
Software intermedio general. Servicios generales que requieren todos los clientes y servidores, por ejemplo: software para las comunicaciones usando el TCP/IP, software parte del sistema operativo que, por ejemplo, almacena los archivos distribuidos, software de autenticación, el software intermedio de mensajes de clientes a servidores y viceversa.
Software intermedio de servicios. Software asociado a un servicio en particular, por ejemplo: software que permite a dos BD conectarse a una red cliente/servidor (ODBC: Conectividad abierta de BD), software de objetos distribuidos, por ejemplo la tecnología CORBA permite que objetos distribuidos creados en distintos lenguajes coexistan en una misma red (intercambien mensajes), software intermedio para software de grupo, software intermedio asociado a productos de seguridad específicas (Conexiones Seguras: Sockets), etc.
Características:
Independiza el servicio de su implantación, del sistema operativo y de los protocolos de comunicaciones.
Permite la convivencia de distintos servicios en un mismo sistema.
Permite la transparencia en el sistema.
Modelo tradicional: Monitor de teleproceso o CICS, Tuxedo, Encina.
Modelo OO: CORBA.

atrasUnidad1SIG

1.1.3 Características de hardware de los Sistemas Distribuidos.

Todos los sistemas distribuidos constan de varias cpu, organizadas de diversas formas, especialmente respecto de [25, Tanenbaum]:

Existen diversos esquemas de clasificación para los sistemas de cómputos con varias cpu:

SISD (Single Instruction Single Data: un flujo de instrucciones y un flujo de datos):

SIMD (Single Instruction Multiple Data: un flujo de instrucciones y varios flujos de datos):

MISD (Multiple Instruction Single Data: un flujo de varias instrucciones y un solo flujo de datos):

MIMD (Multiple Instruction Multiple Data: un grupo de computadoras independientes, cada una con su propio contador del programa, programa y datos):

Un avance sobre la clasificación de Flynn incluye la división de las computadoras MIMD en dos grupos:

Cada una de las categorías indicadas se puede clasificar según la arquitectura de la red de interconexión en:

Generalmente los multiprocesadores están más fuertemente acoplados que las multicomputadoras.

 atrasUnidad1SIG

1.1.4 Características de Software de los Sistemas Distribuidos.

La importancia del software supera frecuentemente a la del hardware [25, Tanenbaum].
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:

El software débilmente acoplado de un sistema distribuido:

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

Aspectos del Diseño
La comparación de las tres principales formas de organizar “n” cpu se puede resumir en la Tabla 7.2 [25, Tanenbaum].
Comparación de tres formas distintas de organizar n cpu.
Los aspectos claves en el diseño de S. O. distribuidos son:

Transparencia
Un aspecto muy importante es la forma de lograr la imagen de un único sistema [25, Tanenbaum].
Los usuarios deben percibir que la colección de máquinas conectadas son un sistema de tiempo compartido de un solo procesador:

Desde el punto de vista de los usuarios, la transparencia se logra cuando:

La transparencia desde el punto de vista de los programas significa diseñar la interfaz de llamadas al sistema de modo que no sea visible la existencia de varios procesadores.
No es transparente un sistema donde el acceso a los archivos remotos se realice mediante:

Existen distintos tipos de transparencia en un sistema distribuido:

 
Flexibilidad
La flexibilidad es de fundamental importancia [25, Tanenbaum].
Esquema de núcleo monolítico y de micronúcleo.
Existen dos escuelas de pensamiento en cuanto a la estructura de los sistemas distribuidos (ver Figura 7.10 [25, Tanenbaum]):

El núcleo monolítico es el S. O. centralizado aumentado con:

Con núcleo monolítico:

El micronúcleo es más flexible y proporciona solo cuatro servicios mínimos:

Contrariamente al núcleo monolítico, el micronúcleo no proporciona el sistema de archivos, el sistema de directorios, toda la administración de procesos o gran parte del manejo de las llamadas al sistema.
El objetivo es mantener el micronúcleo pequeño.
Todos los demás servicios del S. O. se implementan generalmente como servidores a nivel usuario:

Una importante ventaja de este método es su alta modularidad:

Confiabilidad
Un importante objetivo de los sistemas distribuidos es que si una máquina falla, alguna otra debe encargarse del trabajo [25, Tanenbaum].
La confiabilidad global teórica del sistema podría ser el “or” booleano de la confiabilidad de los componentes; ejemplo:

La confiabilidad práctica se ve disminuida ya que muchas veces se requiere que ciertos servidores estén en servicio simultáneamente para que el todo funcione, debido a ello algunos sistemas tienen una disponibilidad más relacionada con el “and” booleano de las componentes que con el “or” booleano.
Un aspecto de la confiabilidad es la disponibilidad, que se refiere a la fracción de tiempo en que se puede utilizar el sistema.
La disponibilidad se mejora mediante:

Los datos no deben perderse o mezclarse y si los archivos se almacenan de manera redundante en varios servidores, todas las copias deben ser consistentes.
Otro aspecto de la confiabilidad general es la seguridad, lo que significa que los archivos y otros recursos deben ser protegidos contra el uso no autorizado.
Un aspecto también relacionado con la confiabilidad es la tolerancia a fallas, según la cual las fallas se deben ocultar brindando una recuperación transparente para el usuario, aunque haya cierta degradación de la performance.
Desempeño
Cuando se ejecuta una aplicación en un sistema distribuido no debe parecer peor que su ejecución en un único procesador, pero esto es difícil de lograr [25, Tanenbaum].
Algunas métricas del desempeño son:

El problema se complica por el hecho de que la comunicación entre equipos es lenta comparada con:

Se requiere el uso de protocolos de comunicaciones en los extremos (procesadores) que intervienen en la comunicación, con lo que se incrementa el consumo de ciclos de procesador.
Para optimizar el desempeño frecuentemente hay que:

También se debe prestar atención al tamaño de grano de todos los cálculos:

 
Escalabilidad
La tendencia indica que el tamaño de los sistemas distribuidos es hacia cientos de miles y aun decenas de millones de usuarios conectados [25, Tanenbaum].
Existen cuellos de botella potenciales que se debe intentar evitar en los sistemas distribuidos de gran escala:

Se deben utilizar algoritmos descentralizados con las siguientes características:

atrasUnidad1SIG

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

atrasUnidad1SIG

1.2 Conceptos y características de SOR.

Concepto y Caracteristicas de Sor 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, LA Ntastic?.
Una posibilidad es el software débilmente acoplado en hardware débilmente acoplado [25, Tanenbaum]: 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.

atrasUnidad1SIG

1.3 Concepto Características Del 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.
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.
Caracteristicas 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.).

Características de hardware sistemas distribuidos
Conceptos de Hardware

Todos los sistemas distribuidos constan de varias cpu, organizadas de diversas formas, especialmente respecto de [25, Tanenbaum]:

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 InstructionMultiple 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 (MultipleInstruction Single Data: un flujo de varias instrucciones y un solo flujo de datos):
No se presenta en la práctica.
MIMD (MultipleInstructionMultiple 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.
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.
Generalmente se los utiliza como sistemas paralelos.
Sistemas débilmente acoplados:
El retraso de los mensajes entre las máquinas es grande y la tasa de transmisión es baja.
Generalmente se los utiliza como sistemas distribuidos.
Generalmente los multiprocesadores están más fuertemente acoplados que las multicomputadoras.
Características de software sistemas distribuidos
•Conceptos de software

Aunque el hardware es importante, el softwarelo es más. La imagen que presenta y la forma de pensar de los usuarios de un sistema, queda determinada en gran medida por el software del sistema operativo, no por el hardware.

Se puede distinguir dos tipos de sistemas operativos para los de varios CPU: los débilmente acoplados y los fuertemente acoplados.

El software débilmente acoplado permite que las máquinas y los usuarios de un sistema distribuido sean independientes entre sí en lo fundamental, pero que interactúen en cierto grado cuando sea necesario.

En el software fuertemente acoplado el programa de aplicación y el sistema operativo necesario para soportarlo, están muy acoplados.

atrasUnidad1