Você está na página 1de 18

Universidad Nacional Autnoma de Mxico

Facultad de ingeniera

Sistemas Operativos

Gpo.1

Sistemas Distribuidos

N.L: 11

Gutirrez Ahumada Fernando Enrique

27/09/2012

ndice

Qu es un Sistema Distribuido?.......................................................................................... 3 Componentes de un Sistema Distribuido. 4 Ventajas y desventajas de un Sistema Distribuido. 5 Ejemplos de Sistemas Distribuidos 7 Arquitectura Cliente-Servidor 9 Protocolos 10 Middleware. 12 Programacin Cliente-Servidor: Sockets 13 RPC (Remote Procedure Call) y RMI (Remote Method Invocation) 17

Sistemas Operativos distribuidos Permiten distribuir tareas entre un conjunto de procesadores en diferentes equipos o en uno solo trasparente para el usuario. Existen dos esquemas bsicos de stos, Un sistema fuertemente acoplado (es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores) y un sistema dbilmente acoplado (los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local). El objetivo principal de un sistema operativo distribuido es conectar los recursos y servicios disponibles, mediante una red de comunicaciones, e integrarlos en un nico sistema.

Aunque todos los recursos del sistema deben gestionarse de forma global, un sistema Operativo distribuido tambin debe ocuparse, al igual que el sistema centralizado, de la gestin de los procesadores, de la asignacin de memoria, de los dispositivos de entrada/salida, y de las comunicaciones entre los distintos equipos. En la gestin de estos elementos, la principal diferencia entre el sistema operativo centralizado y el distribuido es que en el primero se dispone de una informacin exacta y actualizada de todo el estado del equipo, mientras que en el caso distribuido no se dispone de un reloj comn y, adems, el paso de los mensajes (con la informacin de estado) tiene retrasos, e incluso se pueden perder. Sin embargo, a pesar de estos problemas, al usuario se le debe ofrecer la misma visin que en el sistema centralizado, es decir, el usuario solamente quiere ver que se le ofrecen servicios

Componentes de los sistemas Distribuidos Los sistemas distribuidos debido a su complejidad requieren de varios componentes los cuales son: La plataforma de proceso: Una vez diseado el sistema, es el elemento encargado de proporcionar los recursos fsicos y el software de base para ejecutarlo. Esta formado por los Mainframe, PCs, PDAs, telfonos, etc... Los elementos de la conectividad: Son los encargados se proporcionar el transporte para comunicar e integrar los elementos de la plataforma de proceso. Son bsicamente las redes y las comunicaciones. El almacenamiento de datos: formado por los datos en si y los gestores donde se localizan. Los elementos de software: donde se incluyen las aplicaciones, los servicios que ayudan a crearlas y las interfaces que ayudan a usarlas. En este componente se integran las arquitecturas posibles para crearlas: centralizada, Batch, transaccional, cliente / servidor basado en sistema operativo, cliente / servidor basada en Internet y aplicaciones Web Internet. Sistemas de seguridad: finalmente, debe realizarse la gestin del sistema como un conjunto integrado y coordinado a travs de los recursos de direccin y administracin. La gestin del sistema debe permitir la coexistencia de varios centros de gestin diferentes. Parte fundamental del sistema de gestin es el cuadro de mandos. Hay dos cuadros de mandos diferentes: 1) El cuadro de mandos de seguimiento de los objetivos de negocio pensado para proporcionar informacin automtica a los gestores de como la realidad se mueve respecto a las previsiones de los objetivos de negocio en tiempo real. 2) El cuadro de mandos de explotacin desde donde se centraliza y coordina toda la administracin, supervisin y explotacin del sistema. Y todos ellos repartidos por varias plataformas fsicas, distribuidas por compaas propias, clientes, proveedores y terceros con dispersin geogrfica y desconocimiento mutuo de las plataformas respectivas. Estos recursos tcnicos suelen catalogarse en: Infraestructura. Plataforma. Comunicaciones. Datos.

Software: Aplicaciones. Interfaces. Servicios. Seguridad. Pero no olvidemos que detrs del sistema operativo hay personas que lo usan y los Gestionan. El factor humano ser fundamental como nos cuidaremos de recordar a lo largo del todo el diseo.

Ventajas y Desventajas de un sistema distribuido Prcticamente todos los grandes sistemas informticos son sistemas distribuidos en un sistema distribuido el procesamiento de informacin distribuye sobre varias computadoras en lugar de estar confinado a una nica maquina y esto tiene tanto sus ventajas como sus desventajas las ventajas mas notables de los sistemas distribuido son: Compartir recursos. Un sistema distribuido permite compartir recursos hardware y software (discos, impresoras, ficheros y compiladores) que se asocian con computadoras de una red. Aceleracin de clculos, si un determinado clculo puede dividirse en una serie de clculos de menor envergadura que pueden ejecutarse de forma concurrente, un sistema distribuido permitir distribuir esos subclculos entre los diversos nodos. Fiabilidad. Si falla uno de los nodos , los nodos restantes pueden continuar operando Apertura. Son normalmente sistemas abiertos: se disean sobre protocolos estndares que permiten combinar equipamiento y software de diferentes vendedores. Concurrencia. Varios procesos pueden operar al mismo tiempo sobre diferentes computadoras de la red. Hasta pueden comunicarse con otros durante su funcionamiento. Escalabilidad. Los sistemas distribuidos son escalables mientras la capacidad del sistema pueda incrementarse, aadiendo nuevos recursos para cubrir nuevas demandas sobre el sistema

Desventajas de los sistemas distribuidos Complejidad: Los sistemas distribuidos son ms complejos que los sistemas centralizados; lo que hace mas difcil comprender sus propiedades emergentes y probar estos sistemas. Por ejemplo en vez de que el rendimiento del sistema dependa de la velocidad de ejecucin de un procesador, depende del ancho de banda y de la velocidad de los procesadores de la red. Seguridad. Puede accederse al sistema desde varias computadoras diferentes y el trfico en la red puede estar sujeto a escuchas indeseadas. Es ms difcil mantener la integridad de los datos en el sistema y que los servicios del sistema no se degraden por ataques. Manejabilidad. Las computadoras en un sistema pueden ser de diferentes tipos y ejecutar versiones diferentes de sistemas operativos. Los defectos en una maquina pueden propagarse a otras con consecuencias inesperadas, esto significa que se requiere mas esfuerzo para gestionar y mantener el funcionamiento del sistema Impredecibilidad. Los sistemas distribuidos tienen una respuesta impredecible. La respuesta depende de la carga total en el sistema, de su organizacin y de la carga de red Como todos ellos pueden cambiar rpidamente el tiempo requerido para responder a una peticin de usuario puede variar drsticamente, de una peticin a otra

Ejemplos de Sistemas Distribuidos Entre los diferentes sistemas operativos distribuidos que existen tenemos los siguientes: Sprite Solaris MC Mach Chorus Spring Amoeba Taos

Sprite: es un sistema distribuido con un ncleo monoltico desarrollado por la University of California, Berkeley, ms concretamente por el grupo de investigacin de John Ousterhout Este sistema operativo tiene la apariencia para los programadores de un sistema nico, ya que la distribucin se produce dentro del propio ncleo y de este modo, Sprite nos da la impresin de estar trabajando sobre un tpico sistema UNIX.

Chorus: Chorus es un micro kernel embebido de tiempo real tpicamente usado en ambientes de aplicaciones distribuidas dedicadas de bajo costo, que necesitan un mnimo de funcionalidad y un mnimo uso de memoria, tal como lneas de tarjetas de crdito, telfonos portables, y dispositivos de mano. Pero tambin se encuentra en otras aplicaciones embebidas como impresoras, autmatas, etc. La tecnologa de Chorus ha sido diseada para construir una nueva generacin de sistemas distribuidos escalables. Chorus conjunta las siguientes caractersticas principales: comunicacin basada en la arquitectura, dependiendo de forma mnima del ncleo que integra procesado distribuido y comunicacin al ms bajo nivel, y que implementa servicios genricos usados por una serie de servidores de subsistema para extender interfaces estndar de sistemas operativos. Spring: Este sistema introduce nuevas tcnicas basadas en el modelo de Orientacin a Objetos (OO) de tal modo que los servicios del SO estn compuestos por un conjunto de objetos que cooperan para implementarlos y es factible modificar los mecanismos empleados en la interaccin entre dichos objetos. Anteriormente, Choices ya emple la OO como base para alcanzar un SO flexible y reconfigurable.

Spring introduce innovaciones como el modelo de subcontrato [84] que permiten adaptar en cierta medida la intercomunicacin entre los distintos objetos que constituyen el sistema (por ejemplo, hacer caching o replicacin de forma transparente). A grandes

rasgos, el modelo de subcontrato consiste en delegar la invocacin de mtodos remotos a un objeto que implementa el ``subcontrato'' que tiene el cliente con el servidor. Modificando ste se puede alterar la interconexin entre el cliente y el servidor. MACH: Mach es un ncleo de sistema operativo desarrollado en la Carnegie-Mellon University (CMU) para soportar la investigacin de sistemas operativos, principalmente computacin distribuida y paralela. El proyecto en CMU se ejecut desde 1985 hasta 1994. Mach se desarroll con la premisa de que todos los sistemas operativos modernos comparten una serie de caractersticas en comn, o son deseadas si es que no las tienen an. OBJETIVOS: Base para la construccin de otros sistemas (UNIX). Espacio de direcciones de gran tamao. Acceso transparente a los recursos de la red. Paralelismo del sistema y las aplicaciones. Escalabilidad (transportar mach a un nmero ms grande de mquinas). Soporte para mltiples aplicaciones usando multitarea. Hilos, los cuales pueden ser pensados como las partes de una aplicacin, o miniaplicaciones cuando hay multitarea. Soporte multiprocesadores, en una mquina nica o sobre una red. Comunicaciones interprocesos, enviando mensajes directamente entre aplicaciones. Proteccin y seguridad de memoria. La emulacin del sistema operativo se lleva a cabo en el espacio del usuario.

Solaris MC: Solaris MC es una extensin del ncleo de Solaris para operar en cluster. ste sistema incorpora ideas procedentes de Spring, aunque mantiene la estructura de ncleo monoltico no adaptable que presenta UNIX. Solaris MC se construye como conjunto de extensiones al Solaris bajo UNIX y proporciona el mismo ABI/API que Solaris, ejecutando aplicaciones sin modificar. Los componentes de Solaris MC se ponen en ejecucin en C++ a travs de un sistema orientado a objetos de OCRcBcA-compliant con todos los nuevos servicios definidos por el lenguaje IDL. De tal modo que los servicios del SO estn compuestos por un conjunto de objetos que cooperan para implementarlos y es factible modificar los mecanismos empleados en la interaccin entre dichos objetos.

El sistema de memoria virtual implementa los espacios de direcciones, ejecuta ``fuera'' del kernel. No obstante, ejecuta con todos los privilegios del ncleo y adems impone su abstraccin de Espacio de Direcciones a las aplicaciones. A efectos de adaptabilidad en el sistema, la gestin de memoria puede considerarse dentro del ncleo salvo por la existencia de paginadores externos como ocurra en Mach. En pocas palabras, Solaris MC es un sistema distribuido que no puede considerarse como un sistema adaptable en realidad, aunque sea elegante y extremadamente flexible.

Arquitectura cliente/servidor

Un dispositivo maneja las operaciones con los archivos y es compartido por cada PC cliente conectado a la red. ARQUITECTURA CLIENTE/SERVIDOR. Un ambiente computacional basado en una red (LAN o WAN) en la que un servidor central de base de datos, o un motor o dispositivo, maneja todos los comandos de base de datos enviados a l desde las estaciones de trabajo cliente, y aplicaciones de programas en cada cliente concentran las funciones de interfaz con el usuario. MOTOR DE BASE DE DATOS (Database engine). La parte (back-end) del sistema de base de datos cliente/servidor que se encuentra en el servidor y provee el procesamiento de la base de datos y comparte las funciones de acceso.

CLIENTE. La parte (front-end) del sistema de base de datos cliente/servidor que provee la interfaz del usuario y las funciones de manipulacin de datos. Entre los beneficios al adoptar una arquitectura cliente/servidor, estn: 1) Permite a las compaas apalancarse en los beneficios de la tecnologa de la micro computacin. Actualmente, las estaciones de trabajo tienen gran capacidad de cmputo a una fraccin del costo de los mainframes. 2) Permite mayor procesamiento de informacin en el sitio donde sta es generada, mejorando los tiempos de respuesta y reduciendo el trfico en la red. 3) Facilita el uso de interfaces grficas para los usuarios y permite el trabajo con aplicaciones de presentaciones visuales en las estaciones de trabajo. 4) Permite y promueve la utilizacin de sistemas abiertos.

PROTOCOLO

Definicin: Es un conjunto bien conocido de reglas y formatos que se utilizan para la comunicacin entre procesos que realizan una determinada tarea. Se requieren dos partes:

Especificacin de la secuencia de mensajes que se han de intercambiar. Especificacin del formato de los datos en los mensajes.

Un protocolo permite que componentes heterogneos de sistemas distribuidos puedan desarrollarse independientemente, y por medio de mdulos de software que componen el protocolo, haya una comunicacin 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 bsica de transferencia de datos y se encarga del direccionamiento de la informacin, para que llegue a su destino en la red. TCP: Protocolo de Control de Transmisin.- Protocolo de la capa de Transporte, que permite dividir y ordenar la informacin a transportar en paquetes de menor tamao para su transporte y recepcin.

HTTP: Protocolo de Transferencia de Hipertexto.- Protocolo de la capa de aplicacin, que permite el servicio de transferencia de pginas de hipertexto entre el cliente WEB y los servidores. SMTP: Protocolo de Transferencia de Correo Simple.- Protocolo de la capa de aplicacin, que permite el envo de correo electrnico por la red. POP3: Protocolo de Oficina de Correo.- Protocolo de la capa de aplicacin, que permite la gestin de correos en Internet, es decir, le permite a una estacin de trabajo recuperar los correos que estn almacenados en el servidor.

MIDDLEWARE

Definicin: 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 peticin de una pgina web desde un browser en el cliente, el middleware determina la ubicacin y enva una peticin para dicha pgina. El servidor Web, interpreta la peticin y enva la pgina al software intermedio, quien la dirige al navegador de la mquina 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 autenticacin, 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 tecnologa 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 especficas (Conexiones Seguras: Sockets), etc.

Caractersticas:

Independiza el servicio de su implantacin, 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.

Programacin cliente/servidor SOCKET Los servicios de comunicacin son tpicos servicios de red, pero en caso de los SOD son ms especializados en ciertas reas. Los SOD utilizan comunicacin en grupo esto permite a todos los computadores del sistema trabajar como un solo elemento de la red. SOD tienen comunicacin por medio de SOCKETS son pasos de mensajes que permiten verificar cual equipo est disponible. Cliente-Servidor es el modelo que actualmente domina el mbito de comunicacin, ya que descentraliza los procesos y los recursos. Servicios como: Ejecucin de un programa. Acceso a una Base de Datos. Acceso a un dispositivo de Hardware.

Los sockets pueden unir un proceso cliente y un proceso servidor de manera semejante a como se puede unir un enchufe de un dispositivo electrnico a su respectivo zcalo. De los mecanismos de sockets el ms conocido es referente al API de Berkeley y est implementado en prcticamente todos los sistemas UNIX por lo que se maneja C, pero tambin esta portado a otras arquitecturas como Windows (WinSock) y otros lenguajes como Java. Para lograr tener un SOCKET para la comunicacin e intercambio de informacin se necesita: Que un programa sea capaz de localizar al otro. Que ambos programas sean capaces de intercambiar informacin

A continuacin se muestra un cdigo de un servidor muy simple en Java, lo que hace es escuchar el puerto 5000, cuando un cliente se conecta este enva un mensaje de confirmacin al cliente, luego el cliente al enviar su primer mensaje, el servidor enva un segundo mensaje y se cierra la conexin. CODIGO FUENTE DEL SERVIDOR

01 import java.net.*; 02 03 import java.io.*; 04 14 15 16 17 public class Conex { 18 19 20 21 final int PUERTO=5000; 22 23 ServerSocket sc; 24 25 Socket so; 26 27 DataOutputStream salida; 28 29 String mensajeRecibido; 30 31 //SERVIDOR 32 33 public void initServer() 34 35 { 36 37 BufferedReader entrada; 38 39 40 41 try

42 43 { 44 45 sc = new ServerSocket(PUERTO );/* crea socket servidor que escuchara en puerto 5000*/ 46 47 so=new Socket(); 48 49 System.out.println("Esperando una conexin:"); 50 51 so = sc.accept(); //Inicia el socket, ahora esta esperando una conexin por parte del 01 cliente 02 03 System.out.println("Un cliente se ha conectado."); 04 05 06 07 //Canales de entrada y salida de datos 08 09 10 11 salida = new DataOutputStream(so.getOutputStream()); 12 13 14 15 System.out.println("Confirmando conexion al cliente...."); 16 17 salida.writeUTF("Conexin exitosa...\n envia un mensaje :D"); 18 19 20 21 //Recepcion de mensaje 22 23 mensajeRecibido = entrada.readLine(); 24 25 System.out.println(mensajeRecibido); 26 entrada = new BufferedReader(new InputStreamReader(so.getInputStream()));

27 28 29 salida.writeUTF("Se recibio tu mensaje.\n Terminando conexion..."); 30 31 salida.writeUTF("Gracias por conectarte, adios!"); 32 33 System.out.println("Cerrando conexin..."); 34 35 36 37 sc.close();//Aqui se cierra la conexin con el cliente 38 39 }catch(Exception e ) 40 41 { 42 43 System.out.println("Error: "+e.getMessage()); 44 45 } 46 47 } 48 49 }

Remote Procedure Call (RPC) Abstrae la comunicacin a nivel de invocacin de procedimientos. Es adecuada para programacin estructurada basada en libreras. Un proceso en una mquina local invoca a un procedimiento en una mquina remota. Distintas especificaciones e implementaciones: Open Network Computing (ONC) RPC Distributed Computing Environment (DCE) RPC International Organization for Standarization (ISO) RPC Invocacin remota de objetos: Abstrae la comunicacin a la invocacin de mtodos de objetos que se encuentran distribuidos por el sistema distribuido. Los objetos se localizan por su identidad. Es adecuada para aplicaciones basadas en el paradigma OO. RMI (Remote Method Invocation) Es la solucin Java para la comunicacin de objetos Java distribuidos. Solucin simple (Fcil de uso) Solucin natural (Se comporta como se espera que haga) Objetivos de RMI Proporcionar un middelware para el desarrollo de aplicaciones Facilita la interaccin de objetos instanciados en diferente JVM mediante el paradigma de invocacin de mtodos de los objetos. Integra el modelo de objetos distribuidos en el lenguaje Java de una forma natural y manteniendo la semntica que le es propia. Capacita para escribir aplicaciones distribuidas tan simples como sea posible. Ventajas e inconvenientes de RMI Ventaja:

Permite distribuir una aplicacin de forma muy transparente, es decir, sin que el programador tenga que modificar apenas el cdigo. Las invocaciones remotas son ms eficientes que las peticiones va http que se usan con los CGIs o los Servlets. Inconvenientes: El paso de parmetros por valor implica tiempo para hacer la serializacin, enviar los objetos serializados a travs de la red y luego volver a recomponer los objetos en el destino. Componentes: Clientes: Conducen el flujo de la aplicacin. Localizan e invocan mtodos ofertados como remotos por los servidores. Servidores: Conjunto de objetos que ofrecen interfaces remotas pblicas cuyos mtodos pueden ser invocados clientes de cualquier procesador de la plataforma. Registro: Servicio esttico que se establece en cada nudo, en el que se registran los servidores con un nombre, y donde los clientes los localizan por l.

Você também pode gostar