Ir al contenido principal

Motivación

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

Entradas populares de este blog

¿Qué es concurrencia?

En ciencias de la computación, concurrencia se refiere a la habilidad de distintas partes de un programa, algoritmo, o problema de ser ejecutado en desorden o en orden parcial, sin afectar el resultado final. También concurrente significa algo que se repite cada cierto tiempo en un mismo lugar.

Origen

La programación concurrente tiene sus raíces en los sistemas operativos. En los años 60’s se introdujeron en las computadoras dispositivos controladores independientes de entrada-salida llamados canales. La programación de sistemas con capacidades de concurrencia se hacía a bajo nivel, en ensamblador. Los pioneros en este campo fueron:  EdsgerWybe Dijkstra fue un científico de la computación de los Países Bajos. Per Brinch Hansen fue un informático danés-estadounidense conocido por la teoría de la programación concurrente. Charles Antony Richard Hoare también conocido familiarmente como Tony Hoare, es un científico británico en computación.

Programación Concurrente

Para definirla correctamente, debemos diferencias entre programa y proceso. ·          Programa: Conjunto de sentencias/instrucciones que se ejecutan secuencialmente. Se asemeja al concepto de clase dentro de la POO. Es por tanto un concepto estático. ·          Proceso : Básicamente, se puede definir como un programa en ejecución. Líneas de código en ejecución de manera dinámica. Se asemeja al concepto de objeto en POO.