E1 2024 (I y II)
Ambos traen solucionario oficial. Aquí están resumidos, con los errores del oficial marcados.
E1 2024-I (6 preguntas)
Sección titulada «E1 2024-I (6 preguntas)»P1 (3 pts) · ¿Cuántos «Hello!»? (thread_print)
Sección titulada «P1 (3 pts) · ¿Cuántos «Hello!»? (thread_print)»Ver solución
7 (opción 2). El oficial no da el número; lo verifiqué con una ejecución de prueba. Recorre el árbol evento por evento en el simulador de fork.
P2 (4 pts) · Flaky lock
Sección titulada «P2 (4 pts) · Flaky lock»Ver solución
Mutex ✔, deadlock ✘, starvation ✘. Demostración y traza en algoritmos. El intercalador encuentra el deadlock solo.
P3 (4 pts) · Stock con semáforos
Sección titulada «P3 (4 pts) · Stock con semáforos»Ver solución
Hay deadlock: el buyer hace wait(restock) sosteniendo resource. La solución es un semáforo contador de stock que se espera antes de tomar resource. Ver productor–consumidor y el simulador con el escenario «Stock».
P4 (6 pts) · Guerreros y aretes
Sección titulada «P4 (6 pts) · Guerreros y aretes»Ver solución
Deadlock si toma arete un miembro de cada pareja (por ejemplo G1, G2, G3 y G5). ⚠ El ejemplo oficial «1, 2, 3 y 6» es incorrecto, porque 1 y 6 son pareja. La corrección es pedir los aretes de a pares y como unidad después de la cita. Ver aretes.
P5 (4 pts) · Conceptos
Sección titulada «P5 (4 pts) · Conceptos»Ver solución
- Operación atómica: indivisible, no puede interrumpirse ni observarse a medias. Ejemplo de spinlock:
while (test_and_set(&lock)); SC; lock = 0;. - Mutex en rutinas del kernel que no pueden bloquear: spinlocks, porque no duermen y la SC es corta (en monoprocesador, además, se deshabilitan interrupciones).
- Memory layout: code (instrucciones), data (globales y estáticas), heap (dinámico, crece ↑), stack (llamadas, retornos y locales, crece ↓).
- Requisitos de mutex: los 6 de Stallings. Ver requisitos.
- Deadlock: exclusión mutua, hold and wait, no preemption y espera circular. (El oficial solo lista tres; la espera circular es la cuarta.)
E1 2024-II (4 preguntas)
Sección titulada «E1 2024-II (4 preguntas)»P1 (3 pts) · fork + execv + semáforo
Sección titulada «P1 (3 pts) · fork + execv + semáforo»Ver solución
4 (opción 1). Explicación paso a paso en fork.
P2 (7 pts) · Cine multiplex con monitor
Sección titulada «P2 (7 pts) · Cine multiplex con monitor»Ver solución
Código oficial limpio, explicación y dos bugs del oficial (la sala incompleta no se reinicia y cust[i] = pthread_create(…)) en cine.
P3 (8 pts) · Chefs de ramen
Sección titulada «P3 (8 pts) · Chefs de ramen»Ver solución
Es el problema de los fumadores: un semáforo por chef y otro para el master. El oficial despierta a los 3 y cada uno revisa la mesa en un do…while. Ver ramen.
P4 (2 pts) · Conceptos
Sección titulada «P4 (2 pts) · Conceptos»Ver solución
- Monolítico vs microkernel: el monolítico tiene todo en espacio de kernel (rápido, pero un fallo tumba el sistema); el microkernel deja lo mínimo en el kernel y los servicios en espacio de usuario comunicados por IPC (más lento, pero robusto). Para robustez ante fallas: microkernel.
- Condiciones de deadlock: las 4 de Coffman. ¿
trylockevita el deadlock? Rompe hold and wait (si no obtengo el segundo lock, suelto el primero), así que elimina el deadlock, pero puede causar starvation o livelock.
Fuente ·for_partial/E1_OS_2024_I__Respuestas_.pdf · for_partial/E1_OS_2024_II__Solucionario_.pdf