Next: Hilos de Java
Up: Introducción
Previous: Implementación
Entre las ventajas de la programación concurrente/distribuida en relación
con el rendimiento se espera:
- que el programa se ejecute más rápido
- que el programa use los recursos de mejor manera, p.e., no
deje recursos disponibles sin uso durante mucho tiempo
- que el programa refleje o bien el modelo del problema real
o bien la propia realidad
Sin embargo, también existen desventajas:
- se pierde tiempo en sincronizar procesos y comunicar datos entre
ellos
- en el caso de multiplexación de procesos/hilos se pierde tiempo
en salvar información sobre el contexto
- los procesos pueden esperar a acciones de otros procesos, eso puede
resultar en un bloqueo (``deadlock'') de algún proceso, en el
peor caso se daría como resultado que no se produjera ningún progreso en
el programa
- los sistemas pueden ser mucho más heterógenos
- la fiabilidad y disponibilidad de los recursos es muy diferente
a un sistema secuencial
- hay que buscar estrategias eficientes para distribuir el trabajo entre
los diferentes procesadores
(``efficient load balancing'')
- hay que buscar estrategias eficientes para distribuir los datos entre
los diferentes procesadores
(``efficient data distribution'')
- en muchas situaciones hay que buscar un compromiso entre
tiempo de ejecución y uso de recursos
- el desarrollo de programas concurrentes es más complejo
que el desarrollo de programas secuenciales
- la depuración de programas concurrentes es muy difícil,
(por eso vale la pena de mantener una estricta disciplina en el
desarrollo de programas concurrentes y basar la implementación
en patrones de diseño bien estudiados)
Next: Hilos de Java
Up: Introducción
Previous: Implementación
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática