Elige tu idioma
Curso de programación de sistemas en Linux
Más de 2 millones de estudiantes en todo el mundo

Curso de programación de sistemas en Linux

Profundiza en el kernel de Linux y aprende a escribir programas en C de grado producción que se comuniquen directamente con el sistema operativo. Este curso cubre entrada/salida de archivos, procesos, señales, IPC, gestión de memoria, sockets y multihilo desde cero. Cada tema se fundamenta en llamadas al sistema reales, código funcional y los modelos mentales que los profesionales usan a diario.

Dedika para empresas

Lo que vas a aprender:

Desarrollarás una comprensión precisa de cómo Linux gestiona procesos, memoria, archivos y conexiones de red a nivel de llamadas al sistema. Escribirás programas en C que utilicen las API de POSIX para entrada/salida de archivos, comunicación entre procesos y redes basadas en sockets. Implementarás aplicaciones multihilo y eliminarás condiciones de carrera usando las primitivas de sincronización de pthreads. Aplicarás herramientas avanzadas como GDB, strace, Valgrind, AddressSanitizer, perf e io_uring. También cubrirás las primitivas de seguridad de Linux como namespaces, seccomp y capacidades. Al finalizar, tendrás las habilidades para diseñar, depurar y optimizar software de sistemas que se ejecute de manera confiable en entornos de producción Linux.

Cómo estudias de forma práctica Curso de programación de sistemas en Linux

Cómo practicas Curso de programación de sistemas en Linux

Para ti que tienes una empresa y quieres capacitar a tu equipo

En Dedika para empresas, el curso incluye ejercicios y ejemplos adaptados a tu propio negocio y a las necesidades de tu empresa.

Haz clic aquí

Contenido del curso

8 Capítulos • 40 LeccionesDuración entre 4 y 360 horas (tú decides)

Capítulo 1Ver detalles

Fundamentos de Programación de Sistemas Linux

  • Lección 1 • Introducción a las Llamadas al Sistema

    Demuestra cómo los programas de usuario invocan servicios del kernel a través de llamadas al sistema usando envoltorios de glibc y syscall crudo. Conecta las funciones de la biblioteca C con sus operaciones subyacentes del kernel.

  • Lección 2 • Arquitectura de Linux y Visión General del Kernel

    Cubre el espacio kernel vs. espacio usuario, diseño de kernel monolítico y abstracción de hardware. Establece el marco conceptual del que dependen todos los temas de programación subsiguientes.

  • Lección 3 • Compilación, Enlazado y Carga

    Explica el pipeline completo de herramientas desde el código fuente hasta el ejecutable, incluyendo enlazado estático y dinámico. Prepara a los estudiantes para diagnosticar errores de construcción y entender la estructura binaria.

  • Lección 4 • Fundamentos del Lenguaje C para Trabajo de Sistemas

    Revisa punteros, disposición de memoria, structs y operaciones a nivel de bits críticas para el código de sistemas. Une el conocimiento general de C con los patrones de bajo nivel utilizados a lo largo del curso.

  • Lección 5 • Configuración del Entorno de Desarrollo

    Configura un entorno de desarrollo Linux con GCC, GDB, Make y bibliotecas esenciales. Asegura que cada estudiante tenga una línea base de construcción reproducible antes de escribir cualquier código.

Capítulo 2Ver detalles

E/S de Archivos y la Capa VFS

  • Lección 1 • Operaciones de Directorios y Metadatos

    Enseña stat(), recorrido de directorios y gestión de enlaces incluyendo enlaces duros y simbólicos. Permite a los programas inspeccionar y manipular la estructura del sistema de archivos programáticamente.

  • Lección 2 • Operaciones de Archivo POSIX

    Cubre open(), read(), write(), lseek() y close() con todos los flags y modos relevantes. Enseña patrones de uso correctos y trampas comunes como lecturas y escrituras parciales.

  • Lección 3 • Archivos Mapeados en Memoria

    Demuestra mmap() para mapear archivos en el espacio de direcciones del proceso para E/S rápida y datos compartidos. Conecta la E/S de archivos con los conceptos de memoria virtual introducidos en capítulos posteriores.

  • Lección 4 • Descriptores de Archivo y Archivos Abiertos

    Explica la tabla de archivos abiertos, los enteros descriptores de archivo y las estructuras de datos del kernel detrás de ellos. Fundamenta todo el trabajo de E/S subsiguiente en un modelo preciso de cómo el kernel rastrea los archivos abiertos.

  • Lección 5 • Operaciones Avanzadas de Archivo

    Introduce E/S dispersa-reunida, truncamiento de archivos y perforación de huecos para archivos dispersos. Extiende las habilidades básicas de E/S a escenarios de alto desempeño y eficientes en almacenamiento.

Capítulo 3Ver detalles

Procesos: Creación, Control y Terminación

  • Lección 1 • Atributos e Internos del Proceso

    Examina PID, PPID, UID, GID y los campos del descriptor de proceso que el kernel mantiene. Proporciona el vocabulario y modelo de datos necesarios para controlar procesos programáticamente.

  • Lección 2 • Espera y Recolección de Hijos

    Enseña wait(), waitpid() y waitid() para recolectar el estado de salida de los hijos y prevenir zombies. Asegura que los estudiantes escriban programas multiproceso libres de fugas.

  • Lección 3 • Ejecución de Programas con exec()

    Explica la familia exec, el paso de argumentos y entorno, y lo que se preserva a través de exec. Permite a los estudiantes construir shells y lanzadores de procesos que reemplazan imágenes de proceso correctamente.

  • Lección 4 • Creación de Procesos con fork()

    Cubre la semántica de copia al escribir, el manejo del valor de retorno y la herencia de recursos después de fork(). Construye la base para todos los patrones de programación multiproceso en el curso.

  • Lección 5 • Credenciales y Privilegios del Proceso

    Cubre los bits setuid/setgid, conjuntos de capacidades y la reducción de privilegios para un diseño de proceso seguro. Prepara a los estudiantes para escribir programas que manejen permisos elevados de forma segura.

Capítulo 4Ver detalles

Señales: Entrega, Manejo y Enmascaramiento

  • Lección 1 • Conceptos de Señales y Señales Estándar

    Introduce números de señal, disposiciones predeterminadas y el mecanismo de entrega del kernel. Establece el modelo conceptual requerido antes de escribir cualquier código de manejo de señales.

  • Lección 2 • Máscaras de Señales y Bloqueo

    Enseña sigprocmask(), manipulación de sigset_t y protección de secciones críticas mediante bloqueo. Permite a los estudiantes prevenir carreras de señales en operaciones de múltiples pasos.

  • Lección 3 • Programación Async-Signal-Safe

    Identifica funciones async-signal-safe y patrones para escribir manejadores correctos y reentrantes. Previene los errores sutiles que surgen al llamar funciones inseguras dentro de los manejadores.

  • Lección 4 • Señales en Tiempo Real y signalfd

    Cubre señales POSIX en tiempo real, garantías de encolamiento y la interfaz signalfd() para manejo síncrono. Extiende las habilidades de señales a arquitecturas de alta confiabilidad y orientadas a eventos.

  • Lección 5 • Instalación de Manejadores de Señales

    Cubre la estructura sigaction(), SA_flags y las diferencias con la función legacy signal(). Enseña la forma correcta y portable de instalar manejadores que evitan condiciones de carrera.

Capítulo 5Ver detalles

Comunicación Entre Procesos

  • Lección 1 • Colas de Mensajes POSIX

    Enseña mq_open(), mq_send(), mq_receive() y entrega de mensajes basada en prioridad. Proporciona una alternativa estructurada y tipada a los pipes de flujo de bytes para IPC orientado a mensajes.

  • Lección 2 • Comparación y Selección de Mecanismos IPC

    Analiza las ventajas y desventajas de rendimiento, latencia, complejidad y persistencia en todos los tipos de IPC. Equipa a los estudiantes para tomar decisiones arquitectónicas informadas en diseños de sistemas reales.

  • Lección 3 • Semáforos POSIX

    Cubre semáforos con nombre y sin nombre, sem_wait/sem_post y patrones de exclusión mutua. Proporciona la capa de sincronización necesaria para usar memoria compartida de forma segura.

  • Lección 4 • Pipes y FIFOs

    Cubre pipes anónimos, creación de FIFOs y el patrón productor-consumidor para procesos relacionados y no relacionados. Introduce IPC de flujo de bytes unidireccional como la primitiva de coordinación más simple.

  • Lección 5 • Memoria Compartida POSIX

    Demuestra shm_open(), ftruncate() y mmap() para crear regiones de memoria compartida entre procesos. Permite el intercambio de datos de alto rendimiento sin copia y prepara a los estudiantes para la sincronización basada en semáforos.

Capítulo 6Ver detalles

Gestión de Memoria y Memoria Virtual

  • Lección 1 • Uso Avanzado de mmap()

    Demuestra MAP_ANONYMOUS, MAP_FIXED, huge pages y madvise() para ajuste de desempeño. Extiende las habilidades de mmap() de E/S de archivos a gestión de memoria de propósito general.

  • Lección 2 • Asignación de Heap y el Asignador

    Cubre malloc(), calloc(), realloc(), free() y los internos del asignador de glibc incluyendo arenas. Enseña patrones de asignación correctos y cómo evitar la corrupción del heap.

  • Lección 3 • Protección de Memoria y Permisos

    Enseña mprotect() para cambiar permisos de página y páginas guardia para detección de desbordamiento de pila. Permite a los estudiantes implementar técnicas de endurecimiento de seguridad a nivel de memoria.

  • Lección 4 • Arquitectura de Memoria Virtual

    Explica tablas de páginas, disposición del espacio de direcciones virtuales y la interfaz /proc/pid/maps. Proporciona el modelo mental necesario para entender el comportamiento del asignador y la semántica de mmap().

  • Lección 5 • Detección y Corrección de Errores de Memoria

    Usa Valgrind, AddressSanitizer y LeakSanitizer para encontrar fugas, use-after-free y desbordamientos. Construye las habilidades de diagnóstico necesarias para mantener la seguridad de memoria con calidad de producción.

Capítulo 7Ver detalles

Hilos POSIX y Sincronización

  • Lección 1 • Creación de Hilos y Ciclo de Vida

    Cubre pthread_create(), atributos de hilo, estado detached y pthread_join(). Establece el modelo de ciclo de vida del hilo sobre el que se construyen todos los temas de sincronización.

  • Lección 2 • Bloqueos de Lectura-Escritura y Barreras

    Cubre rwlock para cargas de trabajo con muchas lecturas y pthread_barrier para sincronización de fases. Extiende el kit de herramientas de sincronización a patrones donde el bloqueo exclusivo es demasiado grueso.

  • Lección 3 • Variables de Condición

    Demuestra pthread_cond_wait(), despertares espurios y el patrón de bucle de predicado. Permite a los hilos esperar eficientemente cambios de estado sin busy-waiting.

  • Lección 4 • Mutexes y Secciones Críticas

    Enseña inicialización de mutex, disciplina de lock/unlock y tipos de mutex con verificación de errores. Proporciona la herramienta principal para proteger datos compartidos de modificaciones concurrentes.

  • Lección 5 • Almacenamiento Thread-Local y Seguridad

    Explica __thread, pthread_key_t y seguridad async-signal en programas multihilo. Enseña patrones para estado por hilo que evitan la compartición y reducen la contención de lock.

Capítulo 8Ver detalles

Sockets y Programación de Redes

  • Lección 1 • E/S No Bloqueante y epoll

    Implementa un servidor orientado a eventos usando sockets no bloqueantes, epoll_create() y modo edge-triggered. Escala el manejo de conexiones más allá del modelo de un hilo por conexión.

  • Lección 2 • Fundamentos de la API de Socket

    Cubre socket(), bind(), listen(), accept(), connect() y estructuras de dirección para IPv4 e IPv6. Establece la superficie central de la API sobre la que se construye toda la programación de red.

  • Lección 3 • UDP y Sockets de Datagrama

    Cubre sendto(), recvfrom() y patrones de comunicación sin conexión para UDP. Contrasta la entrega no confiable de UDP con TCP e identifica casos de uso apropiados.

  • Lección 4 • Opciones de Socket y Características Avanzadas

    Enseña getsockopt()/setsockopt() para ajustar buffers, keepalive y control del algoritmo Nagle. Permite el ajuste fino de desempeño y confiabilidad de las conexiones de red.

  • Lección 5 • Programación Cliente-Servidor TCP

    Implementa un servidor y cliente echo TCP completo con manejo y cierre de conexiones adecuados. Enseña comunicación de flujo confiable y la importancia de manejar envíos y recepciones parciales.

Certificación

Tu certificado válido de finalización

Este curso es para ti:

  • Desarrolladores de backend que quieren entender lo que sucede debajo de sus frameworks.

  • Ingenieros de sistemas embebidos que migran a plataformas basadas en Linux y APIs POSIX.

  • Egresados de ciencias de la computación que buscan cerrar la brecha entre el plan de estudios y el trabajo en la industria de sistemas.

  • Ingenieros DevOps que desean diagnosticar problemas a nivel de kernel sin adivinar.

  • Programadores aficionados de C listos para ir más allá de los tutoriales hacia la interacción real con el sistema operativo.

  • Investigadores de seguridad que necesitan comprender los aspectos internos de Linux para encontrar vulnerabilidades.

Lo que dicen nuestros alumnos

Sus clases son perfectas. Adquirí el paquete de un año y, finalmente, tengo la oportunidad de seguir diversos temas de mi interés sin necesidad de cambiar de plataforma... les agradezco por todo lo que hacen, ya los he recomendado a otras personas...
Giulio Carlo
Giulio CarloEstudiante de Marketing Digital
Me gusta cómo las lecciones van directo al grano y cómo puedo cambiar capítulos y saltar contenidos que no necesito.
Mariana Ferres
Mariana FerresEstudiante de Fotografía
Me gusta el contenido y la forma de presentación y transcripción de videos, ¡lo que acelera el proceso!
Luciana Alvarenga
Luciana AlvarengaEstudiante de Diseño de Uñas
La plataforma es rápida, fácil de usar. La diversidad de contenido y los videos complementarios ayudan mucho en el aprendizaje.
André Felipe
André FelipeEstudiante de Ingeniería de Prompt

Principales capacitaciones

Preguntas frecuentes

¿Quién es Dedika?

¿El certificado es válido en México?

¿Los cursos son gratuitos?

¿Cuál es la carga horaria del curso?

¿Cómo son los cursos?

¿Cómo funcionan los cursos?

¿Cuál es la duración de los cursos?

¿Cuál es el costo o precio de los cursos?

¿Qué es un curso EAD u online y cómo funciona?

Curso en PDF