"EXCLUSION MUTUA Y REGIONES CRITICAS"

CONCEPTO:

Se denomina sección crítica, en programación concurrente, a la porción de código de un programa de ordenador en la que se accede a un recurso compartido (estructura de datos o dispositivo) que no debe ser accedido por más de un proceso o hilo en ejecución.


Métodos que NO cumplen las 4 condiciones
de Exclusión Mutua

Desactivacion de interrupcio9nes .

Variables de cerradura

Alternancia estricta




¿Qué es la exclusión mutua (Mutual Exclusion)?

Es la garantía de que solo un proceso (o hilo) a la vez puede estar ejecutando su región crítica para un recurso compartido dado.
En otras palabras: si un proceso está dentro de su sección crítica, ningún otro proceso puede entrar a la suya (para el mismo recurso) hasta que el primero salga.
Requisitos que debe cumplir una buena solución de exclusión mutua
Cualquier mecanismo que intente resolver este problema debe cumplir (generalmente) estos 4 requisitos


Exclusión mutua
(Mutual Exclusion) A lo sumo un proceso está en su sección crítica en un momento dado.
Progreso (Progress) Si ningún proceso está en su sección crítica y hay procesos que quieren entrar, aalguno debe poder hacerlo (no se puede bloquear indefinidamente la decisión).
Espera acotada / Espera limitada (Bounded Waiting) No debe haber inanición (starvation): un proceso no debe esperar eternamente mientras otros entran repetidamente.
No suposiciones sobre velocidad relativa No debe depender de la velocidad de los procesos ni del número de procesadores (funciona en cualquier escenario).
Algunos autores agregan también ausencia de deadlock y que el tiempo en la sección crítica sea finito.
Ejemplos de mecanismos para lograr exclusión mutua
Soluciones hardware:
Deshabilitar interrupciones (solo útil en monoprocesador y por poco tiempo)
Instrucciones atómicas: test-and-set, compare-and-swap, fetch-and-add

Soluciones software (clásicas):
Algoritmo de Dekker (para 2 procesos)
Algoritmo de Peterson (más simple, para 2 procesos)
Algoritmo de panadería (para n procesos)
Soluciones del sistema operativo / lenguaje:
Semáforos (el más clásico, binario para exclusión mutua)
Mutex (literalmente "mutual exclusion")
Monitores (con variables de condición)
Regiones críticas declarativas (en algunos lenguajes como Ada o OpenMP)
Locks (spinlocks, reentrant locks, read-write locks)
Ejemplo muy simple (pseudocódigo con semáforo binario)
Python

semáforo mutex = 1   # Inicialmente 1 (libre)

proceso {
    mientras (verdadero) {
        # Sección no crítica
        
        wait(mutex)          # Entrar a región crítica (baja a 0)
        
        # === REGIÓN CRÍTICA ===
        # Acceso y modificación de recurso compartido
        # (solo un proceso a la vez aquí)
        
        signal(mutex)        # Salir de región crítica (sube a 1)
        
        # Sección no crítica
    }
}


CONCLUSION PERSONAL

La exclusión mutua no es solo un mecanismo técnico; es una lección filosófica sobre límites y responsabilidad. Nos obliga a reconocer que cuando varios "seres" (procesos/hilos) comparten algo valioso, alguien tiene que poner reglas estrictas o todo se desmorona. Y aun con las mejores reglas del mundo, siempre queda un riesgo residual que depende de la disciplina humana (o del compilador, en el caso de Rust).













:

Comments

Popular Posts