La motivación de la programación concurrente surge por la necesidad de realizar aplicaciones de tiempo real, por la aparición del paradigma de programación orientada a objetos, por la naturaleza concurrente de los problemas reales que hay que resolver (sistemas operativos, GUIs, operaciones de entrada y salida, sistemas multimedia, control de sistemas físicos etc.) y por la arquitectura hardware con muchos núcleos de computación distribuidos que deben ser aprovechados de forma eficiente.
Un programa se compone de sentencias y la línea de flujo de control (i.e thread) que establece el orden en el que se ejecutan las sentencias. Según el número de líneas de flujo de control y los requerimientos temporales un programa puede ser secuencial, concurrente o de tiempo real. Los programas concurrentes tienen varias líneas de flujo de control. Las sentencias no se ejecutan con un orden estricto, la secuencia de sentencias se suceden entre puntos de sincronización (con o sin intercambio de datos) La situación se puede describir como un conjunto de procesos que colaboran y/o compiten entre sí por los recursos de computación y comunicación. Todo esto dificulta enormemente la verificación de tales programas (en comparación un programa secuencial con un orden estricto de ejecución de sentencias en donde el tiempo de ejecución de cada sentencia no influye en el resultado la verificación es más sencilla).
Comentarios
Publicar un comentario