Вы находитесь на странице: 1из 27

Programación Concurrente

Distribuida y Paralela
Presentado Por:
Gineth Alexandra Correa
Introducción &
Contextualización Histórica
¿Qué es la concurrencia?
¿Qué es la concurrencia?
• En ciencias de la computación,
concurrencia es una propiedad de los
sistemas en la cual los procesos de un
cómputo se hacen simultáneamente,
y pueden interactuar entre ellos. Los
cálculos (operaciones) pueden ser
ejecutados en múltiples procesadores,
o ejecutados en procesadores
separados físicamente o virtualmente
en distintos hilos de ejecución.
Concepto de Programación Concurrente

• La computación concurrente es la
simultaneidad en la ejecución de
múltiples tareas interactivas. Estas
tareas pueden ser un conjunto de
procesos o hilos de ejecución creados por
un único programa. Las tareas se pueden
ejecutar en una sola unidad central de
proceso (multiprogramación), en varios
procesadores o en una red de
computadores distribuidos.
Algo de historia….
Hechos Importantes

• En los años 60 se producen cambios notorios en


varios campos de la informática.
• Se hizo posible el desarrollo del circuito integrado
• Se da el paso del uso de tarjetas perforadas a los
primeros lenguajes de programación como
FORTRAN y COBOL
La interrupción

• Este mecanismo de hardware que para


muchos resulta intuitivo hoy en día es el
que se encarga de interrumpir un
programa en ejecución y llevar el control
a otro lugar, es decir bifurcar el proceso
para delegar la tarea que se estaba
ejecutando.
¿Por Qué resulta esto una buena idea?

• Permite Utilizar los recursos físicos de


manera eficiente.
• Desacopla el proceso de cálculo a cargo
de los programas de su comunicación
con los periféricos
Un nuevo concepto, Nuevos Problemas

• La corrupción de datos compartidos.


• Interbloqueos.
• Inanición.
• No Determinismo.
¿Qué es la programación distribuida?
¿Qué es la programación distribuida?
• La programación distribuida es un
paradigma de programación enfocado
en desarrollar sistemas distribuidos,
abiertos, escalables, transparentes y
tolerantes a fallos. Este paradigma es
el resultado natural del uso de las
computadoras y las redes
¿Múltiples Procesadores, Un Nuevo Reto?
• Apenas establecidas reglas para
trabajar con la concurrencia como los
semáforos y monitores que veremos
más adelante se hacen necesarias
nuevas herramientas que permitieran
trabajar entre múltiples procesadores.
Procesos Secuenciales Comunicantes
(CSP)
• La comunicación en CSP propuesta por
Charles Antony Richard Hoare se realizaba
mediante un paso sincronizado de mensajes
llamado cita. La cita tan trivial como puede
resultar consistía en que fuese el proceso que
llegase primero de escritura o lectura
esperaría al otro.
Llamada Remota
• Llamada remota consiste una tarea servidora
que suministra varios procedimientos visibles,
a los que se denominó entradas, estas
entradas pueden ser llamadas por otras
tareas cliente. El concepto de cita se
mantiene pero ahora involucra mensajes en
dos direcciones así: una tarea A que
llamaremos tarea llamante, llama a B para
darle los parámetros necesarios para que
realice su tarea, luego la tarea B que
denominaremos tarea llamada hace un
llamado a la tarea llamante para devolver
posibles resultados.
Primeros Lenguajes
¿Qué es la programación paralela?
¿Qué es la programación paralela?
• La programación paralela es el uso de
varios procesadores trabajando en
conjunto para dar solución a una tarea
en común, lo que hacen es que se
dividen el trabajo y cada procesador
hace una porción del problema al
poder intercambiar datos por una red
de interconexión o a través de
memoria.
Objetivos de Este Paradigma
• Considera aspectos conceptuales y las
particularidades físicas de la computación
paralela.
• El objetivo de este tipo de programación es la
aceleración de los algoritmos, utilizando para
tal fin varios procesadores. Los procesadores
se usan como fuerza bruta de trabajo y
conviene tenerlos lo más cargados de este
que se pueda
Tipos de Problemas
• Predicción Meteorológica, Análisis de Imágenes, Simulación de semiconductores, Etc
Reducción de tiempo
• Si contamos con una máquina de
digamos k procesadores aplicando
las estrategias necesarias para
distribuir adecuadamente la tarea
entre los procesadores tendremos
como resultado en el mejor de los
casos una división de k sobre el
tiempo que toma resolver el
problema.
Algo de historia mas reciente
• La programación paralela inicia a
comienzos de los 70, evidentemente
de la mano de la posibilidad de
compartir información entre 2 o más
procesadores.
• Uno de los más famosos exponentes
de los primeros multiprocesadores
experimentales fue el ILLIAC IV,
desarrollado por Burroughs
Corporation.
Multicomputadores
• El primero Cosmic Cube desarrollado
por el Instituto Tecnológico de
California a comienzos de los 80.
• Para los 90 ya era posible hablar de
computadores masivamente paralelos
• A comienzos de los 90 surge el interés
por el desarrollo tanto de librerías
independientes de la arquitectura
como de lenguajes especialmente
diseñados para la programación
paralela.
Actualidad
• En la actualidad es posible unirse
desde el hogar donando potencia de
nuestros computadores de uso diario
a investigaciones científicas de talla
mundial, sobre problemas tan diversos
como la meteorología, inteligencia
artificial o la lucha contra el cáncer,
entre muchos otros.
Algunas Preguntas
• Ahora unas preguntas para evaluar si los conceptos han sido
claros.
• ¿Cuál es la ventaja de la concurrencia en los sistemas
monoprocesador?
• ¿Cuáles son las diferencias entre programación concurrente, paralela
y distribuida?
• ¿Cuáles son las diferencias entre multiprogramación, multiproceso y
procesamiento distribuido?
Bibliografía
De Euclides a Java: Historia de algoritmos y lenguajes de programación; Ricardo
Peña Mari; Capitulo 9: Más rápido todavía: La programación concurrente y paralela.

https://sites.google.com/a/unal.edu.co/mindlab/ MindLab Universidad Nacional

http://www.makeuseof.com/tag/10-ways-to-donate-your-cpu-time-to-science/
Maneras de apoyar investigación con un computador conectado a la red.

http://lsi.ugr.es/jmantas/pdp/teoria/descargas/PDP_Tema1_Introduccion.pdf

http://es.slideshare.net/rcostu/concurrencia-paralelismo

http://dis.um.es/~domingo/09/ERBASE/minicursoespanol.pdf

http://tic217.uca.es/ficheros/cap_1.pdf
!Gracias!

En el siguiente video se tratara el marco


teórico del paradigma de Programación
concurrente, distribuida y paralela