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.
Programa del Curso
Introducción
- Breve historia de GNU/Linux
- licenciamiento
- Control de versiones del kernel
- Ciclo de lanzamiento
- Árboles de grano
- Mainline
- Kernel vs. espacio de usuario
- Mecanismo vs. política
- Alternativas al controlador del kernel
- RTOS vs. Linux
Memoria Management
- Memoria virtual vs. memoria física
- Asignación de memoria en el kernel
- Páginas
- Zonas
- API
- tabla
Parche del kernel
- ciclo vital
- Git
- Fuente del kernel
- Crear parche
- Comprobar parche
- Parche de corrección
- parche de barco
- Código auditado
Módulos del kernel
- Obtener las fuentes del kernel
- Configurar/Construir/Instalar
- controladores de dispositivo (vinculados estáticamente, cargados en tiempo de ejecución)
- inicio/salida
- licenciamiento
- SÍMBOLO DE EXPORTACIÓN GPL
- Archivo de creación fuera del árbol
- module-init-tools
- módulo en el árbol del kernel
- Kconfig
- Paso de parámetros
- escaso
Controladores de carbón
- arquitectura
- Interfaz de usuario/kernel
- Subsistema de E/S
- VFS
- sysfs (dispositivos, bus, controladores, clases),
- kobject/ktype/kset
- Modelo de controlador del kernel de Linux
- Archivos de dispositivo
- Controlador de char
- inicialización
- registro
- abrir, soltar
- cdev, cdev add, cdev del,...
- Números mayores/menores
- udev, udevmonitor, udevadm
Operaciones avanzadas del controlador de charachter
- IOCTL
- IOCTL desbloqueado
- Compatibilidad IOCTL
- API de espacio de usuario
- API de espacio del kernel
- Ciclo de vida del proceso
- Dormir/Bloquear
- Dormir/Despertar
- cola de espera
- Manada atronadora
- Sondear/Seleccionar
Depuración del kernel
- bicho
- depuración
- Depurando el kernel
- Búsqueda binaria con Git
- Soporte de depuración desde el kernel
- printk syslogd, klogd, loglevels, límite de velocidad, niveles de depuración, subsistemas selectivos de depuración
- Depuración mediante la consulta de debugfs
- depuración de oops, afirmación de oops
- Llave mágica SysRq
- kgdb/kdb
- JTAG
Trazado
- gcov
- LCOV
- Operfil
- ftrace
- Trazador NOP
- Trazador de funciones
- Trazador de conmutadores Sched
- Trazador de gráficos de función
- Trazador dinámico
- trace-cmd/kernelshark
- Perf
- LTTng
Interrumpe
- Interrupciones vs. sondeo
- interrumpir
- Secciones del programa
- Reentrada
- Eventos
- Controlador de interrupciones
- Controlador de interrupciones compartido
- Flujo de interrupción
- Control de interrupciones
Aplazamiento de trabajos
- mitades superior/inferior
- softirqs
- Tasklets
- Colas de trabajo
- Interrrupciones roscadas
Concurrencia
- Región/sección crítica
- atómico
- Condición de la carrera
- sincronización
- bloqueo
- Soluciones de cierre
- estancamiento
- disputa
- ¿Qué bloquear?
- ¿Qué se puede utilizar?
- Operaciones atómicas
- Cerraduras giratorias
- Cerraduras de giro Lector-Escritor
- semáforo
- Semáforo binario
- Mutex
- Semáforo lector-escritor
- Variables de finalización
- Bloqueos secuenciales
- Deshabilitar la preferencia
- Ordenamiento y barreras
Hora
- HZ
- Jiffies
- Retrasos grandes/pequeños
- Temporizadores del kernel
E/S de hardware
- Puertos de E/S
- Memoria de E/S
- ¿Cómo lidiar con los efectos secundarios al acceder a los registros?
Kernel de usuario Communication
- put(obtener)_user()
- Copiar a(desde)_user()
- E/S del kernel
- Mapeo de memoria
- PROCFS
- sysfs
- depuradores
- Relés
- Enlace de red
- IOCTL
Portabilidad
- Tamaño de la palabra
- Tipos opacos
- Carácter firmado/sin firmar
- Alineación de datos
- Promoción integral
- Reutilización de código
- Endianess
- Tick del sistema
- Tamaño de página
- Ordenamiento de instrucciones
- SMP/preferencia/memoria alta
Excepto donde se indique lo contrario, el contenido y este esquema del curso están licenciados bajo Atribución-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0).
Requerimientos
- Familiaridad básica con el uso de un sistema GNU/Linux como usuario final
- Familiaridad básica con un shell de línea de comandos
- Conocimientos básicos de espacio de usuario / desarrollo de aplicaciones
- Conocimientos intermedios de programación en C
- Haber asistido a Embedded GNU/Linux Systems Architecture antes (¡muy recomendable!) y/o tener una buena comprensión de los temas descritos allí
35 Horas