Profesor Miguel Cantillana
INS240 – Lenguajes de Programación
Ingeniería en Computación e Informática
Semestre 2017-1
Conceptos de Programación Concurrente
Definición: Se habla de concurrencia cuando ocurren varios sucesos de manera contemporánea.
En base a esto, la concurrencia en computación está asociada a la “ejecución” de varios procesos que coexisten temporalmente.
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.
La concurrencia aparece cuando dos o más procesos son contemporáneos. Un caso particular es el paralelismo (programación paralela).
Los procesos pueden “competir” o colaborar entre sí por los recursos del sistema. Por tanto, existen tareas de colaboración y sincronización.
La programación concurrente se encarga del estudio de las nociones de ejecución concurrente, así como sus problemas de comunicación y sincronización.
Proceso = Código de programa + Datos + Recursos
Un proceso tradicional, correspondiente a un programa
secuencial, es un proceso que posee un único hilo de control.
Un programa concurrente da lugar, durante su ejecución, a un proceso con varios hilos de ejecución.
La concurrencia software es un concepto lógico, no implica la existencia de paralelismo en el hardware:
concurrencia lógica que puede existir en el interior de un programa.
Los principales conceptos que debe incorporar un lenguaje de programación que soporte Concurrencia son: