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
- Quién es usted
- The Linux Foundation
- Formación de Linux Foundation
- Programas de certificación e insignias digitales
- Distribuciones de Linux
- Plataformas
- Preparación de su sistema
- Uso y descarga de una máquina virtual
- Los cambios en Linux
Aspectos preliminares
- Procedimientos
- Normas y la LSB
Cómo trabajar en proyectos de OSS **
- Descripción general de cómo contribuir adecuadamente
- Manténgase cerca de la línea principal para garantizar seguridad y calidad
- Estudie y comprenda el ADN del proyecto
- Identifique el problema que desea resolver
- Identifique a los mantenedores y sus flujos de trabajo y métodos
- Obtenga retroalimentación temprana y trabaje de forma abierta
- Contribuya con fragmentos incrementales, no con grandes volcados de código
- Deje su ego en la puerta: no sea delicado
- Sea paciente, desarrolle relaciones a largo plazo y sea útil
Compiladores
- GCC
- Otros compiladores
- Principales opciones de gcc
- Preprocesador
- Entornos de desarrollo integrados (IDE)
- Laboratorios
Bibliotecas
- Bibliotecas estáticas
- Bibliotecas compartidas
- Enlace con bibliotecas
- Cargador de enlace dinámico
- Laboratorios
Make
- Uso de make y Makefiles
- Construcción de proyectos grandes
- Reglas más complicadas
- Reglas integradas
- Laboratorios
Control de fuentes
- Control de fuentes
- RCS y CVS
- Subversion
- git
- Laboratorios
Depuración y volcados de núcleo (core dumps)
- gdb
- ¿Qué son los archivos de volcado de núcleo?
- Generación de volcados de núcleo
- Examen de volcados de núcleo
- Laboratorios
Herramientas de depuración
- Obtención de la hora
- 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 devueltos 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
E/S de archivos
- E/S de archivos UNIX
- Apertura y cierre
- Lectura, escritura y búsqueda
- E/S posicional y por vector
- Biblioteca de E/S estándar
- Soporte para archivos grandes (LFS)
- Laboratorios
Operaciones avanzadas de archivos
- Funciones stat
- Funciones de directorio
- inotify
- Asignación de memoria mapeada
- flock() y fcntl()
- Creación de archivos temporales
- Otras llamadas al sistema
- Laboratorios
Procesos I
- ¿Qué es un proceso?
- Límites de proceso
- 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
Tuberías y canales nombrados (FIFO)
- Tuberías y comunicación entre procesos
- popen() y pclose()
- pipe()
- Canales nombrados (FIFO)
- splice(), vmsplice() y tee()
- Laboratorios
E/S asíncrona **
- ¿Qué es la E/S asíncrona?
- La API de E/S asíncrona POSIX
- Implementación en Linux
- Laboratorios
Señales I
- ¿Qué son las señales?
- Señales disponibles
- Distribución de señales
- Alarmas, pausa y espera
- Configuración de un controlador de señales
- Conjuntos de señales
- sigaction()
- Laboratorios
Señales II
- Reentrancia y controladores de señales
- Saltos y devoluciones 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
- fork() frente a hilos
- Laboratorios
Hilos POSIX II
- Interbloqueos y condiciones de carrera
- Operaciones de mutex
- Semáforos
- Futexes
- Operaciones condicionales
- Laboratorios
Redes y sockets
- Capas de red
- ¿Qué son los sockets?
- Sockets de transmisión (stream)
- Sockets de datagrama
- Sockets sin procesar (raw)
- Orden de bytes
- Laboratorios
Direcciones y hosts de sockets
- Estructuras de dirección de socket
- Conversión de direcciones IP
- Información del host
- Laboratorios
Puertos y protocolos de sockets
- Información de puertos de servicio
- Información del protocolo
- Laboratorios
Clientes de sockets
- Secuencia básica del cliente
- socket()
- connect()
- close() y shutdown()
- Cliente UNIX
- Cliente de Internet
- Laboratorios
Servidores de sockets
- Secuencia básica del servidor
- bind()
- listen()
- accept()
- Servidor UNIX
- Servidor de Internet
- Laboratorios
Operaciones de entrada/salida de sockets
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratorios
Opciones de sockets
- Obtención y configuración 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
Interleaving de sockets y servidores concurrentes
- E/S de sockets intercalada y asíncrona
- select()
- poll()
- pselect() y ppoll()
- epoll
- E/S controlada por señales y asíncrona
- Servidores concurrentes
- Laboratorios
Comunicación entre procesos
- Métodos de IPC
- IPC POSIX
- IPC del Sistema V**
- Laboratorios
Memoria compartida
- ¿Qué es la memoria compartida?
- Memoria compartida POSIX
- Memoria compartida del Sistema V**
- Laboratorios
Semáforos
- ¿Qué es un semáforo?
- Semáforos POSIX
- Semáforos del Sistema V**
- Laboratorios
Colas de mensajes
- ¿Qué son las colas de mensajes?
- Colas de mensajes POSIX
- Colas de mensajes del Sistema V**
- Laboratorios
Requerimientos
Este curso está dirigido a desarrolladores con experiencia. Los estudiantes deben tener competencia en programación en C y familiaridad con las utilidades básicas de Linux y editores de texto.
Público objetivo
Este curso está dirigido a desarrolladores con experiencia. Los estudiantes deben tener competencia en programación en C y familiaridad con las utilidades básicas de Linux y editores de texto.
Nivel de experiencia: Intermedio
28 Horas