Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Programa del Curso
Introducción
-
Breve historia de GNU/Linux
licenciamiento
Control de versiones del kernel
Ciclo de lanzamiento
Árboles de kernel
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
Arreglar parche
Parche de barco
Código auditado
El 2016 U.S.
-
Obtener fuentes del kernel
Configurar/Construir/Instalar
Controladores de dispositivo (vinculados estáticamente, cargados en tiempo de ejecución)
init/exit
licenciamiento
SÍMBOLO DE EXPORTACIÓN GPL
Fuera del árbol makefile
module-init-tools
Módulo en el árbol del kernel
Kconfig
Paso de parámetros
escaso
Controladores de char
-
arquitectura
Interfaz de usuario/kernel
Subsistema de E/S
VFS
sysfs (dispositivos, bus, controladores, clases),
kobject/ktype/kset
Modelo de controlador de kernel de Linux
Archivos de dispositivo
Controlador de caracteres
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
Depurar 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, aserción de oops
Clave mágica de SysRq
kgdb/kdb
JTAG
Trazado
-
GCOV
LCOV
oPerfil
ftrace
Trazador de NOP
Trazador de funciones
Trazador de conmutador Sched
Trazador de gráficos de funciones
trazador dinámico
Interrupciones frente a sondeo interrumpir Secciones del programa Reentrada Eventos Controlador de interrupciones Controlador de interrupciones compartido Flujo de interrupción Control de interrupciones
-
Aplazamiento del trabajo
mitades superior/inferior Softirqs Tasklets Colas de trabajo Interrupciones 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 Bloqueos giratorios de lector-escritor semáforo Semáforo binario Exclusiones mutuas 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 hacer frente a 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 debugfs Relés Enlace de red ioctl
-
Portabilidad
Tamaño de la palabra Tipos opacos Caracteres firmados/sin firmar Alineación de datos Promoción Integral Reutilización de código Endianess Tick del sistema Tamaño de página Orden de instrucciones SMP/preferencia/memoria alta
-
Salvo que se indique lo contrario, el contenido y el esquema de este 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 un buen conocimiento de los temas descritos allí
35 horas
Testimonios (4)
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Curso - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Curso - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic
Isaac Murphy - Royal New Zealand Airforce
Curso - Build Native iOS and Android Apps with Flutter
I really enjoy having a virtual PC online, I can do exercises whenever I want