Píldora TAI XCVIII; Gestión de Concurrencia en Sistemas Operativos: Claves y Soluciones

📊 Problemas de Concurrencia y Gestión de Recursos en Sistemas Operativos

En los sistemas operativos, uno de los retos principales es gestionar la concurrencia, es decir, la ejecución simultánea de procesos que compiten por recursos compartidos (CPU, memoria, archivos, etc.). Esta entrada resume los problemas más comunes, las soluciones clásicas y otros conceptos clave como la hiperpaginación y la fragmentación de la memoria.


🔷 Problemas de Concurrencia

Condiciones de carrera

Ocurre cuando dos o más procesos acceden a un recurso compartido sin un control adecuado, y el resultado depende del orden de ejecución.

Inanición o aplazamiento indefinido

Un proceso nunca recibe los recursos que necesita porque otros procesos los acaparan continuamente.

Esperas circulares o interbloqueos (Deadlocks)

Situación en la que varios procesos esperan indefinidamente por recursos ocupados por otros procesos, formando un ciclo.


🔷 Condiciones para el Deadlock

Para que ocurra un deadlock deben cumplirse simultáneamente estas cuatro condiciones:

  1. No apropiación: un recurso no puede ser arrebatado a un proceso que lo tiene.
  2. Espera circular: cada proceso espera por un recurso ocupado por otro proceso, formando un ciclo.
  3. Espera indefinida: los procesos esperan indefinidamente.
  4. Exclusión mutua: el recurso sólo puede ser usado por un proceso a la vez.

🔷 Algoritmos Clásicos para Evitar Condiciones de Carrera

  • Algoritmo de Dekker y de Peterson: para dos procesos, garantizan que sólo uno entra a la sección crítica a la vez.
  • Técnicas de semáforos, monitores y algoritmos de exclusión mutua para más procesos.

🔷 Técnicas para Evitar el Deadlock

🔹 Prevención: impide que se cumpla al menos una de las cuatro condiciones.
🔹 Detección y recuperación: detecta el deadlock y toma medidas para resolverlo.
🔹 Evitación: usa algoritmos como el del banquero para asegurar que el sistema siempre esté en un estado seguro.


🖇️ Hiperpaginación (Thrashing)

Cuando la memoria virtual está mal administrada y se usa demasiado intercambio entre memoria principal y secundaria, el sistema pasa más tiempo moviendo páginas que ejecutando procesos.

🔷 ¿Cómo evitarla?

  • Incrementar la memoria RAM.
  • Reducir la carga del sistema.
  • Ajustar los algoritmos de reemplazo de páginas, aplicando el principio de localidad.

🔷 Fragmentación de la Memoria

📍 Fragmentación Interna

Cuando los bloques asignados son más grandes que el tamaño real de los datos. Genera espacios desaprovechados dentro de las particiones.

📍 Fragmentación Externa

Cuando quedan huecos pequeños entre bloques, insuficientes para nuevos procesos. Genera espacios externos dispersos a las particiones.


🌟 Resumen Visual

🖋️ Concepto📋 Descripción
Condiciones de carreraProcesos compiten sin control por recursos compartidos.
InaniciónUn proceso nunca accede a los recursos.
DeadlockCiclo de procesos esperando mutuamente.
Prevención del DeadlockAlgoritmos como el de Dekker, Peterson, o del banquero.
HiperpaginaciónSaturación por exceso de intercambio de páginas.
Fragmentación internaEspacios desperdiciados dentro de particiones.
Fragmentación externaEspacios dispersos y demasiado pequeños para ser usados eficientemente.

🎯 Claves para Administradores de Sistemas

✔ Diseñar mecanismos de sincronización adecuados.
✔ Monitorizar el uso de memoria y CPU.
✔ Implementar políticas de planificación justas y eficientes.
✔ Evitar cargas excesivas en el sistema.

Deja un comentario