Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
La Programación Concurrente por Mind Map: La Programación Concurrente

1. Problema de la sección crítica

1.1. Cuando se tienen varios procesos cooperativos cada uno de ellos tiene una sección crítica donde se modifican datos comunes a todos los procesos.

1.2. Para garantizar que los procesos cooperan correctamente, cuando un proceso está ejecutando su sección crítica ningún otro proceso puede estar ejecutando código de su sección crítica.

1.3. La sección critica no tiene por que tener el mismo código para todos los procesos, solamente tienen en común que es donde se accede a los datos compartidos.

1.4. Un proceso puede tener más de una sección crítica si accede a varios datos compartidos diferentes.

2. Definición

2.1. ¿Qué es?

2.1.1. Es una colección de actividades (hilos) que pueden ejecutarse en paralelo y que cooperan para llevar una tarea en común.

2.1.1.1. Un hilo puede definirse como cada secuencia de control dentro de un proceso que ejecuta sus instrucciones de forma independiente

2.2. Programa y Proceso

2.2.1. Un Proceso es un programa en ejecución, es decir, un proceso es algo más que las líneas de código de un programa. Un proceso es algo dinámico.

2.2.2. Un programa es un conjunto de instrucciones. Es simplemente un texto que consiste en una secuencia de líneas de código que dicen qué hacer con un conjunto de datos de entrada para producir algún tipo de salida.

3. Diferencias

3.1. Programación secuencial

3.1.1. Especifica la ejecución de una secuencia de instrucciones que comprende el programa.

3.2. Computación concurrente

3.2.1. Es la simultaneidad en la ejecución de multiples tareas interactivas.

4. Ventajas

4.1. Eficiencia

4.1.1. Al disponer de múltiples actividades podrá concluir su trabajo de manera más rápida.

4.2. Escabilidad

4.2.1. Porque es capáz de gestionar adecuadamente cargas crecientes de trabajo o tiene la capacidad de adaptarse a dichas cargas.

4.3. Gestión de las comunicaciones

4.3.1. Cooperación entre sus actividades.

4.4. Flexibilidad

4.4.1. Se generarán aplicaciones flexibles y adaptables.

4.5. Menor hueco semántico

4.5.1. Diseño sencillo.

5. Desventajas

5.1. No es fácil de usar

5.1.1. Ya que es una programación delicada, en donde pueden surgir problemas derivados de la sincronización de las tareas.

5.1.1.1. Condiciones de carrera

5.1.1.1.1. Que puede generar inconsistencias imprevistas en el valor de las variables o atributos compartidos entre las actividades.

5.1.1.2. Interbloqueos

5.1.1.2.1. Producen que diversas actividades se bloqueén entre sí.

5.2. Depuración compleja

5.2.1. Ya que está compuesta por múltiples actividades estas pueden intercalar de diferentes maneras en cada ejecución de la sentencias que ejecutan cada una de sus actividades.

6. Arquitectura utilizada

6.1. Sistemas monoprocesador (1 solo procesador)

6.1.1. Es posible tener ejecución concurrente de procesos.

6.1.2. No todos los procesos se ejecutan al mismo tiempo, sólo uno de ellos lo estará haciendo, pero la sensación del usuario es de estar ejecutándose al mismo tiempo.

6.1.3. El SO va alternando el tiempo de procesador entre los distintos procesos → Multiprogramación

6.1.4. Todos los procesos comparten la misma memoria. La forma de sincronizar y comunicar es mediante el uso de variables compartidas.

6.2. Sistemas multiprocesador (más de un procesador)

6.2.1. Permiten que exista el paralelismo real, aunque la realidad es que siempre haya más procesos que procesadores.

6.2.1.1. Se clasifican en:

6.2.1.1.1. Fuertemente acopladas

6.2.1.1.2. Débilmente acopladas