Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Temario del curso
Introducción
- Objetivos
- Sobre usted
- La Linux Foundation
- Capacitación de la Linux Foundation
- Programas de certificación y distintivos digitales
- Distribuciones de Linux
- Plataformas
- Preparación de su sistema
- Uso y descarga de una máquina virtual
- Cambios en Linux
Preparativos
- Procedimientos
- Normas y el LSB
Cómo trabajar en proyectos de código abierto (OSS) **
- Resumen sobre cómo contribuir adecuadamente
- Manténgase cerca de la rama principal para garantizar seguridad y calidad
- Estudie y comprenda el ADN del proyecto
- Identifique qué problema desea resolver
- Identifique a los mantenedores, sus flujos de trabajo y métodos
- Obtenga retroalimentación temprana y trabaje de forma transparente
- Contribuya con fragmentos incrementales, no con grandes volcados de código
- Deje su ego en la puerta: no sea sensible a las críticas
- Sea paciente, desarrolle relaciones a largo plazo y brinde ayuda
Compiladores
- GCC
- Otros compiladores
- Opciones principales de gcc
- Preprocesador
- Entornos de desarrollo integrado (IDE)
- Laboratorios
Bibliotecas
- Bibliotecas estáticas
- Bibliotecas compartidas
- Enlace a bibliotecas
- Cargador de enlace dinámico
- Laboratorios
Make
- Uso de make y archivos Makefile
- Construcción de proyectos grandes
- Reglas más complejas
- Reglas integradas
- Laboratorios
Control de versiones
- Control de versiones
- RCS y CVS
- Subversion
- git
- Laboratorios
Depuración y volcados de núcleo
- gdb
- ¿Qué son los archivos de volcado de núcleo?
- Generación de volcados de núcleo
- Análisis de volcados de núcleo
- Laboratorios
Herramientas de depuración
- Obtención del tiempo
- Perfilado y rendimiento
- valgrind
- Laboratorios
Llamadas al sistema
- Llamadas al sistema frente a funciones de biblioteca
- Cómo se realizan las llamadas al sistema
- Valores de retorno y números de error
- Laboratorios
Gestión y asignación de memoria
- Gestión de memoria
- Asignación dinámica
- Ajuste de malloc()
- Bloqueo de páginas
- Laboratorios
Archivos y sistemas de archivos en Linux **
- Archivos, directorios y dispositivos
- El sistema de archivos virtual
- El sistema de archivos ext2/ext3
- Sistemas de archivos con registro (journaling)
- El sistema de archivos ext4
- Laboratorios
Entrada/Salida de archivos
- Entrada/Salida de archivos UNIX
- Apertura y cierre
- Lectura, escritura y búsqueda
- Entrada/Salida posicional y vectorial
- Biblioteca estándar de entrada/salida
- Soporte para archivos grandes (LFS)
- Laboratorios
Operaciones avanzadas con archivos
- Funciones stat
- Funciones de directorio
- inotify
- Mapeo de memoria
- flock() y fcntl()
- Creación de archivos temporales
- Otras llamadas al sistema
- Laboratorios
Procesos I
- ¿Qué es un proceso?
- Límites de procesos
- Grupos de procesos
- El sistema de archivos proc
- Métodos de comunicación entre procesos
- Laboratorios
Procesos II
- Uso de system() para crear un proceso
- Uso de fork() para crear un proceso
- Uso de exec() para crear un proceso
- Uso de clone()
- Salida
- Constructores y destructores
- Espera
- Procesos demonio
- Laboratorios
Pipes y FIFOs
- Pipes y comunicación entre procesos
- popen() y pclose()
- pipe()
- Pipes con nombre (FIFOs)
- splice(), vmsplice() y tee()
- Laboratorios
Entrada/Salida asíncrona **
- ¿Qué es la entrada/salida asíncrona?
- La API de entrada/salida asíncrona de POSIX
- Implementación en Linux
- Laboratorios
Señales I
- ¿Qué son las señales?
- Señales disponibles
- Envío de señales
- Alarmas, pausas y suspensión
- Configuración de un manejador de señales
- Conjuntos de señales
- sigaction()
- Laboratorios
Señales II
- Reentrancia y manejadores de señales
- Saltos y retornos no locales
- siginfo y sigqueue()
- Señales de tiempo real
- Laboratorios
Hilos POSIX I
- Multihilo en Linux
- Estructura básica del programa
- Creación y destrucción de hilos
- Señales e hilos
- forking frente a threading
- Laboratorios
Hilos POSIX II
- Deadlocks y condiciones de carrera
- Operaciones con mutex
- Semáforos
- Futexes
- Operaciones condicionales
- Laboratorios
Redes y sockets
- Capas de red
- ¿Qué son los sockets?
- Sockets de flujo
- Sockets de datagrama
- Sockets crudos
- Orden de bytes
- Laboratorios
Sockets: direcciones y hosts
- Estructuras de dirección de socket
- Conversión de direcciones IP
- Información del host
- Laboratorios
Sockets: puertos y protocolos
- Información de puertos de servicio
- Información de protocolos
- Laboratorios
Sockets: clientes
- Secuencia básica de cliente
- socket()
- connect()
- close() y shutdown()
- Cliente UNIX
- Cliente de Internet
- Laboratorios
Sockets: servidores
- Secuencia básica de servidor
- bind()
- listen()
- accept()
- Servidor UNIX
- Servidor de Internet
- Laboratorios
Sockets: operaciones de entrada/salida
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratorios
Sockets: opciones
- Obtención y establecimiento de opciones de socket
- fcntl()
- ioctl()
- getsockopt() y setsockopt()
- Laboratorios
Sockets netlink **
- ¿Qué son los sockets netlink?
- Apertura de un socket netlink
- Mensajes netlink
- Laboratorios
Sockets: multiplexación y servidores concurrentes
- Entrada/salida de socket multiplexada y asíncrona
- select()
- poll()
- pselect() y ppoll()
- epoll
- Entrada/salida impulsada por señales y asíncrona
- Servidores concurrentes
- Laboratorios
Comunicación entre procesos
- Métodos de IPC
- IPC de POSIX
- IPC de System V **
- Laboratorios
Memoria compartida
- ¿Qué es la memoria compartida?
- Memoria compartida de POSIX
- Memoria compartida de System V **
- Laboratorios
Semáforos
- ¿Qué es un semáforo?
- Semáforos de POSIX
- Semáforos de System V **
- Laboratorios
Colas de mensajes
- ¿Qué son las colas de mensajes?
- Colas de mensajes de POSIX
- Colas de mensajes de System V **
- Laboratorios
Requerimientos
Este curso está dirigido a desarrolladores con experiencia. Los estudiantes deben dominar la programación en C y conocer las utilidades básicas de Linux y los editores de texto.
Público objetivo
Este curso está dirigido a desarrolladores con experiencia. Los estudiantes deben dominar la programación en C y conocer las utilidades básicas de Linux y los editores de texto.
Nivel de experiencia: Intermedio
28 Horas