302090

Upload: mario-alejandro-godoy-patino

Post on 31-Oct-2015

134 views

Category:

Documents


0 download

TRANSCRIPT

  • SISTEMAS DISTRIBUIDOS 1

    MDULO DEL CURSO ACADMICO

    SISTEMAS DISTRIBUIDOS

    Gerardo Granados Acua

    UNIVERSIDAD NACIONAL ABIERTA

    Y A DISTANCIA - UNAD Bogot, 2006

  • SISTEMAS DISTRIBUIDOS 2

    COMIT DIRECTIVO Jaime Alberto Leal Afanador Rector Roberto Salazar Ramos Vicerrector Acadmico Sejhifar Ballesteros Moreno Vicerrector Administrativo y Financiero Maribel Crdoba Guerrero Secretario General Edgar Guillermo Rodrguez Director de Planeacin GUA DIDCTICA CURSO SISTEMAS DISTRIBUIDOS PRIMERA EDICIN @ Copyright Universidad Nacional Abierta y a Distancia ISBN 2006 Centro Nacional de Medios para el Aprendizaje

  • SISTEMAS DISTRIBUIDOS 3

    Mencin de marcas registradas Linux es marca registada de Linus Torvalds Java, Jini son marcas registradas de Sun Microsystems Macintosh es marca registrada de Apple Computer Powerbuilder es marca registrada de Sybase Inc. Delphi es marca registrada de Borland Software Corporation Novell es marca registrada de Novell Inc. Netscape es marca registrada de Netscape Communications Corporation Bluetooth es marca registada de Bluetooth SIG, Inc. Oracle es marca registrada de Oracle Corporation. dBase es marca registrada de Borland Software Corporation FoxPro es marca registrada de Fox Technologies Lotus Notes es marca registrada de Lotus Development Corporation Clipper es marca registrada de Computer Associates. Microsoft Exchange, Windows, Visual Basic, Internet Explorer son marcas registradas de Microsoft Corporation

  • SISTEMAS DISTRIBUIDOS 4

    TABLA DE CONTENIDO INTRODUCCION 9PRIMERA UNIDAD: FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS 121. Componentes de un sistema distribuido 14 1.1 Introduccin y conceptos 14 1.2 Objetivos de un sistema distribuido 15 1.3 Comunicacin en los sistemas distribuidos 17 1.4 Ventajas y desventajas de los sistemas distribuidos 262. Caracterizacin de los sistemas distribuidos 29 2.1 Heterogeneidad 29 2.2 Extensibilidad 31 2.3 Seguridad 33 2.4 Escalabilidad 35 2.5 Tratamiento de fallos 38 2.6 Concurrencia 39 2.7 Transparencia 403. Tipos de sistemas distribuidos 44 3.1 Internet 44 3.2 Intranet 45 3.3 Computacin mvil y ubicua 47 3.4 Computacin distribuida 50SEGUNDA UNIDAD. ARQUITECTURA DE UN SISTEMA DISTRIBUIDO 551. Modelos de sistemas distribuidos 57 1.1 Modelo cliente/servidor 57 1.2 Redes igual igual (P2P) 66 1.3 Modelos de componentes 722. Middleware 76 2.1 Funciones middleware 77 2.2 Componentes middleware 78 2.3 Tipos de middleware 79 2.4 Servicios middleware 80 2.5 Ventajas del Middleware 81 2.6 Campos de aplicacin de la tecnologa middleware 813. Aspectos de diseo de un sistema distribuido 84 3.1 Comunicacin entre procesos 84 3.2 Objetos distribuidos e invocacin remota 1014. Aspectos de seguridad en sistemas distribuidos 106 4.1 Polticas de seguridad y mecanismos de proteccin 107 4.2 Factores de seguridad 108 4.3 Amenazas y ataques a la seguridad 110 4.4 Criptografa 111 4.5 Seguridad con cortafuegos 116 4.6 Servidor Proxy 123

  • SISTEMAS DISTRIBUIDOS 5

    TERCERA UNIDAD. APLICACIONES DISTRIBUIDAS 1271. Sistemas operativos distribuidos - CORBA 129 1.1 Definicin 129 1.2 Por que usar CORBA 129 1.3 Perspectiva tecnolgica 130 1.4 Caractersticas de CORBA 131 1.5 Arquitectura de gestin de objetos de OMG 133 1.6 Los servicios CORBA 134 1.7 Componentes de CORBA 136 1.8 Introduccin a IDL 137 1.9 CORBA y aplicaciones 1392. Sistemas de archivos distribuidos 142 2.1 Caractersticas de los sistemas de archivos 143 2.2 Operaciones en el sistema de archivos 144 2.3 Requisitos del sistema de archivos distribuidos 145 2.4 Arquitectura del servicio de archivos 148 2.5 Sistema de archivos de red de Sun (NFS) 1513. Servicios Web 160 3.1 Introduccin a los Servicios Web 161 3.2 Arquitectura y tecnologas bsicas de los Servicios Web 162 3.3 Implementacin de los Servicios Web 168 3.4 Servicios Web versus sistemas distribuidos tradicionales 169 3.5 Tendencias en Servicios Web Web semntica 1704. OTRAS APLICACIONES DISTRIBUIDAS 172 4.1 Sistema de nombres de dominio DNS 172 4.2 Sistemas de gestin distribuida 179

  • SISTEMAS DISTRIBUIDOS 6

    LISTA DE FIGURAS

    Figura 1. Sistema Distribuido 14Figura 2. Sistema Distribuido Multimedia 15Figura 3. Sincronizacin en Red 16Figura 4. Fallos Independientes 17Figura 5. Agentes 18Figura 6. Agentes Mviles 22Figura 7. Agentes de Recuperacin de Informacin 23Figura 8. Googlebot 26Figura 9. Heterogeneidad de Sistemas Distribuidos 29Figura 10. Heterogeneidad y Cdigo Mvil 31Figura 11. Extensibilidad en un Sistema Distribuido 32Figura 12. Seguridad 34Figura 13. Crecimiento de Internet en los ltimos aos 36Figura 14. Red Internet 44Figura 15. Red Intranet 46Figura 16. Dispositivos mviles en un Sistema Distribuido 47Figura 17. Velocidad de los procesadores 50Figura 18. Usos de la Computacin Distribuida 51Figura 19. Ejemplo de Computacin Distribuida 52Figura 20. Comunicacin Cliente/Servidor 57Figura 21. Procesos Cliente/Servidor 58Figura 22. Paso de Mensajes 61Figura 23. Arquitectura Cliente/Servidor Monoltica 61Figura 24. Arquitectura Cliente/Servidor de dos capas 62Figura 25. Arquitectura Cliente/Servidor de tres capas 64Figura 26. Modelo Peer-to-Peer 66Figura 27. Redes P2P centralizadas 68Figura 28. Redes P2P Descentralizadas 69Figura 29. Redes P2P hibridas 70Figura 30. Operacin Tabla Hash 71Figura 31. Modelo de componentes de SUN 72Figura 32. Modelo de componentes distribuidos de Microsoft 73Figura 33. Middleware 76Figura 34. Middleware y APIs 76Figura 35. Sistema distribuido visto como Middleware 77Figura 36. Comunicacin entre Procesos 84Figura 37. Sistema Cliente/Servidor con Paso de Mensajes 85Figura 38. API para protocolos en Internet 86Figura 39. Sockets 88Figura 40. Operacin de los protocolos TCP y UDP 89Figura 41. Paquete del datagrama 91Figura 42. Un cliente UDP enviando un mensaje a un servidor y recogiendo su respuesta 92Figura 43. Un servidor UDP recibe peticiones y las devuelve al cliente de forma repetitiva 92Figura 44. Un cliente TCP realiza una conexin a un servidor, envia una peticin y recibe una respuesta

    96

    Figura 45. Conectores usados para Datagramas 98Figura 46. Conectores usados para Flujos 99

  • SISTEMAS DISTRIBUIDOS 7

    Figura 47. Operacin RPC 102

    Figura 48. Operacin de Java RMI 104

    Figura 49. Evolucin de las Necesidades de Seguridad 106

    Figura 50. Amenazas a la Seguridad 107

    Figura 51. Emisor, Receptor e Intruso 108

    Figura 52. Ataques a la seguridad 111

    Figura 53. Criptografa 112

    Figura 54. Modelo de Criptografa 113

    Figura 55. Algoritmo PGP 114

    Figura 56. Cortafuegos (Firewall) 117

    Figura 57. Cortafuegos con Filtrado de Paquetes 119

    Figura 58. Cortafuegos en combinacin con pasarela de aplicacin 121

    Figura 59. Servidor Proxy 123

    Figura 60. Cdigo generado en CORBA 133

    Figura 61. Categoras de Interfaz OMA. 134

    Figura 62. Componentes de CORBA 134

    Figura 63. El Papel de IDL 137

    Figura 64. Encapsulamiento IDL 138

    Figura 65. Desarrollo IDL con Java 138

    Figura 66. Desarrollo IDL con c++ 139

    Figura 67. Ejemplo de interfaz IDL 139

    Figura 68. Desarrollo de aplicaciones con CORBA 140

    Figura 69. CORBA, Java y la WEB 140

    Figura 70. Estructura del registro de atributos de un archivo 143

    Figura 71. Mdulos de un sistema de archivos 144

  • SISTEMAS DISTRIBUIDOS 8

    Figura 72. Operaciones del sistema de archivo de LINUX-UNIX 145

    Figura 73. Arquitectura del Servicio de Archivos 148

    Figura 74. Operaciones del servicio de archivos plano 150

    Figura 75. Arquitectura NFS 151

    Figura 76. Apuntador de archivo 152

    Figura 77. Operaciones del Servidor NFS (simplificado) 155

    Figura 78. Sistemas de archivos locales y remotos accesibles desde un cliente NFS 156

    Figura 79. Niveles de Aplicaciones Web 160

    Figura 80. Interaccin de Aplicaciones Web con Objetos Distribuidos 161

    Figura 81. Protocolos de Servicios Web 162

    Figura 82. Operacin del Protocolo SOAP RPC 164

    Figura 83. Ejemplo de Mensaje SOAP 164

    Figura 84. Operacin SOAP Proceso cliente 165

    Figura 85. Operacin SOAP Proceso Servidor 165

    Figura 86. Elementos WSDL 166

    Figura 87. Integracin WSDL - UDDI 167

    Figura 88. Ejemplo de WSFL 168

    Figura 89. Ejemplo de Servicios Web 169

    Figura 90. Consulta en Web Semntica 170

    Figura 91. Rango de Direcciones IPv4 172

    Figura 92. Base de datos DNS vs Sistema de Archivos LINUX-UNIX 173

    Figura 93. Leyendo nombres en DNS y LINUX-UNIX 174

    Figura 94. Lista de dominios de nivel superior 175

    Figura 95. Administracin y delegacin de un dominio 175

    Figura 96. Zonas DNS 176

  • SISTEMAS DISTRIBUIDOS 9

    Figura 97. Operacin DNS 177

    Figura 98. IPv6 encapsulado en IPv4 178

    Figura 99. Gestin Distribuida 179

    Figura 100. Sistema de Gestin Distribuida 183

    Figura 101. Arquitectura del Software de Gestin Distribuida 185

  • SISTEMAS DISTRIBUIDOS 10

    INTRODUCCIN

    Anualmente el Instituto Tecnolgico de Massachussets (MIT), el ms reconocido centro de investigacin a nivel mundial, presenta una lista de las diez tecnologas de mayor futuro, y, para satisfaccin de quienes comienzan a trabajar con el presente mdulo, en los ultimos aos se han destacado tres innovadoras tecnologas: las redes de sensores inalmbricos, los sistemas de computacin distribuida y el almacenamiento distribuido. Todas estas tecnologas forman parte integral del campo de los Sistemas Distribuidos (SD) y es as, que muchas de las aplicaciones y avances tecnolgicos de nuestra sociedad se han visto acelerados por la evolucin de las tecnologas de informacin distribuida y, como ejemplo caracterstico, tenemos a Internet, la mayor red de informacin distribuda a nivel mundial. Lo expuesto hasta aqu, apunta a reconocer la importancia de los Sistemas Distribuidos como un elemento fundamental, que deben conocer y aplicar los profesionales que trabajan en el desarrollo de las ciencias de la informacin y en especial de quienes implementan y utilizan aplicaciones basadas en las tecnologas de la informacin y de las comunicaciones. Los SD son una evolucin de los sistemas centralizados los cuales, con el surgimiento de las redes de informacin, se vieron en la necesidad de expandir su alcance y cobertura. Debido a ello, emergieron conceptos como sistemas operativos distribuidos, memoria distribuida, almacenamiento distribuido y aplicaciones distribuidas, entre otros. Muchas de las facilidades de nuestra vida diaria estan siendo soportadas por SD. Por citar algunos casos tenemos que el uso de la tecnologa de comunicacin celular se fundamenta en una red distribuida de clulas de procesamiento de llamadas, los sistemas de cajeros electrnicos se apoyan en bases de datos distribuidas y el correo electrnico es un sistema distribuido de almacenamiento y envio de informacin. Adems de lo anterior, tenemos innumerables aplicaciones que usan sistemas distribuidos y que sern la base de la computacin mvil (ubicua), la computacin distribuida y los servicios web, tecnologas revolucionarias que sern parte de la transformacin de nuestra sociedad.

  • SISTEMAS DISTRIBUIDOS 11

    El curso de Sistemas Distribuidos ofrecido por la Facultad de Ciencias Bsicas e Ingenieras de la UNAD, tiene asignados 3 crditos acadmicos y corresponde al campo de formacin Electivo del Programa de Ingeniera de Sistemas. Tiene un carcter metodolgico pues se espera que el estudiante asimile los elementos conceptuales y los aplique en la formulacin de su proyecto utilizando tecnologa computacional. A travs del desarrollo de las diferentes unidades temticas se pretende que el estudiante adquiera los fundamentos conceptuales de los SD, su uso y los requerimientos para su desarrollo. Tambin se busca que el estudiante adquiera las destrezas necesarias para formular, planear y ejecutar proyectos que involucren tecnologas de SD. El presente mdulo se ha estructurado en tres unidades temticas que abarcan los aspectos ms relevantes e implcitos en el campo de los SD. Estas unidades son en su orden: fundamentos de sistemas distribuidos, arquitectura de un sistema distribuido y aplicaciones distribuidas. En la primera unidad se abordan los aspectos conceptuales necesarios para iniciar el estudio de los SD. Se presentan los componentes de un sistema distribuido, las principales caractersticas as como los tipos de sistemas distribuidos. La segunda unidad expone los elementos claves que conforman la arquitectura de un sistema distribuido. Se analizan los modelos de sistemas distribuidos (cliente/servidor, P2P, componentes), el concepto de middleware(lgica de la mediacin) y los aspectos de diseo y seguridad en sistemas distribuidos. El mdulo finaliza con una unidad destinada a presentar las principales aplicaciones distribuidas. Se estudian el sistema operativo distribudo CORBA, los sistemas de archivos distribuidos, los servicios web y otras aplicaciones distribuidas como el sistema de nombres de dominio (DNS) y los sistemas de gestin distribuida. Teniendo en cuenta que la mayora de los desarrollos en las tecnologas que soportan los SD, tienen su origen en los pases industrializados y en especial en los pases angloparlantes, se han incluido los trminos en ingls de uso comn para referirse a las tecnologas que se utilizan en los SD. Es por ello que se encontrarn expresiones como middleware, router, kernel, backbone, cluster, mainframe, host, applet, socket y muchas otras que estn referenciadas a largo del mdulo, con la

  • SISTEMAS DISTRIBUIDOS 12

    consideracin de haber incluido la traduccin correspondiente y un glosario de ampliacin de conceptos al final del mdulo. Adems, considerando la cantidad de siglas, abreviaturas y acrnimos que constantemente se manejan al profundizar en los diversos tpicos de los SD, se ha incluido un glosario de siglas con aproximadamente ochenta (80) tems con su correspondiente traduccin. Todo lo anterior con el fin de familiarizar y facilitar el uso de los trminos, as como evitar emplear tiempo valioso en bsquedas externas. Para dar una mayor claridad a los temas tratados, en el presente mdulo se han includo ms de cien (100) figuras ilustrativas, tanto importadas como de autora personal, con su correspondiente explicacin dentro del texto. Se espera que las mltiples experiencias que se realicen a lo largo del curso cumplan con las expectativas planteadas en ste mdulo didctico, de forma que al finalizar, el estudiante se sienta con las bases tericas y metodolgicas que le permitan formular, realizar o hacer parte de grupos de trabajo que implementen SD.

  • SISTEMAS DISTRIBUIDOS 13

    UNIDAD 1: FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS INTRODUCCIN Al igual que con cualquier nuevo tema, para abordar el conocimiento de los Sistemas Distribuidos debemos hacerlo a partir de los fundamentos. Slo as se obtendrn las bases necesarias para ir profundizando en este tema tan interesante. La presente unidad se compone de tres captulos introductorios, organizados de tal manera que se inicie con un conjunto de deficiones bsicas y poco a poco se incremente el nivel de complejidad. En el primer captulo se analizan los principales componentes de un sistema distribudo y en particular aspectos como la concurrencia, la sincronizacin y manejo de fallas. Adems se presenta el concepto de agente y su importancia en un sistema distribuido. El siguiente capitulo expone de manera detallada las siete (7) principales caractersticas de un sistema distribudo: heterogeneidad, extensibilidad, seguridad, escalabilidad, tratamiento de fallos, concurrencia y transparencia. Cada uno de estas caractersticas se apoya en diversas definiciones y ejemplos. La unidad finaliza con un captulo explicativo de los diferentes tipos y ejemplos de sistemas distribuidos. Se detallan sistemas como internet e intranet y se indican los fundamentos tanto para la computacin mvil, como para la computacin distribuda, estas ltimas con un desarrollo y una evolucin sin precedentes en nuestra sociedad actual. Bienvenido a esta primera unidad y espero que sus contenidos sean de inters para su desarrollo profesional en este campo de las ciencias de la informacin.

  • SISTEMAS DISTRIBUIDOS 14

    OBJETIVOS Que el estudiante describa los componentes fundamentales de un sistema

    distribuido, su relacin y su finalidad, partiendo de la ejemplificacin de diversos sistemas distribuidos con diferentes orientaciones y su comparacin con los fundamentos tericos estudiados.

    Que el estudiante conozca e identifique de manera clara el concepto,

    propiedades y caractersticas de un sistema distribuido, aplicados a una organizacin, a travs del anlisis de las diversas aplicaciones, tecnologas y servicios de comunicacin que se utilizan.

    Que el estudiante comprenda la importancia de los sistemas distribuidos para

    el desarrollo de la sociedad a travs plataformas como internet, intranet, computacin mvil y computacin distribuida.

  • SISTEMAS DISTRIBUIDOS 15

    CAPTULO 1. COMPONENTES DE UN SISTEMA DISTRIBUIDO 1.1 INTRODUCCIN Y CONCEPTOS1 Un Sistema Distribuido consiste en una coleccin de computadores autnomos enlazados por una red y equipadas con un sistema de software distribuido que luce a los usuarios como si fuera en sistema nico y centralizado.

    Figura 1. Sistema Distribuido

    Fuente: COULOURIS George, SISTEMAS DISTRIBUIDOS, Addison Wesley, Madrid, 2001, 3 Ed. Este tipo de sistemas se poseen las siguientes caractersticas intrnsecas: Cada uno de los componentes trabajan en forma concurrente (interactan

    simultneamente). Los componentes pueden fallar de manera independiente sin ocasionar un fallo

    general. No existe un reloj global que sincronice los procesos que se ejecutan en el

    sistema. Los componentes no comparten memoria.

    1 COULOURIS George, DOLLIMORE Jean y KINDBERG Tim (2001): SISTEMAS DISTRIBUIDOS Conceptos y Diseo. Pearson Addison Wesley.

  • SISTEMAS DISTRIBUIDOS 16

    Los sistemas distribuidos estn por todas partes. Internet (considerado un gran sistema distribuido) permite que los usuarios de todo el mundo accedan a sus servicios donde quiera que estn situados. La mayora de empresas administran una intranet, que provee servicios locales y servicios de Internet a los usuarios locales y habitualmente proporciona servicios a otros usuarios de Internet. Es posible construir pequeos sistemas distribuidos con computadores porttiles y otros dispositivos computacionales pequeos conectados a una red inalmbrica.

    Figura 2. Sistema Distribuido Multimedia

    Fuente: Autor

    En la figura 2 se presenta un sistema distribudo multimedia tpico capaz de soportar una variedad de aplicaciones como conferencias, accesos a secuencias almacenadas de vdeo y difusin de radio y televisin digitales. En este sistema, distribuido y abierto, las aplicaciones multimedia2 pueden ser iniciadas y utilizadas sin anuncio previo. Pueden coexistir varias aplicaciones en la misma red e incluso en la misma estacin de trabajo, para lo cual se debe garantizar que todas las aplicaciones sern capaces de obtener la cantidad de recursos necesaria en los momentos requeridos, incluso cuando otras aplicaciones estn compitiendo por esos recursos. 1.2 OBJETIVOS DE UN SISTEMA DISTRIBUIDO La comparticin de recursos es el principal factor que motiva la construccin de sistemas distribuidos. Recursos como impresoras, archivos, pginas web o registros de bases de datos se administran mediante servidores del tipo apropiado. Por ejemplo, los servidores web administran pginas y otros recursos web. Los recursos son accedidos por clientes, por ejemplo, los clientes de los servidores web se llaman normalmente browsers o navegadores web. Adems de compartir recursos, un sistema distribuido tiene como finalidad atender los siguientes aspectos que regularmente se presentan en una red: 1.2.1 Concurrencia 2 Aplicaciones como Multimedia basada en web, telefona de red y conferencias de audio, Servicios de vdeo bajo demanda, etc.

  • SISTEMAS DISTRIBUIDOS 17

    En una red de computadores, la ejecucin de programas concurrentes es la norma. Yo puedo realizar mi trabajo en mi computador, mientras t realizas tu trabajo en el tuyo, compartiendo recursos como pginas web o archivos, cuando es necesario. La capacidad del sistema para manejar recursos compartidos se puede incrementar aadiendo ms recursos (por ejemplo, computadores) a la red. La coordinacin de programas que comparten recursos y se ejecutan de forma concurrente es tambin un aspecto importante de cualquier sistema distribuido. 1.2.2 Inexistencia de reloj global Cuando los programas necesitan cooperar coordinan sus acciones mediante el intercambio de mensajes. La coordinacin estrecha depende a menudo de una idea compartida del instante en el que ocurren las acciones de los programas. Pero resulta que hay lmites a la precisin con lo que los computadores en una red pueden sincronizar sus relojes (Figura 3), ya que no hay una nica nocin global del tiempo correcto. Esto es una consecuencia directa del hecho que la nica comunicacin se realiza enviando mensajes a travs de la red.

    Figura 3. Sincronizacin en Red

    Fuente: Autor

    1.2.3 Fallos independientes Todos los sistemas informticos pueden fallar y los diseadores de sistemas tienen la responsabilidad de planificar las consecuencias de posibles fallos. Los sistemas distribuidos pueden fallar de muy diversas formas. Los fallos en la red producen el aislamiento de los computadores conectados al Sistema Distribuido, pero eso no significa que detengan su ejecucin. De hecho, los programas que se ejecutan en ellos pueden no ser capaces de detectar cuando la red ha fallado o est excesivamente lenta (Figura 4).

  • SISTEMAS DISTRIBUIDOS 18

    Figura 4. Fallos Independientes

    Fuente: Autor

    De forma similar, la cada de un servidor o la terminacin inesperada de un programa en alguna parte del sistema (crash) no se da a conocer inmediatamente a los dems componentes con los que se comunica. En un sistema distribuido cada componente del sistema puede fallar independientemente, permitiendo que los dems continen su ejecucin. 1.3 COMUNICACIN EN LOS SISTEMAS DISTRIBUIDOS Por ser de gran importancia para el esquema de comunicacin entre los elementos de un sistema distribuido, se har una profundizacin en el concepto de Agente y sus diversas connotaciones. 1.3.1 Agentes3 Uno de los elementos claves para la comunicacin en un Sistema Distribuido es el Agente. La palabra Agente se refiere a todo ente que posee la habilidad, capacidad y autorizacin para actuar en nombre de otro (Figura 5). A diario, los agentes humanos asisten a las personas en tareas que requieren recursos especializados o conocimiento especfico en un dominio. Por ejemplo, una secretaria atiende y resuelve situaciones en nombre de su jefe: administra la agenda, coordina las reuniones, recibe a los visitantes. Los agentes cumplen con los requerimientos para los cuales fueron entrenados. El usuario delega en el agente una o varias tareas que debe llevar a cabo quedando a la espera de los resultados. Dichas tareas son a menudo fciles de especificar, pero - en algunos casos complejas de realizar.

    3 TOLOSA, Gabriel Hernan (1999). Tecnologa de agentes de software, Braslia, v. 28, n. 3, p. 302-309.

  • SISTEMAS DISTRIBUIDOS 19

    Figura 5. Agentes

    Fuente: Autor

    Los investigadores en el campo de los agentes computacionales han dado varias definiciones al trmino, cada uno desde su ptica particular, fundamentada bsicamente en la lnea de investigacin en la cual trabajan (Inteligencia Artificial, Ingeniera de Software, Sistemas Autnomos, Sistemas Distribuidos). A continuacin se presentan algunas definiciones: Wooldridge y Jennings4 definen agente como un programa autocontenido capaz de controlar su proceso de toma de decisiones y de actuar, basado en la percepcin de su ambiente, en persecucin de uno o varios objetivos. Segn Nwana5, el trmino agente se refiere a un componente de software y/o hardware que es capaz de actuar para poder ejecutar tareas en nombre de un usuario. Pattie Maes6 del laboratorio de Inteligencia Artificial del MIT (Massachusetts Institute of Technology / Instituto Tecnolgico de Massachusetts) defini a los agentes autnomos como sistemas computacionales que habitan en algn ambiente dinmico y complejo, sensando su estado y actuando autnomamente, llevando a cabo una serie de objetivos o tareas para los cuales fueron diseados. Nicholas Negroponte, director del Media Lab del MIT, hizo la observacin que el futuro de la computacin ser de delegar a y no de manipular computadores.

    4 JENNINGS, N.; WOOLDRIDGE, M. Agent Technology - Foundations, Applications, and Markets. Springer-UNICOM. 1998 5 NWANA, H. Software Agents: An Overview. Knowledge Engineering Review. Cambridge University Press. v.3, p.1- 40. 1996 6 MAES, P. Modeling Adaptive Autonomous Agents. Artificial Life Journal, v.1, n. 1&2, p.135-162. MIT Press. 1994

  • SISTEMAS DISTRIBUIDOS 20

    Dentro de este marco el trmino agente se redefine para cada aplicacin que persiga dicho objetivo. 1.3.2 Propiedades de los agentes Con base en todas las definiciones anteriores es posible extraer algunas caractersticas que requieren los agentes: deben ser parte de un ambiente, deben poder monitorear (sensar) su entorno y actuar sobre el, y deben responder segn los objetivos para los cuales fueron diseados. Deben entonces poseer una serie de atributos o propiedades que lo definen como agente7. Autonoma: Capacidad de actuar sin la intervencin directa de una persona o de otro agente. Un agente debe poder controlar sus propias acciones y estado interno. Una vez que el usuario activa el agente indicando algn objetivo de alto nivel, ste acta independientemente, seleccionando estrategias y monitoreando el progreso en busca de la meta. Si falla con una estrategia, usa otra, pero sin intervencin humana o con la mnima indispensable. Habilidad Social: Un agente debe ser comunicativo. Debe tener habilidad para interactuar con otros agentes o incluso con alguna persona, para solicitar informacin o bien para exponer los resultados obtenidos de la ejecucin de las tareas planeadas. La naturaleza de la comunicacin depende del tipo de agente con quien se comunique (humanos o no), en ambos casos debe establecer un protocolo comn de intercambio de informacin entre ambas partes. Los agentes deben poseer algn tipo de interfaz para comunicarse con sus usuarios. Dicha interfaz puede establecerse simplemente mediante el envo de mensajes por correo electrnico o puede ser todo lo sofisticada que se desee (lo ideal es proveer una interfaz ms antropomrfica para los agentes). Reactividad: Se refiere al hecho de que un agente debe poder sensar el estado del ambiente dentro del cual se encuentra inmerso y -en funcin de esto- actuar, respondiendo de manera adecuada a cambios producidos en el mismo. Los efectos producidos pueden modificar el estado de su entorno. Por ejemplo, un agente de filtrado de correo electrnico est sensando su ambiente, alerta a la llegada de nuevos mensajes. La llegada de un nuevo mensaje (cambio en el medio) produce que el agente responda de acuerdo a las tareas asignadas. Orientacin por objetivos: Un agente no slo debe actuar por cambios detectados en el medioambiente, sino que debe trabajar en funcin de los objetivos para los cuales fue diseado y las tareas que le fueron delegadas en cada momento. Un agente busca permanentemente satisfacer su agenda interna. En las aplicaciones convencionales, cuando un usuario ejecuta un comando, se activa un proceso que se ejecuta por determinado tiempo, algunos solicitan datos al usuario, retornan resultados y as sucesivamente. Esta es una visin pasiva de computacin, ya que la motivacin viene de parte del usuario. En un modelo 7 WOOLDRIDGE, M.; JENNINGS, N. Software Agents. IEE Review, p.17-20. 1996.

  • SISTEMAS DISTRIBUIDOS 21

    basado en agentes, el proceso es auto-motivado, es decir, el agente busca satisfacer cierto estado interno con mnima intervencin humana. Por ejemplo, un agente recuperador de archivos tiene especificada una tarea. El agente debe intentar permanentemente satisfacer la tarea que le fue delegada con base en las estrategias de bsqueda y recuperacin con las cuales fue construdo, hasta cumplir con el objetivo. Continuidad temporal: Un agente es un proceso temporalmente continuo. A diferencia de un programa convencional del cual se conoce su inicio y fin, un agente debe ejecutarse hasta que se haya alcanzado con el conjunto de objetivos solicitados, o bien, mientras su ciclo perdure y su usuario no desee detenerlo. La continuidad temporal es la propiedad que da vida al agente, posibilitando que se mantenga alerta a una solicitud o a algn cambio en el medio. El ciclo de vida de un agente depende de sus caractersticas, de las tareas que realice y de los deseos de su usuario en cuanto al tiempo durante el cual el agente debe ejecutarse. Movilidad: Es la capacidad de un agente de viajar por las redes de computadores, de nodo a nodo, en busca de los recursos que le permitan cumplir con su agenda. El trmino viajar se refiere a que en un determinado instante de tiempo el agente detiene su ejecucin, almacena su estado interno y se dirige a otro sitio dentro de una red de computadores (tanto el cdigo del agente como su estado) para luego continuar con su ejecucin en la nueva ubicacin. Los recursos a los que puede acceder pueden ser de software o hardware. Por ejemplo, un agente puede ir en busca de una base de datos que se encuentra en cierta mquina o bien ejecutarse remotamente haciendo uso del procesador y memoria del equipo destino. La movilidad no es una propiedad indispensable para un agente, sino que modifica la forma por la cual el agente cumple con sus objetivos, en este caso recurriendo a los recursos que puede ofrecer una red de computadores. Aporta una nueva forma de computacin distribuida. 1.3.3 Clasificacin de los Agentes Los agentes pueden clasificarse de varias maneras, teniendo en cuenta algunas de las propiedades que poseen o bien haciendo hincapi en alguna en particular. De esta manera puede armarse un rbol taxonmico que abarque todas las combinaciones de propiedades y tareas que se quieran. Partiendo de lo anterior, se presenta la siguiente clasificacin de los agentes de acuerdo con la funcin u objetivo principal del mismo8: Agentes de interfaz Agentes colaborativos Agentes mviles Agentes de recuperacin de informacin 8 BERNEY, B. Software Agents A Review. Manchester Metropolitan University. 1996

  • SISTEMAS DISTRIBUIDOS 22

    Agentes de interfaz Un agente de interfaz es un software cuasi-inteligente que asiste a un usuario cuando interacta con una o ms aplicaciones. La motivacin es que se les pueda delegar tareas aburridas y laboriosas. Son asistentes personales que reducen el trabajo por la sobrecarga de informacin, como por ejemplo el filtrado de los mensajes de correo electrnico o la recuperacin de archivos de Internet. Esta categora de agentes apoyan y proveen asistencia a su usuario. El agente observa y monitorea las acciones que toma el usuario en la interfaz, aprende nuevos atajos, y sugiere mejores formas de hacer las tareas. La idea es que el agente pueda adaptarse a las preferencias y hbitos de sus usuarios. Enfatizan la autonoma y el aprendizaje para llevar a cabo tareas para sus dueos y trabajan en el mismo ambiente que stos. A su vez, los agentes de interfaz pueden encontrarse subdivididos debido a diferentes tareas para las cuales son construidos. Las ms comunes son: Asistentes: Trabajan realizando tareas tpicas como el manejo de la agenda.

    Estos agentes ayudan al usuario a planificar las reuniones. Sus acciones incluyen negociar, aceptar o rechazar reuniones.

    Filtros: Su tarea principal es la de analizar informacin segn un conjunto de reglas dadas por el usuario. La aplicacin tpica es el filtrado de mensajes de correo electrnico.

    Guas: Asisten a los usuarios en el uso de una aplicacin. Estos agentes monitorean las acciones de los usuarios e intentan sugerir qu pasos realizar para alcanzar el objetivo. Algunos ayudan a navegar por la Web.

    Agentes colaborativos Los agentes colaborativos constituyen un sistema multiagentes, es decir existe mas de un agente dedicado a satisfacer los requerimientos de sus usuarios. Para ello es necesario contar con esquemas de comunicacin entre agentes que posibiliten la cooperacin y el intercambio de conocimiento. Adems, deben poseer un alto grado de autonoma para actuar interactuando con sus pares. La motivacin detrs de la construccin de agentes colaborativos es que los sistemas construidos con unidades relativamente simples proveen mayor funcionalidad que un ente mayor, pudiendo extender la funcionalidad del sistema mas all de las capacidades de uno de sus miembros. Adems, estas arquitecturas posibilitan contar con mayor confiabilidad (debido a la redundancia) y mayor velocidad (debido al paralelismo) en el sistema conjunto. Las reas de aplicacin de este tipo de agentes incluyen: Resolucin de problemas demasiado grandes. Interconexin de mltiples sistemas. Manejo de informacin proveniente de fuentes distribuidas. Agentes Mviles

  • SISTEMAS DISTRIBUIDOS 23

    Los agentes mviles son procesos capaces de viajar por una red de computadores, interactuando con hosts9 externos, recolectando informacin en nombre de su dueo y retornando a casa luego de completar las tareas establecidas (Figura 6). Los agentes forman un nivel de abstraccin ms para el usuario, detrs del cual se encuentran soluciones a cuestiones tcnicas en algunos casos complicadas. Una de estas cuestiones es la distribucin, es decir, como manejar recursos computacionales distribuidos. Con la idea de agentes mviles los recursos distribuidos no son completamente ocultados al usuario pero tampoco completamente expuestos10. La nocin de movilidad viene del objetivo de reducir el trfico innecesario dentro de una red, con lo que se pueden reducir los costos de comunicacin. Adems, al aportar una nueva forma de computacin distribuida posibilita el mejor aprovechamiento de los recursos de la red y permite que los usuarios tengan acceso a una cantidad mayor de recursos. Por ejemplo, debido a que las sesiones en busca de un recurso determinado ciertas veces son largas, la idea de agentes mviles provee una solucin. Un usuario delega la tarea de bsqueda de informacin a un agente, establece una comunicacin con la red y enva al agente a cumplir con su misin. La prxima vez que el usuario se conecte, el agente retorna con los resultados obtenidos.

    Figura 6. Agentes Mviles

    Fuente: Autor

    Para soportar la movilidad, debe existir una infraestructura de transporte que mueva el cdigo del agente de una ubicacin a otra. Adems, se debe contar con un entorno de ejecucin de agentes, donde los agentes viven, compuesto por todas los computadores que los proveen. Finalmente, para construir sistemas con agentes mviles es necesario resolver algunas cuestiones fundamentales tales como: 9 Anfitrin. Mquina conectada a una red de computadores y que tiene un nombre de equipo (Hostname). Puede ser un computador, un servidor de archivos, un dispositivo de almacenamiento por red, una mquina de fax, impresora, etc. 10 WILLIAM, J. BOTS and other Internet Beasties. Sams.Net Publisihing. First Edition. 1996

  • SISTEMAS DISTRIBUIDOS 24

    Transporte: Cmo se mueven de lugar en lugar? Ejecucin: Cmo ejecutar el agente de forma remota? Autenticacin: Cmo saber si el agente es quien dice ser y a quin representa? Privacidad: Cmo asegurar que el agente mantenga resguardado su estado

    interno? Seguridad: Cmo protegerlo de virus? Cmo prevenir que el agente entre en

    bucles infinitos o falle? Agentes de recuperacin de informacin El objetivo principal de los agentes dedicados especficamente a la recuperacin de informacin es obtener informacin por el usuario (Figura 7). La motivacin para su construccin es que con el crecimiento vertiginoso de Internet, la cantidad de informacin accesible supera la cantidad de tiempo disponible para analizarla. Un adagio popular en Internet dice: Nos estamos sumergiendo en informacin pero hambrientos de conocimiento. Las tecnologas de la informacin han expandido los horizontes de los usuarios en cuanto a las formas de generar y acceder a la misma. Pero esta amplia variedad de informacin distribuida plantea desafos en cuanto a las formas de manejar su complejidad y heterogeneidad.

    Figura 7. Agentes de Recuperacin de Informacin

    Fuente: Autor

    Hoy en da, la informacin se produce en mltiples contextos, se difunde por medios muy variados y se utiliza en todas partes. El rpido crecimiento de la cantidad de documentos en Internet (especialmente en la web) presenta la dificultad de poder acceder a la informacin relevante. Se produce as el fenmeno conocido como sobrecarga de informacin, entonces se trata de mejorar, pero no eliminar, el problema especfico de la

  • SISTEMAS DISTRIBUIDOS 25

    sobrecarga y administracin de la informacin. Adems, existe el problema que debido al gran volumen de informacin disponible, se mezclan el ruido o desperdicio con la informacin til o necesaria, lo que determina la gran dificultad de hallar lo que realmente resulta de inters para las personas. Las soluciones actuales a este problema se basan en la construccin de motores de bsqueda, con mecanismos de indexacin de documentos, combinados con interfaces de consulta apropiadas a esta tarea, o bien, ndices manuales multi-nivel (o directorios), los cuales presentan clasificaciones de los documentos segn el criterio de sus autores. Ambas tcnicas poseen debilidades visibles. Los primeros, son muy propensos a recuperar demasiada cantidad de documentos no deseables ya que trabajan (bsicamente) mediante tcnica de bsqueda de la ocurrencia de los trminos buscados en los documentos. Por otra parte, los ndices manuales, solamente tienen parte de los posibles documentos, debido al alto costo que posee la recuperacin, manipulacin y clasificacin manual de los mismos. La motivacin es poder disear una tcnica que permita describir los cientos de millones de documentos disponibles de manera precisa, creando un ndice de alta calidad, con una forma eficaz y eficiente de acceder a ste (ya sea de manera manual o automtica). Una de las soluciones posible se basa en los agentes de recuperacin de informacin. Estos agentes pueden asistir a un usuario novato en la formulacin de consultas avanzadas, en base a sus necesidades de informacin. Adems, permiten acceder e integrar fuentes heterogneas y manejar diferentes tipos formatos de informacin. Los agentes de recuperacin de informacin poseen mtodos para permitir el rpido acceso y recuperacin de informacin relevante. Tienen la tarea de administrar, manipular y juntar informacin de fuentes distribuidas. Pueden tener mecanismos de bsqueda y navegacin flexibles y algoritmos de clasificacin poderosos. El objetivo es construir agentes capaces de armar un diario personalizado, sabiendo dnde buscar, cmo encontrar lo buscado y cmo armarlo luego. Los agentes se presentan como una herramienta muy til en la tarea de resolver el problema de la sobrecarga de informacin, debido a que stos pueden realizar sus tareas mucho ms rpido que las personas y, adems, se encuentran disponibles las veinticuatro horas.

  • SISTEMAS DISTRIBUIDOS 26

    1.3.4 Ejemplos de Agentes Para dar claridad acerca concepto de agente software, se describen dos ejemplos de amplia utilizacin en las plataformas computacionales distribuidas: Los agentes de biblioteca. Un interesante mbito de aplicacin de los agentes de recuperacin de informacin son las bibliotecas. Las colecciones de informacin pblica almacenadas en formato electrnico han aumentado considerablemente, por lo cual las bibliotecas deben incorporar este formato como una alternativa a las publicaciones tradicionales. Dentro de este mbito, los agentes de recuperacin de informacin pueden resultar de gran utilidad como asistentes de los bibliotecarios, manejando los grandes volmenes de material electrnico almacenado. Dado un contexto de bsqueda (segn la peticin de material por parte de un usuario), el bibliotecario puede recurrir a un agente para que lo asista en las tareas de buscar, clasificar y filtrar la informacin solicitada. Con base en una solicitud, el agente puede recurrir a estrategias para seleccionar las bases de datos donde buscar y cmo categorizar los documentos encontrados. Adems, pueden colaborar con el bibliotecario en el desarrollo de las siguientes actividades: Recuperar informacin de fuentes distribuidas (Internet) Realizar consultas con distintas estrategias Generar reportes detallados y/o resumidos Mantener estadsticas de solicitudes/bsqueda/utilidad Crear perfiles de usuarios, con base en sus reas temticas o preferencias de

    material En los prximos aos, es impensable una biblioteca que no incorpore asistentes digitales. La diversidad de soportes, formatos, idiomas, motores de consulta, etc, estn a disposicin de los usuarios con la finalidad de brindar una mayor calidad de servicio informativo, pero l usuario debe abstraerse de cuestiones tecnolgicas que lo dispersen de sus objetivos principales. Esta ltima cuestin es la que tienden a realizar los asistentes o agentes de bibliotecas, operando como interfaces inteligentes entre el usuario y las tecnologas de informacin. Googlebot11. Un Googlebot es un agente distribuido (robot de bsqueda) usado por Google. Colecciona documentos desde la web, para construir una base de datos para el motor de bsqueda Google.

    11 http://es.wikipedia.org/wiki/Google

  • SISTEMAS DISTRIBUIDOS 27

    Figura 8. Googlebot

    Fuente: http://www.gugologia.hpg.ig.com.br/GoogleBot.gif

    Si un webmaster12 no quiere que su pgina sea descargada por un Googlebot, el puede insertar un texto llamado robots.txt, el cual puede hacer que Googlebot (y otros robots de informacin) no investiguen esa pgina. Googlebot tiene dos versiones, deepbot y freshbot. Deepbot investiga profundamente, tratando de seguir cualquier enlace en esa pgina, adems de poner est pgina en el cach, y dejarla disponible para Google. Freshbot investiga la web buscando por contenido nuevo, visitando sitios que cambian frecuentemente. Idealmente, el freshbot visita la pgina de un peridico todos los das, mientras que la de una revista cada semana, o cada 15 das. Googlebot descubre enlaces a otras pginas, y se dirige hacia ellos tambin, as puede abarcar toda la web fcilmente. 1.4 VENTAJAS Y DESVENTAJAS DE LOS SISTEMAS DISTRIBUIDOS En general, los sistemas distribuidos exhiben algunas ventajas sobre los sistemas centralizados. Las principales se describen enseguida: Economa: El cociente precio/desempeo de la suma del poder de los

    procesadores separados contra el poder de uno solo centralizado es mejor cuando estn distribuidos.

    Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy superior.

    Confiabilidad: Si una sola mquina falla, el sistema total sigue funcionando.

    12 Persona responsable del matenimiento y administracin de un sitio Web.

  • SISTEMAS DISTRIBUIDOS 28

    Crecimiento: El poder total del sistema puede irse incrementando al aadir pequeos sistemas, lo cual es mucho ms difcil en un sistema centralizado y caro.

    Distribucin: Algunas aplicaciones requieren de por s una distribucin fsica. Por otro lado, los sistemas distribuidos tambin exhiben algunas ventajas sobre sistemas aislados. Estas ventajas son: Compartir datos: Un sistema distribuido permite compartir datos ms

    fcilmente que los sistemas aislados, que tendran que duplicarlos en cada nodo para lograrlo.

    Compartir dispositivos: Un sistema distribuido permite acceder dispositivos desde cualquier nodo en forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribuido logra un efecto sinergtico.

    Comunicaciones: La comunicacin persona a persona es factible en los sistemas distribuidos, en los sistemas aislados no.

    Flexibilidad: La distribucin de las cargas de trabajo es factible en el sistema distribuido, se puede incrementar el poder de cmputo.

    As como los sistemas distribuidos exhiben grandes ventajas, tambin se pueden identificar algunas desventajas, algunas de ellas tan serias que han frenado la produccin comercial de sistemas operativos en la actualidad. El problema ms importante en la creacin de sistemas distribuidos es el software; los problemas de comparticin de datos y recursos son tan complejos que los mecanismos de solucin generan mucha sobrecarga al sistema hacindolo ineficiente. El revisar y validar, por ejemplo, quines tienen acceso a algunos recursos y quines no, el aplicar los mecanismos de proteccin y registro de permisos consume demasiados recursos. En general, las soluciones presentes para estos problemas estn an en sus comienzos. Otros problemas de los sistemas distribuidos surgen debido a la concurrencia y al paralelismo. Tradicionalmente las aplicaciones son creadas para computadores que ejecutan secuencialmente, de manera que el identificar secciones de cdigo paralelizable es un trabajo arduo, pero necesario para dividir un proceso grande en sub-procesos y enviarlos a diferentes unidades de procesamiento para lograr la distribucin. Con la concurrencia se deben implantar mecanismos para evitar las condiciones de competencia, las postergaciones indefinidas, el ocupar un recurso y estar esperando otro, las condiciones de espera circulares y, finalmente, los "abrazos mortales"13 (deadlocks). Estos problemas de por s se presentan en los sistemas multiusuarios o multitareas, y su tratamiento en los sistemas distribuidos es an ms complejo, y por lo tanto, necesita de algoritmos ms complejos con la inherente sobrecarga esperada.

    13 Una condicin de error que se produce cuando dos programas o dispositivos estn esperando por una seal del otro para poder continuar con el procesamiento.

  • SISTEMAS DISTRIBUIDOS 29

    EJERCICIOS " Qu es un sistema de video por demanda a travs de Internet?. Describa alguno de los

    productos existentes para vdeo por demanda a travs de Internet. Encuentre alguno de los sitios web de empresas del negocio de video por demanda a travs de Internet. Se puede considerar un sistema de por video por demanda como sistema distribuido?

    " Cada vez son ms comunes en el mercado los computadores sin disco local,

    denominados estaciones Diskless, Thin Clients, Network Computers o Network Stations. Son computadores con CPU, memoria, dispositivos de E/S y un adaptador de red de rea local. Disear un sistema informtico que permita dar soporte a estos computadores (boot, carga de aplicaciones, almacenamiento de datos), y encuadrarlo dentro de uno o varios de los modelos de sistemas distribuidos estudiados. Compararlo con un sistema centralizado de computadores con pantallas. Dnde est la diferencia?

    " Para que sirve el archivo robots.txt?, como el archivo robots.txt controla el acceso a un

    sitio web?, donde se ubica robots.txt dentro de un sitio?, como se prueba si el archivo robots.txt est funcionando en un sitio web?. Como se bloquean los agentes de Googlebots? Cual es la funcin del programa FeedFetcher? Como funciona el software PageRank?

    " Que tipo de agente es y que funciones ejecutan los siguientes Agentes: Websailor,

    Virtual Mattie (UNIX), VisitorBot y Web Watcher. " Revisar la aplicacin distribuida Wikipedia. Principalmente en la organizacin de la

    informacin y en la plataforma Hardware (http://es.wikipedia.org/wiki/Wikipedia) " Para cada uno de los siguientes servicios, indique por que se pueden considerar como sistemas

    distribuidos; a. Monitorizacin de la carga de mercancas a transportar por un vehculo en camino entre

    almacenes y tiendas. b. Una sala de chat. c. Una subasta on-line. d. Un servicio que permita a su universidad proporcionar informacin de los cursos a los

    estudiantes. La informacin se actualiza frecuentemente.

  • SISTEMAS DISTRIBUIDOS 30

    CAPTULO 2. CARACTERIZACIN DE LOS SISTEMAS DISTRIBUIDOS14 Al momento de implementar un sistema distribuido deben tenerse en cuenta una serie de factores que lo caracterizan, como lo son la heterogeneidad de componentes, la extensibilidad, la seguridad, el tratamiento de fallos, la escalabilidad, la concurrencia y la transparencia, entre otros. A continuacin se presenta de manera detallada que comprende cada una de estas caractersticas mencionadas. 2.1 HETEROGENEIDAD Un sistema distribuido permite que los usuarios accedan a servicios y ejecuten aplicaciones sobre un conjunto heterogneo de redes y computadores. Esta heterogeneidad (es decir, variedad y diferencia) comprende los siguientes cinco (5) aspectos:

    Redes. Hardware de computadores. Sistemas operativos. Lenguajes de programacin. Implementaciones de diferentes desarrolladores.

    Figura 9. Heterogeneidad de Sistemas Distribuidos

    Fuente: http://www.programacion.com/cursos/acscorba/i/Xbill.png

    La heterogeneidad (Figura 9) se aplica tambin a los tipos de datos manejados, como los enteros, los cuales pueden representarse de diferente forma en diferentes clases de hardware. Hay que tratar con estas diferencias de 14 COULOURIS George, DOLLIMORE Jean y KINDBERG Tim (2001): SISTEMAS DISTRIBUIDOS Conceptos y Diseo. Pearson Addison Wesley.

  • SISTEMAS DISTRIBUIDOS 31

    representacin si se van a intercambiar mensajes entre programas que se ejecutan en diferente hardware. Adicional, las llamadas para intercambiar mensajes en plataformas LINUX o UNIX son diferentes de las llamadas en plataformas WINDOWS, por lo tanto hay que tener en cuenta estas diferencias si se desea que los programas escritos en diferentes lenguajes de programacin sean capaces de comunicarse entre ellos. El problema de la heterogeneidad plantea que los programas escritos por diferentes programadores no podrn comunicarse entre s a menos que utilicen estndares comunes, por ejemplo, para la comunicacin en red, la representacin de datos elementales y estructuras de datos en mensajes. Para que esto ocurra es necesario concertar y adoptar estndares como por ejemplo los protocolos de Internet (TCP/IP)15. Heterogeneidad y cdigo mvil El trmino cdigo mvil se emplea para referirse al cdigo que puede ser enviado desde un computador a otro y ejecutarse en ste ltimo (Figura 10), por eso los applets16 de Java17 son un ejemplo de ello. Dado que el conjunto de instrucciones de un computador depende del hardware, el cdigo de nivel de mquina adecuado para ejecutarse en un tipo de computador no es adecuado para ejecutarse en otro tipo. Por ejemplo, los usuarios de PCs envan a veces archivos ejecutables agregados a los correos electrnicos para ser ejecutados por el destinatario, pero el receptor bien pudiera no ser capaz de ejecutarlo, por ejemplo, sobre un Macintosh o un computador con LINUX.

    15 TCP/IP son las abreviaturas de los protocolos ms utilizados en Internet. El protocolo de control de transmisin (TCP) y el protocolo de Internet (IP). 16 Componente de software que corre en el contexto de otro programa, por ejemplo un navegador web. El applet debe correr en un contenedor, que es proporcionado por un programa anfitrin, mediante un plugin, o en aplicaciones como telfonos celulares que soportan el modelo de programacin por applets. A diferencia de un programa, un applet no puede correr de manera independiente, ofrece informacin grfica y a veces interactua con el usuario, tpicamente carece de sesin y tiene privilegios de seguridad restringidos. Un applet normalmente lleva a cabo una funcin muy especfica que carece de uso independiente. Un applet es un cdigo Java que carece de un mtodo main, por eso se utiliza principalmente para el trabajo de pginas web, ya que es un pequeo programa que es utilizado en una pgina HTML y representado por una pequea pantalla grfica dentro de sta. 17 Lenguaje de programacin orientado a objetos desarrollado por James Gosling y sus compaeros de Sun Microsystems al inicio de la dcada de 1990. A diferencia de los lenguajes de programacin convencionales, que generalmente estn diseados para ser compilados a cdigo nativo, Java es compilado en un bytecode que es ejecutado (usando normalmente un compilador JIT), por una mquina virtual Java. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos mucho ms simple y elimina herramientas de bajo nivel como punteros.

  • SISTEMAS DISTRIBUIDOS 32

    Figura 10. Heterogeneidad y Cdigo Mvil

    Fuente: http://www.code-magazine.com/ArticleImage.aspx

    La aproximacin de mquina virtual provee un modo de crear cdigo ejecutable sobre cualquier hardware: el compilador de un lenguaje concreto genera cdigo para una mquina virtual en lugar de cdigo apropiado para un hardware particular, por ejemplo el compilador Java produce cdigo para la mquina virtual Java, la cual slo necesita ser implementada una vez para cada tipo de mquina con el fin de poder lanzar programas Java. Sin embargo, la solucin Java no se puede aplicar de modo general a otros lenguajes. 2.2 EXTENSIBILIDAD La extensibilidad de un sistema de computacin es la caracterstica que determina si el sistema puede ser extendido y reimplementado en diversos aspectos (Figura 11). La extensibilidad de los sistemas distribuidos se determina en primer lugar por el grado en el cual se pueden aadir nuevos servicios de comparticin de recursos y ponerlos a disposicin para el uso por una variedad de programas cliente. Para hablar de extensibilidad es importante que la documentacin de las interfaces software clave de los componentes de un sistema est disponible para los desarrolladores de software. Es decir, que las interfaces clave estn publicadas. Este procedimiento es similar a una estandarizacin de las interfaces, aunque a menudo va mas all de los procedimientos oficiales de estandarizacin, que por lo dems suelen ser lentos y complicados.

    El desafo para los diseadores es hacer frente a la complejidad de los sistemas distribuidos que constan de muchos componentes diseados por personas diferentes.

  • SISTEMAS DISTRIBUIDOS 33

    Figura 11. Extensibilidad en un Sistema Distribuido

    Fuente: Autor

    Los diseadores de los protocolos de Internet presentaron una serie de documentos denominados Solicitudes de Comentarios (RFC / Request For Comments), cada una de los cuales se conoce por un nmero. Las especificaciones de los protocolos de Internet fueron publicadas en esta serie a principios de los aos ochenta, seguido por especificaciones de aplicaciones que corrieran sobre ellos, tales como transferencia de archivos, correo electrnico y TELNET a mediados de los aos ochenta. Esta prctica contina y forma la base de la documentacin tcnica sobre Internet, que incluye discusiones as como especificaciones de protocolos18. As, la publicacin de los protocolos originales de comunicacin de Internet ha posibilitado que se construyera una enorme variedad de sistemas y aplicaciones sobre Internet. Los documentos RFC no son el nico modo de publicacin. Por ejemplo, la documentacin del Sistema Operativo Distribuido CORBA19 est publicada a travs de una serie de documentos tcnicos, incluyendo una especificacin completa de las interfaces de sus servicios a travs del Grupo de Administracin Abierto (OMG / Open Management Group)20. Estndares abiertos La extensibilidad de un sistema distribuido se destaca por el hecho de ser un Sistema Abierto o de utilizar estndares abiertos. Gracias a esto, los sistemas pueden ser extendidos en el nivel hardware mediante la inclusin de computadores a la red y en el nivel software por la introduccin de nuevos

    18 Se pueden obtener copias de estos documentos en http://www.ietf.org 19 Estndar que facilita las comunicaciones entre aplicaciones distribuidas orientadas a objetos sin considerar el lenguaje de programacin en que ellas fueron escritas y la plataforma hardware en la cual se ejecutan. 20 http://www.omg.org

  • SISTEMAS DISTRIBUIDOS 34

    servicios y la reimplementacin de los antiguos, posibilitando a los programas de aplicacin la comparticin de recursos. Otro beneficio ms, citado a menudo, de los sistemas abiertos es su independencia de proveedores concretos. Los Estndares abiertos son especificaciones disponibles pblicamente para lograr una tarea especfica. Al permitir a todos el obtener e implementar el estndar, pueden incrementar compatibilidad entre varios componentes de hardware y software, ya que cualquiera con el conocimiento tcnico necesario y recursos puede construir productos que trabajen con productos de otros vendedores, los cuales compartan en su diseo base el estndar (aunque los poseedores de las patentes pueden imponer cargos o otros trminos de licencia en las implementaciones del estndar). Ejemplos de estndares abiertos son: GSM Sistema Global para Comunicaciones Mviles especificado por 3GPP21 HTML/XHTML22Especificacin de W3C23 para formato de documentos

    estructurados IP24Especificacin de la IETF25 para transmitir paquetes de datos en una red) Con base en lo anterior se puede concluir lo siguiente: Los sistemas abiertos se caracterizan porque sus interfaces estn publicadas. Los sistemas distribuidos abiertos se basan en la providencia de un

    mecanismo de comunicacin uniforme e interfaces pblicas para acceder a recursos compartidos.

    Los sistemas distribuidos abiertos pueden construirse con hardware y software heterogneo, posiblemente de diferentes proveedores. Sin embargo, la conformidad con el estndar publicado de cada componente debe contrastarse y verificarse cuidadosamente si se desea que el sistema trabaje correctamente.

    2.3 SEGURIDAD Entre los recursos de informacin que se ofrecen y se mantienen en los sistemas distribuidos, muchos tienen un alto valor intrnseco para sus usuarios. Por esto su seguridad es de considerable importancia (Figura 12). La seguridad de los recursos de informacin tiene tres componentes: confidencialidad (proteccin contra el descubrimiento por individuos no autorizados); integridad (proteccin contra la alteracin o corrupcin); y disponibilidad (proteccin contra interferencia con los procedimientos de acceso a los recursos). Si se tiene en cuenta lo anterior, el permitir un acceso libre a todos los recursos de una intranet lleva asociados riesgos contra la seguridad. Aunque se pueda

    21 http://www.3gpp.org 22 Lenguaje de marcacin de Hipertexto (Hiper-Text Markup Language) 23 http://w3.org 24 Ver glosario 25 http://www.ietf.org/)

  • SISTEMAS DISTRIBUIDOS 35

    emplear un cortafuegos (firewall)26 para disponer una barrera alrededor de una intranet, restringiendo el trfico que pudiera entrar y salir, es muy difcil asegurar el uso apropiado de los recursos por usuarios del interior de la intranet. En un sistema distribuido, los clientes envan peticiones de acceso a datos administrados por servidores, lo que trae consigo enviar informacin en los mensajes por la red. Por ejemplo: Un mdico puede solicitar acceso a los datos hospitalarios de un paciente o

    enviar modificaciones sobre ellos. En comercio electrnico y banca, los usuarios envan su nmero de tarjeta de

    crdito a travs de Internet.

    Figura 12. Seguridad

    Fuente: KUROSE James, REDES DE COMPUTADORES, Addison Wesley, Madrid, 2004, 2 Ed.

    En ambos casos, el reto se encuentra en enviar informacin sensible en un mensaje, por la red, de forma segura. Pero la seguridad no slo es cuestin de ocultar los contenidos de los mensajes, tambin consiste en conocer con certeza la identidad del usuario u otro agente en nombre del cual se enva el mensaje. En el primer ejemplo, el servidor necesita conocer que el usuario es realmente un mdico y en el segundo, el usuario necesita estar seguro de la identidad de la tienda o del banco con el que est tratando. El segundo reto consiste en identificar un usuario remoto u otro agente correctamente. Ambos desafos pueden lograrse a travs de tcnicas de encriptacin desarrolladas al efecto. Sin embargo, an existen dos desafos de seguridad que no han sido atendidos a cabalidad: los ataques de denegacin del servicio (DoS / Denial of Service)27 y el cdigo mvil.

    26 En todo el mdulo se utilizar la palabra cortafuegos (ver glosario) a cambio del trmino Firewall. Un cortafuegos es un elemento de hardware o software utilizado en una red de computadores para prevenir algunos tipos de comunicaciones prohibidos segn las polticas de red que se hayan definido en funcin de las necesidades de la organizacin responsable de la red. 27 Tipo de ataque hecho por un usuario a un sistema de computacin para saturarlo con consultas y evitar que ofrezca uno o varios servicios.

  • SISTEMAS DISTRIBUIDOS 36

    Ataques de denegacin de servicio: Este problema de seguridad ocurre cuando un usuario desea obstaculizar un servicio por alguna razn. Esto se obtiene al bombardear el servicio con un nmero suficiente de peticiones intiles de modo que los usuarios serios sean incapaces de utilizarlo. Seguridad del cdigo mvil: el cdigo mvil necesita ser tratado con cuidado. Suponga que alguien recibe un programa ejecutable adherido a un correo electrnico: los posibles efectos al ejecutar el programa son impredecibles; por ejemplo, pudiera parecer que presentan un interesante dibujo en la pantalla cuando en realidad estn interesados en el acceso a los recursos locales, o quizs pueda ser parte de un ataque de denegacin de servicio. 2.4 ESCALABILIDAD Los sistemas distribuidos operan efectiva y eficientemente en muchas escalas diferentes, desde pequeas intranets a Internet. Se dice que un sistema es escalable si su capacidad de procesamiento puede crecer aadiendo nodos adicionales: Aumenta el rendimiento con un nmero creciente de nodos (idealmente de

    forma lineal). El tiempo de respuesta decrece (o se mantiene constante o crece lentamente)

    con un nmero creciente de nodos. La fiabilidad el sistema aumenta con nmero creciente de nodos (idealmente

    de forma logartmica). Como consecuencia de lo anterior el Sistema Distribuido conserva su efectividad cuando ocurre un incremento significativo en el nmero de recursos y el nmero de usuarios. Internet proporciona un ejemplo de un sistema distribuido en el que el nmero de computadores y servicios experimenta un dramtico incremento. La figura 13 muestra las estadsticas de crecimiento de Internet, por reas geogrficas, con respecto al crecimiento de la poblacin mundial durante los ltimos aos28. El diseo de los sistemas distribuidos escalables presenta los siguientes retos:

    28 http://info.isoc.org

  • SISTEMAS DISTRIBUIDOS 37

    Figura 13. Crecimiento de Internet en los ltimos aos

    Fuente: http://info.isoc.org

    2.4.1 Control del coste de los recursos fsicos Segn crece la demanda de un recurso, debiera ser posible extender el sistema, a un coste razonable, para satisfacerla. Por ejemplo, la frecuencia con la que se accede a los archivos de una intranet suele crecer con el incremento del nmero de usuarios y computadores. Debe ser posible aadir servidores para evitar el embotellamiento que aparece cuando un solo servidor de archivos ha de manejar todas las peticiones de acceso a stos. En general, para que un sistema con (n) usuarios fuera escalable, la cantidad de recursos fsicos necesarios para soportarlo debiera ser como mximo O(n), es decir proporcional a (n). Por ejemplo, si un solo servidor de archivos pudiera soportar 20 usuarios, entonces 2 servidores del mismo tipo tendrn capacidad para 40 usuarios. Aunque parezca una meta obvia, no es tan fcil lograrlo en la prctica. 2.4.2 Control de las prdidas de prestaciones Considere la administracin de un conjunto de datos cuyo tamao es proporcional al nmero de usuarios o recursos del sistema, sea por ejemplo la tabla con la relacin de nombres de dominio de computadores y sus direcciones Internet sustentado por el Sistema de Nombres de Dominio (DNS / Domain Name System)29, que se emplea principalmente para averiguar nombres DNS tales como www.unad.edu.co. Los algoritmos que emplean estructuras jerrquicas se comportan mejor frente al crecimiento de la escala que los algoritmos que emplean estructuras lineales. Pero incluso con estructuras jerrquicas un incremento en tamao trae consigo prdidas en prestaciones: el tiempo que lleva acceder a datos estructurados jerrquicamente es O(log n), donde (n) es el tamao del conjunto de datos. Para que un sistema sea escalable, la mxima prdida de prestaciones no debiera ser peor que esta medida. 2.4.3 Prevencin de desbordamiento de recursos software 29 Sistema de direccionamiento distribuido que traduce el nombre de un servidor web en una direccin IP. Facilita el uso de Internet ya que no hay necesidad de aprender o recordar las direcciones IP (Ej: 172.18.4.5)

  • SISTEMAS DISTRIBUIDOS 38

    Un ejemplo de prdida de escalabilidad se muestra en el tipo de nmero usado para las direcciones Internet (direcciones de computadores en Internet). A finales de los aos setenta, se decidi emplear para esto 32 bits (formato de direccionamiento IPv430), pero este tipo de direccionamiento para Internet se desbordar probablemente al comienzo de la dcada del ao 2010. Por esta razn, la nueva versin del protocolo emplea direcciones Internet de 128 bits (formato de direccionamiento IPv631). A pesar de ello, para ser justos con los primeros diseadores de Internet, no hay una solucin idnea para este problema. Es difcil predecir la demanda que tendr que soportar un sistema con aos de anticipacin. Adems, sobredimensionar para prever el crecimiento futuro pudiera ser peor que la adaptacin a un cambio cuando se hace necesario; las direcciones Internet grandes ocupan espacio extra en los mensajes, y en la memoria de los computadores. 2.4.4 Evitar cuellos de botella de prestaciones En general, para evitar cuellos de botella de prestaciones, los algoritmos deberan ser descentralizados. Ilustramos este punto aludiendo al predecesor del Sistema de Nombres de Dominio en el cual la tabla de nombres se alojaba en un solo archivo maestro que poda descargarse a cualquier computador que lo necesitara. Esto funcionaba bien cuando slo haba unos cientos de computadores en Internet, pero pronto se convirti en un serio cuello de botella de prestaciones y de administracin. El Sistema de Nombres de Dominio elimin este cuello de botella particionando la tabla de nombres entre servidores situados por todo Internet y siendo administrados localmente. Algunos recursos compartidos son accedidos con mucha frecuencia; por ejemplo, puede que muchos usuarios accedan a la misma pgina web, causando un declive de las prestaciones. Una forma de optimizar lo anterior es mediante el empleo de cach y replicacin puede mejorar las prestaciones de los recursos que estn siendo muy fuertemente utilizadas. Idealmente, el software de sistema y aplicacin no tiene por qu cambiar cuando la escala del sistema se incremente, pero esto es difcil de conseguir. La cuestin del escalado de un sistema es un tema dominante en el desarrollo de sistemas distribuidos.

    30 Versin 4 del Protocolo IP. Esta fue la primera versin del protocolo que se implement extensamente, y forma la base de Internet. IPv4 usa direcciones de 32 bits, limitndola a 232 = 4.294.967.296 direcciones nicas, muchas de las cuales estn dedicadas a redes locales (LANs). 31 Para una ampliacin de IPv6 vea captulo 4 de la unidad 3 del presente mdulo

  • SISTEMAS DISTRIBUIDOS 39

    2.5 TRATAMIENTO DE FALLOS Los sistemas computacionales a veces fallan. Cuando aparecen fallos en el hardware o el software, los programas pueden producir resultados incorrectos o pueden parar antes de haber completado el clculo pedido. Los fallos en un sistema distribuido son parciales; es decir, algunos componentes fallan mientras otros siguen funcionando. Consecuentemente, el tratamiento de fallos es particularmente difcil. Entre las principales tcnicas para tratar fallos se encuentran las siguientes: 2.5.1 Deteccin de fallos Algunos fallos son detectables. Por ejemplo, se pueden utilizar sumas de comprobacin (checksums) para detectar datos corruptos en un mensaje o un archivo. Por otra parte, los sistemas que trabajan con el protocolo IP tienen algoritmos para detectar errores en los datos transmitidos. 2.5.2 Enmascaramiento de fallos Algunos fallos que han sido detectados pueden ocultarse o atenuarse. Dos ejemplos de ocultacin de fallos son: Los mensajes pueden retransmitirse cuando falla la recepcin. Los archivos con datos pueden escribirse en una pareja de discos de forma

    que si uno est deteriorado el otro seguramente est en buen estado. Simplemente eliminar un mensaje corrupto es un ejemplo de atenuar un fallo

    (pudiera retransmitirse de nuevo). 2.5.3 Tolerancia de fallos La mayora de los servicios en Internet exhiben fallos; es posible que no sea prctico para ellos pretender detectar y ocultar todos los fallos que pudieran aparecer en una red tan grande y con tantos componentes. Sus clientes pueden disearse para tolerar ciertos fallos, lo que implica que tambin los usuarios tendrn que tolerarlos generalmente. Por ejemplo, cuando un visualizador web no puede contactar con un servidor web no hace que el cliente tenga que esperar indefinidamente mientras hace sucesivos intentos; informa al usuario del problema, dndole la libertad de intentarlo ms tarde. 2.5.4 Recuperacin frente a fallos La recuperacin implica el diseo de software en el que, tras una cada del servidor, el estado de los datos pueda reponerse o reversarse (roll back) a una situacin anterior. En general, cuando aparecen fallos los clculos realizados por algunos programas se encontrarn incompletos y al actualizar datos permanentes (archivos e informacin ubicada en almacenamiento persistente) pudiera encontrarse en un estado inconsistente.

  • SISTEMAS DISTRIBUIDOS 40

    2.5.5 Redundancia Puede lograrse que los servicios toleren fallos mediante el empleo redundante (duplicidad) de componentes. Considere los siguientes ejemplos: Siempre debe haber al menos dos rutas diferentes entre cualesquiera dos

    encaminadotes (routers)32 en Internet. En el Sistema de Nombres de Dominio, cada tabla de nombres se encuentra

    replicada en dos servidores diferentes. Una base de datos puede encontrarse replicada en varios servidores para

    asegurar que los datos siguen siendo accesibles tras el fallo de cualquier servidor concreto; los servidores pueden disearse para detectar fallos entre sus iguales; cuando se detecta algn error en un servidor se redirigen los clientes a los servidores restantes.

    Los sistemas distribuidos proporcionan un alto grado de disponibilidad frente a los fallos del hardware. La disponibilidad de un sistema mide la proporcin de tiempo en que est utilizable. Cuando falla algn componente del sistema distribuido slo resulta afectado el trabajo relacionado con el componente defectuoso. As como cuando un computador falla el usuario puede desplazarse a otro, tambin puede iniciarse un proceso de servicio en otra ubicacin. 2.6 CONCURRENCIA Tanto los servicios como las aplicaciones proporcionan recursos que pueden compartirse entre los clientes en un sistema distribuido. Existe por lo tanto una posibilidad de que varios clientes intenten acceder a un recurso compartido a la vez. Por ejemplo, una estructura de datos que almacena artculos de un determinado Proveedor puede ser accedida muy frecuentemente cuando se ofertan descuentos o gangas. El proceso que administra un recurso compartido puede atender las peticiones de cliente una por una en cada momento, pero esta aproximacin limita el ritmo de produccin del sistema Por esto los servicios y aplicaciones permiten, usualmente, procesar concurrentemente mltiples peticiones de los clientes. Ms concretamente, suponga que cada recurso se encapsula en un objeto y que las invocaciones se ejecutan en hilos de ejecucin concurrentes (threads)33. En este caso es posible que varios threads estuvieran ejecutando concurrentemente el contenido de un objeto, en cuyo caso las operaciones en el objeto pueden entrar

    32 Del ingls Router. Dispositivo hardware o software de interconexin de redes de computadores que opera en la capa tres (nivel de red) del modelo OSI. Este dispositivo interconecta segmentos de red o redes enteras. Hace pasar paquetes de datos entre redes tomando como base la informacin de la capa de red. El router toma decisiones lgicas con respecto a la mejor ruta para el envo de datos a travs de una red interconectada y luego dirige los paquetes hacia el segmento y el puerto de salida adecuados. 33 Ver Glosario.

  • SISTEMAS DISTRIBUIDOS 41

    en conflicto entre s y producir resultados inconsistentes. Por ejemplo, sean dos ofertas que concurren a una subasta como Prez: 122$ y Rodrguez: 111$ y las operaciones correspondientes se entrelazan sin control alguno, estas ofertas se pueden almacenar como Prez: 111$ y Rodrguez: 122$. La moraleja de esta historia es que cada objeto que represente un recurso compartido en un sistema distribuido debe responsabilizarse de garantizar que opera correctamente en un entorno concurrente. De este modo cualquier programador que recoge una implementacin de un objeto que no est concebido para su aplicacin en un entorno distribuido, debe realizar las modificaciones necesarias para que su uso sea seguro en un entorno concurrente. Para que un objeto sea seguro en un entorno concurrente, sus operaciones deben sincronizarse de forma que sus datos permanezcan consistentes. Esto puede lograrse mediante el empleo de tcnicas conocidas como los semforos, que se usan en la mayora de los sistemas operativos. 2.7 TRANSPARENCIA Se define transparencia como la ocultacin, al usuario y al programador de aplicaciones, de la separacin de los componentes en un sistema distribuido, de forma que se perciba el sistema como un todo ms que como una coleccin de componentes independientes. Las implicaciones de la transparencia son de gran calado en el diseo del software del sistema. El Modelo de Referencia para el Procesamiento Distribuido Abierto (RM-ODP: Reference Model for Open Distri-buted Processing) de la Organizacin Internacional de Estndares (ISO 1992) identifican ocho formas de transparencia. Transparencia de acceso que permite acceder a los recursos locales y

    remotos empleando operaciones idnticas. Transparencia de ubicacin que permite acceder a los recursos sin conocer

    su localizacin. Transparencia de concurrencia que permite que varios procesos operen

    concurrentemente sobre recursos compartidos sin interferencia mutua. Transparencia de replicacin que permite utilizar mltiples ejemplares de

    cada recurso para aumentar la fiabilidad y las prestaciones sin que los usuarios y los programadores de aplicaciones necesiten su conocimiento.

    Transparencia frente a fallos que permite ocultar los fallos, dejando que los usuarios y programas de aplicacin completen sus tareas a pesar de fallos del hardware o de los componentes software.

    Transparencia de movilidad que permite la reubicacin de recursos y clientes en un sistema sin afectar la operacin de los usuarios y los programas.

    Transparencia de prestaciones que permite reconfigurar el sistema para mejorar las prestaciones segn vara su carga.

  • SISTEMAS DISTRIBUIDOS 42

    Transparencia al escalado que permite al sistema y a las aplicaciones expandirse en tamao sin cambiar la estructura del sistema o los algoritmos de aplicacin.

    Las dos ms importantes son la transparencia de acceso y la transparencia de ubicacin; su presencia o ausencia afecta principalmente a la utilizacin de recursos distribuidos. A veces se les da el nombre conjunto de transparencia de red. Como aclaracin de la transparencia de acceso, considere una interfaz grfica de usuario basada en carpetas, donde los contenidos de las carpetas se observan igual ya sean stas locales o remotas. Otro ejemplo pudiera ser el de una interfaz de programacin de aplicaciones (API)34 para archivos que emplea las mismas operaciones para acceder a stos ya sean locales o remotos. Como ejemplo de carencia de transparencia de acceso, considere un sistema distribuido que no permite acceder a los archivos de un computador remoto a menos que se emplee el programa FTP (File Transfer Protocol / Protocolo de Transferencia de Archivos). Los nombres de recursos web o URLs35 son transparentes a la ubicacin dado que la parte del URL que identifica el nombre del dominio del servidor web se refiere a un nombre de computador en un dominio, ms que a una direccin en Internet. Sin embargo, un URL no es transparente a la movilidad, porque una pgina web dada no puede moverse a un nuevo lugar en un dominio diferente sin que todos los enlaces anteriores a esta pgina sigan apuntando a la pgina original. En general, los identificadores como los URLs que incluyen los nombres de dominio en los computadores contravienen la transparencia de replicacin. Aunque el DNS permite que un nombre de dominio se refiera a varios computadores, slo se escoge uno de ellos cuando se utiliza un nombre. Ya que un esquema de replicacin generalmente necesita ser capaz de acceder a todos los computadores del grupo, sera necesario acceder a cada entrada del DNS por nombre.

    34 Del ingls Application Programming Interface (Interfaz de Programacin de Aplicaciones). Conjunto de especificaciones de comunicacin entre componentes software. Representa un mtodo para conseguir abstraccin en la programacin, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de los principales propsitos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitndose el trabajo de programar todo desde el principio. 35 Del ingls Uniform Resource Locator (localizador uniforme de recurso). Es una secuencia de caracteres, de acuerdo a un formato estndar, que se usa para nombrar recursos, como documentos e imgenes en Internet, por su localizacin. El URL es la cadena de caracteres con la cual se asigna una direccin nica a cada uno de los recursos de informacin disponibles en la Internet. Existe un URL nico para cada pgina de cada uno de los documentos de la World Wide Web. Ejemplo: http://es.wikipedia.org:80/wiki/data

  • SISTEMAS DISTRIBUIDOS 43

    Como ilustracin de la presencia de transparencia de red, considere el uso de una direccin de correo electrnico como [email protected]. La direccin consta de un nombre de usuario y un nombre de dominio. Observe que a pesar de que los programas de correo aceptan nombres de usuario para usuarios locales, aaden el nombre del dominio. El envo de correo a un usuario no implica el conocimiento de su ubicacin fsica en la red. Tampoco el procedimiento de envo de un mensaje de correo depende de la ubicacin del receptor. En resumen, el correo electrnico en Internet proporciona ambas cosas: transparencia de ubicacin y transparencia de acceso (en definitiva, transparencia de red). La transparencia frente a fallos puede ilustrarse tambin en el contexto del correo electrnico, el cual eventualmente se enva, incluso aunque los servidores o los enlaces de comunicaciones fallen. Los fallos se enmascaran intentando retransmitir los mensajes hasta que se envan satisfactoriamente, incluso si lleva varios das. Para ilustrar la transparencia a la movilidad, considere el caso de los telfonos mviles. Supongamos que ambos, el emisor y el receptor, viajan en tren por diferentes partes del pas, movindose de un entorno (clula) a otro. Veamos al terminal del emisor como un cliente y al terminal del receptor como un recurso. Los dos usuarios telefnicos no perciben el desplazamiento de sus terminales (el cliente y el recurso) entre dos clulas. La transparencia oculta y difumina annimamente los recursos que no son relevantes directamente para la tarea entre manos de los usuarios y programadores de aplicaciones. Por ejemplo, en general es deseable que el uso de ciertos dispositivos fsicos sea intercambiable. Por ejemplo, en un sistema multiprocesador, la identificacin del procesador en que se ejecuta cada proceso es irrelevante. An puede que la situacin sea otra: por ejemplo, un viajero que conecta un computador porttil a una red local, en cada oficina que visita hace uso de servicios locales como el correo, utilizando diferentes servidores en cada ubicacin. Incluso dentro de un edificio, es normal preparar las cosas para imprimir cada documento en una impresora concreta: generalmente la ms prxima. Tambin para un programador que desarrolla programas paralelos, no todos los procesadores son annimos. l o ella pudiera estar interesado en qu procesadores utilizar para la tarea, o al menos cuntos y su topologa de interconexin.

  • SISTEMAS DISTRIBUIDOS 44

    EJERCICIOS " Un programa servidor escrito en un lenguaje (por ejemplo C++) proporciona un objeto

    BURBUJA al que se pretende que accedan clientes que pudieran estar escritos en un lenguaje diferente (por ejemplo Java). Los computadores clientes y servidores pueden tener un hardware diferente, pero todas estn conectadas a Internet. Describa los problemas debidos a cada uno de los cinco aspectos de la heterogeneidad que necesitan resolverse para posibilitar que un objeto cliente invoque un mtodo sobre el objeto servidor.

    " Indague acerca de las principales caractersticas de los siguientes estndares abiertos:

    TCP, Bluetooth, PNG y XML. Para qu se utiliza el estndar?, qu entidad a nivel mundial promueve actualmente su difusin?, en qu tipo de aplicaciones se utiliza? y cules son sus perspectivas futuras?

    " Explique el objetivo del modelo de referencia OSI de la ISO para la interconexin de

    los sistemas abierto y esboce la funcin de cada capa. En lo posible utilice grficos descriptivos.

    " Proponga cinco tipos de recursos hardware y cinco tipos de recursos software o de

    datos que puedan compartirse tilmente. Proponga ejemplos de su uso compartido tal y como ocurre en la prctica en los sistemas distribuidos.

    " Cmo podran sincronizarse los relojes de dos computadores unidos por una red local,

    sin hacer uso de una referencia temporal externa? Qu factores limitaran la precisin del procedimiento propuesto? Cmo podran sincronizarse los relojes de un mayor nmero de computadores conectados a Internet?. Discuta la precisin de ste procedimiento.

    " Un usuario llega a una estacin de ferrocarril que no conoce, portando un PDA capaz

    de conectarse a una red inalmbrica. Sugiera cmo podra proporcionrsele al usuario informacin sobre los servicios locales y las comodidades en la estacin, sin necesidad de insertar el nombre de la estacin o sus caractersticas. Qu dificultades tcnicas hay que superar?

    " Tome World Wide Web como ejemplo para ilustrar el concepto de comparticin de

    recursos, cliente y servidor. Los recursos en World Wide Web y otros servicios se direccionan media