SlideShare una empresa de Scribd logo
¿Qué es y qué no es un
sistema distribuido?
M.C. Juan Carlos Olivares Rojas
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?
¿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.*
¿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 SDs
es la gran heterogeneidad tanto en software y
en especial en hardware, ya que se necesita
de mucho esfuerzo para lograr la
transparencia.
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
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 Memory
Acces)
– Débilmente acopladas: Multicomputadoras
(memoria privada). NUMA (Non Uniform Memory
Access)
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).
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
…
…
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.
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.
Sistemas Distribuidos
Cliente Servidor
Solicitud
Respuesta
Modelo Cliente/Servidor Tradicional
Cliente 1
Servidor
Modelo Cliente/Servidor Concurrente
Cliente
Proxy en
el lado
cliente
Modelo Cliente/Servidor de n capas
Cliente
Proxy en
el lado
servidor
Cliente n
.
.
Sistemas Distribuidos
C1
C2
Cn
P2P
Simétrico
C0
Coordinador
C1
C2
Cn…
Cluster
Asimétrico
Planificador
CPU
Memoria
Disco
C1
Planificador
CPU
Memoria
DISCO
C2
Planificador
CPU
MEMORIA
Disco
Cn
.
.
.
Grid computing
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)
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.
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.
¿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
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
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]
Algoritmo paralelos
for(int i = 0; i < 4; i++)
{
aleatorio(i);
}
aleatorio(1) micro1
aleatorio(2) micro2
aleatorio(3) micro3
aleatorio(4) en espera
• Compilador optimizado. Sistemas Operativos
optimizados
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.
Algoritmos paralelos
//Procesador uno
for( i=0; i<N/2; i++)
{
a[i]= c+i;
}
//Procesador dos
for( ; i<N; i++)
{
a[i]= c+i;
}
//Procesador uno
for( i=0; i<N/2; i++)
{
a[i]= c+i;
}
//Procesador dos
for( i = N/2; i<N; i++)
{
a[i]= c+i;
}
Algoritmos paralelos
A[0] = C;
//Procesador uno
for( i=1; i<N/2; i++)
{
a[i]= a[i-1]+1;
}
//Procesador 2
for( 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
Caso práctico MPI
• LAM/MPI, MPICH, MPICH2
• mpd –ncpus=procesadores &
• mpdtrace -1
• mpicc holamundo.c –o holamundo
• mpirun –np 10 ./holamnudo
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:%sn”, rango,
procesos, nombre);
MPI_Finalize();
return 0;
}
Esquema de un programa en MPI
Esquema 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*/
Esquema de un programa en MPI
if(quiensoy == root)
{
/*Inicialización estrructuras repartidor
Reparte tareas
Espera resultados
Visualiza resultados*/
}
else
{
/*recibe la tarea
realiza cálculos
manda resultados*/
}
/*Finaliza el programa*/
MPI_Finalize();
exit(0);
}
¿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).
¿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.
¿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.
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.
¿Preguntas?
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, Pearson
Addison 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.
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.
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ñon
C.I.C. 1997, pp. 118-125, ISBN: 970-18-
3427-5
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.
Contacto
• E-mail: jcolivar@itmorelia.edu.mx
• MSN: juancarlosolivares@hotmail.com
• 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
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.

Más contenido relacionado

PPTX
Modelos de arquitecturas de computadoras
PPTX
Funciones de administracion de memoria
PPTX
Unidad 3 administracion de la memoria
PDF
Diagrama de bloques de un computador
PPTX
Administración de procesos y del procesador
PPTX
administracion de entrada, salida y procesos
PPTX
Administración de memoria el linux
PDF
Tema 4: Procesamiento paralelo.
Modelos de arquitecturas de computadoras
Funciones de administracion de memoria
Unidad 3 administracion de la memoria
Diagrama de bloques de un computador
Administración de procesos y del procesador
administracion de entrada, salida y procesos
Administración de memoria el linux
Tema 4: Procesamiento paralelo.

La actualidad más candente (20)

PPTX
Segmentacion de memoria
PPTX
MEMORIA VIRTUAL
PPTX
Sistemas operativos distribuidos
DOCX
Protocolos, estandares y tipos de modem
PDF
Tema 10: Evaluación perezosa en Haskell
DOCX
Unidad 6 Protección y seguridad.
PPTX
Sistemas operativos distribuidos y sistemas distribuidos
PPTX
Tema manejo de la entrada
PPTX
Algoritmo de planificación srt
DOCX
control de concurrencia
PPTX
Control de Flujo [Telecomunicaciones]
PPTX
Sistemas paralelos vs distribuidos
PDF
Arquitectura Del Computador
PDF
Gestion de Memoria
PDF
Tipos de memorias para microprocesadores
PPTX
Gestion de memoria en windows
PPTX
Manejo de los procesos en los sistemas operativos
DOC
Historia del modelo osi
PPTX
Gestion del almacenamiento secundario
PPTX
Introducción a la arquitectura de computadores
Segmentacion de memoria
MEMORIA VIRTUAL
Sistemas operativos distribuidos
Protocolos, estandares y tipos de modem
Tema 10: Evaluación perezosa en Haskell
Unidad 6 Protección y seguridad.
Sistemas operativos distribuidos y sistemas distribuidos
Tema manejo de la entrada
Algoritmo de planificación srt
control de concurrencia
Control de Flujo [Telecomunicaciones]
Sistemas paralelos vs distribuidos
Arquitectura Del Computador
Gestion de Memoria
Tipos de memorias para microprocesadores
Gestion de memoria en windows
Manejo de los procesos en los sistemas operativos
Historia del modelo osi
Gestion del almacenamiento secundario
Introducción a la arquitectura de computadores
Publicidad

Destacado (20)

PPT
Algoritmos paralelos
PPTX
3. diseño de bases de datos distribuidas
PPTX
Clase 1 herramientas tecnologicas
PPTX
redes sociales importantes
PPTX
Servicios que ofrece Facebook
PDF
Cluster beowulf javier condori flores
PPS
Ce que vous avez toujours voulu...
PDF
Aumentar el engagement del usuario y reducir la tasa de rebote (2013)
PPT
Presentation de Monique Romon
PPS
FELIZ NAVIDAD
ODP
Paquete de innovacion academica
PPT
Cápsulas Regionales 1
PPT
DíA Del Maestro
PPS
Foiegras
PPT
Neurocoaching Practico - Hacernos Cargo
PDF
Rescate Proyecto Divino
PPT
Google apps mayo 2011
PPT
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
PPS
Bisous
PPSX
Désarmement nucléaire
Algoritmos paralelos
3. diseño de bases de datos distribuidas
Clase 1 herramientas tecnologicas
redes sociales importantes
Servicios que ofrece Facebook
Cluster beowulf javier condori flores
Ce que vous avez toujours voulu...
Aumentar el engagement del usuario y reducir la tasa de rebote (2013)
Presentation de Monique Romon
FELIZ NAVIDAD
Paquete de innovacion academica
Cápsulas Regionales 1
DíA Del Maestro
Foiegras
Neurocoaching Practico - Hacernos Cargo
Rescate Proyecto Divino
Google apps mayo 2011
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
Bisous
Désarmement nucléaire
Publicidad

Similar a Computo Distribuído (20)

PDF
Sistemas distribuidos en computación aplicación
DOCX
PPTX
Categorias sistemas operativos
PDF
Sistemas distribuidos
PPT
SISTEMAS DISTRIBUIDOS INFORMATICA EN SISTEMAS
PPT
SISTEMAS DISTRIBUIDOS PARA EDUCACION EN INGENIERIA
DOC
Apuntes de-sistemas-operativos-ii-e2
PDF
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
PDF
INTRODUCCION A SISTEMAS OPERATIVOS
PDF
01-Conceptos_Basicos.pdf
PPTX
Presentacion sistemas operativos
PDF
S. o. 2 unidad 1
PDF
UNIDAD 1: SISTEMAS OPERATIVOS EN AMBIENTES DISTRIBUIDOS
DOCX
S.O. 2 UNIDAD 1
PPTX
DOCX
Sistemas operativos 2
PDF
Unidad I
PPTX
Presentacion sistemas operativos
Sistemas distribuidos en computación aplicación
Categorias sistemas operativos
Sistemas distribuidos
SISTEMAS DISTRIBUIDOS INFORMATICA EN SISTEMAS
SISTEMAS DISTRIBUIDOS PARA EDUCACION EN INGENIERIA
Apuntes de-sistemas-operativos-ii-e2
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
INTRODUCCION A SISTEMAS OPERATIVOS
01-Conceptos_Basicos.pdf
Presentacion sistemas operativos
S. o. 2 unidad 1
UNIDAD 1: SISTEMAS OPERATIVOS EN AMBIENTES DISTRIBUIDOS
S.O. 2 UNIDAD 1
Sistemas operativos 2
Unidad I
Presentacion sistemas operativos

Más de Juan Carlos Olivares Rojas (20)

PPTX
PPTX
Ropec20neural stick
PPTX
Analítica de Datos usando Single Board Computers
PPTX
Analitica de Datos en Dispositivos de Internet de las Cosas
PPTX
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
PPTX
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
PPTX
Analítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
PPTX
Propuesta de Mercado Eléctrico Minorista Transactivo en México
PPTX
Cyber Security on Transactions in Smart Metering Systems usign Blockchain
PPTX
A Survey on Smart Metering Systems using Blockchain for E-mobility
PPTX
Detección de Movimiento usando Medidores Inteligentes
PPTX
A Survey on Smart Metering Systems using Human-Computer Interaction
PPTX
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
PPTX
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
PPTX
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
PPTX
Internet de las Cosas en Redes Eléctricas Inteligentes
PPTX
Estrategias didacticas
PDF
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
PPTX
Ciber Seguridad en Redes Eléctricas Inteligentes
PPTX
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...
Ropec20neural stick
Analítica de Datos usando Single Board Computers
Analitica de Datos en Dispositivos de Internet de las Cosas
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
Analítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
Propuesta de Mercado Eléctrico Minorista Transactivo en México
Cyber Security on Transactions in Smart Metering Systems usign Blockchain
A Survey on Smart Metering Systems using Blockchain for E-mobility
Detección de Movimiento usando Medidores Inteligentes
A Survey on Smart Metering Systems using Human-Computer Interaction
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
Internet de las Cosas en Redes Eléctricas Inteligentes
Estrategias didacticas
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
Ciber Seguridad en Redes Eléctricas Inteligentes
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...

Último (11)

PPTX
Guia de power bi de cero a avanzado detallado
PPTX
tema-2-interes-.pptx44444444444444444444
PDF
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
PPTX
presentacion_energias_renovables_renovable_.pptx
PDF
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
PDF
Herramientaa de google google keep, maps.pdf
PPT
laser seguridad a la salud humana de piel y vision en laser clase 4
PPTX
Presentación de un estudio de empresa pp
PPTX
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
PDF
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
PDF
Mesopotamia y Egipto.pptx.pdf historia universal
Guia de power bi de cero a avanzado detallado
tema-2-interes-.pptx44444444444444444444
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
presentacion_energias_renovables_renovable_.pptx
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
Herramientaa de google google keep, maps.pdf
laser seguridad a la salud humana de piel y vision en laser clase 4
Presentación de un estudio de empresa pp
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
Mesopotamia y Egipto.pptx.pdf historia universal

Computo Distribuído

  • 1. ¿Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas
  • 2. 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?
  • 3. ¿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.*
  • 4. ¿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 SDs es la gran heterogeneidad tanto en software y en especial en hardware, ya que se necesita de mucho esfuerzo para lograr la transparencia.
  • 5. 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
  • 6. 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 Memory Acces) – Débilmente acopladas: Multicomputadoras (memoria privada). NUMA (Non Uniform Memory Access)
  • 7. 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).
  • 8. 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 … …
  • 9. 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.
  • 10. 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.
  • 11. Sistemas Distribuidos Cliente Servidor Solicitud Respuesta Modelo Cliente/Servidor Tradicional Cliente 1 Servidor Modelo Cliente/Servidor Concurrente Cliente Proxy en el lado cliente Modelo Cliente/Servidor de n capas Cliente Proxy en el lado servidor Cliente n . .
  • 13. 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)
  • 14. 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.
  • 15. 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.
  • 16. ¿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
  • 17. 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
  • 18. 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]
  • 19. Algoritmo paralelos for(int i = 0; i < 4; i++) { aleatorio(i); } aleatorio(1) micro1 aleatorio(2) micro2 aleatorio(3) micro3 aleatorio(4) en espera • Compilador optimizado. Sistemas Operativos optimizados
  • 20. 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.
  • 21. Algoritmos paralelos //Procesador uno for( i=0; i<N/2; i++) { a[i]= c+i; } //Procesador dos for( ; i<N; i++) { a[i]= c+i; } //Procesador uno for( i=0; i<N/2; i++) { a[i]= c+i; } //Procesador dos for( i = N/2; i<N; i++) { a[i]= c+i; }
  • 22. Algoritmos paralelos A[0] = C; //Procesador uno for( i=1; i<N/2; i++) { a[i]= a[i-1]+1; } //Procesador 2 for( 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
  • 23. Caso práctico MPI • LAM/MPI, MPICH, MPICH2 • mpd –ncpus=procesadores & • mpdtrace -1 • mpicc holamundo.c –o holamundo • mpirun –np 10 ./holamnudo
  • 24. 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:%sn”, rango, procesos, nombre); MPI_Finalize(); return 0; }
  • 25. Esquema de un programa en MPI Esquema 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*/
  • 26. Esquema de un programa en MPI if(quiensoy == root) { /*Inicialización estrructuras repartidor Reparte tareas Espera resultados Visualiza resultados*/ } else { /*recibe la tarea realiza cálculos manda resultados*/ } /*Finaliza el programa*/ MPI_Finalize(); exit(0); }
  • 27. ¿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).
  • 28. ¿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.
  • 29. ¿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.
  • 30. 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.
  • 32. 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, Pearson Addison 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.
  • 33. 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.
  • 34. 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ñon C.I.C. 1997, pp. 118-125, ISBN: 970-18- 3427-5
  • 35. 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.
  • 36. Contacto • E-mail: jcolivar@itmorelia.edu.mx • MSN: juancarlosolivares@hotmail.com • 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
  • 37. 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.