Академический Документы
Профессиональный Документы
Культура Документы
MAYO 2018
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Contenido
MODULO I ..................................................................................................................................... 7
INTRODUCCION A LOS SISTEMAS DISTRIBUIDOS. ....................................................................... 7
I CARACTERIZACIÓN DE LOS SISTEMAS DISTRIBUIDOS. .............................................................. 7
1.1 Panorama general introductorio. .................................................................................... 7
1.2 Caracteristicas de los sistemas distribuídos. ................................................................... 9
1.3 Ventajas de los sistemas distribuidos. ........................................................................... 21
1.4 Desventajas y Factores a Considerar: ............................................................................ 22
1.5 SISTEMAS OPERATIVOS DE RED. .................................................................................... 23
1.6 Diferencia entre Sistemas distribuídos y sistemas centralizados o de red. ................. 24
MODULO II .................................................................................................................................. 34
COMUNICACIÓN ENTRE PROCESOS EN SISTEMAS DISTRIBUIDOS ........................................... 34
2.1 Introducción ...................................................................................................................... 34
2.1.1 Comunicación entre procesos ....................................................................................... 34
2.2 Mecanismo de paso de mensajes .................................................................................... 35
2.3 Comunicación cliente-servidor......................................................................................... 36
2.4 Llamadas a procedimientos remotos (RPC) ..................................................................... 37
2.5 Comunicación entre grupos de procesos ......................................................................... 38
2.6 Tecnologías de comunicación para Sistemas Distribuidos: Sockets (ejemplos: Unix,
Sun RPC, JAVA RMI) ................................................................................................................ 40
Los tipos de sockets son: ........................................................................................................ 40
Ventajas del Uso de Sockets: ................................................................................................. 40
Desventajas del uso de Sockets: ............................................................................................ 41
Qué son los sockets? .............................................................................................................. 41
Propiedades de los sockets .................................................................................................... 41
Existen básicamente dos tipos: .............................................................................................. 41
Tipos de Sockets ..................................................................................................................... 42
MODULO III ................................................................................................................................. 45
MIDDELWARE ............................................................................................................................. 45
3.0 Middleware....................................................................................................................... 45
3.1 Describir el origen, generalidades y diseño de un middleware. ..................................... 45
¿Qué tipos de middleware están disponibles? ..................................................................... 45
Taxonomía de los software middleware ............................................................................... 46
Categoría de integración ........................................................................................................ 46
Orientados a procedimiento o procesos ............................................................................... 46
Orientados a objetos .............................................................................................................. 47
Profesor Martín Arosemena 2 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Indice de figuras.
MODULO I
Antes de definir lo que es un Sistema Distribuido, vamos a definir un término más general: La
Computación Distribuida, podemos definirla de muchas maneras, este término se utiliza
indiscriminadamente para referirse a cualquier sistema en el que múltiples agentes autónomos,
cada uno con capacidades de cómputo individual, se comunican entre sí y afectan mutuamente
su comportamiento. Los agentes, usualmente llamados procesadores, procesos o nodos,
pueden ser desde computadoras completas hasta autómatas celulares con capacidad de
cómputo y memoria muy limitados que se pueden comunicar mediante mensajes.
Internet
Una intranet, que es una porción de Internet gestionada por una organización
La computación móvil y ubicua.
Compartir recursos es uno de los motivos principales para construir sistemas distribuidos. Los
recursos pueden ser administrados por servidores y accedidos por clientes o pueden ser
encapsulados como objetos y accedidos por otros objetos clientes. SE analiza el web como un
ejemplo de recursos compartidos y se introducen sus principales características.
Una de las primeras caracterizaciones de un Sistema Distribuido fue realizada por Enslow, ya en
1978, que le atribuye las siguientes propiedades:
Está compuesto por varios recursos informáticos de propósito general, tanto físicos
como lógicos, que pueden asignarse dinámicamente a tareas concretas.
Estos recursos están distribuidos físicamente, y funcionan gracias a una red de
comunicaciones. o Hay un sistema operativo de alto nivel, que unifica e integra el
control de los componentes.
El hecho de la distribución es transparente, permitiendo que los servicios puedan ser
solicitados especificando simplemente su nombre (no su localización).
El funcionamiento de los recursos físicos y lógicos está caracterizado por una autonomía
coordinada. A pesar del tiempo transcurrido, esta definición sigue siendo, en esencia,
válida.
Así, para Coulouris un sistema distribuido es aquél que está compuesto por varias computadoras
autónomas conectadas mediante una red de comunicaciones y equipadas con programas que
les permitan coordinar sus actividades y compartir recursos.
Bal ofrece una definición muy similar: ``Un sistema de computación distribuida está compuesto
por varios procesadores autónomos que no comparten memoria principal, pero cooperan
mediante el paso de mensajes sobre una red de comunicaciones''. Y según Schroeder, todo
sistema distribuido tiene tres características básicas:
Una característica muy importante es que las diferencias entre las computadoras y las maneras
en que estas se comunican no son transparentes para el usuario final, esto mismo aplica para la
organización interna del sistema distribuido. Otra característica importante es que los usuarios
y las aplicaciones pueden interactuar con un Sistema Distribuido de manera consistente y
uniforme, sin importar donde y cuando se lleve a cabo la interacción.
Todo Sistema Distribuido bebe también ser relativamente fácil poder expandir, lo cual se logra
al tener computadoras independientes, pero al mismo tiempo “esconder” las funciones de
dichas computadoras en el sistema. Normalmente un sistema distribuido debe de estar siempre
disponible a pesar de que ciertas partes que lo conforman puedan no estar funcionando.
Los usuarios y las aplicaciones no deben de notar en ningún momento que estas partes están
siendo reemplazadas o reparadas, o que se han agregado nuevas partes al sistema para poder
dar servicio a más usuarios o aplicaciones.
a) Heterogeneidad:
Un ejemplo de esto lo podemos ver muy claro en Internet, ya que es una red que está
conformada por muchos tipos de redes (Figura 1) cuyas diferencias se encuentran
enmascaradas, puesto que todas las computadoras que se conectan a este utilizan los
protocolos de Internet para comunicarse una con otra, así una computadora conectada
a una red Ethernet puede comunicarse con otra computadora conectada a una red
TokenRing, basta con que se haga una implementación de los protocolos de Internet
para cada una de esas redes.
archivo. Para solucionar este problema se han creado lo que se conocen como máquinas
virtuales, las cuales proveen un modo de crear código ejecutable sobre cualquier
hardware, ya que el compilador de un lenguaje concreto generará un código para una
máquina virtual y esta se encargará de “traducir” dicho código al apropiado para un
hardware particular, así, un compilador de Java producirá un código para la máquina
virtual de Java, y esta última sólo necesitará ser implementada una sola vez para cada
máquina en la que se va a ejecutar.
b) Extensibilidad y Apertura:
La portabilidad por su parte caracteriza a que nivel puede ser ejecutada una aplicación
desarrollada para un sistema distribuido “A” sobre un sistema distribuido “B” que
implementa las mismas interfaces del sistema “A”, pero sin hacerle modificaciones.
c) Seguridad:
La gran mayoría de la información que maneja un sistema distribuido tiene un alto valor
para los usuarios de dicho sistema, y es por eso que la seguridad de la información juega
un papel clave al momento de desarrollar dicho sistema.
La seguridad es relativa a la amenaza que cada sistema afronta, afecta a todos los puntos
del sistema y debe de ser fácil de obtener. La seguridad debe ofrecer los siguientes
servicios:
El alto valor de que tiene la información es la razón principal por la que esta se puede
ver amenazada de muchas formas, entre las principales podemos encontrar:
Si bien no podemos asegurar que un sistema distribuido sea cien por ciento seguro, es
importante contar con un esquema de seguridad lo más robusto posible, que a pesar de
no ser inmune a todo tipo de ataques, si será capaz de frenar la gran mayoría de dichos
ataques. Algunas recomendaciones muy útiles para los desarrolladores,
administradores e implementadores de un sistema distribuido se presentan a
continuación:
El riesgo de cada componente está en función directa a las pérdidas que ocasionaría el
que éste deje de operar, así como en función de cuán vulnerable es dicho componente
en este momento. Por ejemplo, una base de datos de clientes involucra un gran riesgo
debido al gran valor que la información representa para una organización; pero una
simple PC Windows de la misma organización conectada directamente al Internet (sin
firewall/proxy de por medio) también lo representa, debido a que puede ser objeto de
un ataque desde el exterior, con el posible riesgo de fácil propagación hacia otros
computadores de nuestra red.
En la fórmula del "riesgo" propuesta arriba, es evidente que los componentes de nuestro
sistema con alto valor y alta vulnerabilidad serán de lejos los que presenten mayor
riesgo. Sin embargo, en muchos casos no es sencillo disminuir el valor de cierto
componente (y por tanto la pérdida en caso de problemas), y tampoco se puede eliminar
completamente la vulnerabilidad del mismo (por ejemplo, si está de cara a Internet.) En
este caso lo que conviene es separar o dividir este componente en dos partes
suficientemente alejadas e independientes a fin de que el riesgo total disminuya. Por
ejemplo, los portales de comercio electrónico deben dar cara a Internet (siendo
vulnerables en principio) y a la vez manejar información muy costosa (como
transacciones con tarjeta de crédito.) Esto los convierte en un sistema de alto riesgo. Sin
embargo es casi universal la separación que se efectúa entre los componentes
dedicados a dar cara a Internet (como los Web Servers) y los componentes que
manipulan la información comercial (generalmente sistemas DBMS.) En términos
prácticos, esto significa que el hacker no puede acceder directamente al DBMS (lo que
sería catastrófico), y sólo podría atacar al Web Server, lo que en principio no acarrea
mayores consecuencias.
La seguridad debe estar en todos los niveles. Esto se puede expresar más sencillamente
como: no confiar el sistema a un único mecanismo de seguridad.
La información fluye a través de los distintos componentes y/o capas del sistema y son
muchas las instancias en las que se puede mejorar su seguridad. La recomendación
estipula que utilicemos todas estas instancias a pesar de que en principio puedan
parecer redundantes. Por lo general los administradores tienden a preocuparse por un
único punto de acceso desde donde supuestamente hay una gran probabilidad de ser
atacados (por ejemplo, la conexión a Internet.) Por tanto se invierte esfuerzo y dinero
en controlar este único punto bajo la asunción de que es la única puerta de entrada a
los maleantes y que por tanto, tras asegurarla, todo el sistema quedará seguro. Esto
tiene dos problemas:
En nuestra organización deberíamos encriptar todo lo que sea posible. La razón de esto
es evidente si de lo que se trata es de enviar un mensaje privado por Internet. Sin
embargo, al interior de la organización la encriptación puede ayudar también.
Naturalmente hay que sopesar los inconvenientes que trae la encriptación en términos
de incomodidad de uso, costo de licencias, ciclos de CPU, etcétera; con el hecho de que
cierta información es definitivamente de carácter público y por tanto no tiene sentido
que esté encriptada.
d) Escalabilidad:
Con respecto a su tamaño: lo que significa que se pueden agregar más usuarios
y más recursos al sistema de una manera muy fácil.
Problemas de la Escalabilidad
Cuando se necesita escalar un sistema a un nivel más alto es muy común que surja algún
tipo de problema. Si consideramos la escalabilidad con respecto al tamaño de un
sistema, nos encontramos con las limitaciones que presentan los servicios, los datos y
los algoritmos centralizados.
Por otro lado tenemos los problemas de la escalabilidad con respecto a la localización o
área de implementación de un sistema distribuido. Una de las principales razones por
las cuales resulta difícil escalar los sistemas distribuidos que existen actualmente, es que
dichos sistemas fueron diseñados para trabajar redes de acceso locales (LANs) y que
están basados en una comunicación síncrona. En este tipo de comunicación el cliente
hace la solicitud de un servicio y hace un bloqueo de la comunicación hasta que recibe
la respuesta. Este acercamiento por lo general trabaja bien en LANs en las que la
comunicación entre dos máquinas por lo general no toma más de algunos cientos de
microsegundos.
En el caso de las WANs, tenemos que tomar en cuenta que la comunicación entre los
procesos pudiese tomar varios cientos de milisegundos, lo que representa un
alentamiento muy considerable del sistema. Otro problema a considerar es que la
comunicación en una WAN es poco confiable y en la gran mayoría de los casos es punto
a punto, al contrario de las redes locales que generalmente son muy confiables y
permiten hacer difusiones o transmisiones de tipo “broadcast”, lo que hace mucho más
fácil el desarrollo de sistemas distribuidos.
El sistema distribuido tiene que protegerse de ataques malignos provenientes del nuevo
dominio, y restringir el acceso a los servicios y datos que no están a disponibilidad de los
usuarios del mismo.
Técnicas de Escalabilidad
e) Tratamiento de Fallos:
El fallo tanto del hardware como del software es algo prácticamente inevitable, y por
más confiable que pueda parecer algún componente, siempre es importante estar
preparado para cuando este falle. En un sistema centralizado por lo general el fallo de
cualquier componente del sistema provoca que todos los servicios que este ofrece dejen
de funcionar, en cambio, en un sistema distribuido, los fallos son parciales, puesto que
solo afectan a los servicios que el componente que fallo este prestando, mientras que
otros servicios que prestan otros componentes siguen funcionando. El tratamiento de
fallos en un sistema distribuido es una tarea difícil, pero que se puede lograr si se utilizan
las técnicas adecuadas, según el sistema que se desee proteger. Algunas de las técnicas
más comunes son:
Detección de Fallos: Obviamente no es posible tratar un fallo si este no se ha detectado,
sin embargo, la detección de un fallo dentro de un sistema distribuido puede no ser tan
sencillo como parece, recordemos que además de componentes de hardware y
software, los sistemas distribuidos operan gracias a la transmisión de mensajes, y el
funcionamiento del sistema depende en gran parte de estas transmisiones de datos
entre los diferentes componentes; un fallo en la transmisión de datos entre
componentes no es fácil detectar, pero es algo que podemos esperar (dependiendo del
medio por el que se haga la transmisión y otras condiciones) y al saber que existe la
posibilidad de ese fallo, podemos monitorear y aplicar técnicas que aseguren que dicha
transmisión siempre sea correcta.
Tolerancia a Fallos: es importante saber cuándo un sistema puede llegar a tener ciertos
problemas sin que estos afecten de manera grave al usuario de los servicios
proporcionados, para así, ignorar la ocurrencia de dichos fallos cuando la aplicación lo
soporte, o bien, hacer saber al cliente que hay un problema en lugar de gastar tiempo y
recursos innecesarios para corregirlo cuando probablemente el problema no se pueda
arreglar rápido y el cliente termine por abortar el proceso; Pretender arreglar de manera
inmediata todos los problemas que puedan surgir en un sistema puede resultar incluso
dañino para el mismo sistema, puesto que hay problemas que mientras son arreglados
pueden afectar el rendimiento de otros componentes del sistema que sí están
trabajando.
Recuperación Frente a Fallos: Una vez que fue detectado un fallo y que se ha decidido
arreglarlo, hay que encontrar la mejor manera de hacerlo, y además, de recuperar el
estado del sistema antes de que ocurriera el fallo; esto requiere del software adecuado
para poder reconstruir o bien retractar los cambios que no fueron completados al
momento en que fue interrumpido el sistema, un ejemplo de esto lo podemos ver en
los sistemas manejadores de bases de datos, que se sirven de una bitácora de las
Profesor Martín Arosemena 18 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Tipos de Transparencia:
Grado de Transparencia:
En general, los sistemas distribuidos exhiben algunas ventajas sobre los sistemas
centralizados que se describen enseguida.
d) Costos de Desarrollo: Cuando se trabaja con un sistema distribuido que cuenta con
diferentes módulos de software que pueden integrase como parte de un solo sistema,
los usuarios finales interesados en desarrollar sus propias aplicaciones pueden hacerlo
utilizando sus propias máquinas, lo que trae como consecuencia la reducción del costo
y tiempo de desarrollo de una nueva aplicación.
i) Crecimiento: El poder total del sistema puede irse incrementando al añadir pequeños
sistemas, lo cual es mucho más difícil en un sistema centralizado y caro.
Por otro lado, los sistemas distribuidos también exhiben algunas ventajas sobre sistemas
aislados. Estas ventajas son:
Compartir datos: un sistema distribuido permite compartir datos más fácilmente que
los sistemas aislados, que tendrían que duplicarlos en cada nodo para lograrlo.
En general, se puede decir que un Sistema Operativo tiene las siguientes características:
Profesor Martín Arosemena 23 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Los terminales conectados al ordenador central permiten que otros usuarios puedan compartir
las posibilidades de cálculo y la memoria de las computadoras centrales.
Este tipo de proceso centralizado se diferencia del sistema de proceso distribuído utilizado por
las LAN.
Una red es un conjunto de ordenadores conectados entre sí que permite compartir recursos e
intercambiar información entre ellos. El conjunto es interoperable.
Estación de trabajo.
Ordenador, normalmente un PC normal, que actúa como cliente de la red y desde donde
trabajan los usuarios. Es el lugar natural donde normalmente se ejecutan los programas cliente.
El diseñador debe conocer la potencia de los ordenadores cliente ya que condiciona de forma
importante la capacidad de los programas clientes.
Servidores de red.
Si se utilizan para situar servidores que no son de red, el diseñador deberá asegurarse de que
tienen suficiente potencia para dar el tiempo de servicio necesario.
Adaptadores de red.
Elementos de enlace entre los componentes físicos de la red. Su relación con el diseño es la
velocidad de tráfico de red que consiguen.
Medio físico de comunicación y transmisión entre los componentes de una red. Sin ninguna
influencia en el diseño.
Además existen redes inalámbricas cada vez más usadas que permiten la utilización inmediata
de terminales móviles en local.
Todos estos servicios de comunicación remota se pueden escalar de forma transparente con
tantas líneas y/o recursos de comunicación como se necesiten. Esta prestación es
importantísima.
Topología de la red.
La topología de una red hace referencia a la forma física con la que se configura.
Protocolos.
Son las reglas y procedimientos que utilizan las redes para establecer la comunicación en los
nodos. Son el soporte del transportista. Sin importancia en el diseño ya que están embebidos
en el Middleware.
Las redes locales se pueden ampliar simplemente añadiendo más estaciones. Sin embargo la
evolución natural del crecimiento de la red se encontrará más tarde o más temprano con tres
situaciones:
El crecimiento de estaciones habrá llegado a saturar el servidor y hay que colocar otro
servidor o bien hay que colocar estaciones muy alejadas (aunque en local) del servidor.
La necesidad de integrar dos redes independientes.
La necesidad de segregar una parte de la red para conseguir que una parte de las
estaciones pueda trabajar con mayor velocidad de red (por ejemplo, porque en parte
de los clientes se instala una aplicación de diseño gráfico).
Clusteres.
Se comparte el acceso a disco y los recursos de administración de datos pero cada nodo dispone
de su propia memoria y sistema operativo.
El software del clúster reparte la carga por los nodos de forma transparente. Así el efecto
exterior es de un único ordenador que aporta una altísima fiabilidad de funcionamiento.
Como los ordenadores integrados en el clúster están integrados entre ellos por una red, la
velocidad de esa conexión de red es fundamental en el rendimiento del clúster. No es lo mismo
una conexión entre los ordenadores del clúster por cable Ethernet que por fibra óptica.
Una de la razones de montar aplicaciones distribuidas es conseguir dar servicio cuando cae un
servidor. Si los servidores los colocamos en clusters, la tolerancia a fallos de la aplicación
distribuida será muy alta y podremos ahorrar en software dedicado al análisis de consistencia
que ha de garantizar la recuperación y funcionamiento del sistema en caso de caída en uno de
los nodos. Incluso la aplicación puede diseñarse no distribuida colocando datos y software en el
clúster.
La contrapartida es que si Vd. deja una aplicación condicionada a un clúster no la podrá instalar
en entornos muy pequeños, restricción muy importante en aplicaciones distribuidas.
Que hacer, pues, ¿Clúster o software de consistencia? Una vez más, no hay soluciones mágicas.
Mandan la importancia de garantizar servicio versus los costes de cada solución, la importancia
o no de introducir un punto de heterogeneidad (el clúster lo es) o la calidad de las soluciones
clúster de su plataforma habitual.
Según Garther Group, las SAN suponen la gestión centralizada de recursos y datos en un
dominio de almacenamiento que proporciona servicios compartidos a un grupo de servidores y
a sus aplicaciones.
Los dispositivos NAS (Network Attached Storage) se utilizan para compartir información en las
redes LAN mientras que las soluciones SAN (Storage Area Networks) facilitan copias y recuperar
información para optimizar el rendimiento del negocio.
SAN puede definirse como una red de fibra óptica y dispositivos de conmutación dedicados a
interconectar recursos de almacenamiento y servidores sin interferencia de la red de trabajo.
Proporcionan:
Comunicaciones.
Ámbito y situación.
La interconexión dio un vuelco espectacular con la llegada de Internet. Se llega a cualquier punto
del planeta de una misma forma. Y a costes razonables.
Necesidad de que los puestos remotos sean autónomos o no. No es lo mismo una aplicación de
consulta en el puesto remoto que una de venta cara al público. La primera puede tener
momentos de no servicio pero la segunda no. Y entre este blanco y negro hay una colección de
grises.
El coste de la comunicación a partir de dos factores: el coste fijo del enganche y el coste del
consumo.
Administración remota sin presencia física ya que los costes y el tiempo de los desplazamientos
tienen mucha importancia en los prerrequisitos del diseño.
Diseño y comunicaciones.
Necesidad de autonomía de los puestos remotos. En este sentido poco ha cambiado ya que
depende de la naturaleza de la aplicación. Es una realidad que muchas de las clásicas
aplicaciones de consulta C/S han sido sustituidas por aplicaciones Internet evitando así todo el
problema de la replicación. Pero las aplicaciones que no permiten la caída temporal de servicio
persisten.
Hay dos formas básicas de mirar un sistema interconectado desde la perspectiva de las
posibilidades de trabajar en él.
Interaccesibilidad o interconexión.
Los sistemas son accesibles entre ellos pero no de forma transparente a los programas.
Si los sistemas se mantienen interaccesibles, la conexión entre ellos sólo será posible con
filosofía de interfase y no existirán aplicaciones distribuidas si no se desarrolla Middleware
específico.
Interoperatividad.
Los sistemas son accesibles de forma transparente a los programas. Supone la existencia de
un Middleware, comprado o construido, que lo permite. Hoy día prácticamente todos los
sistemas son interoperables.
o Comprar Middleware.
o Migrar a sistemas interoperables.
o Encapsular las causas creando el Middleware en los puntos y funciones en que se
necesite interoperatividad.
El diseño de cualquier aplicación distribuida tiene como precondición que los sistemas
integrados son interoperables. Si no fuera así se habrían de marcar los puntos de
heterogeneidad y actuar tal como se explica al final del apartado anterior.
La conectividad de sistemas integra todos los elementos de una plataforma dentro de una
plataforma interoperable.
La arquitectura física de una arquitectura distribuida viene determinada por las capas de
conectividad de la plataforma del sistema.
Por ejemplo, una arquitectura física de cuatro niveles puede estar compuesta por:
o Un HOST.
o Uno o varios servidores en al central que actúan de Front-end conectado/os al HOST.
o Servidores departamentales conectados a los servidores de la central. • Redes de PC’s
conectados a cada servidor departamental.
La arquitectura lógica está determinada por los niveles o capas donde las aplicaciones pueden
localizar recursos (datos y procesos) gestionados de forma interoperable a través de
Middleware. La arquitectura lógica resulta de la física filtrándola con los puntos donde la
organización permite o necesita colocar administración.
o La estructura empresarial.
o La dispersión geográfica.
o La política de administración del sistema distribuido. • Necesidades específicas de cada
aplicación. • Etc.
Aplicaciones distribuidas.
Profesor Martín Arosemena 32 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Es un buen momento para repasar que tipo de aplicaciones se pueden montar distribuidas según
los modelos C/S basados en Sistema Operativo e Internet. Y empezar a entender el por qué.
MODULO II
2.1 Introducción
La comunicación entre procesos es necesaria si se desea que varios procesos puedan colaborar
para realizar una misma tarea. La Sincronización es el funcionamiento coordinado en la
resolución de una tarea encomendada.
El mecanismo de paso de mensajes punto a punto [2] [9] se define como una forma de
comunicación en la que el usuario es explícitamente consciente del uso de mensajes en la
comunicación mediante envíos y recepciones. Este tipo de interacción empezó a tener gran auge
con la llegada de las arquitecturas multiprocesadores y distribuidas. Dicho mecanismo de
comunicación entre procesos se ha desarrollado en el campo de los sistemas distribuidos de
forma casi independiente al desarrollo de las redes de ordenadores.
funcionar de tal manera que la capa intermedia sea la que tiene menos carga de
procesamiento, pero tendrá más trabajo de comunicación.
Un recurso estará a cargo de un proceso gestor, con quien deberá comunicarse cualquier
proceso que pretenda acceder a él, siguiendo un esquema cliente-servidor; lo que
permite expresar el acceso a servicios mediante un protocolo de petición-respuesta. El
modelo cliente-servidor se puede implementar mediante un mecanismo de paso de
mensajes específico, como por ejemplo el mecanismo de transporte TCP para HTTP y
HTTPS, la Interfaz CGI/BIN o la interfaz de sockets de UNIX para TCP/IP o UDP/IP.
Para trabajar con procesos distribuidos que necesitan compartir recursos con otros
procesos también se han diseñado interfaces que permiten manejar un espacio de
direcciones común sobre un sistema de memoria física distribuida: sistemas de memoria
compartida distribuida (DSM). La idea es ofrecer a las aplicaciones diseñadas según un
Profesor Martín Arosemena 37 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Con el objetivo de disminuir la diferencia semántica entre programas que usan servicios
locales (mediante llamadas al sistema) y programas que usan servicios remotos, se han
desarrollado mecanismos que encapsulan los detalles de direccionamiento y
sincronización del envío-recepción de la petición y/o respuesta.
pues es más simple replicar un proceso idéntico muchas veces, que manejar un conjunto
diverso de procesos.
Los grupos de procesos están a su vez agrupados en sesiones, que residen en una capa
de software que se encarga de administrarlos de la misma forma en que se administran
las sesiones de usuarios. Los grupos de procesos no pueden migrar de una sesión a otra,
y un proceso sólo puede crear nuevos grupos de procesos que pertenezcan a la misma
sesión a la que pertenece. Un proceso únicamente puede unirse a un grupo de procesos
que esté en su misma sesión. Nuevas imágenes de proceso creadas por una llamada a
una función de la familia exec heredarán el grupo de proceso y la sesión de la imagen
original.
2.6 Tecnologías de comunicación para Sistemas Distribuidos: Sockets (ejemplos: Unix, Sun
RPC, JAVA RMI)
Los sockets son utilizados como medios de comunicación entre procesos ejecutados en
máquinas distintas, que permite que estos procesos intercambien información (envió y
recepción). Los sockets están basados en tecnología Cliente-Servidor, utilizan los
puertos del ordenador que están entre 1 y 65535 en casi todas las plataformas (Unix,
Windows, MacOs) de los cuales del 1 al 1024 son puertos conocidos (23 telnet, 21 ftp,
22 ssh, etc) los cuales no pueden ser utilizados para la codificación de comunicación
entre dos equipos utilizando sockets.
Los socket se encuentran en la capa de transporte del modelo OSI, es decir pueden ser
UDP (no orientado a conexión) y TCP (orientado a conexión).
- Disponible en casi todos los sistemas operativos (Windows, Unix, Mac Os)
- Complicado de desarrollo
Los sockets son mecanismos de comunicación entre procesos que permiten que un proceso
hable (emita o reciba información) con otro proceso incluso estando en distintas máquinas.
Conservación del Orden de los Datos. Los datos llegan en el orden en que se emitieron.
No Duplicación de los Datos. El Dato sólo llega una vez.
Conservación de los límites de los mensajes. Los límites de mensajes emitidos pueden
encontrarse o conocerse en el destino.
Envío de Mensajes “urgentes”. Permite el envío de datos fuera de flujo o fuera de banda.
Al enviar datos fuera del flujo normal, son accesibles de inmediato.
• Comunicaciones fiables
• Circuito Virtual
Tipos de Sockets
Un socket queda definido por una dirección IP, un protocolo y un número de puerto.
En el caso concreto de TCP-IP, un socket se define por una dupla Origen – Destino.
Tanto el origen como el destino vienen indicados por un par (ip, puerto).
Servidor:
Cliente:
Servidor (Funcionalidad)
• A partir de este momento el sistema operativo anotará la conexión de cualquier cliente para
pasárnosla cuando se lo pidamos.
• Si llegan clientes más rápido de lo que somos capaces de atenderlos, el sistema operativo hace
una "cola" con ellos y nos los irá pasando según vayamos pidiéndolo.
• Esta función le indica al sistema operativo que nos dé al siguiente cliente de la cola.
Cliente (Funcionalidad)
• Dicha función quedar á bloqueada hasta que el servidor acepte nuestra conexión o bien
si no hay servidor en el sitio indicado, saldrá dando un error.
• En esta llamada se debe facilitar la dirección IP del servidor y el número de servicio que
se desea.
Escribir y recibir datos del servidor por medio de las funciones write() y read().
Cerrar la comunicación por medio de close().
MODULO III
MIDDELWARE
3.0 Middleware
3.1 Describir el origen, generalidades y diseño de un middleware.
Nick Gall, Analista y Teórico en Sistemas, dijo: "El middleware es software que se trata de
software". El middleware no ofrece funciones de una aplicación tradicional, sino que
conecta software a otro software. El middleware es la cañería para su infraestructura de TI
porque el middleware permite el flujo de datos de una aplicación a otra.
Imperio y empresa
La antigua Roma tenía uno de los sistemas de saneamiento más destacados de la historia.
La compleja red de acueductos y alcantarillas era tan importante que Plinio el Viejo la
consideraba como "el logro más notable de todos" los de Roma. Al igual que los acueductos
de Roma que trasladaban agua, el middleware empresarial traslada datos de un lugar a otro.
No estamos diciendo que el middleware es el mayor logro de la humanidad, pero muchos
otros tipos de software (que tal vez sean más notables) pueden funcionar gracias al
middleware.
La taxonomía o clasificación del software middleware puede ser descrita en dos grandes
categorías: una de integración y otra de aplicación. Éstas poseen a su vez diferentes clases.
Categoría de integración
El tipo de integración que incluyen posee la capacidad de unirse con sistemas heterogéneos.
Cada middleware posee diferentes protocolos de comunicación o formas de operar en
diferente software. Los tipos de integración se pueden ver como:
Los middleware que son orientados a procesos, utilizan una comunicación sincronizada
(como por ejemplo el teléfono). Una de las características de estos, es que utilizan el client
stub y el server skeleton. El client stub convierte la petición en un mensaje que es mandado
al servidor; luego el server skeleton recibe el mensaje, lo convierte en la petición y llama a
la aplicación del servidor donde ésta es procesada. Terminado el procesamiento, ocurre el
proceso inverso. El client stub chequea los errores, envía los resultados al software que
inició la petición y entonces suspenden el proceso. Las ventajas de estos middleware es que
usan un tipo estándar en nombres de servicios y procesos remotos, pueden retornar
respuesta aun con problemas en la red y pueden manejar múltiples tipos de formatos para
datos y niveles heterogéneos de sistemas de servicio. Las desventajas son que no poseen
escalabilidad, no pueden retornar la información a un programa diferente del que realizó la
solicitud (reflexión) y poseen procesos muy rígidos.
Orientados a objetos
Soportan pedidos de objetos distribuidos. La comunicación entre los objetos puede ser
sincronizada, sincronizada diferida o no sincronizada. Soportan múltiples pedidos similares
realizados por múltiples clientes en una transacción. La forma de operar es:
El agente actúa como punto medio y contacta con diversas fuentes de información,
obtiene sus referentes IDs, recolecta información y, en ocasiones, la reorganiza.
Las ventajas son que permiten generar reflexión y escalabilidad, que opera con múltiples
tipos de información y estados y que soporta procesos múltiples. Las desventajas consisten
en obtener la existencia de vínculos antes de la ejecución y de un código contenedor para
algunos sistemas heredados.
Orientados a componentes
Un componente es un programa que realiza una función específica, diseñada para operar e
interactuar fácilmente con otros componentes y aplicaciones. El middleware en este caso en
una configuración de componentes. Los puntos fuertes de este middleware es que es
configurable y reconfigurable. La reconfiguración se puede realizar en tiempo de ejecución,
lo que ofrece una gran flexibilidad para satisfacer las necesidades de un gran número de
aplicaciones.
Agentes
Las ventajas de los middleware agentes son que la capacidad de éstos para realizar una
gran cantidad de tareas en nombre del usuario y para cubrir una amplia gama de estrategias
basadas en el entorno que les rodea. Sin embargo su implementación es complicada debido
a la complejidad y dificultades dadas por las operaciones que manejan.
Categoría de Aplicación
La clasificación por aplicación incluye los middleware que son ajustados para aplicaciones
específicas.
Middleware de escritorio
Los middleware de escritorio pueden hacer variaciones en la presentación de la información
pedida por el usuario por aplicaciones de rastreo y asistencia, controlar cualquier servicio de
transporte y proveer una copia de seguridad y otras operaciones de fondo. Otras pueden
ser manutención y gráficas, ordenamientos, directorios de servicios, manejo de información
de la base de datos, manejo de procesos, calendarización de trabajos, notificación de
eventos de servicios, manejo de instalación de software, servicios de cifrado y control de
accesos.
Middleware especialistas
En muchos casos los middleware proveen una tarea muy específica que no se puede ajustar
a las categorías anteriores. Un ejemplo serían middlewares médicos.
EVOLUCION MIDDLEWARE
La arquitectura de los sistemas ha evolucionado con el tiempo. Acompaña los cambios
tecnológicos y de paradigmas. Algunos tipos de arquitectura:
Centralizadas (Monolíticas).
Cliente/Servidor (2 niveles).
Modelo centralizado
También conocidas como “Mainframe architectures”. Toda la “inteligencia”, procesamiento
de negocio, interfaces y persistencia, se realiza en un host central. Los usuarios interactúan
a través de terminales tontas. Capturan el teclado, envían la información al host, este
procesa y se retorna la pantalla a la terminal.
Posee limitantes.
Modelo Cliente/Servidor
Como una evolución de las anteriores, surge este modelo.
Arquitecturas en 2 capas
Arquitecturas en 3 capas
Arquitecturas en 3 capas
Monitores transaccionales
Servidores de mensajes
Servidores de aplicación
Arquitectura en 2 capas
El servidor suele ser mucho más poderoso que las maquinas cliente.
Arquitectura en 3 capas
También conocidas como arquitecturas multicapa (no están limitadas a 3),una capa
intermedia se añade entre el ambiente del cliente y el servidor de base de datos,esta
capa puede implementarse de múltiples formas:
Servidores de aplicación.
Monitores transaccionales.
Sistemas de mensajería.
Tipos de middleware
El cliente realiza una llamada a procedimientos que están corriendo en máquinas remotas.
Pueden ser síncronos o asíncronos.
Publish/subscribe
Este tipo de monitores middleware activan y entregan información relevante para los
subscriptores.
Los mensajes enviados al cliente se recogen y se almacenan hasta que son solicitados,
mientras el cliente continúa con otros procesos.
Este tipo de middleware permite que los clientes envíen objetos y soliciten servicios en un
sistema orientado a objetos.
Funciones Middleware
Ocultar la distribución: middleware maneja el hecho de que una aplicación esté compuesta de
muchas partes interconectadas ejecutándose en ubicaciones distribuidas.
Proveer interfaces uniformes y estándares de alto nivel: tanto a los desarrolladores como a los
integradores de aplicaciones, de tal manera que las aplicaciones sean fácilmente desarrolladas,
reusada s, transportadas y puedan interoperar correctamente.
Componentes Middleware
El middleware también debe poder migrar procesos entre servidores con distintas
finalidades:
Servicios middleware
Middleware:
una base de datos puedan ser accedidos a través de otra, ahorrando tiempo a los
programadores.
Ejemplos de protocolos:
Aplicaciones.
Los datos filtrados para que sean utilizables en un ambiente público a través
de
proceso de anonimización para la protección de la privacidad.
4. Introducción.
Cuando se diseña una red de datos se desea sacar el máximo rendimiento de sus
capacidades. Para conseguir esto, la red debe estar preparada para efectuar
conexiones a través de otras redes, sin importar qué características posean.
El objetivo de la Interconexión de Redes (internetworking) es dar
un servicio de comunicación de datos que involucre diversas redes con diferentes
tecnologías de forma transparente para el usuario. Este concepto hace que las
cuestiones técnicas particulares de cada red puedan ser ignoradas al diseñar las
aplicaciones que utilizarán los usuarios de los servicios.
Los dispositivos de interconexión de redes sirven para superar las limitaciones
físicas de los elementos básicos de una red, extendiendo las topologías de esta.
Concentradores (Hubs)
El término concentrador o hub describe la manera en que las conexiones de
cableado de cada nodo de una red se centralizan y conectan en un único dispositivo.
Profesor Martín Arosemena 60 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Los primeros hubs o de "primera generación" son cajas de cableado avanzadas que
ofrecen un punto central de conexión conectado a varios puntos. Sus principales
beneficios son la conversión de medio (por ejemplo de coaxial a fibra óptica), y
algunas funciones de gestión bastante primitivas como particionamiento automático
cuando se detecta un problema en un segmento determinado.
Los concentradores inteligentes (smart hub) permiten a los usuarios dividir la red en
segmentos de fácil detección de errores a la vez que proporcionan una estructura de
crecimiento ordenado de la red. La capacidad de gestión remota de los hubs
inteligentes hace posible el diagnóstico remoto de un problema y aísla un punto con
problemas del resto de la RAL, con lo que otros usuarios no se ven afectados.
El tipo de hub Ethernet más popular es el hub 10BaseT. En este sistema la señal
llega a través de cables de par trenzado a una de las puertas, siendo regenerada
eléctricamente y enviada a las demás salidas. Este elemento también se encarga
de desconectar las salidas cuando se produce una situación de error.
Repetidores
Ventajas:
Desventajas:
Incrementa la carga en los segmentos que interconecta.
Los repetidores son utilizados para interconectar RALs que estén muy próximas,
cuando se quiere una extensión física de la red. La tendencia actual es dotar de más
inteligencia y flexibilidad a los repetidores, de tal forma que ofrezcan capacidad de
gestión y soporte de múltiples medios físicos, como Ethernet sobre par trenzado
(10BaseT), ThickEthernet (10Base5), ThinEthernet (10Base2), TokenRing, fibra
óptica, etc.
Puentes (Bridges)
Son elementos inteligentes, constituidos como nodos de la red, que conectan entre
sí dos subredes, transmitiendo de una a otra el tráfico generado no local. Al distinguir
los tráficos locales y no locales, estos elementos disminuyen el mínimo total de
paquetes circulando por la red por lo que, en general, habrá menos colisiones y
resultará más difícil llegar a la congestión de la red.
Operan en el Nivel de Enlace del modelo de referencia OSI, en el nivel de trama
MAC (Medium Access Control, Control de Acceso al Medio) y se utilizan para
conectar o extender redes similares, es decir redes que tienen protocolos idénticos
en los dos niveles inferiores OSI, (como es TokenRing con TokenRing, Ethernet con
Ethernet, etc) y conexiones a redes de área extensa.
Se encargan de filtrar el tráfico que pasa de una a otra red según la dirección de
destino y una tabla que relaciona las direcciones y la red en que se encuentran las
estaciones asignadas.
Las redes conectadas a través de bridge aparentan ser una única red, ya que
realizan su función transparentemente; es decir, las estaciones no necesitan
conocer la existencia de estos dispositivos, ni siquiera si una estación pertenece a
uno u otro segmento.
Encaminadores (Routers)
Son dispositivos inteligentes que trabajan en el Nivel de Red del modelo de
referencia OSI, por lo que son dependientes del protocolo particular de cada red.
Envían paquetes de datos de un protocolo común, desde una red a otra.
Convierten los paquetes de información de la red de área local, en paquetes capaces
de ser enviados mediante redes de área extensa. Durante el envío, el encaminador
examina el paquete buscando la dirección de destino y consultando su propia tabla
de direcciones, la cual mantiene actualizada intercambiando direcciones con los
demás routers para establecer rutas de enlace a través de las redes que los
interconectan. Este intercambio de información entre routers se realiza mediante
protocolos de gestión propietarios
IS-IS
Encaminamiento OSI según las normativas: ISO 9575, ISO 9542 e ISO 10589. El
concepto fundamental es la definición de encaminamiento en un dominio y entre
diferentes dominios. Dentro de un mismo dominio el encaminamiento se realiza
aplicando la técnica de menor coste. Entre diferentes dominios se consideran otros
aspectos como puede ser la seguridad.
Router Multiprotocolo
Tienen la posibilidad de soportar tramas con diferentes protocolos de Nivel de Red
de forma simultánea, encaminándolas dinámicamente al destino especificado, a
través de la ruta de menor coste o más rápida. Son los routers de segunda
generación. No es necesario, por tanto, tener un router por cada protocolo de alto
nivel existente en el conjunto de redes interconectadas. Esto supone una reducción
de gastos de equipamiento cuando son varios los protocolos en la red global.
Profesor Martín Arosemena 65 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Operan tanto en el Nivel de Enlace como en el Nivel de Red del modelo de referencia
OSI. Por ejemplo, un Brouter puede soportar protocolos de encaminamiento además
de source routing y spanning tree bridging. El Brouter funciona como un router
multiprotocolo, pero si encuentra un protocolo para el que no puede encaminar,
entonces simplemente opera como bridge.
Trouter
Es una combinación entre un router y servidor de terminales. Permite a pequeños
grupos de trabajo la posibilidad de conectarse a RALs, WANs, modems, impresoras,
y otros ordenadores sin tener que comprar un servidor de terminales y un router. El
problema que presenta este dispositivo es que al integrar las funcionalidades de
router y de servidor de terminales puede ocasionar una degradación en el tiempo de
respuesta.
Pasarelas (Gateways)
Estos dispositivos están pensados para facilitar el acceso entre sistemas o entornos
soportando diferentes protocolos. Operan en los niveles más altos del modelo de
referencia OSI (Nivel de Transporte, Sesión, Presentación y Aplicación) y realizan
conversión de protocolos para la interconexión de redes con protocolos de alto nivel
diferentes.
Los gateways incluyen los 7 niveles del modelo de referencia OSI, y aunque son
más caros que un bridge o un router, se pueden utilizar como dispositivos
universales en una red corporativa compuesta por un gran número de redes de
diferentes tipos.
Los gateways tienen mayores capacidades que los routers y los bridges porque no
sólo conectan redes de diferentes tipos, sino que también aseguran que los datos
de una red que transportan son compatibles con los de la otra red. Conectan redes
de diferentes arquitecturas procesando sus protocolos y permitiendo que los
dispositivos de un tipo de red puedan comunicarse con otros dispositivos de otro tipo
de red.
Conmutadores (Switches)
Esta tecnología hace posible que cada una de las puertas disponga de la totalidad
del ancho de banda para su utilización. Estos equipos habitualmente trabajan con
anchos de banda de 10 y 100 Mbps, pudiendo coexistir puertas con diferentes
anchos de banda en el mismo equipo.
Cortar - Continuar. En este caso el envío de las tramas es inmediato una vez
recibida la dirección de destino. Las ventajas y desventajas son cruzadas
respecto a Almacenar -Transmitir. Este tipo de conmutadores es indicado
para redes con poca latencia de errores.
En la definición del objeto del contrato y los requisitos inherentes al mismo, así como
en la valoración y comparación de ofertas de los licitadores pueden intervenir
muchos factores y de muy diversa índole.
De empresa
Económicos
Técnicos particulares
Gestión disponible
SNMP
CMIP
CMOT
Funcionamiento normal.
Monitorización de la red.
Comprobar que el sistema de monitorización gráfica responde en tiempo real
a los eventos que ocurren en la red.
Comprobar que se pueden visualizar distintos niveles dentro de la topología
de la red.
Tratamiento de alarmas.
Comprobar que el fallo, y posterior recuperación de elementos de la red,
provoca las alarmas adecuadas.
Comprobar la existencia de herramientas de prueba remota.
Comprobar la existencia de distintos niveles de alarmas, y que pueden ser
definidas por el usuario.
Informes y estadísticas.
Analizar con las herramientas disponibles la actividad de la red y la creación
de informes sobre la misma.
A manera de repaso, veamos primero el modelo de referencia OSI para interconexión de redes:
EL MODELO OSI
a) Filosofía
funciones que tiene que realizar un sistema de comunicación en una serie de capas
o niveles. Este modelo no normaliza ningún protocolo, solo define cada capa.
b) Estructura de niveles
Los niveles tienen una estructura jerárquica que se apoya en la noción de servicio.
Cada capa se sirve de la inferior para realizar ciertas funciones, reliza sus propias
funciones y ofrece un servicio a la capa superior. Decimos que cada nivel N es
proveedor de servicio de nivel N y usuario de servicio N-1.
c) Conceptos asociados
Cada capa reliza unas funciones concretas y presta un servicio concreto, es lo que
define la torre OSI, pero no se especifica como realizar esas funciones. Aún así los
distintos niveles siempre cumplen su tarea añadiendo datos generados por ellos a
los datos (PDU's) entregados por el nivel inmediatamente superior (N+1) y con esto
construyen una SDU de nivel N. Los datos generados pueden ir al principio de los
datos entregados (cabeceras) o al final (colas).
e) Directrices seguidas
Número de niveles suficientemente grande para que cada nivel fuera sencillo
pero tampoco excesivo para evitar que el modelo OSI fuera inmanejable.
Se intenta que la frontera entre dos capas consecutivas fuera muy sencilla.
Se agrupan en una misma capa funciones relacionadas entre sí.
Todas las capas deben tener unicamente interfaz con la capa superior y con
la inferior, salvo evidentemente la primera y la última.
Reaprovechar al máximo la experiencia acumulada.
Se elaboró un modelo de siete capas (si no contamos el nivel físico que es pasivo
ya que es solo el soporte para la señal electromagnética).
Como servicio ofrece la transmisión de bits. En este nivel se definen las siguientes
características:
del medio, es decir, los tipos de conectores, el diámetro del cable y el tipo de
material en su caso, etcétera.
eléctricas de la transmisión, como los niveles de transmisión o el tipo de señal
transmitido.
funcionales del medio, es decir, especificar que hace cada hilo o canal.
Ejemplos de protocolos son: HDLC (desarrollado en el tema 6), LAPB, LLC, LAPD,
ALOHA (desarrollado en el tema 8), CSMA, CSMA/CD y Paso testigo.
Requiere más trabajo en una red de conmutación de paquetes por datagramas que
en una por circuitos virtuales, debido a la necesidad de ordenar los paquetes.
La mayor parte de los protocolos están definidos por el ISO, aunque su uso es muy
escaso.
ARQUITECTURA TCP/IP
Este tipo de arquitectura se ha impuesto en los años 90 al contrario de lo que se
opinaba en los 80, cuando se creía que el modelo OSI es el que triunfaría.
Los protocolos TCP/IP se crearon y normalizaron mucho antes de que se definiera
el modelo de referencia OSI de la ISO. Ya a finales de los 80, muchas empresas y
administraciones usaban TCP/IP, cuando todavía la torre OSI no estaba totalmente
desarrollada.
Pese a que los gobiernos apoyaban los estándares de OSI, desde mediados de los
80 se ha ido introduciendo TCP/IP en las administraciones, principalmente en el
Departament of Defense de Estados Unidos, donde precisamente se creó.
Otro de los motivos de su implantación es la popularización de Internet.
Aun así, el modelo OSI es una buena idea de organización de protocolos, por lo que
suele ser el más estudiado.
No existe un modelo oficial de protocolos TCP/IP, al contrario que en OSI. Los
protocolos se han ido definiendo anárquicamente, y a posteriori englobados en
capas.
NIVELES DE TCP/IP
4.3 Sockets
Refiérase al punto 2.6.
Ver anexos
5.1 Clúster
5.1.1 Introducción
5.1.2 Beneficios
De un clúster se espera que presente combinaciones de los siguientes servicios:
1. Alto rendimiento
2. Alta disponibilidad
3. Balanceo de carga
4. Escalabilidad
Alto rendimiento
Para garantizar esta capacidad de cálculo, los problemas necesitan ser paralelizables,
ya que el método con el que los clústers agilizan el procesamiento es dividir el problema
en problemas más pequeños y calcularlos en los nodos, por lo tanto, si el problema no
cumple con esta característica, no puede utilizarse el clúster para su cálculo.
Alta disponibilidad
Balanceo de carga
Escalabilidad
Alto rendimiento: Son clústeres en los cuales se ejecutan tareas que requieren de gran
capacidad computacional, grandes cantidades de memoria, o ambos a la vez. El llevar
a cabo estas tareas puede comprometer los recursos del clúster por largos periodos de
tiempo.
Alta eficiencia: Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad
de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas
individuales. El retardo entre los nodos del clúster no es considerado un gran problema.
aplicaciones en todos estos clústeres, son las mismas. Más aún, un clúster de
determinado tipo, puede también presentar características de los otros.
nodos
almacenamiento
sistemas operativos
conexiones de red
middleware
aplicaciones
Nodos
Pueden ser simples ordenadores, sistemas multiprocesador o estaciones de trabajo. En
informática, de forma muy general, un nodo es un punto de intersección o unión de varios
elementos que confluyen en el mismo lugar. Ahora bien, dentro de la informática la palabra
nodo puede referirse a conceptos diferentes según el ámbito en el que nos movamos:
El clúster puede estar conformado por nodos dedicados o por nodos no dedicados.
En un clúster con nodos dedicados, los nodos no disponen de teclado, ratón ni monitor y su
uso está exclusivamente dedicado a realizar tareas relacionadas con el clúster. Mientras
que, en un clúster con nodos no dedicados, los nodos disponen de teclado, ratón y monitor
Profesor Martín Arosemena 81 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Cabe aclarar que a la hora de diseñar un clúster, los nodos deben tener características
similares, es decir, deben guardar cierta similitud de arquitectura y sistemas operativos, ya
que si se conforma un clúster con nodos totalmente heterogéneos (existe una diferencia
grande entre capacidad de procesadores, memoria, disco duro) será ineficiente debido a
que el middleware delegará o asignará todos los procesos al nodo de mayor capacidad de
cómputo y solo distribuirá cuando este se encuentre saturado de procesos; por eso es
recomendable construir un grupo de ordenadores lo más similares posible.
Almacenamiento
El almacenamiento puede consistir en una NAS, una SAN, o almacenamiento interno en el
servidor. El protocolo más comúnmente utilizado es NFS (Network File System), sistema de
ficheros compartido entre servidor y los nodos. Sin embargo existen sistemas de ficheros
específicos para clústeres como Lustre (CFS) y PVFS2.
Por su parte, DAS (Direct Attached Storage) consiste en conectar unidades externas de
almacenamiento SCSI o a una SAN (storage area network: ‘red de área de
almacenamiento’) a través de un canal de fibra. Estas conexiones son dedicadas.
Mientras NAS permite compartir el almacenamiento, utilizar la red, y tiene una gestión más
sencilla, DAS proporciona mayor rendimiento y mayor fiabilidad al no compartir el recurso.
Sistema operativo
Un sistema operativo debe ser multiproceso y multiusuario. Otras características deseables
son la facilidad de uso y acceso. Un sistema operativo es un programa o conjunto de
Profesor Martín Arosemena 82 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Conexiones de red
Los nodos de un clúster pueden conectarse mediante una simple red Ethernet con placas
comunes (adaptadores de red o NICs), o utilizarse tecnologías especiales de alta velocidad
como Fast Ethernet, Gigabit Ethernet, Myrinet, InfiniBand, SCI, etc.
Ethernet
Son las redes más utilizadas en la actualidad, debido a su relativo bajo coste. No
obstante, su tecnología limita el tamaño de paquete, realizan excesivas comprobaciones
de error y sus protocolos no son eficientes, y sus velocidades de transmisión pueden
limitar el rendimiento de los clústeres. Para aplicaciones con paralelismo de grano
grueso puede suponer una solución acertada.
La opción más utilizada en la actualidad es Gigabit Ethernet (1 Gbit/s), siendo
emergente la solución 10 Gigabit Ethernet (10 Gbit/s). La latencia de estas tecnologías
está en torno a los 30 a 100 μs, dependiendo del protocolo de comunicación empleado.
En todo caso, es la red de administración por excelencia, así que aunque no sea la
solución de red de altas prestaciones para las comunicaciones, es la red dedicada a las
tareas administrativas.
InfiniBand
Middleware
El middleware es un software que generalmente actúa entre el sistema operativo y las
aplicaciones con la finalidad de proveer a un clúster lo siguiente:
Una interfaz única de acceso al sistema, denominada SSI (Single System Image), la
cual genera la sensación al usuario de que utiliza un único ordenador muy potente;
Herramientas para la optimización y mantenimiento del sistema: migración de
procesos, checkpoint-restart (congelar uno o varios procesos, mudarlos de servidor y
continuar su funcionamiento en el nuevo host), balanceo de carga, tolerancia a fallos,
etc.;
Escalabilidad: debe poder detectar automáticamente nuevos servidores conectados al
clúster para proceder a su utilización.
El middleware recibe los trabajos entrantes al clúster y los redistribuye de manera que el
proceso se ejecute más rápido y el sistema no sufra sobrecargas en un servidor. Esto se
realiza mediante políticas definidas en el sistema (automáticamente o por un administrador)
que le indican dónde y cómo debe distribuir los procesos, por un sistema de monitorización,
el cual controla la carga de cada CPU y la cantidad de procesos en él.
El middleware también debe poder migrar procesos entre servidores con distintas
finalidades:
balancear la carga: si un servidor está muy cargado de procesos y otro está ocioso,
pueden transferirse procesos a este último para liberar de carga al primero y optimizar
el funcionamiento;
Mantenimiento de servidores: si hay procesos corriendo en un servidor que necesita
mantenimiento o una actualización, es posible migrar los procesos a otro servidor y
proceder a desconectar del clúster al primero;
Priorización de trabajos: en caso de tener varios procesos corriendo en el clúster, pero
uno de ellos de mayor importancia que los demás, puede migrarse este proceso a los
servidores que posean más o mejores recursos para acelerar su procesamiento.
Beowulf
En 1994, Donald Becker y Thomas Sterling construyeron la primera Beowulf. Fue construida
con 16 computadores personales con procesadores Intel DX4 de 100 MHz, que estaban
conectados a través de un switch Ethernet. El rendimiento teórico era de 3,2 GFlops.
Berkeley NOW
El sistema NOW de Berkeley estuvo conformado por 105 estaciones de trabajo Sun Ultra
170, conectadas a través de una red Myrinet. Cada estación de trabajo contenía un
microprocesador Ultra1 de 167 MHz, caché de nivel 2 de 512 KiB, 128 MiB de memoria,
dos discos de 2,3 GB, tarjetas de red Ethernet y Myrinet. En abril de 1997, NOW logró un
rendimiento de 10 GFlops.
Durante el año 2003, el clúster Google llegó a estar conformado por más de 1,5 millones de
computadores personales. Una consulta en Google lee en promedio cientos de megabytes
y consume algunos billones de ciclos de CPU.
Cluster PS2
Cluster X
En la lista «TOP 500» de noviembre de 2004 fue considerado el séptimo sistema más rápido
del mundo; sin embargo, en julio de 2005 ocupaba la posición catorce. Cluster X fue
construido en el Tecnológico de Virginia en el 2003; su instalación fue realizada por
estudiantes de ese instituto. Está constituido por 2200 procesadores Apple G5 de 2,3 GHz.
Utiliza dos redes: Infiniband 4x para las comunicaciones entre procesos y Gigabit Ethernet
para la administración. Cluster X posee 4 TiB de memoria RAM y 176 TB de disco duro, su
rendimiento es de 12,25 TFlops. Se lo conoce también como Terascale.
Thunder
ASCI Q
ASCI Q fue construido en el año 2002 por el Laboratorio Nacional Los Álamos, Estados
Unidos. Está constituido por 8192 procesadores AlphaServer SC45 de 1,25 GHz. Su
rendimiento es de 13,88 TFlops. Se ubicó en la segunda posición del «TOP 500» durante
junio y noviembre de 2003, luego en la tercera posición en junio de 2004, en la sexta posición
en noviembre de 2004 y en la duodécima posición en julio de 2005.
Otra aproximación es instalar una aplicación web en un clúster squid como proxy-
caché, apache/tomcat como servidor web/de aplicaciones web, memcached
como caché de consultas a la base de datos y mysql como base de datos. Estos
servicios pueden estar replicados en varios nodos del clúster.
Ejemplos: Flickr, Wikipedia y Google.
5.2 Grid
5.2.1 Introducción
La computación grid (o en malla) es una tecnología que permite utilizar de forma coordinada
recursos heterogéneos (entre ellos cómputo, almacenamiento y aplicaciones específicas)
que no están sujetos a un control centralizado. En este sentido es una forma
de computación distribuida, en la cual los nodos participantes pueden ser de iguales o
distintas arquitecturas y cubrir toda la gama de potencia de cómputo, desde embebidos y
hasta supercomputadores.
Típicamente, los sistemas que forman parte de una malla están interconectados
mediante redes de área extensa (por ejemplo Internet). Desarrollado en ámbitos científicos
a principios de los años 1990, su entrada al mercado comercial siguió la idea de la
llamada Utility computing.
El término grid se refiere a una infraestructura que permite la integración y el uso colectivo
de ordenadores de alto rendimiento, redes y bases de datos que son propiedad y están
administrados por diferentes instituciones. Puesto que la colaboración entre instituciones
envuelve un intercambio de datos, o de tiempo de computación, el propósito delgrid es
facilitar la integración de recursos computacionales. Universidades, laboratorios de
investigación o empresas se asocian para formar grids para lo cual utilizan algún tipo
de software que implemente este concepto.
En la computación grid, las redes pueden ser vistas como una forma de computación
distribuida donde un “supercomputador virtual” está compuesto por una serie de
computadores agrupados para realizar grandes tareas.
Estos recursos se distribuyen en la red de forma transparente pero guardando unas pautas
de seguridad y políticas de gestión de carácter tanto técnico como económico. Así pues, su
objetivo será el de compartir una serie de recursos en la red de manera
uniforme, segura, transparente, eficiente y fiable, ofreciendo un único punto de acceso a un
conjunto de recursos distribuidos geográficamente en diferentes dominios de administración.
Esto nos puede llevar a pensar que la computación Grid permite la creación de empresas
virtuales. Es importante saber que una grid es un conjunto de maquinas distribuidas que
ayudan a mejorar el trabajo sobre software pesados.
5.2.2 Beneficios
3. Creación de competencias virtuales seguras y flexibles las tecnologías grid adoptan las
nociones de flexibilidad, libertad de elección de estándares abiertos. Las grids son capaces
de descubrir dinámicamente y ajustarse a los entornos cambiantes y fluctuantes de las
tecnologías de la información. Por esta razón, grid computing facilita el establecimiento,
5. Aumenta la fiabilidad de la infraestructura Sacando ventaja de los recursos del grid como
una alternativa ante la recuperación de los desastres tradicionales, los departamentos de
tecnologías de la información pueden mejorar la fiabilidad y disponibilidad de sus
infraestructuras tecnológicas para aumentar la resistencia a una fracción del coste de los
sistemas duplicados.
3. Efectivamente escalable para favorecer distintos tipos de demandas Con grid los negocios
pueden crear infraestructuras flexibles y elásticas que gestionen rápidamente las
fluctuaciones de las demandas de los clientes permitiendo el acceso instantáneo a los
recursos de computación y datos que respondan a las necesidades del negocio. La
capacidad de resolver problemas de negocio complejos más rápido significa que las
organizaciones pueden moverse más rápidamente y ganar ventajas competitivas en el
mercado.
Esta clasificación tiene en cuenta las diferentes arquitecturas que dan solución a diversos
problemas en las relaciones entre empresas, distinguiendo entre Grid Computacional (Grid
Computing), Grid de Datos (Data Grid), Grid de colaboración (Collaborative Grid) y Grid de
Servicios (Utility Grid).
Grid de Datos (Data Grid) hace referencia a la existencia de una arquitectura de datos
que integra a otras existentes, identificando requerimientos y componentes comunes en los
distintos sistemas y aplicando tecnologías diferentes de forma coordinada para gestionar,
como si de un único recurso se tratara, los datos que aparecen en diversas aplicaciones
intensivas de datos. Existen varios ejemplos de Data Grid (Grahan et al., 2004).
Entre ellos podemos destacar una solución diseñada para el manejo de datos del Compact
Muon Solenoid (CMS), el detector de partículas de alta energía diseñado para el LHC del
CERN. En la empresa, este tipo de Grid esta siendo muy utilizado en el sector de la
biotecnología, por ejemplo, ISI Pharmaceutical y Novartis Pharmaceutical en el diseño de
medicamentos para la lucha contra el SIDA y el Cáncer y de nuevas fórmulas farmacológicas
o Monsanto para el diseño de productos agrícolas modificados mediante técnicas de
ingeniería genética. La compañía Oracle (1), en su familia de productos Oracle
10G/11G/12G, utiliza también esta filosofía Grid, permitiendo crear «granjas/factorías de
almacenamiento» a las que se pueden añadir servidores estándares y modulares
rápidamente.
Grid de servicios (Utility Grid) es unodelo que supone una plataforma amplia de servicios;
no sólo de computación o de almacenamiento. Se trata de una infraestructura que, utilizando
las Tecnologías Grid de la Información, pueda proporcionar toda la potencia de sus recursos a
dispositivos ligeros y de poca potencia. La infraestructura sería capaz de soportar el acceso de
dispositivos móviles que en realidad sólo supondrían un método de acceso al Grid y donde el
almacenamiento, las aplicaciones y la ejecución de las tareas realmente estuvieran en el Grid.
Esta infraestructura ofrecería servicios diversos a las empresas y permitirá, además, la
participación de empresas y usuarios en dicho sistema, adquiriendo el doble papel de
proveedores y clientes, lo que se verá reflejado en la cuantificación de los servicios. Este tipo de
Grid es el más actual y el que mayores posibilidades podrá ofrecer a las empresas en el futuro y
en esta línea se sitúan las propuestas de NGG y SOKU.
Este tipo de Grid está siendo actualmente reinterpretado en la llamada computación en nube
(Cloud Computing) o servicios de computación que se ofrecen a través de Internet bajo demanda
y en los que el proveedor dispone de un Grid de recursos virtualizados para poder adaptarse de
forma flexible a las necesidades de los clientes. Amazon, el gran bazar virtual del siglo XXI,
comercializa este tipo de servicios en un sistema de pago por uso, para rentabilizar su potente
infraestructura de recursos informáticos, bajo el nombre de Elastic Computer Cloud (EC2).
Amazon también dispone de grandes espacios de almacenamiento virtualizados, que son
ofertados como producto mediante un sistema de pago por uso, y al que denomina como Simple
Storage Service (S3).
Además, la empresa Google también utiliza las Tecnologías Grid de la Información para ofrecer
sus diversos servicios (búsquedas, correo electrónico y almacenamiento de éste, gestión y
alojamiento de blogs, creación de comunidades cerradas que permite el almacenamiento,
intercambio y gestión de imágenes, etc.) y también se posiciona como un proveedor de servicios
en Internet tipo Cloud Computing con su producto Google Apps para empresas (integra Gmail,
Google Talk, Google Calendar, Google Vdeo, Google Sites, Google Docs, etc.).
InfraGrid o Cluster Grid, Grid que está constituida por un conjunto de pocas máquinas, con
arquitectura hardware similar, conectadas en red de área extensa. Es un sistema que suele
utilizarse para experimentar con software Grid. La utilización debe ser interdepartamental, pero
no requiere de polí- ticas especiales de seguridad. Estos tipos de configuraciones guardan cierta
similitud con los Cluster Interdepartamentales que suponen una evolución de los clusters
departamentales y experimentales, mucho más sencillos, y están formados por máquinas
homogéneas en hardware y sistemas operativos y que forman parte de un único dominio.
Pero mientras que los Cluster Interdepartamentales se limitan a un único dominio en red local,
la InfraGrid también se limita a un único dominio pero en red de área extensa; es decir, se trata
de un cluster con elementos distribuidos geográficamente, de ahí que también reciba la
denominación de Cluster Grid.
IntraGrid es la siguiente progresión, que incluye la unión de distintos dominios con máquinas
heterogé- neas. En esta configuración están disponibles muchos tipos de recursos. En este
sistema Grid se incluyen algunos componentes que realizan la planificación de tareas. Los
recursos se comparten por medio de una red de alta velocidad. Participan máquinas de múltiples
departamentos siempre dentro de una misma organización. También es denominada como
Campus Grid (Gentzsch, 2004, p. 311) o como Grid empresarial (Enterprise Grid).
Como ejemplo de este tipo de Grid en las empresas, podemos citar a IBM que dispone
de una IntraGrid que une su Centro de Innovación de Tecnología Grid, ubicado en
Montpellier (Francia), con los principales centros de investigación y desarrollo que IBM
posee en EE.UU., Israel, Suiza, Japón e Inglaterra. Otros ejemplos los tenemos en la
empresa SUN, que posee una infraestructura Grid interna mediante la que ofrece a sus
clientes servicios de computación mediante un sistema de pago por uso (1$ por hora de
CPU) y en la empresa HP. También en Gateway, que unió los ordenadores de sus
distintas delegaciones en Estados Unidos para aprovechar su capacidad ociosa y ofrecer
servicios de computación a sus clientes; o NTT Data en Japón, que dispone de una
estructura en la que participan más de un millón de PCs con conexiones de banda ancha
para ofrecer un servicio comercial de computación.
InterGrid es una Grid que puede ser utilizado uniendo también a un gran número de
organizaciones que, de forma dinámica, colaborarán en proyectos e intereses comunes,
y que comparten recursos, sin existir necesariamente estrechos vínculos entre ellas ni
desequilibrios en sus situaciones de poder. Los requerimientos de seguridad son muy
altos. InterGrid abre posibilidades comerciales hacia la venta e intermediación de
recursos sobre un amplio grupo de posibles consumidores de recursos. Los recursos
podrán ser utilizados como un servicio en un gran Grid de cobertura muy amplia y donde
estarán presentes «proveedores» de recursos
Este tipo de Grid es también denominado Global Grid. El objetivo último puede ser llegar
a formar una gran red Grid de cobertura mundial a la que algunos autores ya han
denominado como World Wide Grid o WWG, Great Global Grid ó GGG, GridNet o «El
Grid». Un ejemplo de InterGrid lo tenemos en la empresa Google, que dispone del,
probablemente, mayor Grid empresarial existente en la actualidad y que interconecta
en una infraestructura común a un gran número de empresas a las que ha ido
adquiriendo (2). La figura 2 refleja esta clasificación tipológica según el ámbito
organizativo.
Capa de aplicación. Formada por todas las aplicaciones de los usuarios, portales y
herramientas de desarrollo que soportan esas aplicaciones. Es la capa que ve el usuario
y que proporciona el llamado serviceware, que recoge las funciones generales de
gestión tales como la contabilidad del uso del grid que hace cada usuario.
Capa de recursos. Constituida por los recursos que son parte del grid: ordenadores,
supercomputadoras, sistemas de almacenamiento, catálogos electrónicos de datos,
bases de datos, sensores, etc.
Capa de red. Encargada de asegurar la conexión entre los recursos que forman el grid.
Para poder hacer todo lo anterior, las aplicaciones que se desarrollen para ser
ejecutadas en un ordenador concreto, tendrán que adaptarse para poder invocar los
servicios adecuados y utilizar los protocolos correctos. Sin embargo, una vez adaptadas
al grid, miles de usuarios podrán usar las mismas aplicaciones, utilizando las capas de
middleware para adaptarse a los posibles cambios en el tejido del grid.
El grid puede ser de diferentes tamaños, desde una pequeño grupo de equipos a varias
grandes redes interconectadas o miles de nodos trabajando en paralelo.Esta tecnología
se aplica a muchas aplicaciones diferentes, como grandes cálculos matemáticos y
científicos: análisis estructural, grandes servicios Web infraestructuras back-office o
investigación de marketing. Existen varias compañías que diseñan, planifican, lanzan e
implementan entornos y proyectos grid a nivel mundial, respaldados por la mayor red
que existe (internet) y basados en el protocolo IP. Estas pueden ser desde grandes
corporaciones y universidades hasta grandes grupos de trabajo.
América latina no podía ser la excepción ante este auge de la tecnología GRID. Pero si
en los países desarrollados la GRID Computing esta en formación, en nuestros países
(Latinoamérica) apenas está en gestación, por ello se vienen adelantando varios
proyectos y alianzas con instituciones que tienen experiencia en la implementación de
tecnologías GRID. En la actualidad se cuenta con CLARA Cooperación Latino Americana
de Redes Avanzadas que es una organización no gubernamental sin fines de lucro, la
cual estimula la cooperación regional en actividades educativas, científicas y culturales,
además promueve la integración directa con las comunidades científicas de Europa
[CLARA (2006)], esta organización trata de integrar una red regional de
telecomunicaciones de la más avanzada tecnología para interconectar a las redes
académicas nacionales de la región, hasta el momento tiene los siguientes miembros:
Otro proyecto importante para el trabajo en GRID Computing, que se adelanta en Latino
América actualmente es EELA (E-infrastructure Shared between Europe and Latin
América), en el cual participan 10 países con sus redes académicas y diferentes
instituciones entre universidades y centros de investigación; el objetivo es llevar las e-
Infraestructuras de los países latinoamericanos al nivel de explotación de los países
Europeos. La EELA se beneficia del estado maduro del proyecto ALICE (América Latina
Profesor Martín Arosemena 99 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Supercomputación distribuida
Extracción de conocimientos de almacenes de datos.
Herramientas de cálculo numérico.
Proceso de análisis de datos.
Servicios Puntuales
Este tipo de aplicaciones son aquellas que permiten acceder a hardware específico para
la realización de labores a distancia.
MODULO VI
Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una
arquitectura distribuida que permite a los usuarios finales obtener acceso a la información en
forma transparente aún en entornos multiplataforma. En el modelo cliente servidor, el cliente
envía un mensaje solicitando un determinado servicio a un servidor (hace una petición), y este
envía uno o varios mensajes con la respuesta (provee el servicio). En un sistema distribuido cada
máquina puede cumplir el rol de servidor para algunas tareas y el rol de cliente para otras.
Historia
Existen diversos puntos de vista sobre la manera en que debería efectuarse el procesamiento
de datos. En este contexto, es necesario establecer una infraestructura de Procesamiento de
información, que cuente con los elementos requeridos para proveer información adecuada,
exacta y oportuna en la toma de decisiones y para proporcionar un mejor servicio a los clientes
y ciudadanos. El modelo Cliente/Servidor reúne las características necesarias para proveer esta
infraestructura, independientemente del tamaño y complejidad de las operaciones de las
organizaciones públicas o privadas y, consecuentemente desempeña un papel importante en
este proceso de evolución.
1ª ÉPOCA:
– LAN.
– LAN con MAINFRAMES.
– Comunicaciones homogéneas (LU, SNA, APPC).
• 2ª ÉPOCA:
– Herramientas de desarrollo C/S.
– Proveedores DBMS con C/S.
– Downsizing: migración a PCs.
– S.O. De red con servidores de servicios
• 3ª ÉPOCA: ACTUAL:
– PWS: Estaciones de trabajo programables gráficamente.
– GUI: Interfaz gráfico de usuario. Alta resolución.
– Nuevas tecnologías: Ratón, lápiz óptico, scanner, multimedia.
– Tecnología de componentes: DDE y OLE.
– Conectividad de BDs: ODBC, JDBC
– Objetos Distribuidos: CORBA, COM, COM+, DCOM
– Internet: HTML, CGI, Applet, ActiveX, JAVA, JavaScript
– Arquitecturas C/S de 2 y 3 niveles.
– Middleware.
Cliente
Es el que pide servicio de Internet o Intranet. Una aplicación consta de una parte de servidor y
una de cliente, que se pueden ejecutar en el mismo o en diferentes sistemas. Los usuarios
invocan la parte cliente de la aplicación, que construye una solicitud para ese servicio y se la
envía al servidor de la aplicación que usa TCP/IP como transporte.
Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes Puntos
• Formatear resultados.
Servidor
Es una aplicación que ofrece un servicio a usuarios de Internet, el servidor es un programa que
recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una
respuesta. Generalmente un servidor puede tratar múltiples peticiones (múltiples clientes) al
mismo tiempo.
Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes Puntos
Cliente-Servidor
Es la tecnología que proporciona al usuario final el acceso transparente a las aplicaciones, datos,
servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la
organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el
cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o
"clientes, resultan en un trabajo realizado por otros computadores llamados servidores".
• Tamaño de Datos: Visual FoxPro, al igual que todas las variantes de xBase anteriores a él, tenia
la limitación de 2 GB en cualquiera de sus tablas o archivos. Esta limitación tiene que ver con la
manera en que los bloqueos son realizados en los registros individuales y, mientras que es
ciertamente factible que este límite sea alcanzado, esto es diferente a cómo normalmente lo
hace Microsoft. A pesar de que hay muchos workarrounds para estos límites, estos incrementan
los retos con Visual FoxPro en cuanto las tablas se agranden – tiempos prolongados para
reindexar en caso de corrupción, por ejemplo. En resumen, si el tamaño se vuelve un factor
mayor, considere si el uso de Cliente-Servidor es adecuado.
•Seguridad: Fundamentalmente, todos los accesos a las tablas FoxPro van a través de la red
del sistema operativo, así que los usuarios necesitan tener acceso a los directorios conteniendo
las tablas VFP. Cualquiera que pueda tener acceso a las tablas puede, eventualmente,
imaginarse como leerlos. También es simple usar un driver ODBC y Excel, o si ellos necesitan
Profesor Martín Arosemena 104 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
usar un editor hexadecimal para romper su esquema de encriptación. Muchos sistemas Cliente-
Servidor pueden eliminar esta amenaza en conjunto con la restricción de acceso de los clientes
a la interface del servidor, y no necesariamente a todos los datos. Si está tratando con material
altamente confidencial, Cliente-Servidor tiene sentido por razones de seguridad.
•Bajo Ancho de Banda: Visual FoxPro es el producto para manejo bases de datos escritorio y
basado en LAN más rápido y con mejor mejor desempeño disponible en el mercado hoy en día.
Pero VFP obtiene su desempeño fenomenal tomando ventaja del ambiente LAN, pre-
obteniendo información de columna, haciendo localmente algún tipo de caching de
encabezados de tablas y contenidos de índices. Mientras que el proceso de adquirir esta
información es casi imperceptible en un ambiente de red, haciendo lenta la apertura inicial de
tablas en milisegundos, esto puede ser un retardo substancial si se está en un “cable delgado”
(por ejemplo conexiones Dial-Up, WAN o Internet saturado) entre el cliente y los datos. En estas
situaciones, poner los datos, la responsabilidad de hacer las consultas y procesamiento de los
datos en el servidor minizará los costos de comunicación y mejorará la velocidad.
El modelo Cliente-Servidor
La tecnología denominada Cliente -Servidor es utilizada por todas las aplicaciones
de Internet/Intranet. Un cliente funciona en su ordenador local, se comunica con el servidor
remoto, y pide a éste información. El servidor envía la información solicitada. Un único servidor
típicamente sirve a una multitud de clientes, ahorrando a cada uno de ellos el problema de tener
la información instalada y almacenada localmente.
Algunos servidores esperan las solicitudes en puertos bien conocidos de modo que sus clientes
saben a qué zócalo IP deben dirigir sus peticiones. El cliente emplea un puerto arbitrario para
comunicarse. Los clientes que se quieren comunicar con un servidor que no usa un puerto bien
conocido tienen otro mecanismo para saber a qué puerto dirigirse. Este mecanismo podría usar
un servicio de registro como Portmap, que utiliza un puerto bien conocido.
Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa
(el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan
Profesor Martín Arosemena 105 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido
a través de una red de computadoras. La interacción cliente-servidor es el soporte de la mayor
parte de la comunicación por redes. Ayuda a comprender las bases sobre las que están
construidos los algoritmos distribuidos.
El servidor debe negociar con su Sistema Operativo un puerto (casi siempre bien conocido)
donde esperar las solicitudes. El servidor espera pasivamente las peticiones en un puerto bien
conocido que ha sido reservado para el servicio que ofrece. El cliente también solicita, a su
sistema operativo, un puerto no usado desde el cual enviar su solicitud y esperar respuesta. Un
cliente ubica un puerto arbitrario, no utilizado y no reservado, para su comunicación.
En una interacción se necesita reservar solo uno de los dos puertos, asignados un identificador
único de puerto para cada servicio, se facilita la construcción de clientes y servidores.
Los servidores por lo general son más difíciles de construir que los clientes pues aunque se
implantan como programas de aplicación deben manejar peticiones concurrentes, así como
reforzar todos los procedimientos de acceso y protección del sistema computacional en el que
corren, y protegerse contra todos los errores posibles. El cliente y el servidor pueden interactuar
en la misma máquina.
Servidor: Es un programa que ofrece un servicio que se puede obtener en una red. Acepta la
petición desde la red, realiza el servicio y devuelve el resultado al solicitante. Al ser posible
implantarlo como aplicaciones de programas, puede ejecutarse en cualquier sistema donde
exista TCP/IP y junto con otros programas de aplicación. El servidor comienza su ejecución antes
de comenzar la interacción con el cliente. Su tiempo de vida o de interacción es “interminable”.
Los servidores pueden ejecutar tareas sencillas (caso del servidor hora día que devuelve una
respuesta) o complejas (caso del servidor ftp en el cual se deben realizar operaciones antes de
devolver una respuesta). Los servidores sencillos procesan una petición a la vez (son
secuenciales o interactivos), por lo que no revisan si ha llegado otra petición antes de enviar la
respuesta de la anterior.
Los más complejos trabajan con peticiones concurrentes aun cuando una sola petición lleve
mucho tiempo para ser servida (caso del servidor ftp que debe copiar un archivo en otra
máquina). Son complejos pues tienen altos requerimientos de protección y autorización. Pueden
leer archivos del sistema, mantenerse en línea y acceder a datos protegidos y a archivos de
usuarios. No puede cumplir a ciegas las peticiones de los clientes, deben reforzar el acceso al
sistema y las políticas de protección. Los servidores por lo general tienen dos partes:
Abrir un puerto local bien conocido al cual pueda acceder los clientes.
Esperar las peticiones de los clientes.
Elegir un puerto local para las peticiones que llegan en informar al cliente del nuevo puerto,
(innecesario en la mayoría de los casos).
Iniciar un programa esclavo o proceso hijo que atienda la petición en el puerto local, (el
esclavo cuando termina de manejar una petición no se queda esperando por otras).
Volver a la espera de peticiones mientras los esclavos, en forma concurrente, se ocupan de
las anteriores peticiones.
Combinación de un cliente que interactúa con el usuario, y un servidor que interactúa con
los recursos a compartir. El proceso del cliente proporciona la interfaz entre el usuario y el
resto del sistema. El proceso del servidor actúa como un motor de software que maneja
recursos compartidos tales como bases de datos, impresoras, Módem, etc.
Las tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos
de cómputo como velocidad del procesador, memoria, velocidad y capacidades del disco
e input-output devices.
Se establece una relación entre procesos distintos, los cuales pueden ser ejecutados en la
misma máquina o en máquinas diferentes distribuidas a lo largo de la red.
Existe una clara distinción de funciones basadas en el concepto de ”servicio”, que se
establece entre clientes y servidores.
La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio
a muchos clientes, regulando su acceso a los recursos compartidos.
Los clientes corresponden a procesos activos en cuanto a que son estos los que hacen
peticiones de servicios. Estos últimos tienen un carácter pasivo, ya que esperan peticiones
de los clientes.
No existe otra relación entre clientes y servidores que no sea la que se establece a través
del intercambio de mensajes entre ambos. El mensaje es el mecanismo para la petición y
entrega de solicitudes de servicios.
El ambiente es heterogéneo. La plataforma de hardware y el sistema operativo del cliente
y del servidor no son siempre los mismos. Precisamente una de las principales ventajas de
esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de
sus plataformas.
El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema
Cliente-Servidor. La escalabilidad horizontal permite agregar más estaciones de trabajo
activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite
mejorar las características del servidor o agregar múltiples servidores.
Comunicación Síncrona.
Quien envía permanece bloqueado esperando a que llegue una respuesta del receptor
antes de realizar cualquier otro ejercicio.
Comunicación Asíncrona.
Quien envía continúa con su ejecución inmediatamente después de enviar el mensaje al
receptor.
Comunicación Persistente.
El receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicación,
el mensaje se almacena tanto tiempo como sea necesario para poder ser entregado.
Comunicación Transitoria.
Profesor Martín Arosemena 108 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
Comunicación Directa.
Las primitivas enviar y recibir usan directamente el nombre del proceso con el que se
comunican.
Por ejemplo:
Enviar (mensaje, A) envía un mensaje al proceso A. Observese que la primitiva sólo debe
especificar cuál va a ser ser el proceso Destino, ya que el proceso fuente viene
direccionado en la comunicación.
Las operaciones básicas Send y Receive se definen de la siguiente manera: Send (P,
mensaje); envía un mensaje al proceso P. Receive (Q, mensaje); espera la recepción de
un mensaje por parte del proceso Q.
Comunicación Indirecta.
Es aquella donde la comunicación está basada en un gateway, enrutador, puente o
switch, ya que el emisor y el receptor están a distancia.
Comunicación Simétrica.
Todos los procesos pueden enviar o recibir. También establece una llamada
bidireccional para el caso de dos procesos.
Comunicación Asimétrica.
Un proceso puede enviar, los demás procesos solo reciben. También llamada
unidireccional o no interactiva. Es el esquema típico de algunos servidores de Internet.
RPC
RPC es la transferencia sincrónica de datos y control entre dos partes de un programa
distribuido a través de espacios de direcciones disjuntas. La manera en que RPC logra
hacer esto, es por medio de lo que se conoce como STUB. En el caso del STUB servidor,
se conoce como SKELETON. Estos Stubs y Skeletons permiten que al momento de ser
invocada la función remota esta pueda ser quot; simulada localmente quot.
Objetivos de RPC
Los parámetros para la llamada remota no pueden pasarse por referencia (solo por
valor).
El mecanismo de RPC
Las rutinas de serialización de datos: Se debe tomar en cuenta que las máquinas cliente
y servidor puedan ser de arquitectura diferente (y no compatible).
El stub debe poseer llamadas con la misma declaración (forma) que el servidor
El cliente invoca las llamadas del stub “como si” fuese el servidor
El stub oculta los detalles de referencia del objeto remoto. Es decir, debe saber en qué
dirección IP y en qué puerto hay que contactar con el extremo remoto
Cada procedimiento que el cliente quiera invocar a través de RPCs necesita su propio
stub
Las RPC son muy utilizadas dentro del paradigma cliente-servidor. Siendo el cliente el
que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función
y enviando éste de vuelta el resultado de dicha operación al cliente. Hay distintos tipos
de RPC, muchos de ellos estandarizados como pueden ser:
Concepto Descripción
Independencia del El modo en que se pasan los mensajes entre los procesos no
protocolo de implica diferencia en las operaciones que rpc que se deben
transporte invocar. El protocolo sólo aborda cuestiones relacionadas con la
especificación e interpretación de los mensajes.
Independencia Esta viene especificada por el protocolo de transporte utilizado
semántica para realizar la comunicación via rpc.
Autentificación y rpc sólo soporta autenticación. Si se desea controlar el acceso a
control de acceso servicios individuales, cada uno de estos deberá implementar
su propia política de control de acceso y reflejar dicha política
en los valores de estdo del protocolo devueltos al realizar la
llamada.
Procedimiento
RPC funciona de un modo similar, salvo que el hilo de control se alterna, como es lógico
entre dos procesos, el cliente y el servidor:
A pesar del salto cualitativo que supuso su uso respecto al empleo directo de sockets,
rpc presenta una serie de inconvenientes que no lo hace apropiado para las necesidades
de Gmodulo:
Problema Descripción
Instanciación de RPC no aporta ningún control sobre el ciclo de vida del proceso
procesos. remoto.
Independencia de Uno de los principales inconvenientes de rpc es el número de
plataforma. variaciones y extensiones entre las implementaciones disponibles.
El resultado es una amplia variedad de versiones diferentes e
incompatibles del protocolo rpc.
Es tanto el uso actual de esta arquitectura que por diversas razones, el término “cliente-
servidor” ha llegado a aplicarse casi exclusivamente al caso en el que el cliente y
el servidor están, en efecto en máquinas distintas. Una aplicación muy común del
procesamiento distribuido es en las bases de datos, donde el procesamiento distribuido
podría realizar la entrada/salida, la selección y la validación de los datos en una
computadora, y luego crear un reporte basado en esos datos o una consulta en otra
computadora.
CLUSTER:
Cabe notar que prácticamente todos los clusters que han aportado un avance a esta
tecnología han sido de carácter académico, no necesariamente en su uso, pero sí en el
proceso de configuración, implementación y operación; por ejemplo.
Beowulf
Fue construido por Donald Becker y Thomas Sterling, investigadores de la NASA y el
Tecnológico de California, respectivamente; mientras que el proyecto.
Cluster X
(también conocido como Terascale Cluster) fue dirigido por Srinidhi Varadarajan y Jason
Lockhar, ambos académicos del Tecnológico de Virginia. Los inicios del cluster fueron
cuando los pioneros de la supercomputación trataban de implementar diferentes
procesos entre varias computadoras, para luego poder recoger los resultados que dichos
procesos debían producir.
Luego de decir todo lo anterior entonces, podríamos decir que un cluster entonces es
un conjunto de computadoras interconectadas con dispositivos de alta velocidad que
actúan en conjunto usando el poder de cómputo combinado de varias
CPUs para resolver ciertos procesos dados de forma conjunta, y aparecen ante clientes
y aplicaciones como un solo sistema. Los cluster permiten aumentar la escalabilidad,
disponibilidad y fiabilidad de múltiples niveles de red. Existen diferentes formas de
procesamiento en paralelo. Entre las más conocidas y más usadas se encuentran NUMA,
PVM y MPI.
Para conservar hardware, también puede configurar los miembros de clúster vertical en
un nodo único. Normalmente, los clústeres de portal grandes incluyen tanto escalado
horizontal como vertical; por ejemplo, es posible que tenga cuatro nodos de portal y
que cada uno de dichos nodos pueda contener cinco miembros de clúster de un total de
veinte miembros de clúster.
Los nodos del clúster con discos locales (sin compartir) proporcionan la principal
plataforma de computación del clúster.
El almacenamiento multisistema proporciona discos compartidos entre los
nodos.
Los soportes extraíbles se configuran como dispositivos globales, como cintas y
CD-ROM.
La interconexión del clúster proporciona un canal para la comunicación
intermodal.
Las interfaces de red pública permiten que las interfaces de red que utilicen los
sistemas de clientes tengan acceso a los servicios de datos del clúster.
Si desea trabajar como miembro de un clúster, un nodo debe tener el siguiente software
instalado:
Software Solaris
Software de Sun Cluster
Aplicación de servicio de datos
Gestión de volúmenes (SolarisTM Volume Manager o VERITAS Volume Manager)
Una excepción es una configuración que se suministre con una gestión de volúmenes.
Es posible que no necesite un gestor de volúmenes de software.
La figura siguiente muestra con precisión cómo los componentes de software trabajan
conjuntamente para crear el entorno de Sun Cluster.
Para asegurarse de que los datos no sufran daños, todos los nodos deben alcanzar un
acuerdo uniforme sobre la pertenencia al clúster. Cuando es necesario, CMM coordina
una reconfiguración de los servicios del clúster en respuesta a un fallo.
CMM recibe información sobre conectividad con otros nodos desde la capa de
transporte del clúster y usa la interconexión del clúster para intercambiar información
de estado durante la reconfiguración.
Tras detectar un cambio en la pertenencia del clúster, CMM efectúa una configuración
sincronizada de éste en la cual es posible que los recursos del clúster se redistribuyan,
basándose en la nueva pertenencia del clúster.
Profesor Martín Arosemena 122 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
CCR confía en CMM para garantizar que el clúster sólo se ejecute cuando se tenga el
suficiente quórum. CCR es responsable de verificar la uniformidad de los datos entre el
clúster, efectuando recuperaciones según sea necesario y facilitando actualizaciones a
los datos.
Los sistemas de archivos del clúster dependen de los dispositivos globales (discos, cintas,
CD-ROM), accesibles desde cualquier nodo del clúster, a través del mismo nombre de
archivo, (por ejemplo /dev/global/). Ese nodo no necesita una conexión física con el
dispositivo de almacenamiento. Se puede utilizar un dispositivo global como dispositivo
regular, esto es, se puede crear un sistema de archivos en un dispositivo global
mediante newfs o mkfs.
Los sistemas de archivos del clúster son independientes del sistema de archivos
subyacente y del software de gestión de volúmenes. Los sistemas de archivos del
clúster convierten en global cualquier sistema de archivos admitido del disco.
Los nodos que no alojan la interfaz global (nodos delegados) tienen la dirección
compartida alojada en sus interfaces de bucle. Los paquetes que se reciben en la interfaz
global se distribuyen en otros nodos del clúster, basándose en las normas configurables
de equilibrio de cargas. Las normas de equilibrio de cargas posibles se describen a
continuación.
Hay dos clases de servicios de datos escalables: puros y adosados. Un servicio puro es
aquel donde una instancia puede responder a peticiones de clientes sin restricciones.
Un servicio adosado tiene al clúster equilibrando la carga en las solicitudes al nodo. Estas
peticiones no se redirigen a otras instancias.
Un servicio puro usa una política de equilibrio de cargas ponderada bajo la cual,
predeterminadamente, las peticiones de los clientes se distribuyen de manera uniforme
entre las instancias del servidor en el clúster. Por ejemplo, en un clúster de tres nodos
donde cada uno tenga el peso de 1, cada nodo atiende a un tercio de las solicitudes de
cualquier cliente en nombre de ese servicio. Los pesos se pueden cambiar en cualquier
momento mediante la interfaz de la orden scrgadm(1M) o mediante la interfaz de
SunPlex Manager.
Un servicio adosado tiene dos tipos: servicio adosado normal y servicio adosado
comodín. Ambos permiten que sesiones simultáneas de aplicación a través de varias
conexiones TCP compartan el estado de la memoria (estado de la sesión de aplicación).
Los normales permiten a un cliente compartir el estado entre varias conexiones TCP
simultáneas. Se considera que el cliente es “adosado” con respecto a la instancia del
servidor que recibe en un único puerto. Al cliente se le garantiza que todas sus
solicitudes vayan a la misma instancia del servidor, siempre que ésta permanezca activa
y accesible y que la política de equilibrio de cargas no cambie mientras el servicio esté
en línea.
El software Sun Cluster consigue de los discos una alta disponibilidad mediante el
almacenamiento en discos multisistema, que se pueden conectar a más de un nodo a la
vez. El software de gestión de volúmenes se puede utilizar para ordenar estos discos en
un almacenamiento compartido controlado por un nodo del clúster. Los discos se
configuran después para desplazarse a otro nodo si se produce un fallo. El uso de discos
multisistema en sistemas Sun Cluster proporciona muchas ventajas, entre las que se
encuentran:
Todos los nodos deben estar conectados por la interconexión del clúster a través de, al
menos, dos redes independientes físicamente o rutas de acceso, para evitar que exista
un único punto de fallo. Puesto que son necesarias dos interconexiones para conseguir
una mayor seguridad, se pueden usar hasta seis para dispersar el tráfico y evitar de este
modo los atascos, con lo que se mejora la seguridad y la escalabilidad. La interconexión
del Sun Cluster utiliza Fast Ethernet, Gigabit-Ethernet, Sun Fire Link o Scalable Coherent
Interface (SCI, IEEE 1596-1992), con lo que se consiguen comunicaciones privadas de
alto rendimiento entre clústers.
En los entornos de clústers son esenciales las interconexiones de alta velocidad y baja
latencia, así como los protocolos para comunicaciones intermodales. La interconexión
SCI en los sistemas Sun Cluster ofrece un rendimiento mejorado en tarjetas estándar de
interfaces de red (NIC). Sun Cluster utiliza la interfaz de memoria compartida remota
(RSMTM) en la comunicación intermodal en una red Sun Fire Link. RSM es una interfaz
de mensajería de Sun altamente eficaz en operaciones de memoria remota.
Los grupos de ruta múltiple ofrecen la base para la construcción de nombres de sistema
lógicos y recursos de dirección compartida. El mismo grupo de ruta múltiple de un nodo
puede alojar cualquier número de nombres de sistema lógicos o recursos de dirección
compartida. Si desea supervisar la conectividad de redes públicas de nodos del clúster,
puede crear rutas múltiples.
Los clientes se conectan al clúster a través de interfaces de red pública. Todas las tarjetas
adaptadoras de red pueden conectarse a una o más redes públicas, de acuerdo con las
interfaces de hardware que la tarjeta tenga. Los nodos pueden configurarse para que
incluyan múltiples tarjetas de interfaz de red pública a fin de que varias estén activas y
se utilicen en caso de recuperación de fallos como respaldo entre ellas. Si uno de los
adaptadores falla, el software de ruta múltiple de red del protocolo de Internet (IP) de
Solaris, en Sun Cluster, recibe la instrucción de recuperarse de una interfaz defectuosa
en otro adaptador del grupo.
Los antecedentes
La leyenda.
Cuentan que el éxito fue inmediato: agruparon 16 procesadores Intel DX4 de unos 100
MHz, los interconectaron con tecnología Ethernet a 10 Mbps, en equipo viejos con Linux
instalado, para ejecutar tareas científicas en paralelo a un precio incomparablemente
bajo para su tiempo. De hecho el kernel Linux de aquel entonces no tenía tanto soporte
para placas Ethernet como hoy en día, por eso Donald Becker se dio a la tarea de
escribir drivers propios que por supuesto compartió a la comunidad.
Primero fueron los colegas de la NASA, luego los de otros centros investigación en EE.
UU., Europa, Asia y hasta Latinoamérica, la idea de una nueva técnica para abaratar el
preciado poder del supercómputo se hizo viral y en pocos años el cómputo científico
llego a los más "pobres": a los que no podían pagar cientos de miles de dólares en la
compra y mantenimiento de equipos que, en el mejor de los casos, duraban vigentes
unos tres años.
Así nació una leyenda que sigue su curso, y hasta gabinetes IKEA beowulf existen ahora
que el supercómputo dejó de ser un recurso exclusivo.
Los clústers no serían posible sin tecnologías abiertas, sin Linux, el software libre y su
comunidad, sin la mejora constante de las técnicas para abaratar y escalar ese tipo de
supercomputadoras. Muchas guías y aplicaciones para clústers Beowulf existen en la
red. Mi recomendación para los más curiosos es que investiguen y saquen del abandono
esos viejos equipos para construir su propia supercomputadora personal, su pequeña
granja de servidores, tendrán una experiencia llena de aprendizaje.
Bibliografía
http://www.unap.edu.pe/cidiomas/licing/pdf/sd.pdf
https://www.youtube.com/watch?v=MLYM_DeoEoc
http://marcosventuraosorio261v.blogspot.com/2009/03/sistemas-operativos-de-red-y-
sistemas.html
https://sites.google.com/site/mrtripus/home/sistemas-operativos-2
Abril 2, 2011
https://aryolisabreu.wordpress.com/2011/04/02/diferencia-entre-sistemas-distribuidos-y-
sistemas-centralizados/
http://www.monografias.com/trabajos106/comunicacion-procesos-sistemas-
distribuidos/comunicacion-procesos-sistemas-distribuidos.shtml
https://sites.google.com/site/sistemasdistribuidosycluster/comunicacion-entre-procesos-y-
sincronizacion
[9] Luis Hernández, Estado del arte de los sistemas distribuidos, 2004
http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoria-ivan/node2.html
https://sites.google.com/site/mrtripus/home/sistemas-operativos-2/2-1-comunicacion-
comunicacion-con-cliente-servidor-comunicacion-con-llamada-a-procedimiento-remoto-
comunicacion-en-grupo-tolerancia-a-fallos
http://tedhygarcia.blogspot.com/2012/06/los-sockets-son-utilizados-como-medios.html
[12] Martín Santana, A. David Martínez Santana, Luis Ignacio, 2014, Diseño de sistemas
Operativos
2007-2008
http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf
https://iarmenta.wordpress.com/2009/08/24/el-middleware/
http://sistemasdistribuidosjosecastro.blogspot.com/2016/05/v-behaviorurldefaultvmlo.html
Profesor Martín Arosemena 131 | 134
Sistemas Operativos III, Apuntes Completos, PPTs y Laboratorios resueltos
[15] Julio Pari, Sistemas Distribuidos - Arquitectura - Web Service – Middleware, 2013
https://www.youtube.com/watch?v=SObBMbeUcuw
http://aplicaciones-middleware.blogspot.com/
https://es.scribd.com/doc/219504970/Sistemas-Distribuidos-Coulouris-pdf
Julio 3, 2010
http://29901juansanchezexamenyamilethquezada.blogspot.com/
http://www.elara.site.ac.upc.edu/documentacion/LINUX%20-%20UD11%20-
%20Configuracion%20de%20red%20en%20Linux.pdf
[20] Nicolás Álvarez S. Juan Monsalve Z., Introducción a las Redes de Computadores, 2008
http://www2.elo.utfsm.cl/~iwg101/ClaseRedes.pdf
[21] Manuel Martín Santiago, Redes locales bajo Windows – Curso Coordinadores TIC
http://www.sietecolinas.es/soporte/documentos/redes.pdf
http://wwwclusterinformatica.blogspot.com/2011/05/cluster-informatica.html
Junio 4, 2018
https://es.wikipedia.org/wiki/Cl%C3%BAster_(inform%C3%A1tica)
[24] José Manuel Maqueira Marín, Sebastián Bruqué Cámara: Las tecnologías grid de la
información como nueva herramienta empresarial: definición, taxonomía y niveles de
adopción
http://www.minetad.gob.es/Publicaciones/Publicacionesperiodicas/EconomiaIndustrial/Revist
aEconomiaIndustrial/380/Jos%C3%A9%20Manuel%20Maqueira.pdf
https://laredinfinita.wordpress.com/2014/05/10/cluster-y-grid-colecciones-de-sistemas/
http://sistemasdistribuidos.activo.in/t62-grid-computing
http://www.monografias.com/trabajos102/computacion-grid/computacion-grid.shtml
[29] Bertha Mariel Márquez AvendañoJosé Manuel Zulaica Rugarcía, Capítulo 5. Cliente-
Servidor, 2004
http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/marquez_a_bm/capitulo5.pdf
Junio 4, 2018
https://www.ecured.cu/Cliente-Servidor
http://gmodulo.sourceforge.net/docs/html/reference/ch02s02.html
Junio 4, 2018
https://www.ecured.cu/Llamada_a_procedimiento_remoto
[33] Sun Cluster para el Sistema Operativo Solaris: Visión general, 2010
https://docs.oracle.com/cd/E19263-01/817-6910/6mm91j7tc/index.html
Junio 5, 2012
https://es.scribd.com/document/95961710/Distribuido-Cluster
Novie,bre 9, 2011
https://hipertextual.com/2011/11/historia-de-la-tecnologia-cluster-beowulf-la-
supercomputadora-de-los-pobres