Top Banner
¿Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas
37

Computo Distribuído

Aug 08, 2015

Download

Internet

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Computo Distribuído

¿Qué es y qué no es un sistema distribuido?

M.C. Juan Carlos Olivares Rojas

Page 2: Computo Distribuído

Distribuir

• Según el diccionario: “dividir una cosa entre varios designando lo que a cada uno corresponde”

• Problemática: muchas tecnologías aparentan ser distribuidas como cómputo paralelo, concurrencia, grid computing, P2P, sistemas con múltiples procesadores o núcleos, etc., pero ¿realmente lo son?

Page 3: Computo Distribuído

¿Qué es un Sistema Distribuido (SD)?

• “Es una colección de computadoras independientes que aparecen ante los usuarios del sistema como una única computadora” [1] (Principio de transparencia)

• El objetivo de los SDs es descentralizar el cómputo basándose en el paradigma de “divide y vencerás”; logrando mayor eficacia, mayor tolerancia a fallos, seguridad, mayor velocidad, entre otros.*

Page 4: Computo Distribuído

¿Qué es un Sistema Distribuido (SD)?

• Para lograr la distribución del cómputo se necesitan de diversas entidades que puedan atender una determinada cantidad de procesos en un momento determinado.

• Según [2] la mayor problemática de los SDses la gran heterogeneidad tanto en software y en especial en hardware, ya que se necesita de mucho esfuerzo para lograr la transparencia.

Page 5: Computo Distribuído

Arquitecturas de cómputo

• Taxonomía de Flynn:– SISD (Single Instruction Single Data) Procesador

único.– SIMD (Single Instruction Multiple Data).

Procesadores vectoriales (multimedia)– MISD (Multipe Instruction Single Data). No

implementada

– MIMD Multiple Instruction Multiple Data. Cómputo distribuido

Page 6: Computo Distribuído

Cómputo Distribuido

• La distribución del cómputo puede realizarse de diversas formas de acuerdo a su grado de acoplamiento en: – Fuertemente acopladas: Multiprocesadores

(memoria compartida). UMA (Uniform MemoryAcces)

– Débilmente acopladas: Multicomputadoras(memoria privada). NUMA (Non Uniform MemoryAccess)

Page 7: Computo Distribuído

Sistemas multiprocesadores

• Son sistemas que tienen dos o más procesadores (CPU), comparten las misma memoria (espacio de direcciones).

• Los sistemas multinúcleos es la nueva tendencia en el desarrollo de sistemas multiprocesadores. En un solo chip se tienen varios procesadores (no es nada nuevo bajo el sol).

Page 8: Computo Distribuído

Tarjeta madre

Tarjeta madre

Sistemas multiprocesadores

CPU 1 CPU nCPU 2

Memoria

Modelo de n procesadores

CPU

N1 Nn

Memoria

Modelo de n núcleos

Page 9: Computo Distribuído

Sistemas multicomputadoras

• Son sistemas donde cada unidad de proceso es autónoma e independiente de las demás pero trabajan de manera conjunta.

• La interconexión de unidades de proceso se hace a través de redes de computadora de preferencia de altas velocidades.

• Este es el concepto más estandarizado de un SD.

Page 10: Computo Distribuído

Sistemas Distribuidos

• Generalmente están asociado al modelo cliente/servidor (c/s). Muchos servicios de Internet siguen este modelo: Web, e-mail, etc.

• En el modelo c/s, el proceso cliente realiza peticiones de procesamiento al proceso servidor, realizando éste último el trabajo pesado.

• Existen otros modelos como P2P (par a par), cluster y grid computing.

Page 11: Computo Distribuído

Sistemas Distribuidos

Cliente Servidor

Solicitud

Respuesta

Modelo Cliente/Servidor Tradicional

Cliente 1

Servidor

Modelo Cliente/Servidor Concurrente

ClienteProxy en el lado cliente

Modelo Cliente/Servidor de n capas

ClienteProxy en el lado

servidor

Cliente n

.

.

Page 12: Computo Distribuído

Sistemas Distribuidos

C1

C2

CnP2P

Simétrico

C0Coordinador

C1C2

Cn…

Cluster

Asimétrico

Planificador

CPU

MemoriaDisco

C1

Planificador

CPUMemoriaDISCO

C2

Planificador

CPUMEMORIA

DiscoCn

.

.

.

Grid computing

Page 13: Computo Distribuído

Tecnologías de Sistemas Distribuidos

• Sockets (API Berkeley, WinSocks) C, Java, etc.• RPC (Remote Procedure Call) C

• RMI (Remote Method Invocation) Java• DCOM (Distributed Component Object Model)

Propietario de Microsoft

• CORBA (Common Object Request Broker Architecture) C, C++, Java, etc

• .NET Remoting C#, C++, J#, etc.

• Servicios Web (SOA), XML (SOAP, WSDL, UDDI)

Page 14: Computo Distribuído

Sistemas Distribuidos

• P2P (Peer to Peer) los procesos son totalmente descentralizados, funcionan como clientes y servidores a la vez, existen diversas arquitecturas [3].

• Cluster es una agrupación de computadoras intercomunicadas entre sí a través de un nodo central y cuyo objetivo es realizar una tarea específica.

• Grid computing es muy parecido a P2P y al cluster.

Page 15: Computo Distribuído

Sistemas Distribuidos

• Grid computing se parece al cluster en que consisten en una asociación de computadoras con la única diferencia de que no existe un nodo centralizador. Estácaracterística lo asemeja a P2P [4].

• La idea del grid es que el poder de cómputo siempre esté presente a semejanza de la red eléctrica.

Page 16: Computo Distribuído

¿Es el cómputo paralelo un sistema distribuido?

• Sí y No. Depende de la implementación.

• Los objetivos de la programación en paralelo de acuerdo con [5] son: – Reducir el tiempo de procesamiento utilizado por

un algoritmo convencional

– Reducir la complejidad del algoritmo

Page 17: Computo Distribuído

Paralelismo

A B C D

A

B

C

D

P1

P2

P3

P4

Homoparalelismo

A B C D

A

B

C

D

P1

P2

P3

P4

Hetereoparalelismo

Page 18: Computo Distribuído

Paralelismo

• El problema del paralelismo radica en que muchos algoritmos no pueden paralelizarse(son serializable o secuenciales) [6].

• Existen dos tecnologías para realizar paralelismo:– PVM (Parallel Virtual Machine) [7]– MPI (Message Parking Interface) [8][9][10]

Page 19: Computo Distribuído

Algoritmo paralelosfor(int i = 0; i < 4; i++){

aleatorio(i); }

aleatorio(1) � micro1aleatorio(2) � micro2aleatorio(3) � micro3aleatorio(4) � en espera

• Compilador optimizado. Sistemas Operativos optimizados

Page 20: Computo Distribuído

Algoritmos paralelos

• Instrucciones como while son más difíciles de paralelizar por que depende de la condición.

• No siempre los compiladores pueden paralelizar de manera automática un algoritmo.

• En algunas ocasiones se invierte más tiempo tratando de paralelizar un algoritmo que ejecutándolo de manera secuencial.

Page 21: Computo Distribuído

Algoritmos paralelos//Procesador unofor( i=0; i<N/2; i++){

a[i]= c+i;}

//Procesador dosfor( ; i<N; i++){

a[i]= c+i;}

//Procesador unofor( i=0; i<N/2; i++){

a[i]= c+i;}

//Procesador dosfor( i = N/2; i<N; i++){

a[i]= c+i;}

Page 22: Computo Distribuído

Algoritmos paralelosA[0] = C;

//Procesador unofor( i=1; i<N/2; i++){a[i]= a[i-1]+1;

}

//Procesador 2for( i=N/2; i<N; i++){a[i]= a[i-1]+1;

}

• ¿Por qué no se puede paralelizar?

• Por que el segundo proceso depende del resultado del primero.

• Si se puede si se encuentra un algoritmo que permita encontrar el valor de a[N/2] directo.

∑=

2/N

Ci

i

Page 23: Computo Distribuído

Caso práctico MPI

• LAM/MPI, MPICH, MPICH2

• mpd –ncpus=procesadores &• mpdtrace -1

• mpicc holamundo.c –o holamundo• mpirun –np 10 ./holamnudo

Page 24: Computo Distribuído

Holamundo.c en MPI#include <stdio.h>#include “mpi.h”int main(int argc, char **argv){

int procesos, rango, tam;char nombre[MPI_MAX_PROCESSOR_NAME];MPI_Iinit (&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &procesos);MPI_Comm_rank(MPI_COMM_WORLD, &rango;MPI_Get_processor_name(nombre, &tam);MPI_barrier(MPI_COMM_WORLD);printf(“Hola, mudo!, soy %d de %d y me ejecuto en:%s\n”, rango, procesos, nombre);MPI_Finalize();return 0;

}

Page 25: Computo Distribuído

Esquema de un programa en MPIEsquema de un programa en MPI/*Cabecera de MPI*/#include <mpi.h>int main(int argc, char **argv){

int quiensoy, tamano;MPI_Status estado;/*Inicializamos MPI*/MPI_Init(&argc, &argv);/*Preguntamos quienes somos*/MPI_Comm_rank(MPI_COMM_WORLD, &quiensoy);

/*Nos esperamos hasta quetodos hayan inicializado MPI*/MPI_Barrier(MPI_COMM_WORLD);/*Preguntamos cuanto somos*/MPI_Comm_size(MPI_COMM_WORLD, &tamano);/*PROGRAMA*/

Page 26: Computo Distribuído

Esquema de un programa en MPIif(quiensoy == root){

/*Inicialización estrructuras repartidorReparte tareasEspera resultadosVisualiza resultados*/

}else{

/*recibe la tarearealiza cálculosmanda resultados*/

}/*Finaliza el programa*/MPI_Finalize();exit(0);

}

Page 27: Computo Distribuído

¿Existe un rendimiento extra al utilizar multiprocesadores?

• Las aplicaciones deben estar optimizadas para poder ejecutarse en diferentes procesadores.

• Algunos sistemas operativos permiten ejecutar hilos o procesos hijos en diversos procesadores

• El rendimiento no es del todo proporcional a la cantidad de procesadores (un sistema con 4 procesadores no es 4 veces mejor que un sistema de un solo procesador).

Page 28: Computo Distribuído

¿No existe cómputo distribuido en un único procesador?

• Formalmente no, se tiene el concepto de concurrencia y multitarea.

• En el pasado las computadoras sólo podían realizar una tarea a la vez. Existía mucho tiempo muerto al acceder recursos

• Se reparte el tiempo de CPU aparentando que varios procesos se ejecutan al mismo tiempo.

Page 29: Computo Distribuído

¿No existe cómputo distribuido en un único procesador?

• Se debe tomar en cuenta la comunicación interprocesos (IPC) el cual consiste de mecanismo para controlar los procesos que se ejecutan (sockets, semáforos, colas, etc.)

• Es posible ejecutar n procesos distribuidos en una sola computadora, ya que cada proceso tiene su propio espacio de direcciones y cuentan con una interfaz de red local.

Page 30: Computo Distribuído

Conclusiones

• SD es aquel cuyas entidades de procesamiento son autónomas, independientes, no comparten memoria y están interconectadas por una red de computadoras (pudiendo estar distribuidas geográficamente alrededor del mundo)

• Algunas tecnologías no son propiamente distribuidas. El uso de sistemas distribuidos y tecnologías afines va en amplio aumento.

Page 31: Computo Distribuído

¿Preguntas?

Page 32: Computo Distribuído

Referencias

• [1] A. Tanenbaum, “Sistemas Operativos Distribuidos”, Prentice Hall, México, 1996, pp. 617, ISBN: 0-13-219908-4

• [2] G. Colouris, et al., “Sistemas Distribuídos. Conceptos y Diseño”, tercera edición, PearsonAddison Wesley, Espana, 2005, pp. 726, ISBN: 84-7829-049-4

• [3] R. Millán, “Domine las redes P2P”, Alfaomega, México, 2006, ISBN: 970-15-1206-5, pp. 330.

Page 33: Computo Distribuído

Referencias

• [4] C. Pérez, “Oracel 10g. Administración y Análisis de Bases de Datos”, Alfaomega Ra-Ma, México, 2005, ISBN: 970-15-1102-6, pp. 671

• [5] G. Salazar y V. Ayala Ramírez, “Programación en paralelo en sistemas multiproceso”, VI CIECE, Morelia, Michoacán, México, 1996, pp. 279-285.

Page 34: Computo Distribuído

Referencias

• [6] R. Sedgewick, “Algoritmos en C++”, Pearson Educación, México, 2000, ISBN: 968-444-401-X, pp. 726.

• [7] M. Farías, P. Rayon y M. Lazo, “Programación paralela de un algoritmo para el cálculo de testores con PVM”, Temas selectos (selected works ) de investigaciñonC.I.C. 1997, pp. 118-125, ISBN: 970-18-3427-5

Page 35: Computo Distribuído

Referencias

• [8] S. Gómez, “Programación paralela(I)”, revista sólo programadores, año 12, segunda época, no. 135, España, pp. 54-60.

• [9] D. Santo, “Message Passing Interface(II) Configurando y compilando MPI”, revista Mundo Linux, año VIII, no. 90, pp. 42-47

• [10] D. Santo, “Message Passing Interface(III) Programando para MPI”, revista Mundo Linux, año VIII, no. 91, pp. 28-33.

Page 36: Computo Distribuído

Contacto

• E-mail: [email protected]• MSN: [email protected]• Skype: juancarlosolivares

• Instituto Tecnológico de Morelia• Departamento de Sistemas y Computación• Av. Tecnológico 1500 Col. Lomás de

Santiaguito• Morelia, Michoacán, México

Page 37: Computo Distribuído

Curriculum Vitae

• M.C. en Ciencias de la Computación, CENIDET 2006

• Ing. Sistemas Computacionales, I.T. Morelia

• Profesor tiempo parcial I.T. Morelia

• Profesor tiempo parcial UNID Morelia

• Áreas de investigación: Sistemas Distribuidos, Cómputo Móvil, Redes Inalámbricas, Base de Datos y Sistemas Empotrados.