Wednesday, October 16, 2013

Algoritmo Distribuido.

Bases para comprender un Algoritmo Distribuido:

Este algoritmo requiere la existencia de un orden total de todos los mensajes en el sistema, es decir, para cualquier pareja de mensajes debe conocerse cuál de ellos se generó primero.En este algoritmo, cuando un proceso desea entrar en una sección crítica, construye un mensaje con su número de proceso y su márca de tiempo y sé lo envía á todos los procesos incluidos él mismo. Cuando un proceso recibe un mensaje de otro proceso que desea entrar en la sección crítica se analizan los tres siguientes casos:
  1. Si el recéptor del mensaje no se encuentra ejecutando dentro de la sección crítica ni desea entrar en ella, envía un mensaje de respuesta, indicando al proceso que puede entrar en la sección crítica.
  2. Si el receptor del mensaje ya está en la sección crítica, no responde al proceso impidiéndole de esta forma la entrada en la sección crítica.
  3. Si el receptor desea, entrar, compara la marca de tiempo del mensaje con la marca de tiempo incluida en el mensaje que él envió al resto de procesos. Si el mensaje recibido tiene una marca menor, responde al proceso emisor permitiéndole la entrada en la sección crítica. En caso contrarió entra y no envía ninguna respuesta, impidiéndole la entrada.
Una vez que el proceso que desea entrar en la sección crítica ha enviado el mensaje al resto de procesos, espera la recepción de todos ellos confirmándole la entrada. Cuando recibe los mensajes de confirmación de todos los procesos entra en la sección crítica. En caso de que algún proceso estuviera en la sección crítica, no recibirá el mensaje de éste y por tanto el proceso se bloqueará hasta que salga. Cuando el proceso sale envía el mensaje que le falta al proceso para poder entrar. Este algoritmo distribuido tiene problemas, puesto que si uno de los procesos del sistema falla, el algoritmo deja de funcionar.

Sistema Distribuido

Un sistema distribuido es un conjunto de computadores autónomos que es­tán conectados entre sí y ofrecen servicios comunes a los usuarios. Los usuarios de un sistema distribuido bien diseñado deberían percibir un sistema de computación único e integrado, aun cuando las máquinas estén dispersas geográficamente.

Modelo de sistema distribuido 

• Arquitectura

– conjunto de nodos que comunican enviando y recibiendo mensajes de forma asíncrona
– dentro un nodo, los procesos se ejecutan con los mecanismos de memoria compartida estudiados
– sólo se permite fallos parciales
(por lo menos la parte de comunicación funciona correctamente)

• Asunciones sobre la comunicación

– cada nodo tiene un canal bidireccional con los demás nodos

• Conexión completa

– los canales distribuyen los mensajes sin error, aunque puede que no en el orden en que llegan
– la latencia es finita, aunque arbitraria

• Asunciones sobre los procesos

– cada nodo tiene un identificador único (myID)

• Operaciones sobre mensajes

–send(message_type, destination [, parameters]*)
• message_type: para seleccionar un canal del receptor
• destination: myID del proceso al que se envía el mensaje
• parameters: información que se desea transmitir.
–receive(message_type [, var]*)
• message_type: para seleccionar un canal del receptor
• lista de variables para recoger la información transmitida
– atómicas, entre nodos y dentro de un nodo

Caracteristicas


  • Los sistemas distribuidos son arquitecturas débilmente acopladas ya que los sistemas distribuidos son computadores y sistemas paralelos cuyos procesadores tienen memorias independientes, carecen de un reloj común y necesitan una red de interconexión para poder comunicarse y compartir información.
  • Los procesos dé un sistema distribuido dialogan entre sí a través de mensajes a causa de que su arquitectura es débilmente acoplada e impide que los procesos puedan ver los otros procesos ya que la memoria de los procesadores son independientes, es por esto que usan el envió de mensajes para difundir cambios o cualquier otro tipo de información al resto de los procesos, esto se realiza adoptando el diseño cliente-servidor que permite diseñar el software como un conjunto de procesos que interactúan solicitando servicios.
  • Los sistemas distribuidos son heterogéneos ya que al ser los computadores o equipos que componen el sistema autónomos e independientes, pueden estar compuestos por piezas de diferentes naturaleza como puede ser diferentes arquitecturas, diferente SO,lo cual no impedirá que se pueda tener el sistema distribuido.
  • Los sistemas distribuidos tienen una estructura descentralizada ya que están formados como un grafo, donde su estructura no permite identificar los nodos que son relevantes como una unidad central o un cerebro.
  • Los sistemas distribuidos tienen alta redundancia ya que se puede lanzar un mismo proceso a mas de una máquina con la misma serie de mensajes por si una de las replicas se cae la otra siga dando servicio y hacer el sistema más tolerante a fallo. 

Ventajas y Desventajas



  • Un sistema distribuido es tolerante a fallos dado que la redundancia posibilita a que los procesos que se estén ejecutando se transfiera a otra máquina si este llega a fallar generando mayor fiabilidad.
  • La esca-labilidad que genera la capacidad de crecer mediante la adición de mas sistemas de computo independientes.
  • Menores costos dado que los sistemas independientes son mas económicos que los servidores.
  • La compartición de recursos e información al momento de interconectarse puede ser muy útil dado que con ellos podemos aumentar el rendimiento a los equipos del sistema, y facilitar el intercambio de información entre usuarios.
  • La eficiencia y flexibilidad con esto podemos tener una ejecución concurrente de procesos, respuesta rápida y empleo de técnicas de procesamiento. 
  • Mayor dificultad para mantener la privacidad de la información ya que en este sistema muchos usuarios pueden tener acceso a los datos que se almacenan.
  • La programación de estos sistemas operativos es más compleja.
  • Fallos independientes elevados, al ser el sistema más robusto se tienen más posibilidades estadísticas para fallos de cada equipo o nodo.




Referencias
[Programación de Sistemas Concurrentes y Distribuidos J. Ezpeleta-P. Álvarez 1 Univ. de Zaragoza]
[Sistemas Distribuidos, J.J. GOMEZ, D.A. PARRA, M. STEVENS ]

Análisis y conclusión de las aplicaciones.





Aplicación de un Algoritmo Paralelo

Descripción de nuestro ejemplo 

Cosas que se tomaron en cuenta para la elaboración de este ejemplo 
  • Simplicidad de realización
  • Entendimiento de la importancia de los hilos para los procesadores







Para este ejemplo se utilizaron hilos que es una pequeña simulación de los procesos de ejecución de programas en los OS  y se usaron tres programas distintos y se ejecuto una impresión en todos ellos con los mismos caracteres y se midió de su ejecución el tiempo que se tardaba en ejecutarlos


En este diagrama se muestra como se ejecuta el programa y se va midiendo el tiempo que se tarda en su ejecución por cada hilo