Please enable JavaScript.
Coggle requires JavaScript to display documents.
SINCRONIZACIÓN DE PROCESOS E HILOS - Coggle Diagram
SINCRONIZACIÓN DE PROCESOS E HILOS
¿QUÉ ES LA SICRONIZACIÓN?
Mecanismos que controlan el acceso concurrente a recursos compartidos.
Evitan errores como:
Condición de carrera
Inconsistencias de datos
Pérdida de actualizaciones
CONCURRENCIA
Pueden compartir recursos de hardware o software.
Requieren comunicación + sincronización.
Dos o más procesos/hilos ejecutándose al mismo tiempo (real o simulado).
Ejemplo:
Dos hilos que acceden al saldo de una cuenta bancaria al mismo tiempo.
SECCIÓN CRITICA
Parte del código donde se accede al recurso compartido.
Solo un proceso a la vez puede estar dentro.
Debe garantizar:
Exclusión mutua
Progreso
Espera limitada
OBJETIVOS DE LA SINCRONIZACIÓN
Control de acceso a recursos compartidos.
Asignación justa de recursos.
Orden correcto de ejecución (por ejemplo: P1 antes que P2).
PROBLEMAS COMUNES
Actualización perdida
Ocurre cuando varios procesos modifican una variable compartida sin control.
Saldo inicial: 2000
P1: retira 1000 → Saldo = 1000
P2: también retira 1000 → Saldo = 1000 (¡debería ser 0!)
ESQUEMAS DE LA SINCRONIZACIÓN
ESPERA ACTIVA
Consume CPU constantemente.
Código
while (condición); // Esperando turno
condición = true;
// Sección crítica
condición = false;
El proceso espera en bucle hasta poder entrar a la sección crítica.
ESPERA NO ACTIVA
El proceso se duerme si no puede entrar.
El SO lo despierta cuando es su turno.
No gasta CPU.
SEMÁFOROS (E. W. Dijkstra, 1965)
ESTRUCTURA DE CONTROL
struct S_Semaforo {
int valor;
Cola de PIDs;
}
SIGNAL(V):
Si hay procesos en espera, los despierta.
Si no, incrementa el valor del semáforo.
WAIT(P):
Si valor > 0, lo decrementa y entra.
Si valor == 0, duerme al proceso.