💡 En simple
Esta sección es el mapa de la segunda mitad del curso. Piénsalo como el índice de un libro antes de escribir los capítulos: cada fila dice qué tema entra , de qué material sale (lámina, laboratorio, código o ejercicio) y dónde estudiarlo . Lo del parcial sigue en el menú, más abajo y plegado: el final se apoya en eso (semáforos, deadlock, paginación) y no lo repetimos, solo lo enlazamos.
¿Vienes a repasar? Empieza por la ruta
La Ruta de repaso explica cómo usar los recuadros de cada página (predecir, escalera de práctica, detective, explicarlo tú). También propone un plan de 8 sesiones ordenado por el peso de cada tema en el LC3 y trae tu panel de progreso , que te dice qué repasar hoy.
Según las indicaciones oficiales (octubre 2026):
Sección Puntaje Formato 4 preguntas teóricas (libro) 5 quiz de Canvas; pueden pedir justificar 3 preguntas de análisis 9 quiz de Canvas 2 preguntas de código 6 enunciado impreso , se resuelve en el entorno de ejecución del quiz; máximo 60 min Total 20
Entran todos los temas vistos después del LC2.
Lectura del libro (Stallings): cap. 6, secciones 6.1–6.8 ; cap. 7 completo ; cap. 8, secciones 8.1–8.4 .
Reglas que cambian la estrategia:
El código va primero : empieza 10 min después del inicio de la clase. Si llegas tarde, pierdes esa parte y el máximo baja a 14.
El quiz se abre 20 min después de empezar la parte de código, y solo cuando ya la enviaste.
Una vez enviado el código, no se puede volver a entrar .
Cómo repartir el estudio
El análisis vale casi la mitad (9/20). En los ejercicios de la semana 9 eso significa:
simular algoritmos de reemplazo (FIFO, OPT, LRU, Clock),
traducir direcciones,
calcular tablas de páginas y TLB.
Las preguntas de código salen de los laboratorios: filósofos y barbero dormilón con semáforos POSIX, más los errores de memoria que detecta Valgrind .
Leyenda: ✅ cubierto (las páginas de la sección final llevan código ejecutado y respuestas verificadas).
El LC3 evalúa «todo lo visto después del LC2», y estas clases (material del 24/09) llegaron después del LC2 aunque se tomaron en el parcial. No están en la lectura recomendada (monitores es el cap. 5 de Stallings y los registros salen del libro de Herlihy), así que lo más probable es que aparezcan como código : un monitor con pthread_cond_wait.
Tema Fuente Estado Dónde Monitores y variables de condición (Hoare vs Mesa, while en vez de if) lab 09 · Monitors and Reader-Writer ✅ Monitores Lectores–escritores (prioridad a lectores o a escritores, con monitor) lab 09 ✅ Lectores–escritores Registros safe, regular y atomic teoría 06 · About registers (Herlihy) ✅ Registros
Tema Fuente Estado Dónde Principios: recursos reutilizables y consumibles, grafo de asignación, 4 condiciones Stallings §6.1 ✅ Deadlock Prevención, evitación (banquero), detección y estrategia integrada Stallings §6.2–6.5 ✅ Deadlock (simulador del banquero)Deadlock de un solo hilo (lock dos veces) y por qué trylock lo evita lab 11, diap. 8–10 ✅ Livelock y trylock Livelock con trylock + «soltar y reintentar»lab 11, diap. 11–14 ✅ Livelock y trylock (con ejecución de prueba)Filósofos: versión con deadlock y la espera circular que la causalab 11 · deadlock-bug.c ✅ Filósofos § 1 Filósofos: 5 soluciones del cursolab 11 · sem_central.c, table.c, limit_seats.c, assymetric.c, tanen-sem.c ✅ Filósofos § 2–5 (medidos y con recorrido de estados)Filósofos: starvation a pesar de alto paralelismotanen-5-1.c, tanen-4-2.c✅ Filósofos § 6 + variante propia sin starvationBarbero dormilón (1 barbero): sem_trywait, la silla del barbero, ¿es justo?, ¿quién decide terminar?lab 11, diap. 33–41 ✅ Barbero Barbero con N barberos (panel write_panel/read_panel, tarea: ¿se puede quitar barber_chair?)lab 11, diap. 42–47 ✅ Barbero § N barberos (el código de las diapositivas no funciona tal cual)Mecanismos de concurrencia de UNIX: pipes, mensajes, memoria compartida, semáforos, señales Stallings §6.7 ✅ Mecanismos de UNIX y Linux Mecanismos del kernel Linux: atómicas, spinlocks (y de lectores–escritores), semáforos, barreras, RCU Stallings §6.8 ✅ Mecanismos de UNIX y Linux Starvation vs livelock vs deadlock, tipos de recurso, productor–consumidor con los P() invertidos, orden de locks en transferencias, grafo de espera, ejemplo de detección de 5 procesos, recuperación, lockdep teoría 11 · Deadlock ✅ Clase de teoría sem. 11 (ejemplos verificados)
Tema Fuente Estado Dónde Requisitos: relocalización, protección, compartición, organización lógica y física; overlays §7.1 · clase 09, diap. 4–7 ✅ Particiones Dirección lógica vs física, MMU y registro de relocalización clase 09, diap. 8, 14–15 ✅ Segmentación Particiones fijas y dinámicas, placement (best, first, next), fragmentación, compactación §7.2 · diap. 17–27 ✅ Particiones (simulador de placement)Buddy system §7.2 · diap. 22–24 ✅ Particiones (simulador buddy)Paginación simple y fragmentación interna (ejemplo 72 766 B con páginas de 2 KB) §7.3 · diap. 48–57 ✅ Paginación Segmentación: tabla, protección, ejemplo de 4 segmentos de 16 bits, x86 y Linux de 64 bits §7.4 · diap. 30–46 ✅ Segmentación (traductor)Carga y enlace (apéndice 7A) cap. 7 ✅ Particiones § carga y enlace
Tema Fuente Estado Dónde Localidad, jerarquía (SRAM/DRAM/SSD/HDD), la memoria principal como caché del disco §8.1 · diap. 9–13 ✅ Hardware y fallo de página Tabla de páginas, PTE (P, M, R, protección), multinivel, hash, invertida §8.1 · diap. 59–73 ✅ Paginación (calculadora)TLB y tiempo efectivo de acceso §8.1 ✅ Paginación § TLB (simulador EAT)Tamaño de página y segmentación + paginación combinadas §8.1 ✅ Hardware y fallo de página Paginación por demanda y page fault paso a paso§8.2 · diap. 74–76 ✅ Hardware y fallo de página (con medición de page faults)Políticas del SO: fetch (demanda vs prepaging), placement, reemplazo (bloqueo de frames, OPT, LRU, FIFO, Clock ), page buffering§8.2 ✅ Reemplazo (simulador paso a paso)Conjunto residente: asignación fija o variable, alcance local o global, working set , PFF§8.2 ✅ Working set y carga Política de limpieza (demanda vs precleaning) y control de carga (thrashing, nivel de multiprogramación) §8.2 ✅ Working set y carga UNIX y Solaris: PTE, descriptor de bloque de disco, tabla de frames, swap-use, reloj de dos manecillas , lazy buddy §8.3 ✅ UNIX, Solaris y Linux Linux: tablas de varios niveles, buddy para páginas, reemplazo (listas activa/inactiva), slab §8.4 ✅ UNIX, Solaris y Linux
Tema Fuente Estado Dónde Espacio de direcciones virtual: text, data, librerías, heap y stack lab 10, diap. 12–16 ✅ Memoria de un proceso El stack en acción (stack.c, gdb attach y bt) stack.c✅ Memoria de un proceso Ver el mapa del proceso (mapeos del proceso desde GDB) lab 10, diap. 15–16 ✅ Memoria de un proceso (/proc/PID/maps real)memcpy y sus bugs: desborde de un buffer de 20 B y escritura en una dirección de kernel (0xffffffffff601000)memcpy1.c, memcpy2.c, main.c✅ Memoria de un proceso § memcpy malloc, size_t, ¿cuánto se puede pedir?, realloc, malloc no siempre usa el heap (mmap para bloques grandes)malloc.c, malloc_limits.c · diap. 18–23✅ Memoria de un proceso § malloc
Tema Fuente Estado Dónde Valgrind memcheck : accesos inválidos, valores sin inicializar, liberación incorrecta, leaks guía Valgrind · mem1.c, mem2.c, mem3.c, hello.c ✅ Valgrind y perf helgrind (condiciones de carrera entre hilos)guía Valgrind ✅ Valgrind y perf perf para contar page faults al recorrer un arreglo de PAGESIZE × Nguía Valgrind · «Paging y TLB» ✅ Valgrind y perf , medición
Hoja Preguntas Estado Page Replacement P1: FIFO, OPT, LRU y Clock con 3 frames (16 referencias) · P2: FIFO con 3 y 4 frames (anomalía de Belady ) · P3: memoria virtual de 6 GB, páginas de 8 kB y PTE de 6 B · P4: PTE para Clock en 10-10-12 y simulación con 4 frames ✅ resueltos Virtual Memory P1: bits de VPN/PFN/PTE · P2: segmentación (5 direcciones, ¿segfault?) · P3: traducción binaria · P4: tabla con bits V/R/M (1052, 2221, 5499) · P5: recorrido por columnas de A[64][64] y page faults · P6: 8 GB, páginas de 8 kB, 46 bits, niveles, TLB y EAT de 61 ns ✅ resueltos
Tema Fuente Estado Dónde Host, hipervisor/VMM, guest y VM; las 5 funciones del hipervisor teoría 13, diap. 4–7 ✅ Virtualización I VCPU, trap-and-emulate, binary translation (popf), VT-x / AMD-V teoría 13, diap. 9–15 ✅ Virtualización I (con un detective de popf)vCPUs, page sharing, ballooning, overcommit, tablas de páginas anidadas teoría 13, diap. 16–21 ✅ Virtualización I E/S virtualizada: live migration, I/OAT, TOE, LSO, LRO, SR-IOV, VT-d teoría 13, diap. 22–24 ✅ Virtualización I Tipos de VM, hipervisores tipo 0/1/2 (AWS Nitro), paravirtualización y Xen teoría 13, diap. 26–35 ✅ Virtualización II Otras variantes, virtual appliance y SVA, contenedores teoría 13, diap. 32, 36–38 ✅ Virtualización II ESXi, Xen, Hyper-V, JVM, VServer, VMware, Docker vs LXC e historia teoría 13, diap. 40–51 ✅ Virtualización II
Ruta de repaso y tu progreso El método de estudio de la web, el orden por peso en el LC3, 8 sesiones con repaso intercalado y el panel con repaso espaciado. A · Deadlock en la práctica Livelock y trylock, las 8 versiones de los filósofos ejecutadas, barbero dormilón (1 y N barberos), mecanismos de UNIX y Linux. C · Memoria virtual Page fault medido, reemplazo con simulador (OPT, LRU, FIFO, Clock, Belady), working set, thrashing, UNIX y Linux. Clase del 10/10 (grabación) La paginación como la explicó la profesora, P1–P5 de Virtual Memory resueltas en vivo y sus pistas para el LC3 (la segmentación entra). LC3 · peor escenario Simulacro de dificultad alta: barbería que cierra, lista con 7 bugs de memoria, Clock mejorado con escrituras, EAT con page faults y un bug sutil en Tanenbaum. Libro: Stallings para las teóricas Plan de lectura de los caps. 6–8, las listas que el libro enumera, Review Questions resueltas y 14 preguntas de desarrollo con respuesta modelo. H · Virtualización Clase 13: trap-and-emulate, binary translation, VT-x, ballooning, NPT, E/S, tipos de hipervisor, paravirtualización, contenedores y Docker vs LXC. Repaso y simulacro del LC3 Chuleta, 40 flashcards y un simulacro con el formato del LC3 (2 de código + 4 teóricas + 3 de análisis).
Semana Material Estado 9 clase 09 «All About Memory» (78 diap.) · lab 10 Memory (26 diap.) · guía Valgrind · lab 11 Deadlock (50 diap.) · ejercicios de Page Replacement y de Virtual Memory · indicaciones del LC3 · código de sem9/ (memoria, valgrind y deadlock) ✅ mapeado y escrito (13 páginas) 10 grabación de la clase de laboratorio del 10/10 (paginación + ejercicios en vivo) ✅ resumida 11 clase de teoría 11 «Deadlock» ✅ lo que añade al libro — libro: lectura recomendada del LC3 (caps. 6–8) ✅ Stallings para el LC3 12 clase de teoría 12 «Scheduling» y su lab ✅ en la sección Lab 4 13 clase de teoría 13 «Virtualization» (54 diap.) ✅ Virtualización I y II 14 en adelante — ⏳ pendiente
Fuente ·sem_9/OSL-Indicaciones-Laboratorio_Calificado_3.pdf · sem_9/Sem9_09-OST-Memory.pdf · sem_9/10-OSL-Memory.pdf · sem_9/10-OSL-Valgrind.pdf · sem_9/11-OSL-Deadlock.pdf · sem_9/11-OSL-Ejercicios_Page_Replacement.pdf · sem_9/11-OSL-Ejercicios_Virtual_Memory.pdf · Código del curso sem9/: deadlock/*.c, valgrind/*.c, stack.c, malloc.c, malloc_limits.c, memcpy1.c, memcpy2.c, main.c · sem_11/Sem11_11-OST-Deadlock.pdf · sem_13/Sema13_13-OST-Virtualization.pdf · for_partial/pending_themes/ (monitores y lectores–escritores, registros) · Stallings 9e, caps. 6–8