PAC- Performance-centered Adaptive Curriculum for Employment Needs Programa ERASMUS: Acción Multilateral -517742-LLP-1-2011-1-BG-ERASMUS-ECUE MASTER DEGREE: Industrial Systems Engineering ASIGNATURA ISE1: Introducción a los Sistemas Industriales MÓDULO 4: Redes informáticas y Sistemas Distribuidos TAREA 4-3: SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS Introducción a los Sistemas Industriales Contenido TAREA 4-3: SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS ................ 4 1. INTRODUCCIÓN Y OBJETIVOS ..................................................................................... 4 2. CONTENIDO......................................................................................................................... 5 2.1 Definición de sistemas Distribuidos ................................................................................ 5 2.2 Características claves de un sistema Distribuido ............................................................ 6 2.3 Ejemplos de Distribución ............................................................................................... 10 2.4 Middleware ................................................................................................................... 11 2.5 Tipos de sistemas distribuidos ...................................................................................... 12 2.6 Transparencia en los sistemas distribuidos................................................................... 12 2.7 Escalabilidad .................................................................................................................. 13 2.8 Diferencia entre sistemas distribuidos y paralelos ....................................................... 15 2.9 Sistemas paralelos –taxonomías del ordenador ........................................................... 15 2.10 Arquitectura MIMD ..................................................................................................... 16 2.11 Cluster del ordenador ................................................................................................. 17 2.12 Computación de grid ................................................................................................... 18 2.13 Modelos de sistema de DS .......................................................................................... 18 2.14 Clasificación de arquitecturas MIMD .......................................................................... 20 2.15 Conceptos de Hardware – Conexiones MP basadas en bus y en Switch ................... 21 2.16 Conceptos de Software – Sistemas operativos ........................................................... 22 2.17 Sistemas operativos de uniprocesador ....................................................................... 23 2.18 Sistemas operativos de multiordenadores ................................................................. 24 2.19 Sistemas distribuidos con memoria compartida......................................................... 25 2.20 Sistema operativo de red ............................................................................................ 25 2.21 Sistemas Distribuidos –Lenguajes ............................................................................... 26 2.21 CORBA, DCOM y Java/RMI .......................................................................................... 27 2.23 MPI Interfaz de paso de mensajes .............................................................................. 27 3. CONCLUSIONES ................................................................................................................... 28 4. BIBLIOGRAFÍA Y/O REFERENCIAS ........................................................................................ 30 5. ENLACES DE INTERÉS ........................................................................................................... 30 SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 2 Introducción a los Sistemas Industriales Índice de figuras Figura 1: Esquema de distribución: Internet por cable ............................................................... 10 Figura 2: Esquema de distribución: Internet por nómada .......................................................... 11 Figura 3: Esquema de distribución: Internet por nómada .......................................................... 11 Figura 4: Arquitectura SIMD ........................................................................................................ 16 Figura 5: Arquitectura MISD ........................................................................................................ 16 Figura 6: Arquitectura MIMD (multiprocesador) ........................................................................ 16 Figura 7: Arquitectura MIMD Acoplo débil ................................................................................. 17 Figura 8: Arquitectura MIMD Acoplo moderado ........................................................................ 17 Figura 9: Computación cluster frente a otros ............................................................................. 18 Figura 10: Modelo de miniordenador ......................................................................................... 18 Figura 11: Modelo de Workstation ............................................................................................. 18 Figura 12: Modelo de Workstation-servidor ............................................................................... 19 Figura 13: Modelo Procesador -Equipo....................................................................................... 19 Figura 14: Modelo cluster ........................................................................................................... 19 Figura 15: Computación de grid .................................................................................................. 19 Figura 16: Clasificación de la arquitectura MIMD ....................................................................... 20 Figura 17: Multiprocesador basado en bus................................................................................. 21 Figura 18: Multiprocesador basado en conmutador (switch)..................................................... 22 Figura 19: Sistema operativo de uniprocesador ......................................................................... 24 Figura 20: Estructura general de un multiordenador DOS.......................................................... 24 Figura 21: Estructura general de un sistema operativo de red (NOS) ........................................ 26 SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 3 Introducción a los Sistemas Industriales TAREA 4-3: SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 1. INTRODUCCIÓN Y OBJETIVOS El mundo de la informática ha evolucionado muy rápidamente. Hace tan solo unos 40 años se creaba el primer ordenador, con tareas muy limitadas y gran tamaño. En la actualidad, constantemente están saliendo al mercado nuevos modelos, con mayor capacidad y menor tamaño. Pero no sólo están cambiando los ordenadores en sí, sino que están influyendo en los hábitos de las personas, principalmente por su precio accesible. Estos cambios han sido posibles debido a dos razones principalmente: • • El desarrollo de los microprocesadores (que ya se vio en un tema anterior) que permitieron reducir en tamaño y coste 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 ahí cuando aparecen los Sistemas Distribuidos, que tienen como ámbito de estudio las redes como por ejemplo: Internet, redes de teléfonos móviles, redes corporativas, redes de empresas, etc. En este tema dará una definición de los sistemas distribuidos. Se hablará de sus principales características y ventajas y desventajas frente a los sistemas centralizados. Se hará una introducción a los sistemas paralelos. Se explicarán los conceptos de hardware, con conexión en MP en bus y en switch, así como de software, enfocado en los sistemas operativos (uniproceso, multiordenador, de red y lenguajes). SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 4 Introducción a los Sistemas Industriales 2. CONTENIDO 2.1 Definición de sistemas Distribuidos Un sistema distribuido es “aquél en el que no puedes trabajar con tu máquina por el fallo de otra máquina que ni siquiera sabías que existía” Leslie Lamport. Se puede decir que un sistema distribuido es 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. Ejemplos de sistemas distribuidos: • • • The world wide web (www) – información, compartir recursos Clusters, Red de Estaciones de trabajo (workstations) Sistema de manufactura distribuida (e.g., línea de montaje automático) SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 5 Introducción a los Sistemas Industriales • • • Red de ordenadores de oficina Sistema de información para manejar el procesado automático de órdenes Red de sistemas integrados 2.2 Características claves de un sistema Distribuido Compartición de Recursos El término ‘recurso’ es bastante abstracto, pero es el que mejor caracteriza el abanico de entidades que pueden compartirse en un sistema distribuido. El abanico se extiende desde componentes hardware como discos e impresoras hasta elementos software como ficheros, ventanas, bases de datos y otros objetos de datos. Los recursos en un sistema distribuido están físicamente encapsulados en una de las computadoras y sólo pueden ser accedidos por otras computadoras mediante las comunicaciones (la red). Para que la compartición de recursos sea efectiva, ésta debe ser manejada por un programa que ofrezca un interfaz de comunicación permitiendo que el recurso sea accedido, manipulado y actualizado de una manera fiable y consistente. Surge el término genérico de gestor de recursos. Un sistema distribuido puede verse de manera abstracta como un conjunto de gestores de recursos y un conjunto de programas que usan los recursos. Los usuarios de los recursos se comunican con los gestores de los recursos para acceder a los recursos compartidos del sistema. Esta perspectiva nos lleva a dos modelos de sistemas distribuidos: el modelo cliente-servidor y el modelo basado en objetos. Apertura (opennesss) Un sistema informático es abierto si el sistema puede ser extendido de diversas maneras. Un sistema puede ser abierto o cerrado con respecto a extensiones hardware (añadir periféricos, memoria o interfaces de comunicación, etc) o con respecto a las extensiones software (añadir características al sistema operativo, protocolos de comunicación y servicios de compartición de recursos, etc). La apertura de los sistemas distribuidos se determina primariamente por el grado hacia el que nuevos servicios de compartición de recursos se pueden añadir sin perjudicar ni duplicar a los ya existentes. Básicamente los sistemas distribuidos cumplen una serie de características: SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 6 Introducción a los Sistemas Industriales 1. Los interfaces software clave del sistema están claramente especificados y se ponen a disposición de los desarrolladores. En una palabra, los interfaces se hacen públicos. 2. Los sistemas distribuidos abiertos se basan en la provisión de un mecanismo uniforme de comunicación entre procesos e interfaces publicados para acceder a recursos compartidos. 3. Los sistemas distribuidos abiertos pueden construirse a partir de hardware y software heterogéneo, posiblemente proveniente de vendedores diferentes. Pero la conformidad de cada componente con el estándar publicado debe ser cuidadosamente comprobada y certificada si se quiere evitar tener problemas de integración. Concurrencia Cuando existen varios procesos en una única máquina decimos que se están ejecutando concurrentemente. Si el ordenador está equipado con un único procesador central, la concurrencia tiene lugar entrelazando la ejecución de los distintos procesos. Si la computadora tiene N procesadores, entonces se pueden estar ejecutando estrictamente a la vez hasta N procesos. En los sistemas distribuidos hay muchas máquinas, cada una con uno o más procesadores centrales. Es decir, si hay M ordenadores en un sistema distribuido con un procesador central cada una entonces hasta M procesos estar ejecutándose en paralelo. En un sistema distribuido que está basado en el modelo de compartición de recursos, la posibilidad de ejecución paralela ocurre por dos razones: 1. Muchos usuarios interactúan simultáneamente con programas de aplicación. 2. Muchos procesos servidores se ejecutan concurrentemente, cada uno respondiendo a diferentes peticiones de los procesos clientes. Tolerancia a Fallos 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 más fino que el hardware, pueden replicarse los servidores individuales que son esenciales para la operación continuada de aplicaciones críticas. SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 7 Introducción a los Sistemas Industriales 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 está disponible para su uso. 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 máquina. Ventajas de Sistemas Distribuidos frente a Sistemas Centralizados Económicas: una colección de microprocesadores que ofrece mejor precio/desempeño que los ordenadores centrales. Bajo ratio de precio/desempeño: método efectivo para aumentar la potencia del ordenador. Una razón para la tendencia hacia la descentralización es la economía. Herb Grosch formuló la que se llamaría “Ley de Grosch” [6]: • • • El poder de cómputo de una cpu es proporcional al cuadrado de su precio: si se paga el doble se obtiene el cuádruple del desempeño. Fue aplicable en los años setentas y ochentas a la tecnología mainframe. No es aplicable a la tecnología del microprocesador: la solución más eficaz en cuanto a costo es limitarse a un gran número de cpu baratos reunidos en un mismo sistema. Los sistemas distribuidos generalmente tienen en potencia una proporción precio / desempeño mucho mejor que la de un único sistema centralizado. Velocidad: un sistema distribuido debe tener más potencia que el ordenador central. Por ejemplo, 10,000 chips de CPU, cada uno trabajando a MIPS. No es posible construir 500,000 MIPS procesadores individuales ya que requeriríia 0.002 nsec por ciclo de instrucción. Se mejora el desempeño al distribuir la carga. Distribución inherente: Algunas aplicaciones están distribuidas inherentemente. Por ejemplo, una cadena de supermercados. Fiabilidad: Si se rompe una máquina, el sistema como conjunto puede sobrevivir. Mayor disponibilidad y mejora de la fiabilidad. Al distribuir la carga de trabajo en muchas máquinas, la falla de una de ellas no afectara a las SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 8 Introducción a los Sistemas Industriales demás. La carga de trabajo podría distribuirse. descompone, sobrevive el sistema como un todo. Si una máquina se Desarrollo incremental: Se puede añadir potencia con incrementos pequeños. Expansión modular. Otra ventaja importante es la posibilidad del crecimiento incremental o por incrementos: • • Podrían añadirse procesadores al sistema, permitiendo un desarrollo gradual según las necesidades. No son necesarios grandes incrementos de potencia en breves lapsos de tiempo. Se puede añadir poder de cómputo en pequeños incrementos Ventajas de Sistemas Distribuidos frente a PCs independientes Compartir datos: permite el acceso a una base de datos común a muchos usuarios. Satisfacen la necesidad de muchos usuarios de compartir ciertos datos [6] Ej: sistema de reservas de líneas aéreas. Compartir recursos: periféricos de gran valor como impresoras de color. También con los sistemas distribuidos se pueden compartir otros recursos como programas y periféricos costosos: Ej.: impresoras láser color, equipos de fotocomposición, dispositivos de almacenamiento masivo (ej.: cajas ópticas), etc. Comunicación: mejora la comunicación humano-humano, por ejemplo email, chat. Otra importante razón es lograr una mejor comunicación entre las personas: Ej.: correo electrónico - Posee importantes ventajas sobre el correo por cartas, el teléfono y el fax: Velocidad, disponibilidad, generación de documentos editables por procesadores de texto, etc. Flexibilidad: extiende la carga de trabajo sobre las máquinas disponibles. La carga de trabajo se puede difundir (distribuir) entre las máquinas disponibles en la forma más eficaz según el criterio adoptado (por ej. costos). Los equipos distribuidos pueden no ser siempre PC. Se pueden estructurar sistemas con grupos de PC y de computadoras compartidas, de distinta capacidad. Desventajas de Sistemas Distribuidos Respecto a un sistema centralizado El principal problema es el software, ya que el diseño, implantación y uso del software distribuido presenta numerosos inconvenientes, entre ellos el alto coste de mantener la consistencia y la red de interconexión como una fuente SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 9 Introducción a los Sistemas Industriales de problemas [1]. Un sistema centralizado del mismo coste es más eficiente que cada uno de los componentes del sistema distribuido. Otro problema potencial tiene que ver con las redes de comunicaciones, ya que se deben considerar problemas debidos a pérdidas de mensajes, saturación en el tráfico, expansión, etc. De hecho, si la distribución de recursos es inadecuada algunos recursos pueden estar desbordados mientras otros están libres. El hecho de que sea fácil compartir los datos es una ventaja pero se puede convertir en un gran problema, por lo que la seguridad debe organizarse adecuadamente, lo que implica una gestión de la seguridad más compleja. En general se considera que las ventajas superan a las desventajas, si estas últimas se administran seriamente. 2.3 Ejemplos de Distribución - Internet por cable Puede alcanzar cualquier host desde cualquier otro host, en cualquier momento, puesto que los hosts siempre están encendidos y disponibles (% fallo, inactivo). Muchos de los WWW dependen de esta noción Figura 1: Esquema de distribución: Internet por cable - Internet nómada Algunos hosts son móviles, se conectan al punto de acceso más cercano. De hecho, los hosts pueden no estar disponibles, aunque al final se reconecten. Esto puede provocar que la topología de la ruta Host-to-host cambie. Los teléfonos móviles, ordenadores portátiles sin cable tienen este comportamiento SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 10 Introducción a los Sistemas Industriales Figura 2: Esquema de distribución: Internet por nómada Redes móviles ad hoc (manets) Los hosts móviles se conectan a cada uno de los otros (con o sin punto de acceso). Los hosts pueden detectar conexión dinámica o desconexión. Los Hosts deben explotar las ventanas de oportunidades de comunicación. Permite el ruteado ad-hoc, mensaje de comportamiento “mula” Figura 3: Esquema de distribución: Internet por nómada 2.4 Middleware El software distribuido requerido para facilitar las interacciones cliente-servidor se denomina middleware. El acceso transparente a servicios y recursos no locales distribuidos a través de una red se provee a través del middleware, que sirve como marco para las comunicaciones entre las porciones cliente y servidor de un sistema. El middleware define el API que usan los clientes para pedir un servicio a un servidor, la transmisión física de la petición vía red, y la devolución de resultados desde el servidor al cliente. Ejemplos de middleware estándar para dominios específicos incluyen: ODBC, para bases de datos, Lotus para groupware, HTTP y SSL para Internet y CORBA, DCOM y JAVA RMI para objetos distribuidos. El middleware fundamental o genérico es la base de los sistemas clienteservidor. Los servicios de autentificación en red, llamadas a procedimiento remoto, sistemas de ficheros distribuidos y servicios de tiempo en red se SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 11 Introducción a los Sistemas Industriales consideran parte del middleware genérico. Este tipo de middleware empieza a ser parte estándar de los sistemas operativos modernos como Windows NT. En sistemas donde no se disponga deberá recurrirse a middleware del tipo OSD DCE (Distributed Computing Environment) [OSF 1994]. El middleware específico para un dominio complementa al middleware genérico de cara a aplicaciones mucho más específicas. El protocolo de comunicaciones más usado por el middleware, tanto genérico como específico, es TCP/IP. Esto se debe a su amplia difusión en todos los sistemas operativos del mercado y en especial en los ordenadores personales. 2.5 Tipos de sistemas distribuidos Computación Distribuida – DC es un método de proceso informático en el que partes diferentes de un programa se procesan simultáneamente mediante dos o más ordenadores conectados con una red. DS es un tipo de procesado paralelo (ver Sistemas Paralelos) Base de Datos Distribuida – DDB es una colección de múltiples bases de datos lógicamente interrelacionadas distribuidas en medio de la red donde aparece el usuario como una única base de datos. World Wide Web (WWW) es el mayor ejemplo de DDB Sistema de gestión de bases de datos distribuidas – DDBMS es un software de sistema que proporciona la gestión de DDB y hace que la distribución aparezca transparente a los usuarios. DAQ distribuido y sistema de control – tipo de sistema automatizado que puede suministrar medidas e instrucciones de control a las diferentes partes de la máquina. En lugar de una unidad de control centralizad, cada sección de la máquina tiene su propio ordenador o microcontrolador que gestiona sus operaciones (eg. los coches modernos y otros vehículos, líneas de producción, etc.). Sistemas distribuidos obicuos – Computación obicua – ordenadores omnipresentes. Permite la disponibilidad de muchos ordenadores en el entorno físico, a la vez que los hace eficazmente invisibles al usuario. La computación obicua es conocida por algunos como lo que será la Tercera Ola de computación. La Primera Ola fue muchas personas por ordenador, la Segunda Ola fue una persona por ordenador. La Tercera Ola será muchos ordenadores por persona. Hay tres temas técnicos clave: consumo de energía, interfaz de usuario y conectividad sin cable. 2.6 Transparencia en los sistemas distribuidos La transparencia se define como la ocultación al usuario y al programador de aplicaciones de la separación de los componentes de un sistema distribuido, de manera que el sistema se percibe como un todo, en vez de una colección SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 12 Introducción a los Sistemas Industriales de componentes independientes. La transparencia ejerce una gran influencia en el diseño del software de sistema. El manual de referencia RM-ODP identifica ocho formas de transparencia. Estas proveen un resumen útil de la motivación y metas de los sistemas distribuidos. Las transparencias definidas son: • • • • • • • • Transparencia de Acceso: Permite el acceso a los objetos de información remotos de la misma forma que a los objetos de información locales. Transparencia de Localización: Permite el acceso a los objetos de información sin conocimiento de su localización Transparencia de Concurrencia: Permite que varios procesos operen concurrentemente utilizando objetos de información compartidos y de forma que no exista interferencia entre ellos. Transparencia de Replicación: Permite utilizar múltiples instancias de los objetos de información para incrementar la fiabilidad y las prestaciones sin que los usuarios o los programas de aplicación tengan por que conoces la existencia de las replicas. Transparencia de Fallos: Permite a los usuarios y programas de aplicación completar sus tareas a pesar de la ocurrencia de fallos en el hardware o en el software. Transparencia de Migración: Permite el movimiento de objetos de información dentro de un sistema sin afectar a los usuarios o a los programas de aplicación. Transparencia de Prestaciones: Permite que el sistema sea reconfigurado para mejorar las prestaciones mientras la carga varia. Transparencia de Escalado: Permite la expansión del sistema y de las aplicaciones sin cambiar la estructura del sistema o los algoritmos de la aplicación. Las dos más importantes son las transparencias de acceso y de localización; su presencia o ausencia afecta fuertemente a la utilización de los recursos distribuidos. A menudo se las denomina a ambas transparencias de red. La transparencia de red provee un grado similar de anonimato en los recursos al que se encuentra en los sistemas centralizados. 2.7 Escalabilidad Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala más pequeña consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema distribuido construido alrededor de una red de área local simple podría contener varios cientos de estaciones de trabajo, varios servidores de ficheros, servidores de impresión y otros servidores de propósito específico. A menudo se conectan varias redes de área local para formar internetworks, y éstas podrían contener SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 13 Introducción a los Sistemas Industriales muchos miles de ordenadores que forman un único sistema distribuido, permitiendo que los recursos sean compartidos entre todos ellos. Tanto el software de sistema como el de aplicación no deberían cambiar cuando la escala del sistema se incrementa. La necesidad de escalabilidad no es solo un problema de prestaciones de red o de hardware, sino que está íntimamente ligada con todos los aspectos del diseño de los sistemas distribuidos (Número de usuarios y/o procesos -tamaño de escalabilidad-, máxima distancia entre nodos -escalabilidad geográfica- y número de dominios administrativos -escalabilidad administrativa). El diseño del sistema debe reconocer explícitamente la necesidad de escalabilidad o de lo contrario aparecerán serias limitaciones. La demanda de escalabilidad en los sistemas distribuidos ha conducido a una filosofía de diseño en que cualquier recurso simple -hardware o softwarepuede extenderse para proporcionar servicio a tantos usuarios como se quiera. Esto es, si la demanda de un recurso crece, debería ser posible extender el sistema para darla servicio. Por ejemplo, la frecuencia con la que se accede a los ficheros crece cuando se incrementa el número de usuarios y estaciones de trabajo en un sistema distribuido. Entonces, debe ser posible añadir ordenadores servidores para evitar el cuello de botella que se produciría si un solo servidor de ficheros tuviera que manejar todas las peticiones de acceso a los ficheros. • • • Componentes centralizados: por ejemplo, un solo servidor de correo para todos los usuarios. Tablas centralizadas: por ejemplo, un único directorio telefónico en línea. Algoritmos centralizados: por ejemplo, la realización de un ruteo con base en la información completa. Se deben utilizar algoritmos descentralizados con las siguientes características: • • • • Ninguna máquina tiene la información completa acerca del estado del sistema. Las máquinas toman decisiones solo en base a la información disponible de manera local. El fallo de una máquina no arruina el algoritmo. No existe una hipótesis implícita de la existencia de un reloj global. En este caso el sistema deberá estar diseñado de manera que permita trabajar con ficheros replicados en distintos servidores, con las consideraciones de consistencias que ello conlleva Cuando el tamaño y complejidad de las redes de ordenadores crece, es un objetivo primordial diseñar software de sistema distribuido que seguirá siendo SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 14 Introducción a los Sistemas Industriales eficiente y útil con esas nuevas configuraciones de la red. Resumiendo, el trabajo necesario para procesar una petición simple para acceder a un recurso compartido debería ser prácticamente independiente del tamaño de la red. 2.8 Diferencia entre sistemas distribuidos y paralelos Los sistemas distribuidos tienen múltiples procesadores débilmente acoplados. Físicamente están separados y no comparten la memoria, siendo su comunicación mediante mensajes. Los sistemas operativos se comportan como uno único. Cada nodo tiene su sistema operativo independiente y colabora para que el usuario no sepa dónde está trabajando ni dónde se encuentran sus ficheros. Los sistemas paralelos se basan en multiprocesadores, con varias CPU fuertemente acopladas con un reloj común y una memoria compartida (comunicación y sincronización vía memoria). Tienen un único sistema operativo. El planificador es más complejo que en los sistemas distribuidos. La gestión de memoria y de cachés es muy importante para el rendimiento. Todos los recursos son compartidos. 2.9 Sistemas paralelos –taxonomías del ordenador Desde un punto de vista clásico, se puede utilizar la clasificación de computadores paralelos propuesta por M.J. Flynn, basada en el número de flujos de instrucciones y de datos que tiene el computador. El flujo de instrucciones lo forman el conjunto de instrucciones que se van leyendo en la ejecución de un programa, mientras que el flujo de datos está formado por los datos que leen y almacenan estas instrucciones [5]. SISD (Single Instruction Single Data): Arquitectura serie con un flujo de datos y otro de instrucciones. Poseen un único procesador SIMD (Single Instruction Multiple Data): un solo flujo de instrucciones y varios de datos. Se refiere a ordenar procesadores con una unidad de instrucción que o bien busca una instrucción o 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 SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 15 Introducción a los Sistemas Industriales Figura 4: Arquitectura SIMD MISD (Multiple Instruction Single Data): varios flujos de instrucciones y uno solo de datos. No se presenta en la práctica Figura 5: Arquitectura MISD 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. Figura 6: Arquitectura MIMD (multiprocesador) El enfoque actual está en el modelo MIMD, que utiliza los procesadores de proposiciones generales. 2.10 Arquitectura MIMD El caso MIMD lo constituyen los multiprocesadores propiamente dichos. Su estructura se basa en varios procesadores convencionales serie, cada uno con una unidad de tratamiento, que soporta su flujo de datos, y una unidad de control, que soporta su flujo de instrucciones. Tanto la estructura general como el nivel de interacción entre los distintos procesadores permiten múltiples soluciones. Una de las características fundamentales de los multiprocesadores es el tipo de acoplo entre los procesadores que lo componen, diferenciándose las tres alternativas siguientes: Acoplamiento débil: se trata, en realidad, de varios computadores serie convencionales que se pueden comunicar entre sí a velocidades relativamente SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 16 Introducción a los Sistemas Industriales altas (por ejemplo, mediante una red local de 10 Bb/S). Idealmente, se dispone de un solo sistema operativo que realice el reparto de carga. Su funcionamiento es eficiente, siempre que las interacciones entre procesos de distintos procesadores sean pequeñas o nulas. Figura 7: Arquitectura MIMD Acoplo débil Acoplamiento fuerte. Todos los procesadores del sistema pueden utilizar todos sus recursos. Generalmente, existe una memoria principal común, que se emplea también para comunicación entre procesadores [5] Figura 8: Arquitectura MIMD Acoplo moderado 2.11 Cluster del ordenador Un cluster consiste en múltiples máquinas stand-alone (independientes del software) que actúan en paralelo en una red local de alta velocidad. La computación distribuida difiere de la computación de cluster en que el entorno de los ordenadores en una computación distribuida típicamente no están exclusivamente operando tareas de “grupo”, mientras que los ordenadores en cluster normalmente están acoplados más firmemente. La computación distribuida a menudo también consiste en máquinas que están bastante separadas geográficamente. Clustering es una popular estrategia para implementar aplicaciones de procesado paralelo porque permite aventajar a las empresas que ya han SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 17 Introducción a los Sistemas Industriales invertido en PCs, workstations o servidores. Además, es relativamente fácil añadir nuevas CPUs, simplemente añadiendo un nuevo PC a la red. Figura 9: Computación cluster frente a otros 2.12 Computación de grid Una grid usa los recursos de muchos ordenadores separados conectados por una red (normalmente Internet) para resolver problemas de computación de gran escala. El mayor tiempo inactivo de uso de muchos miles de ordenadores del mundo. Estos arreglos permiten manejar datos que de otra forma requerirían la potencia de superordenadores muy costosos o sería imposible de analizar. Una tecnología similar es la Computación Cloud (nube), que también permite usar recursos comunes 2.13 Modelos de sistema de DS Modelo de miniordenador: muchos miniordenadores conectados una red, cada uno con diferentes terminales. Figura 10: Modelo de miniordenador Modelo de Workstation: muchas workstations conectadas a una red. Particularmente útil si los usuarios pueden usar workstations en remoto (migración de proceso) Figura 11: Modelo de Workstation SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 18 Introducción a los Sistemas Industriales Modelo de Workstation-servidor: algunas máquinas funcionan como servidores (servidor de la impresora, servidor de documentos…). Es una buena opción para recursos compartidos (como impresoras, por ejemplo). No es necesario que las workstations tengan grandes discos, por lo que puede ser una opción bastante económica. Figura 12: Modelo de Workstation-servidor Modelo de procesador-equipo: los terminales se conectan a la red así como los procesadores. Todos los servicios se envían a los servidores. El número necesario de procesadores en los servidores se reparte a cada usuario desde el equipo (pool). Implica menor interactividad. Figura 13: Modelo Procesador -Equipo Modelo Cluster: toma el modelo cliente servidor. En cuanto a éste último, consiste en muchos PC/workstations conectados a una red de alta velocidad. Focaliza más el rendimiento y se ocupa de las solicitudes en paralelo. Figura 14: Modelo cluster Computación de Grid: recopila la potencia de los superordenadores y cluster y los hace disponibles como si fuera una malla eléctrica. Figura 15: Computación de grid SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 19 Introducción a los Sistemas Industriales 2.14 Clasificación de arquitecturas MIMD La organización MIMD se refiere a un sistema de computadoras capaz de procesar múltiples programas al mismo tiempo. La mayoría de los sistemas de multicomputadoras y multiprocesador pueden clasificarse en esta categoría. La clasificación de Flynn depende en la diferencia entre el desempeño de la unidad de control y el de la unidad de procesamiento de datos. Enfatiza las características de desempeño del sistema de computadora más que sus interconexiones estructurales y operacionales. Un tipo de procesamiento paralelo que no entra en la clasificación de Flynn es la arquitectura paralela (pipe-line). El procesamiento por arquitectura paralela es una técnica de implantación en donde las suboperaciones aritméticas o las fases de un ciclo de instrucción de computadora se traslapan en su ejecución. El procesamiento de vector se relaciona con los cálculos que implican vectores y matrices grandes. Los procesadores de arquitectura paralela ejecutan cálculos sobre arreglos de datos grandes. La arquitectura paralela o de líneas paralelas (pipe-line) es una técnica en la que se descompone un proceso secuencial en suboperaciones, y cada subproceso se ejecuta en un segmento dedicado especial que opera en forma concurrente con los otros segmentos. Una línea puede considerarse como un conjunto de segmentos de procesamiento por el que fluye información binaria. Cada segmento ejecuta un procesamiento parcial, dictado por la manera en que se divide la tarea. El resultado obtenido de cálculo en cada segmento se transfiere al siguiente segmento en la línea. El resultado final se obtiene después de que los datos hayan recorrido todos los segmentos [3]. Figura 16: Clasificación de la arquitectura MIMD SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 20 Introducción a los Sistemas Industriales 2.15 Conceptos de Hardware – Conexiones MP basadas en bus y en Switch Todos los sistemas distribuidos constan de varias CPU, organizadas de diversas formas, especialmente respecto de la forma de interconectarlas entre sí y de los esquemas de comunicación utilizados [6]. Existen diversos esquemas de clasificación para los sistemas de cómputos con varias CPU. Uno de los más conocidos es la “Taxonomía de Flynn”, que se ha visto anteriormente. Un avance sobre la clasificación computadoras MIMD en dos grupos: • • de Flynn incluye la división de las Multiprocesadores: poseen memoria compartida. Los distintos procesadores comparten el mismo espacio de direcciones virtuales. Multicomputadoras: no poseen memoria compartida Por ejemplo: 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. Por ejemplo: la televisión por cable. Figura 17: Multiprocesador basado en bus • Esquema con conmutador: No existe una sola columna vertebral de conexión sino que 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. Por ejemplo, el sistema mundial telefónico público. SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 21 Introducción a los Sistemas Industriales Figura 18: Multiprocesador basado en conmutador (switch) (a-Un conmutador de barra fija. b- una red de conmutadores omega) 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. 2.16 Conceptos de Software – Sistemas operativos La importancia del software supera frecuentemente a la del hardware [6]. La imagen que un sistema presenta queda determinada en gran medida por el software del sistema operativo y no por el hardware. Los sistemas operativos 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. SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 22 Introducción a los Sistemas Industriales Combinando los distintos tipos de hardware distribuido con software distribuido se logran distintas soluciones, aunque no todas interesan desde el punto de vista funcional del usuario. Por ejemplo, un multiprocesador es un multiprocesador, no importa si utiliza un bus con cachés monitores o una red omega. Sistemas operativos: • DOS: sistema operativo acoplado firmemente para multiprocesadores y multiordenadores homogéneos. Su objetivo principal es gestionar los recursos del hardware. • NOS: sistema operativo acoplado libremente para multiordenadores heterogéneos (LAN y WAN). Ofrece servicios locales a clientes remotos. • Middleware: capa adicional encima de Nos que implementa los servicios generales. Provee transparencia en la distribución. 2.17 Sistemas operativos de uniprocesador Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador del ordenador, de manera que si el ordenador tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y el MacOS. El Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos. Se divide en 5 capas: - Nivel 1. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución de procesos. - Nivel 2. Procesador: Se encarga de activar los espacios de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. - Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. - Nivel 4. Información o Aplicación o Interprete de Lenguajes: Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las órdenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa, el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. - Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria. SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 23 Introducción a los Sistemas Industriales El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación [2]. Figura 19: Sistema operativo de uniprocesador 2.18 Sistemas operativos de multiordenadores Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Asimétrica: cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Simétrica: cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cual quiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial. Figura 20: Estructura general de un multiordenador DOS SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 24 Introducción a los Sistemas Industriales 2.19 Sistemas distribuidos con memoria compartida Los sistemas de memoria compartida distribuida (DSM) representan la creación híbrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques más atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador [1]. La principal característica de DSM es que ahorra al programador todo lo concerniente al paso de mensajes al escribir sus aplicaciones, cuestión que en otro sistema debería tenerse muy presente. DSM es fundamentalmente una herramienta para aplicaciones paralelas o para aplicaciones o grupos de aplicaciones distribuidas en las que se puede acceder directamente a datos individuales que ellas comparten. En general, DSM es menos apropiado para sistemas cliente-servidor, ya que los clientes ven al servidor como un gestor de recursos en forma de datos abstractos que se acceden a través de peticiones (por razones de modularidad y protección). Sin embargo, los servidores pueden proporcionar DSM compartido entre los clientes. Por ejemplo, los archivos plasmados en memoria (memory mapped) que son compartidos y sobre los que se gestiona un cierto grado de consistencia son una forma de DSM 2.20 Sistema operativo de red Los sistemas operativos de red, además de incorporar herramientas propias de un sistema operativo como son por ejemplo las herramientas para manejo de ficheros y directorios, incluyen otras para el uso, gestión y mantenimiento de la red, así como herramientas destinadas a correo electrónico, envío de emnsajes, copia de ficheros entre nodos, ejecución de aplicaciones contenidas en otras máquinas, compartición de recursos hardware etc. Existen muchos sistemas operativos capaces de gestionar una red dependiente de las arquitecturas de las máquinas que se utilicen. Los más comunes son : Novell, Lantastic, Windows 3.11 para trabajo en grupo, Unix, Linux, Windows 95, Windows NT, OS/2... Cada sistema operativo ofrece una forma diferente de manejar la red y utiliza diferentes protocolos para la comunicación. Sin el software una computadora es en esencia una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general, en 2 clases: los programas de sistema, que controlan la operación de la computadora en sí y los programas de SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 25 Introducción a los Sistemas Industriales aplicación, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema, es el Sistema Operativo, que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicación. Figura 21: Estructura general de un sistema operativo de red (NOS) 2.21 Sistemas Distribuidos –Lenguajes Prácticamente cualquier lenguaje de programación que tenga acceso al hardware completo del sistema podría manejar programación distribuida si se le da suficiente tiempo y código. El proceso remoto llama a los comandos del sistema operativo distribuido en una conexión de red. Los sistemas como CORBA, Microsoft D/COM, Java RMI y otros, intentan mapear los diseños orientado a objetos a la red. Los sistemas con acoplamientos libres que comunican a través de documentos intermedios que son típicamente lisibles por los humanos son XML, HTML, SGML, X.500, y EDI. Los lenguajes específicamente hechos a la medida para los programas distribuidos son: • Lenguaje de programación Ada: se usa principalmente en entornos en los que se necesita una gran seguridad y fiabilidad como la defensa, la aeronáutica (Boeing o Airbus), la gestión del tráfico aéreo y la industria aeroespacial entre otros. • Lenguaje de programación Alef • Lenguaje de programación E • Lenguaje de programación Erlang: lenguaje de programación concurrente y un sistema de ejecución que incluye una máquina virtual y biblioteca • Lenguaje de programación Limbo: lenguaje modular, no orientado a objetos • Lenguaje de programación Oz SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 26 Introducción a los Sistemas Industriales 2.21 CORBA, DCOM y Java/RMI CORBA: es la abreviatura de Common Object Request Broker Architecture. Esta arquitectura permite a los objetos comunicarse entre ellos sin importar el lenguaje en el que se encuentran escritos o el sistema operativo en el que funcionan. Fue desarrollado por la OMG. DCOM: Acrónimo de Distributed Component Object Model (modelo de componentes distribuidos), es una implementación del estándar CORBA. Surge como extensión de COM (Component Object Model) para soportar objetos distribuidos a través de la red. Al contrario que CORBA, DCOM sólo funciona sobre Windows. Java/RMI: Remote Method Invocation o invocación de métodos remotos. Se basa en CORBA, aunque es mucho más sencillo. Sólo puede ser usado entre objetos Java 2.23 MPI Interfaz de paso de mensajes El paso de mensajes es una tarea ampliamente usada en ciertas clases de máquinas paralelas, especialmente aquellas que cuentan con memoria distribuida. Aunque existen muchas variaciones, el concepto básico en el proceso de comunicación mediante mensajes es bien entendido. MPI es una interfaz de aplicación descriptiva de comunicaciones con un lenguaje independiente (API) con semánticas definidas e interpretaciones flexibles. Es por tanto un set de interfaces de tipo de capa 5, aunque las implementaciones pueden cubrir más capas del modelo de referencia, con enchufes +TCP/IP La meta de MPI o Message Passing Interface (Interfaz de paso de mensajes), es el desarrollar un estándar (que sea ampliamente usado) para escribir programas que implementen el paso de mensajes. Por lo cual el interfaz intenta establecer para esto un estándar práctico, portable, eficiente y flexible. MPI es un estándar para la comunicación entre los procesos modelando un programa paralelo en un sistema de memoria distribuida. La mayoría de las implementaciones MPI consisten en un set específico de rutinas (API) llamado desde Fortran, C, o C++ y desde cualquier lenguaje capaz de interactuar con dichas librerías de rutina. SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 27 Introducción a los Sistemas Industriales Metas del MPI • • • • • • • • • Diseñar una interfaz de programación aplicable (no necesariamente para compiladores o sistemas que implementan una librería). Permitir una comunicación eficiente. Evitando el copiar de memoria a memoria y permitiendo (donde sea posible) la sobreposición de computación y comunicación, además de aligerar la comunicación con el procesador. Permitir implementaciones que puedan ser utilizadas en un ambiente heterogéneo. Permitir enlaces convenientes en C y Fortran 77 para el interfaz. Asumir un interfaz de comunicación seguro. El usuario no debe lidiar con fallas de comunicación. Tales fallas son controladas por el subsistema de comunicación interior. Definir un interfaz que no sea muy diferente a los actuales, tales como PVM, NX, Express, p4, etc., y proveer de extensiones para permitir mayor flexibilidad. Definir un interfaz que pueda ser implementado en diferentes plataformas, sin cambios significativos en el software y las funciones internas de comunicación. La semántica del interfaz debe ser independiente del lenguaje. La interfaz debe ser diseñada para producir tareas seguras. 3. CONCLUSIONES Un sistema distribuido es 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. 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. Se caracterizan por: compartición de recursos, apertura, concurrencia (varios procesos en un única máquina) y tolerancia a fallos. Frente a sistemas centralizados, son más económicos, rápidos, fiables y permiten el desarrollo incremental. Sin embargo, es necesaria una correcta distribución de recursos para evitar el colapso de unos mientras otros están libres, lo que requiere un alto coste. Frente a PCs independientes, permite compartir datos y recursos, favorecer la comunicación humano-humano y flexibilidad. Es de suma importancia resaltar la transparencia (ocultación al usuario y al programador de aplicaciones de la separación de los componentes de un sistema distribuido, de manera que el sistema se percibe como un todo) y la SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 28 Introducción a los Sistemas Industriales escalabilidad (que permita que cualquier recurso simple -hardware o softwarepuede extenderse para proporcionar servicio a tantos usuarios como se quiera en los sistemas distribuidos). A diferencia de los sistemas distribuidos, los sistemas paralelos se basan en multiprocesadores, con varias CPU fuertemente acopladas con un reloj común y una memoria compartida (comunicación y sincronización vía memoria). Tienen un único sistema operativo y todos los recursos son compartidos. Se pueden clasificar, según Flynn, en SISD, SIMD, MISD y MIMD. La arquitectura MIMD se basa en varios procesadores convencionales serie, cada uno con una unidad de tratamiento, que soporta su flujo de datos, y una unidad de control, que soporta su flujo de instrucciones. Con acoplamiento débil o fuerte. En cuanto al software, se pueden encontrar sistemas operativos: Uniprocesador es aquél que es capaz de manejar solamente un procesador del ordenador, de manera que si el ordenador tuviese más de uno le sería inútil. Multiordenadores Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Los sistemas de memoria compartida distribuida (DSM) representan la creación híbrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos Los sistemas operativos de red, además de incorporar herramientas propias de un sistema operativo como son por ejemplo las herramientas para manejo de ficheros y directorios, incluyen otras para el uso, gestión y mantenimiento de la red, así como herramientas destinadas a correo electrónico, Prácticamente cualquier lenguaje de programación que tenga acceso al hardware completo del sistema podría manejar programación distribuida si se le da suficiente tiempo y código. El proceso remoto llama a los comandos del sistema operativo distribuido en una conexión de red. Los sistemas como CORBA, Microsoft D/COM, Java RMI y otros, intentan mapear los diseños orientado a objetos a la red. SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 29 Introducción a los Sistemas Industriales 4. BIBLIOGRAFÍA Y/O REFERENCIAS [1] Facultad de Ciencias Exactas y Naturales –Argentina. Disponible en [http://exa.unne.edu.ar/] [2] ITE Instituto Nacional de Tecnologías Educativas y de Formación del Profesorado http://www.ite.educacion.es/ [3] Morris, M. Arquitectura de computadoras. Tercera edición. Editorial Prentice Hall. 1994 [4] J. L. Peterson; A. Silberschatz. Operating Systems Concepts. Addison-Wesley, MA-USA, 1991 [5] Quiles, F y Garrido, A. Computadores prestaciones. Colección Ciencia y Técnica. 1996 paralelos y evaluación [6] A. S. Tanenbaum. Organización de Computadoras - Un Enfoque Estructurado - Tercera Edición. Prentice Hall Hispanoamericana S. A., México, 1996 5. ENLACES DE INTERÉS Facultad de Ciencias Exactas y Naturales –Argentina. http://exa.unne.edu.ar/ Asociación de usuarios de GNU/Linux de Castilla y León http://augcyl.org/ SISTEMAS DE PROCESO DISTRIBUIDOS Y PARALELOS 30 de