Temario del curso
Introducción
- breve historia de GNU/Linux
- licenciamiento
- versionado del kernel
- ciclo de lanzamiento
- árboles de kernel
- mainline
- kernel vs. espacio de usuario
- mecanismo vs. política
- alternativas a los controladores del kernel
- RTOS vs. Linux
Administración de Memoria
- memoria virtual vs. memoria física
- asignación de memoria en el kernel
- páginas
- zonas
- API
- slab
Parche del Kernel
- ciclo de vida
- git
- código fuente del kernel
- crear parche
- verificar parche
- corregir parche
- enviar parche
- código auditado
Módulos del Kernel
- obtener fuentes del kernel
- configurar/compilar/instalar
- controladores de dispositivos (enlazados estáticamente, cargados en tiempo de ejecución)
- init/exit
- licenciamiento
- EXPORT SYMBOL GPL
- makefile fuera del árbol
- module-init-tools
- módulo en el árbol del kernel
- Kconfig
- paso de parámetros
- sparse
Controladores de Caracteres
- arquitectura
- interfaz usuario/kernel
- subsistema I/O
- VFS
- sysfs (dispositivos, bus, controladores, clases),
- kobject/ktype/kset
- modelo de controlador del kernel de Linux
- archivos de dispositivo
-
controlador de caracteres
- inicialización
- registro
- open, release
- cdev, cdev add, cdev del,...
- números mayor/menor
- udev, udevmonitor, udevadm
Operaciones Avanzadas de Controladores de Caracteres
- ioctl
- unlocked ioctl
- compat ioctl
- API de espacio de usuario
- API de espacio del kernel
- ciclo de vida del proceso
- durmiendo/bloqueando
- durmiendo/despertando
- cola de espera
- manada rugiente
- poll/select
Depuración del Kernel
- depuración
-
depuración del kernel
- búsqueda binaria con git
- soporte de depuración desde el kernel
- printk syslogd, klogd, niveles de registro, límite de velocidad, niveles de depuración, subsistemas de depuración selectiva
- depuración consultando debugfs
- depuración de oops, afirmar oops
- Magic SysRq Key
- kgdb/kdb
- JTAG
Seguimiento
- gcov
- lcov
- oprofile
-
ftrace
- trazador nop
- trazador de funciones
- trazador de cambio de programación
- trazador de gráficos de funciones
- trazador dinámico
- trace-cmd/kernelshark
- perf
- LTTng
Interrupciones
- interrupciones vs. sondeo
- interrupción
- secciones de programa
- reentrancia
- eventos
- manejador de interrupción
- manejador compartido de interrupciones
- flujo de interrupción
- control de interrupción
Trabajo Diferido
- mitad superior/inferior
- softirqs
- tasklets
- colas de trabajo
- interrupciones en hilos
Concurrency
- región/sección crítica
- operaciones atómicas
- condición de carrera
- sincronización
- bloqueo
- soluciones de bloqueo
- deadlocks
- contention
- ¿Qué bloquear?
-
¿Qué se puede usar?
- operaciones atómicas
- spin locks
- spin locks de lectura-escritura
- semáforo
- semáforo binario
- mutex
- semáforo de lectura-escritura
- variables de completado
- locks secuenciales
- deshabilitar la preempción
- ordenación y barreras
Tiempo
- HZ
- Jiffies
- retrasos grandes/pequeños
- temporizadores del kernel
Hardware I/O
- Puertos I/O
- Memoria I/O
- ¿Cómo lidiar con los efectos secundarios al acceder a registros?
Comunicación Usuario-Kernel
- put(get)_user()
- copy to(from)_user()
- E/S del Kernel
- mapeo de memoria
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilidad
- tamaño de palabra
- tipos opacos
- char signado/sin signo
- alineación de datos
- promoción integral
- reutilización de código
- endianness
- tick del sistema
- tamaño de página
- ordenación de instrucciones
- SMP/preempción/memoria alta
Salvo indicación contraria, 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 una línea de comandos shell
- Conocimientos básicos de desarrollo en espacio de usuario / aplicaciones
- Conocimientos intermedios de programación en C
- Debería haber asistido a Arquitectura de Sistemas Embebidos GNU/Linux antes (¡altamente recomendado!) y/o tener un buen entendimiento de los temas allí expuestos
Testimonios (5)
Información adicional muy útil
Grzegorz - Comp S.A.
Curso - BLoC Pattern
Traducción Automática
Edward es un excelente facilitador
Zibusiso Ncube - Agricatural Research Council
Curso - Ionic 4 and Angular for Developers
Traducción Automática
El conocimiento de Miguel sobre el tema era extenso. Hizo que la formación fuera fácil de entender y el flujo fue equilibrado; añadiendo nuevas características a cada sección según lo necesitaba. Cubrió todo lo que se le pidió y respondió cada pregunta con total exhaustividad. Fue una experiencia muy agradable.
Paul Coaton - SEMPCheck Services
Curso - Flutter Development Bootcamp with Dart
Traducción Automática
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Curso - The Yocto Project - An Overview - hands-on
El formador fue entusiasta, amable y amaba el tema
Isaac Murphy - Royal New Zealand Airforce
Curso - Build Native iOS and Android Apps with Flutter
Traducción Automática