Sistemas Operativos · UADE · 2° cuat. 2026 · Prof. Jorge Pereyra

Sincronización
de Procesos
& Planificación CPU

Laboratorio interactivo de la Clase 4: condiciones de carrera, mutex, semáforos, interbloqueos y los cuatro problemas clásicos — para tocar, romper y arreglar en vivo.

Agustín Brandone Franco Martino Facundo M. Baigún Cárdenes
MUTEXSEMÁFOROSDEADLOCK = 0 (objetivo)
grupo@uade:~/so/clase4
// 01 · fundamentos

El ciclo de vida de un proceso
y por qué todo se rompe en concurrencia

El planificador reparte la CPU entre procesos que cambian de estado constantemente. Cuando varios tocan el mismo recurso compartido sin coordinarse, aparece el caos: condiciones de carrera e interbloqueos.

Estados de un proceso

Hacé clic en cada transición para verla animada.

NUEVO fork / spawn LISTO espera CPU EJECUCIÓN usa la CPU ESPERA bloqueado TERMIN. exit(0)
Elegí una transición ↑ para ver su explicación.

El problema de la sección crítica

Es el fragmento de código donde un proceso accede a un recurso compartido. Para que sea seguro, deben cumplirse tres condiciones:

01
Exclusión mutua

Solo un proceso a la vez puede estar dentro de la sección crítica.

02
Progreso

Nadie que esté afuera puede bloquear a los que quieren entrar.

03
Espera limitada

El que espera para entrar no puede esperar para siempre.

Probá wait() y signal()

Un semáforo es un contador: wait() resta (o bloquea) y signal() suma (o despierta). Valor inicial: 3 recursos.

3
COLA DE BLOQUEADOS
— vacía —
01 · lock

Mutex

exclusión mutua

Candado de un solo dueño. Quien lo toma entra a la sección crítica; el resto espera. En el lab: flock -x y Mutex.WaitOne().

02 · counter

Semáforos

wait / signal

Contador que regula cuántos procesos acceden. Binario (0/1) ≈ mutex · Contador permite N procesos (ej.: sillas del barbero).

03 · monitor

Monitores

alto nivel

Estructura que combina exclusión mutua + sincronización con métodos sincronizados. El compilador/runtime hace el trabajo sucio.

// 02 · el experimento del laboratorio

La carrera del contador: 10 procesos, un archivo

Recreamos la Parte 2 y 3 del práctico: diez procesos ejecutan en paralelo leer → dormir 0.1s → escribir valor+1 sobre el mismo archivo. ¿Llega a 10? Spoiler: sin lock, casi nunca.

Elegí un modo para lanzar los 10 procesos.
contador.txt
0
objetivo: 10
// 03 · los problemas clásicos

Cuatro simuladores para tocar en vivo

Filósofos comensales, productor–consumidor, el barbero dormilón y un grafo de interbloqueo paso a paso. Cada uno tiene controles, métricas y bitácora en vivo.

Filósofos Comensales

modo: CAOS comidas: 0

Cinco filósofos alternan pensar y comer. Para comer necesitan los dos tenedores, pero solo hay uno entre cada par. En modo caos todos toman primero el izquierdo… y ya sabés cómo termina. 😉

MESA
REDONDA
💀 INTERBLOQUEO Los 5 tienen el tenedor izquierdo y esperan el derecho. Nadie comerá jamás.
Cambiá a modo SOLUCIÓN y reiniciá.

Modo CAOS: todos toman primero el tenedor izquierdo → riesgo de espera circular.

Productor — Consumidor

buffer: 6 slots

El productor llena el búfer, el consumidor lo vacía. Si está lleno, el productor se bloquea; si está vacío, se bloquea el consumidor. Los semáforos llevan la cuenta.

SEM · VACÍOS6
SEM · DATOS0
MUTEX BUFFER🔓
producidos 0 · consumidos 0 · bloqueos 0
🏭
PRODUCTOR
inactivo
🛒
CONSUMIDOR
inactivo

El Barbero Dormilón

sillas de espera: 4

Si no hay clientes, el barbero duerme 😴. Si llegan, los sienta a esperar; si no hay sillas libres, el cliente se va. Mové el slider para saturar la barbería.

SILLÓN DEL BARBERO
💤🧑‍🦱
durmiendo…
SILLAS DE ESPERA
atendidos0
en espera0
se fueron0
🚪ENTRADA
DE CLIENTES
sem clientes = 0 · sem silla (mutex) protege el contador

Interbloqueo (Deadlock) paso a paso

escenario: DEADLOCK

Grafo de asignación de recursos: flecha sólida = recurso asignado, punteada = recurso solicitado. Si se forma un ciclo… game over. También podés ver la solución.

P1 P2 R1 R2
⚠ ESPERA CIRCULAR DETECTADA — P1 ↔ P2 se retienen mutuamente. Ninguno avanzará sin intervención externa (matar un proceso, expropiar…).
paso 0 / 5
Presioná ▶ para recorrer el escenario paso a paso.
  • 1 · Exclusión mutuaR1 y R2 solo puede usarlos un proceso a la vez.
  • 2 · Retener y esperarUn proceso conserva lo que tiene mientras pide más.
  • 3 · No expropiaciónNadie puede quitarle el recurso a la fuerza.
  • 4 · Espera circularExiste un ciclo de procesos esperándose entre sí.
// 04 · planificación de CPU

El planificador en acción: Gantt animado

Escenario de la diapositiva: P1 llega en t=0 (ráfaga 6), P2 en t=2 (ráfaga 3) y P3 en t=4 (ráfaga 2). Compará los cuatro algoritmos y sus tiempos de espera.

⏱ tiempo total: 11 unidades

Proceso Llegada Ráfaga Fin Retorno Espera
RANKING · ESPERA PROMEDIO DE LOS 4 ALGORITMOS
// 05 · arsenal del práctico

Comandos de la clase, listos para copiar

Todo lo que usamos en el ejercicio, organizado por parte y por sistema operativo. El botón copia el comando al portapapeles.

PowerShell bloqueado: si ves un error de directivas, ejecutá primero Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
🐧 Sin bc instalado: sudo apt install bc (Debian/Ubuntu) o brew install bc (macOS).
🚪 Salir de top: tecla q. Limpiar procesos: pkill -f "while true" / Get-Job | Stop-Job.
// 06 · práctica interactiva

Zona de juegos: quiz, ordenar y relacionar

Tres desafíos con el vocabulario exacto de la clase. Gánalos y los conceptos quedan anclados.

Quiz de sincronización

10 preguntas · cada respuesta incluye una explicación breve.

Ordená la sección crítica

Arrastrá (o clic en ficha y luego clic en casillero) las líneas del incremento sincronizado al orden correcto.

intentos: 0

Relacioná concepto y definición

Clic en un concepto y después en su definición. Si falla, tiembla (como un proceso sin scheduler).