Kernel de Linux
El corazón del sistema operativo: Kbuild, módulos, drivers, RCU, memoria del kernel, depuración y el nuevo Rust como lenguaje central.
00
Nivel 0
1 temas15
Nivel 15
5 temas- 01Qué es un spinlock y por qué existehechoen curso
- 02La sección crítica: nunca duermas con el lock cogidohechoen curso
- 03spin_lock_irqsave y spin_lock_bh: compartir con interrupcioneshechoen curso
- 04Variantes: rwlock, trylock y el coste bajo contenciónhechoen curso
- 05Deadlocks de spinlocks y las reglas de orohechoen curso
16
Nivel 16
5 temas17
Nivel 17
5 temas- 01El problema que resuelve RCUhechoen curso
- 02RCU conceptual: publicar, suscribir y grace periodshechoen curso
- 03El lado lector: rcu_read_lock, rcu_dereference y sus reglashechoen curso
- 04El lado escritor: publicar, synchronize_rcu, call_rcu y listas RCUhechoen curso
- 05Flavors de RCU y cuándo no usarlahechoen curso
18
Nivel 18
5 temas- 01El reordenamiento: el orden que escribes no es el que se ejecutahechoen curso
- 02Barreras de compilador: barrier(), READ_ONCE y WRITE_ONCEhechoen curso
- 03Barreras de CPU: smp_mb, smp_rmb, smp_wmb y el emparejamientohechoen curso
- 04Semántica acquire/release: publicar y consumir datoshechoen curso
- 05Herramientas especializadas: variables per-CPU y seqlockshechoen curso
20
Nivel 20
5 temas- 01La memoria física: struct page y el PFNhechoen curso
- 02El buddy allocator: bloques, fusión y fragmentaciónhechoen curso
- 03La API de páginas: alloc_pages y sus hermanashechoen curso
- 04Los flags GFP a fondo: dormir o no dormirhechoen curso
- 05Zonas y watermarks: dónde vive la RAM y cuándo se reclamahechoen curso
21
Nivel 21
5 temas- 01Por qué un slab: objetos pequeños sobre el buddyhechoen curso
- 02kmalloc por dentro: caches de tamaños y alineaciónhechoen curso
- 03SLUB por dentro: struct slab, freelist y caché por-CPUhechoen curso
- 04Tu propia caché de objetos: kmem_cache_createhechoen curso
- 05Depurar la memoria slab: redzones, poison y kmemleakhechoen curso
22
Nivel 22
5 temas- 01Contiguo en RAM o contiguo a la vista: kmalloc frente a vmallochechoen curso
- 02vmalloc, vfree y vzalloc: cuándo usarlo y qué cuestahechoen curso
- 03El mapa del espacio de direcciones del kernel en x86-64hechoen curso
- 04ioremap y MMIO: mapear registros de dispositivo al kernelhechoen curso
- 05Mapeos temporales: kmap_local_page y el fantasma de la high memoryhechoen curso
23
Nivel 23
5 temas- 01El espacio de direcciones: mm_struct, VMAs y el maple treehechoen curso
- 02mmap desde userspace: del syscall al page cachehechoen curso
- 03Page faults: handle_mm_fault, demand paging y copy-on-writehechoen curso
- 04Implementar .mmap en un driver: remap_pfn_range y .faulthechoen curso
- 05Tipos de mapeo: anónimo, fichero, privado, compartido y hugepageshechoen curso
24
Nivel 24
5 temas- 01El page cache: por qué la segunda lectura es gratishechoen curso
- 02struct address_space: la cache de cada archivohechoen curso
- 03read y write por el cache: búsqueda y readaheadhechoen curso
- 04Writeback: páginas sucias, dirty_ratio y durabilidadhechoen curso
- 05O_DIRECT: saltarse el cache y su vínculo con io_uringhechoen curso
25
Nivel 25
5 temas- 01Cuando falta memoria: qué es el reclaimhechoen curso
- 02Las listas LRU y MGLRU: elegir a quién expulsarhechoen curso
- 03kswapd frente a reclaim directo: quién paga la deudahechoen curso
- 04El swap y swappiness: expulsar lo que no tiene hogarhechoen curso
- 05El OOM killer y memcg: matar para seguir vivohechoen curso
26
Nivel 26
5 temas- 01NUMA: nodos, distancias y el descriptor por nodohechoen curso
- 02Políticas de asignación NUMA: local, bind e interleavehechoen curso
- 03Variables per-CPU: una copia por núcleo, cero sincronizaciónhechoen curso
- 04Contadores y estructuras per-CPU: sumar al leerhechoen curso
- 05Localidad de caché y NUMA: medir y diseñar para escalarhechoen curso
27
Nivel 27
5 temas- 01Qué es DMA: el dispositivo lee la RAM sin la CPUhechoen curso
- 02La DMA API: memoria coherente frente a streaminghechoen curso
- 03Direcciones y coherencia: virtual, física y de bushechoen curso
- 04El IOMMU: la MMU de los dispositivos que protege la RAMhechoen curso
- 05Scatter-gather y la máscara de DMAhechoen curso
28
Nivel 28
5 temas- 01El problema que resuelve el device modelhechoen curso
- 02kobject, kset y sysfs: la infraestructura basehechoen curso
- 03La tríada del modelo: bus_type, device_driver y devicehechoen curso
- 04El emparejamiento driver-dispositivo: match, probe y removehechoen curso
- 05uevents y udev: del kobject al nodo en /devhechoen curso
29
Nivel 29
5 temas- 01Platform devices: el hardware que no sabe presentarsehechoen curso
- 02Escribir un platform driver: probe, remove y recursoshechoen curso
- 03El Device Tree: describir el hardware que no se descubrehechoen curso
- 04El emparejamiento por compatible: cómo el nodo encuentra su driverhechoen curso
- 05Consumir el Device Tree desde el driver: propiedades, MMIO, IRQ, GPIO y clockshechoen curso
30
Nivel 30
5 temas- 01El bus PCI/PCIe: topología, enumeración y el BDFhechoen curso
- 02El espacio de configuración y los BARshechoen curso
- 03Escribir un driver PCI: struct pci_driver y el probehechoen curso
- 04Interrupciones PCI: de las líneas legacy a MSI/MSI-Xhechoen curso
- 05DMA en PCI: bus mastering, la máscara y el camino a la RAMhechoen curso
31
Nivel 31
5 temas32
Nivel 32
5 temas- 01I2C y SPI: los dos buses seriales del mundo embebidohechoen curso
- 02Un driver I2C: de la cadena compatible a la trama en el bushechoen curso
- 03Un driver SPI: spi_message, spi_sync y los modos de relojhechoen curso
- 04regmap: un único acceso a registros sobre I2C, SPI o MMIOhechoen curso
- 05regmap avanzado: caché, campos de bits y depuración por debugfshechoen curso
33
Nivel 33
5 temas- 01GPIO con descriptores: controlar un pin sin números mágicoshechoen curso
- 02GPIO como entrada, salida e interrupción, y desde el device treehechoen curso
- 03El subsistema IIO: por qué los sensores tienen su propio mundohechoen curso
- 04Un driver IIO: iio_dev, canales y read_rawhechoen curso
- 05Triggers y buffers IIO: muestreo continuo con marca de tiempohechoen curso
34
Nivel 34
5 temas35
Nivel 35
5 temas- 01La E/S de bloques y por qué necesita una capa enterahechoen curso
- 02struct bio: la unidad de E/S de bloqueshechoen curso
- 03blk-mq: la arquitectura multi-colahechoen curso
- 04El camino de una petición: de submit_bio al completadohechoen curso
- 05Registrar un dispositivo de bloques: gendisk y add_diskhechoen curso
36
Nivel 36
5 temas- 01Por qué planificar la E/S de bloqueshechoen curso
- 02Los schedulers de blk-mq: none, mq-deadline, BFQ y Kyberhechoen curso
- 03Escribir un block driver con blk-mq: tag set, gendisk y opshechoen curso
- 04El corazón del driver: queue_rq, recorrer el bio y completarhechoen curso
- 05NVMe y el futuro: colas paralelas, blk-mq y el camino a io_uringhechoen curso
37
Nivel 37
5 temas- 01El Virtual File System: una interfaz para todos los discoshechoen curso
- 02super_block e inode: el montaje y el archivohechoen curso
- 03struct dentry: la caché que hace veloz al path lookuphechoen curso
- 04struct file y file_operations: el archivo abiertohechoen curso
- 05El camino de open y read: de la ruta al datohechoen curso
38
Nivel 38
5 temas- 01Las cuatro tablas: qué implementa un sistema de archivoshechoen curso
- 02Registrar y montar: file_system_type y la fábrica de superbloqueshechoen curso
- 03libfs: la biblioteca para sistemas de archivos en memoriahechoen curso
- 04Un sistema de archivos mínimo en memoria, de cabo a rabohechoen curso
- 05FUSE: un sistema de archivos en el espacio de usuariohechoen curso
39
Nivel 39
5 temas- 01El problema C10k: un hilo para miles de conexioneshechoen curso
- 02select y poll: readiness que no escalahechoen curso
- 03epoll: la multiplexación O(1) de Linuxhechoen curso
- 04epoll a fondo: level-triggered contra edge-triggeredhechoen curso
- 05La familia de fds de eventos: eventfd, signalfd, timerfdhechoen curso
40
Nivel 40
5 temas- 01La revolución de io_uring: de readiness a completionhechoen curso
- 02Las dos colas en anillo: memoria compartida entre kernel y usuariohechoen curso
- 03El ciclo de vida de una operación: del SQE al CQEhechoen curso
- 04io_uring frente a epoll, en serio: batching, completado universal y cifrashechoen curso
- 05liburing: la librería que hace io_uring usablehechoen curso
41
Nivel 41
5 temas- 01Buffers y descriptores registrados: pagar el peaje una sola vezhechoen curso
- 02Sondeo sin syscalls: SQPOLL e IOPOLLhechoen curso
- 03Cadenas, drains y multishot: dependencias dentro del ringhechoen curso
- 04io_uring en la red: por qué puede batir a epollhechoen curso
- 05El futuro de la E/S: io_uring, eBPF, zero-copy y seguridadhechoen curso
42
Nivel 42
5 temas- 01El coste de copiar: por qué cada byte importahechoen curso
- 02mmap en un driver: exponer memoria sin copiarhechoen curso
- 03sendfile y splice: empalmar descriptores en el kernelhechoen curso
- 04DMA-BUF: compartir buffers entre dispositivoshechoen curso
- 05Zero-copy en red: MSG_ZEROCOPY e io_uringhechoen curso
43
Nivel 43
5 temas- 01El viaje de un paquete: de la NIC al socket y vueltahechoen curso
- 02struct sk_buff: el paquete hecho estructurahechoen curso
- 03struct net_device: una interfaz de red hecha objetohechoen curso
- 04Las capas por dentro: de netif_receive_skb al sockethechoen curso
- 05netfilter y nftables: los ganchos donde nace el cortafuegoshechoen curso
44
Nivel 44
5 temas- 01NAPI: sobrevivir a un millón de paquetes por segundohechoen curso
- 02Sockets por dentro: struct socket contra struct sockhechoen curso
- 03El camino de send y recv: del socket al cable y de vueltahechoen curso
- 04XDP: un programa eBPF antes de que exista el paquetehechoen curso
- 05XDP en producción: firewalls DDoS, balanceadores y observabilidadhechoen curso
45
Nivel 45
5 temas- 01jiffies, HZ y el tick: el latido del kernelhechoen curso
- 02clocksource y clockevents: abstraer el hardware del tiempohechoen curso
- 03Timers de baja resolución: struct timer_listhechoen curso
- 04hrtimers: temporizadores de alta resoluciónhechoen curso
- 05NO_HZ y delays: silenciar el tick y esperar bienhechoen curso
46
Nivel 46
5 temas- 01Qué hace el planificador: tareas, estados y runqueueshechoen curso
- 02El context switch: schedule, context_switch y su costehechoen curso
- 03CFS y su sucesor EEVDF: tiempo virtual, equidad y latenciahechoen curso
- 04Prioridades y clases: nice, pesos y sched_classhechoen curso
- 05Preempción: voluntaria, total, PREEMPT_RT y la perezosahechoen curso
47
Nivel 47
5 temas- 01SMP: una cola de ejecución por núcleo y el arte de reequilibrarhechoen curso
- 02Afinidad de CPU y aislamiento de núcleos: latencia predecible por diseñohechoen curso
- 03Tiempo real: SCHED_FIFO, SCHED_RR y SCHED_DEADLINEhechoen curso
- 04cgroups: agrupar procesos para gobernar sus recursoshechoen curso
- 05cgroups v2 en la práctica: cpu.max, memory.max e io.maxhechoen curso
48
Nivel 48
5 temas- 01Observabilidad del kernel: ver sin detener ni recompilarhechoen curso
- 02ftrace: el tracer integrado, function y function_graphhechoen curso
- 03Tracepoints: puntos de traza estáticos en el kernelhechoen curso
- 04La interfaz: tracefs y trace-cmdhechoen curso
- 05Eventos, filtros y latency tracershechoen curso
49
Nivel 49
5 temas- 01kprobes: instrumentar cualquier instrucción en calientehechoen curso
- 02kretprobes: interceptar el retorno, y el eje estático-dinámicohechoen curso
- 03perf: el perfilador todo-en-unohechoen curso
- 04perf events: contadores de hardware y muestreo estadísticohechoen curso
- 05Flame graphs: el perfil de CPU de un vistazohechoen curso
50
Nivel 50
5 temas- 01Qué es eBPF: una máquina virtual dentro del kernelhechoen curso
- 02El verifier: demostrar que el código ajeno es segurohechoen curso
- 03Tipos de programa y hooks: dónde se engancha eBPFhechoen curso
- 04Los mapas: estado compartido entre kernel y usuariohechoen curso
- 05El ecosistema: bpftrace, libbpf, CO-RE y el mundo realhechoen curso
51
Nivel 51
5 temas52
Nivel 52
5 temas- 01Namespaces: aislar la vista del sistemahechoen curso
- 02Un contenedor a mano: namespaces mas cgroupshechoen curso
- 03seccomp: filtrar las syscalls de un procesohechoen curso
- 04El modelo de seguridad: capabilities y minimo privilegiohechoen curso
- 05LSM: el framework de politicas de seguridadhechoen curso
53
Nivel 53
5 temas- 01Qué es la virtualización: hipervisores y la extensión del hardwarehechoen curso
- 02KVM: cómo Linux se vuelve hipervisorhechoen curso
- 03La API de KVM: /dev/kvm y el diálogo con QEMUhechoen curso
- 04virtio: el invitado que sabe que está virtualizadohechoen curso
- 05Contenedores frente a máquinas virtuales: aislamiento contra pesohechoen curso
54
Nivel 54
5 temas- 01Por qué Rust en el kernel: matar la clase de bug dominantehechoen curso
- 02Cómo conviven Rust y C: bindings, FFI y el crate kernelhechoen curso
- 03Las abstracciones seguras: encapsular el unsafe una sola vezhechoen curso
- 04Ownership y RAII en el kernel: la muerte del goto de limpiezahechoen curso
- 05El estado de Rust en el kernel 2026: la transformación en marchahechoen curso
55
Nivel 55
5 temas- 01La estructura de un módulo del kernel en Rusthechoen curso
- 02Un misc device en Rust: registrar y operar con seguridadhechoen curso
- 03Manejo de errores en el kernel: Result, el operador ? y por qué no hay panichechoen curso
- 04Concurrencia segura: Mutex, SpinLock, Arc y el muro de Send/Synchechoen curso
- 05Un driver completo en Rust: de probe a Drophechoen curso
56
Nivel 56
5 temas- 01Preparar el parche: un cambio, un commit, un porquéhechoen curso
- 02A quién enviar y cómo: get_maintainer.pl y git send-emailhechoen curso
- 03El proceso de revisión: iterar con paciencia hasta la v-finalhechoen curso
- 04Los tags obligatorios: Signed-off-by, Fixes y Cc stablehechoen curso
- 05Tu primer parche: por dónde empezar y qué no hacerhechoen curso
57
Nivel 57
5 temas