Sistemas operativos

La concurrencia ocurre cuando varios procesos o hilos se ejecutan al mismo tiempo (o parecen hacerlo) y comparten recursos. 👉 El reto: coordinar su ejecución para evitar errores.


🔹 Problemas comunes de concurrencia

  1. Condiciones de carrera (race conditions)

    • Se producen cuando dos o más procesos acceden y modifican un recurso compartido al mismo tiempo, y el resultado depende del orden de ejecución.
    • Ejemplo: dos cajeros actualizando el saldo de la misma cuenta bancaria.
  2. Secciones críticas

    • Son fragmentos de código donde un proceso accede a un recurso compartido.
    • Si dos procesos entran a la vez en su sección crítica → error.
  3. Interbloqueo (deadlock)

    • Dos o más procesos quedan bloqueados esperando recursos que nunca se liberan.
    • Ejemplo: el proceso A tiene el recurso X y espera el recurso Y, mientras que el proceso B tiene el recurso Y y espera el recurso X.
  4. Inanición (starvation)

    • Un proceso nunca obtiene CPU o recursos porque otros de mayor prioridad siempre se adelantan.
  5. Bloqueo activo (busy waiting)

    • Un proceso espera ocupando CPU en lugar de quedar en pausa, desperdiciando recursos.

🔹 Mecanismos de sincronización

  1. Bloqueos (locks / mutexes)

    • Permiten que solo un proceso o hilo acceda a un recurso a la vez.
  2. Semáforos

    • Contadores que regulan el acceso a recursos con capacidad limitada.
    • Ejemplo: un semáforo en una base de datos permite que solo 5 usuarios abran conexiones simultáneas.
  3. Monitores

    • Abstracción de más alto nivel que combina bloqueo + variables de condición.
    • Muy usados en lenguajes de programación modernos (Java, C#).
  4. Variables de condición

    • Permiten que un proceso espere hasta que otro libere un recurso.

🔹 Ejemplo práctico

  • Banco con cuentas compartidas:

    1. Dos cajeros intentan actualizar la misma cuenta al mismo tiempo.
    2. Si no hay control, el saldo puede quedar mal calculado (condición de carrera).
    3. Solución: usar un mutex para que solo un cajero pueda modificar la cuenta a la vez.

📌 Resumen rápido

  • Concurrencia = varios procesos/hilos compartiendo recursos.
  • Problemas: condiciones de carrera, secciones críticas, deadlocks, inanición, busy waiting.
  • Soluciones: locks, semáforos, monitores, variables de condición.
  • Loading...