Next: Implementación
Up: Aplicación
Previous: Recursos
Existen ejemplos de problemas que por su naturaleza deben diseñarse
como programas concurrentes:
- sistemas operativos
- soportar operaciones casi-paralelas
- proveer servicios a varios usuarios a la vez
(sistemas multi-usuario, sin largos tiempos de espera)
- gestionar recursos compartidos (p.e., sistemas de ficheros)
- reaccionar a eventos no predeterminados
- sistemas de tiempo real
- necesidad de cumplir restricciones temporales
- reaccionar a eventos no predeterminados
- sistemas de simulación
- el sistema por simular ya dispone de modulos que funcionan
en forma concurrente
- el flujo del control no sigue un patrón secuencial
- sistema de reservas y compra (``booking systems'')
- las aplicaciones se ejecutan en diferentes lugares
- sistemas de transacciones
- se tiene que esperar la terminación de una transacción
antes de poner en marcha la siguiente
- varias transacciones en espera pueden compartir el mismo recurso
por ser ejecutado con diferentes prioridades
- controladores de tráfico aéreo
- el sistema tiene que estimar el futuro próximo sin perder
la capacidad de reaccionar rápidamente a cambios bruscos
- sistemas de comunicación (p.e. la internet)
- la interfaz al usuario requiere un alto nivel de disponibilidad
y controlabilidad
- en la época de la comunicación digital, todos queremos
usar la red (o bién alámbrica o bién inalámbrica) al mismo
tiempo sin notar que habrá más gente con las mismas
ambiciones
- queremos ``aprovechar'' del otro lado para acceder/intercambiar
información (p.e. documentos multimedia)
y acción (p.e. juegos sobre la red, juegos distribuidos)
- se quiere incorporar los dispositivos distribuidos para
realizar cálculos complejos (SETI) o controles remotos (casa
inteligente)
- sistemas tolerantes a fallos
- se vigila de forma concurrente el funcionamiento correcto
de otra aplicación
- servicios distribuidos
- varios clientes pueden conectarse a un servidor que
les gestiona cierta petición
- el sistema puede ser más complejo, p.e. incluyendo delegación
de servicios
En particular, resultará escencial el desarrollo de un programa
concurrente cuando la concurrencia de activades es un aspecto interno
del problema a resolver.
Programadores modernos tienen que saber cómo escribir programas
que manejan multiples procesos.
Hoy dia existen muchos APIs de tipo ``middleware'' que facilitan
el desarrollo de aplicaciones distribuidas, p.e. JavaRMI, CORBA,
JINI etc.
Dichos entornos de desarrollo mantienen muchos detalles al márgen
del programador (y del usuario), es decir, se usa las capas
bajas de forma transparente (p.e. protocolos fiables de comunicación,
iniciación de procesos remotos etc.).
Next: Implementación
Up: Aplicación
Previous: Recursos
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática