Diferencias entre Paralelismo y Concurrencia: Sincronización y Exclusión Mutua

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,65 KB

¿Qué es el Paralelismo?

El paralelismo es la ejecución simultánea de varias actividades o procesos en múltiples procesadores. También puede referirse a un solo procesador que actúa sobre varias instrucciones simultáneas (paralelismo a nivel de instrucción).

Características de la simultaneidad:

  • Secuencial en el tiempo (a microescala): En un único núcleo, las tareas se alternan tan rápidamente que parecen simultáneas.
  • Simultáneo real (a macroescala): En sistemas multinúcleo, las tareas se ejecutan verdaderamente al mismo tiempo.

¿Qué es la Concurrencia?

En informática, la concurrencia es la existencia y gestión de varios procesos o actividades que progresan a lo largo del tiempo. Es un concepto fundamentalmente lógico que se ocupa de manejar múltiples tareas a la vez, las cuales pueden o no ejecutarse en paralelo.

Los procesos o actividades concurrentes deben tener una relación entre sí:

  • De cooperación: Colaboran para alcanzar un objetivo común.
  • De competencia: Compiten por recursos, como el uso de información compartida.

El funcionamiento de un proceso puede interferir en el de otro, lo que hace necesaria la sincronización.

¿Dónde se encuentra la concurrencia?

  • En la naturaleza: Muchos problemas que se modelan computacionalmente son inherentemente concurrentes (por ejemplo, sistemas biológicos, simulaciones económicas).
  • En el hardware: La propia herramienta para solucionar el problema es concurrente.
    • Ejecución paralela de instrucciones.
    • Funcionamiento paralelo de los periféricos (ej. acceso directo a memoria).
    • Sistemas con múltiples procesadores.
    • Sistemas distribuidos.

Paralelismo vs. Concurrencia

El paralelismo puede considerarse un caso particular de la concurrencia. La concurrencia es la gestión de múltiples tareas a la vez, mientras que el paralelismo es la ejecución de múltiples tareas a la vez.

Se habla específicamente de paralelismo cuando ocurre la ejecución simultánea real de instrucciones, lo que implica:

  • Arquitecturas paralelas.
  • Procesamiento paralelo.
  • Algoritmos paralelos.
  • Programación paralela.

Sincronización de Procesos

Para evitar problemas de inconsistencias de datos y otros errores en la concurrencia, se deben sincronizar los procesos. La sincronización coordina la ejecución de procesos concurrentes que comparten recursos para garantizar la consistencia.

Exclusión Mutua

Una forma fundamental de sincronización es la exclusión mutua. Se refiere a la condición por la cual, si un proceso está ejecutando una operación sobre un recurso compartido, ningún otro proceso puede acceder a ese mismo recurso hasta que el primero haya terminado.

Asociado a la exclusión mutua, nace el concepto de sección crítica.

Sección Crítica

Una sección crítica es la zona del código de un proceso donde se accede a recursos compartidos y que, por tanto, no puede ser ejecutada por más de un proceso a la vez.

El Problema de la Sección Crítica

El problema surge cuando varios procesos tienen una estructura como la siguiente y compiten por entrar en su sección crítica:

loop {
   // --- Comienzo de región crítica ---
   SecciónCrítica();
   // --- Fin de región crítica ---

   SecciónNoCrítica();
}

Mecanismos para Asegurar la Exclusión Mutua

Existen diversos algoritmos y mecanismos para garantizar la exclusión mutua, que se pueden clasificar en varias categorías.

1. Espera Activa (Busy-Waiting)

Establece la espera para entrar a la sección crítica mediante una iteración (bucle) que comprueba continuamente una condición. El proceso no se bloquea, sino que consume ciclos de CPU mientras espera.

  • Ventaja: Respuesta inmediata cuando el recurso se libera.
  • Desventaja: Son algoritmos que sobrecargan el sistema al desperdiciar tiempo de procesador.

Ejemplos de algoritmos con espera activa:

  • Espera con mutex: Utiliza una variable compartida (switch o cerrojo) para indicar si la sección crítica está ocupada.
  • Alternancia estricta: Utiliza una variable de turno para alternar el acceso.
  • Algoritmo de Dekker: Utiliza una tabla de indicadores lógicos y una variable de turno.

2. Espera no Activa o Pasiva (Blocking)

Establece la espera bloqueando el proceso hasta que se cumpla una condición. El sistema operativo lo mueve a una cola de procesos bloqueados y lo "despierta" cuando puede continuar.

  • Ventaja: No compite por el procesador mientras espera, liberando recursos para otras tareas.
  • Desventaja: Mayor sobrecarga por el cambio de contexto que gestiona el sistema operativo.

Ejemplos de mecanismos con espera no activa:

  • Semáforos
  • Regiones críticas monitorizadas (Monitores)
  • Contadores de eventos
  • Paso de mensajes

3. Mecanismos de Hardware

Instrucciones especiales a nivel de procesador que garantizan la atomicidad (indivisibilidad) de una operación, sirviendo de base para implementar los mecanismos anteriores de forma eficiente.

Entradas relacionadas: