03-M03-Programacion concurrente.pdf
(
1124 KB
)
Pobierz
Programación
concurrente
Josep Jorba Esteve
Remo Suppi Boldrito
P07/M2106/02841
© FUOC
• P07/M2106/02841
2
Programación concurrente
© FUOC
• P07/M2106/02841
Programación concurrente
Índice
Introducción
.............................................................................................. 5
Objetivos
..................................................................................................... 7
1. Conceptos y definiciones
................................................................... 9
1.1. Ámbitos de computación concurrente ............................................. 11
1.2. Cómputo científico .......................................................................... 12
1.3. Soporte de la programación concurrente
a los sistemas distribuidos ................................................................ 15
2. Clasificaciones arquitecturales
....................................................... 17
2.1. Taxonomía de Flynn ........................................................................ 17
2.2. Por control y comunicación ............................................................. 19
2.3.
Clusters
y
grid
.................................................................................... 21
3. Descomposición de problemas
......................................................... 24
3.1. Una metodología básica ................................................................... 24
3.2. Modelos de descomposición ............................................................ 26
3.2.1. Memoria compartida ............................................................. 26
3.2.2. Paralelismo de datos .............................................................. 27
3.2.3. Paso de mensajes ................................................................... 28
3.3. Estructuras de programación ............................................................. 29
3.3.1.
Master-worker
......................................................................... 30
3.3.2. SPMD ..................................................................................... 30
3.3.3.
Pipelining
................................................................................ 31
3.3.4.
Divide and conquer
.................................................................. 31
3.3.5. Paralelismo especulativo ....................................................... 31
4. Modelos de Interacción
...................................................................... 32
4.1. Cliente-servidor ................................................................................ 33
4.2. Servicios multiservidor y grupos ...................................................... 39
4.3. Arquitecturas basadas en mensajes .................................................. 43
4.4. Servidores
proxy
................................................................................ 45
4.5. Código móvil .................................................................................... 46
4.6. Procesamiento
peer-to-peer
................................................................ 48
4.7. Arquitecturas orientadas a servicios ................................................. 51
5. Paradigmas de programación...........................................................
54
5.1. Paso de mensajes .............................................................................. 55
5.1.1. Ejemplos de programación ................................................... 58
5.1.2.
Message-oriented middleware
(MOM) ...................................... 61
5.2. RPC ................................................................................................... 62
© FUOC
• P07/M2106/02841
Programación concurrente
5.2.1. Ejemplos de programación ................................................... 63
5.3. Memoria compartida. Modelos de hilos (threading). ....................... 65
5.3.1. MultiThreading ..................................................................... 65
5.3.2. OpenMP ................................................................................. 69
5.4. Objetos distribuidos ......................................................................... 72
5.5. Modelos de componentes ................................................................ 78
5.5.1. Java Beans .............................................................................. 79
5.6.
Web Services
...................................................................................... 82
5.6.1. Un ejemplo de programación con JAX-WS .......................... 83
6. Casos de uso: paradigmas y complejidad
...................................... 89
6.1. Algoritmo Merge Bitonic .................................................................. 91
6.2. Algoritmo de la burbuja .................................................................... 92
6.3. Algoritmo Radix................................................................................. 93
6.4. Conclusiones .................................................................................... 94
Glosario
..................................................................................................... 97
Bibliografía
.............................................................................................. 99
© FUOC
• P07/M2106/02841
5
Programación concurrente
Introducción
Como consecuencia del rápido desarrollo de Internet, la programación distri-
buida está haciéndose rápidamente popular día a día. Internet provee de los
primeros mecanismos básicos para una infraestructura global en las aplicacio-
nes distribuidas, un espacio de nombres global (basado en las URL) y protoco-
los de comunicación globales (TCP/IP). La mayoría de las plataformas de
sistemas distribuidos toman esta base para poder implementar diferentes mo-
delos de aplicaciones y de sus usos.
Por otro lado, cuando generalizamos hacia el concepto de concurrencia, como
habilidad de ejecutar múltiples actividades en paralelo o simultáneas, introdu-
cimos diferentes tipos de programación, como la paralela, la distribuida y la
de memoria compartida. El conjunto de las cuales (lo denominaremos
progra-
mación concurrente)
se aplica en mayor o menor medida a diferentes sistemas
distribuidos según el ámbito de aplicación.
En cuanto examinamos la programación concurrente, nos damos cuenta
de su importancia actual, y de la prospección de futuro que tiene, ya sea
desde el desarrollo de Internet y sus aplicaciones, o desde el nuevo hard-
ware de las CPU (por ejemplo, en la forma de
multicores),
que nos introdu-
cirá la programación concurrente como un elemento básico para todo
desarrollador de aplicaciones.
Los ambientes donde se desarrolla la programación concurrente, ya sea hoy
o en un futuro próximo, están incrementándose paulatinamente, desde las
ya mencionadas CPU
multicore,
y las tarjetas gráficas con sus procesadores
concurrentes (y en este sentido, el campo del software en la programación
de videojuegos), a las redes inalámbricas, y/o redes de sensores trabajando coo-
perativamente, pasando a las aplicaciones a nivel Internet, con los sistemas de
compartición de información basados en mecanismos
peer-to-peer
(P2P).
También son aplicables a los diferentes ámbitos de aplicación, ya sean cien-
tíficos (principalmente con computación en cluster,
grid,
o mediante hard-
ware de máquinas paralelas o supercomputación) o en ambientes
empresariales mediante diferentes arquitecturas por capas, y/o basadas en
componentes o invocación remota de objetos, mediante las diferentes ar-
quitecturas software empresariales.
La evolución de los sistemas distribuidos en los diferentes modelos arquitec-
turales ha creado un gran conjunto de posibilidades para la programación
concurrente, que ha hecho surgir un gran número de paradigmas de progra-
mación.
Plik z chomika:
Teemu1.huusko
Inne pliki z tego folderu:
128_programmers_guide.pdf
(37583 KB)
128_machine_language_for_beginners.pdf
(34657 KB)
1001_things_to_do_with_your_commodore_128.pdf
(24107 KB)
18 Juegos Dinamicos Para Tu MSX.pdf
(21861 KB)
00-P-Aspectos avanzados de seguridad en redes.pdf
(4221 KB)
Inne foldery tego chomika:
#AmiCoders
#demoescena
#Scenelounge
16-Bits Of Lucky
19-21.07 DiHalt 2024 Camping
Zgłoś jeśli
naruszono regulamin