4 Técnicas de programación concurrente¶
Técnicas de programación relacionadas con la computación concurrente¶
La programación concurrente es la disciplina que se encarga del estudio de las notaciones que permiten subdividir un programa en distintos procesos que se ejecuten concurrentemente en el sistema, así como las técnicas para resolver los problemas inherentes a la ejecución concurrente de éstos, que son básicamente comunicación y sincronización. Como puede intuirse, el trabajar con procesos concurrentes va a añadir complejidad a la tarea de programar.
La programación paralela es un tipo de programación concurrente en el que se crean programas especialmente diseñados para ejecutarse en sistemas con multiprocesamiento, esto es, en los que existen varios núcleos de procesamiento y éstos comparten memoria.
La programación distribuida es un tipo de programación concurrente en el que se crean programas especialmente diseñados para ejecutarse en sistemas de procesamiento distribuido, esto es, en los que existen varios núcleos de procesamiento que NO comparten memoria y están conectados en red.
Warning
Durante este curso estudiaremos la programación concurrente, y de manera muy somera la programación paralela. No trataremos nada sobre programación distribuida.
Interacción entre procesos concurrentes¶
En un sistema con multiprogramación, podemos distinguir los siguientes tipos básicos de interacción entre procesos concurrentes:
- Independientes: los procesos sólo interfieren en el uso de la CPU.
- Cooperantes: Un proceso genera la información o proporciona un servicio que otro necesita.
- Competidores: Procesos que necesitan usar los mismos recursos de forma exclusiva.
En el segundo y tercer caso, necesitamos componentes que nos permitan establecer acciones de sincronización y comunicación entre los procesos, de manera que los procesos sigan funcionando de forma correcta.