Identificación de Patrones de Concurrencia: Resolución de Problemas
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,19 KB
Chuleta de Identificación de Patrones de Concurrencia
OBJETIVO: En 1-2 minutos, antes de escribir nada, responde a estas 3 preguntas:
- A) ¿Qué mecanismo pide o conviene?
- B) ¿Qué patrón base se parece?
- C) ¿Qué variables o semáforos necesito?
A) Mecanismo: Pistas del enunciado
- Semáforos: "Resuélvalo con semáforos" o no especifica nada.
- Monitores: "Resuélvalo con monitores" o "variables de condición" (pseudocódigo o Java).
- Java:
synchronized+while+notifyAll. - Ada: "Tareas", "rendezvous".
- Citas (task + accept + select): Si hay un gestor/servidor que decide y responde a peticiones distintas.
- Protected (entry when): Si es solo proteger datos compartidos con límite/contador, sin lógica de decisión.
B) Patrones base
Los siguientes 5-6 patrones cubren casi todos los escenarios:
1. Productor/Consumidor (Buffer con capacidad)
Pistas: "Buffer", "almacén", "cola con capacidad N", "deposita/coge", "olla con N raciones".
Idea: Recurso contable con condiciones "está lleno" / "está vacío".
Mapeo: elementos (cuántos hay) y espacios (huecos restantes).
2. Lectores/Escritores (Acceso concurrente vs. exclusivo)
Pistas: "Varios pueden X a la vez, pero si alguien hace Y debe ser el único", "base de datos".
Idea: Un proceso admite concurrencia, el otro necesita exclusividad total.
3. Aviso mutuo / Despertar (Barbero-like)
Pistas: "Duerme hasta que alguien lo necesite", "avisa a X y X responde".
Estructura: A hace signal(aviso_a_B) y wait(respuesta_de_B); B hace wait(aviso_a_B) y signal(respuesta_de_B).
4. Barrera / Sincronización de grupo
Pistas: "Hasta que se junten N", "cuando hayan llegado todos", "capacidad C".
Idea: Un coordinador da N permisos y espera al último participante.
5. Recursos múltiples compartidos (Riesgo de interbloqueo)
Pistas: "Necesita 2 o más recursos a la vez", "cada uno comparte herramientas con otros".
Solución: Orden fijo, jerarquía al pedir recursos o monitor que reserva "todo o nada".
6. Recurso contado simple
Pistas: "N unidades de tipo A, M de tipo B".
Idea: 1 semáforo contador por tipo.
7. Servidor/Gestor que arbitra peticiones (Típico Ada)
Pistas: "Gestor/encargado recibe peticiones y decide".
Idea: 1 task con varias entry y select con guardas.
C) Tabla rápida: Sustantivo a variable
- Capacidad máxima N: Semáforo espacios = N.
- X disponibles: Contador compartido + semáforo elementos.
- Solo uno puede usar Y: Semáforo binario mutexY = 1.
- X espera a Y: Par de semáforos a 0.
- Interbloqueo: Patrón filósofos (cuidado con el orden de los waits).
D) Proceso de 90 segundos
- Subraya: Recursos, roles y límites numéricos.
- Pregunta: ¿Qué patrón encaja mejor?
- Mapea: Sustantivos a variables (Tabla C).
- Declara: Escribe semáforos/condiciones con valores iniciales.
- Copia: Plantilla del patrón y sustituye nombres.
- Revisa: Exclusión mutua, interbloqueo e inanición.
E) Si no encaja en ningún patrón
Probablemente sea una combinación de patrones. Divide el enunciado en subproblemas independientes, resuelve cada uno y únelos. Es normal tener varios mutex si protegen recursos distintos.