Computacion Distribuida
12 de Septiembre de 2013
16.084 Palabras (65 Páginas)436 Visitas
INTRODUCCIÓN A LA COMPUTACIÓN DISTRIBUIDA 1
DEFINICIONES 2
LA HISTORIA DE LA COMPUTACIÓN DISTRIBUIDA 3
DIFERENTES FORMAS DE COMPUTACIÓN 4
COMPUTACIÓN MONOLÍTICA 4
COMPUTACIÓN DISTRIBUIDA 4
COMPUTACIÓN PARALELA 5
COMPUTACIÓN COOPERATIVA 5
VIRTUDES Y LIMITACIONES DE LA COMPUTACIÓN DISTRIBUIDA 5
CONCEPTOS BÁSICOS DE SISTEMAS OPERATIVOS 7
PROGRAMAS Y PROCESOS DE COMPUTACIÓN 7
PROGRAMACIÓN CONCURRENTE 8
CONCEPTOS BÁSICOS DE REDES 11
PROTOCOLOS 11
ARQUITECTURA DE RED 12
PROTOCOLOS DE LA ARQUITECTURA DE RED 13
COMUNICACIÓN ORIENTADA A CONEXIÓN FRENTE A COMUNICACIÓN SIN CONEXIÓN 14
RECURSOS DE RED 15
IDENTIFICACIÓN DE NODOS Y DIRECCIONES DEL PROTOCOLO DE INTERNET 15
IDENTIFICACIÓN DE PROCESOS A TRAVÉS DE PUERTOS 19
DIRECCIONES DE CORREO ELECTRÓNICO 19
URL 20
CONCEPTOS BÁSICOS DE INGENIERÍA DEL SOFTWARE 22
PROGRAMACIÓN PROCEDIMENTAL FRENTE A PROGRAMACIÓN ORIENTADA A OBJETOS 22
UML 23
LA ARQUITECTURA DE APLICACIONES DISTRIBUIDAS 23
CONJUNTOS DE HERRAMIENTAS, MARCOS DE DESARROLLO Y COMPONENTES 24
RESUMEN 24
EJERCICIOS 25
REFERENCIAS 31
Introducción a la Computación Distribuida
Este libro trata sobre computación distribuida. Este capítulo comenzará indicando qué se entiende por computación distribuida en el contexto de este libro. Para ello, se muestra la historia de la computación distribuida y se compara este tipo de computación con otras formas de computación. A continuación, se presentan algunos conceptos básicos en los campos de sistemas operativos, redes, e ingeniería del software, conceptos con los que el lector debe familiarizarse para comprender el material presentado en capítulos sucesivos.
Definiciones
Uno de los orígenes de la confusión existente en el campo de la computación distribuida es la falta de un vocabulario universal, tal vez debido al increíble ritmo al que se desarrollan nuevas ideas en este campo. A continuación se definen algunos de los términos claves utilizados en el contexto de este libro. Durante la lectura del libro es necesario mantener en la mente estas definiciones, teniendo en cuenta que algunos de dichos términos pueden tener diferentes definiciones en otros contextos.
En sus orígenes, la computación se llevaba a cabo en un solo procesador. Un monoprocesador o la computación monolítica utiliza una única unidad central de proceso o CPU (Central Processing Unit) para ejecutar uno o más programas por cada aplicación.
Un sistema distribuido es un conjunto de computadores independientes, interconectados a través de una red y que son capaces de colaborar a fin de realizar una tarea. Los computadores se consideran independientes cuando no comparten memoria ni espacio de ejecución de los programas. Dichos computadores se denominan computadores ligeramente acoplados, frente a computadores fuertemente acoplados, que pueden compartir datos a través de un espacio de memoria común.
La computación distribuida es computación que se lleva a cabo en un sistema distribuido. Este libro explora las formas en que los programas, ejecutando en computadores independientes, colaboran con otros a fin de llevar a cabo una determinada tarea de computación, tal como los servicios de red o las aplicaciones basadas en la Web.
• Un servicio de red es un servicio proporcionado por un tipo de programa especial denominado servidor en una red. La WWW (World Wide Web) o simplemente Web es un servicio de este tipo, así como el correo electrónico (email) y la transferencia de ficheros (FTP: File Transfer Protocol). Un programa de servidor es justamente la mitad del denominado modelo cliente-servidor de la computación distribuida. Este modelo se estudiará detalladamente en sucesivos capítulos de este libro.
• Una aplicación de red es una aplicación para usuarios finales, que se ejecuta en computadores conectados a través de una red. Existe un gran número de aplicaciones de red, que van desde aplicaciones comerciales, tales como carritos de la compra y subastas electrónicas, a aplicaciones no comerciales tales como salones de chat o juegos de red.
La diferencia entre servicios y aplicaciones de red no es siempre nítida y estos términos frecuentemente se intercambian.
La historia de la computación distribuida
Al comienzo se utilizaban computadores aislados, cada uno de los cuales era capaz de ejecutar programas almacenados. La conexión de computadores aislados de forma que los datos se pudieran intercambiar fue una progresión natural. La conexión rudimentaria de computadores a través de cables fue utilizada ya en los años 60 para la compartición de ficheros. No obstante, esta práctica requiere intervención manual y no puede denominarse aplicación de computación a uno o más programas que ejecutan de forma autónoma con el objetivo de realizar una determinada tarea. Tal aplicación requiere comunicación de datos, donde dos computadores intercambien datos espontáneamente y utilicen determinado software y hardware para la realización de las tareas inherentes de dicha aplicación.
El primer RFC (Request For Comments) de Internet, RFC 1, es una propuesta que especifica cómo las máquinas participantes pueden intercambiar información con otras a través del uso de mensajes. Mientras pudiera haber intentos individuales de crear aplicaciones de red a pequeña escala (tal vez mediante la conexión de dos o más computadores a través de cable), la primera aplicación de red fue el correo electrónico, también denominado email, ya que el primer mensaje fue enviado y registrado en 1972 en una red ARPANET de cuatro nodos. (Un nodo de una red es un computador o máquina que participa en la misma.) Los mecanismos de transferencia de ficheros automatizados, que permiten el intercambio de ficheros de datos entre las máquinas, supusieron otra progresión natural y ya en 1971 hubo una propuesta para dicho tipo de mecanismo (véase los RFC 114 y RFC 141). Hasta el día de hoy, el correo electrónico y la transferencia de ficheros siguen siendo dos de los más populares servicios de red. Sin embargo, el más conocido servicio de red es indudablemente la World Wide Web (WWW). La Web fue concebida originalmente a finales de los años 80 por científicos del centro de investigación suizo CERN en Ginebra como una aplicación que permite el acceso a hipertexto sobre una red. Desde entonces, la WWW se ha convertido en una plataforma para aplicaciones y servicios de red, incluyendo el correo electrónico, motores de búsqueda y comercio electrónico (e-commerce).
La WWW ha sido responsable de la gran explosión que ha habido en el uso de Internet. Hasta 1990, ARPANET, el predecesor de Internet, fue utilizado principalmente por científicos, investigadores y académicos como una red de datos. Estimulado por la popularidad de la WWW, la red creció espectacularmente en los años 90, tal y como se muestra en las Figuras 1.1 y 1.2.
Algunos sitios de la Web con información de la historia de la red y que son muy visitados son [vimp.museophile.com, 1], [zakon.org, 2] y [isoc.org, 38]. Además, [Hafner and Lyon, 4] es un fascinante informe de los primeros pasos de Internet, incluyendo información sobre las personas y las organizaciones que estuvieron implicados.
Diferentes formas de computación
Para comprender qué significa la computación distribuida en el contexto de este libro, resulta instructivo analizar diferentes formas de computación.
Computación monolítica
En la forma más sencilla de computación, un único computador, tal como un computador personal (PC, Personal Computer) se utiliza para la computación. Dicho computador no está conectado a ninguna red y, por tanto, sólo puede utilizar aquellos recursos a los que tiene acceso de manera inmediata. Esta forma de computación se denomina computación monolítica. En su forma más básica, un único usuario utiliza el computador a la vez. Las aplicaciones de usuario sólo pueden acceder a aquellos recursos disponibles en el sistema. Un ejemplo de este tipo de computación, que puede denominarse computación monolítica monousuario, es el uso de aplicaciones tales como un programa de procesamiento de texto o hojas de cálculo en un PC.
La computación monolítica permite la convivencia de múltiples usuarios. Esta forma de computación (véase la Figura 1.3a), donde varios usuarios pueden compartir de forma concurrente los recursos de un único computador a través de una técnica denominada tiempo compartido, fue popular en los años 70 y 80. El computador que proporciona el recurso centralizado se denomina mainframe para diferenciarlo de pequeños computadores tales como minicomputadores o microcomputadores. Los usuarios, que podrían estar dispersos geográficamente, se pueden conectar al mainframe e interaccionar con el mismo durante una sesión a través de dispositivos denominados terminales. Algunos mainframes ampliamente utilizados incluyen las series IBM 360 y las series Univac 1100. Las aplicaciones que utilizan esta forma de computación son típicamente programas separados y diseñados para llevar a cabo una sola función, tal como programas de nóminas o contabilidad para una empresa o una universidad.
Computación distribuida
En contraste, la computación distribuida implica el uso de múltiples computadores conectados a la red, cada uno de los cuales tiene su propio procesador o procesadores y otros recursos
...