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
- historia rápida de GNU/Linux
- licenciamiento
- versionado del núcleo
- ciclo de lanzamientos
- árboles del núcleo
- versión principal (mainline)
- núcleo vs. espacio de usuario
- mecanismo vs. política
- alternativas de controladores de núcleo
- RTOS vs. Linux
Gestión de Memoria
- memoria virtual vs. memoria física
- asignación de memoria en el núcleo
- páginas
- zonas
- API
- slab
Parche del Núcleo
- ciclo de vida
- git
- fuentes del núcleo
- creación de parches
- revisión de parches (check-patch)
- corrección de parches
- envío de parches
- código revisado
Módulos del Núcleo
- obtención de las fuentes del núcleo
- configurar/construir/instalar
- controladores de dispositivo (vinculados estáticamente, cargados en tiempo de ejecución)
- inicio/salida (init/exit)
- licenciamiento
- EXPORT_SYMBOL GPL
- makefile fuera del árbol (out of tree)
- module-init-tools
- módulo dentro del árbol del núcleo
- Kconfig
- paso de parámetros
- sparse
Controladores de Carácter
- arquitectura
- interfaz usuario/núcleo
- subsistema I/O
- VFS
- sysfs (dispositivos, bus, controladores, clases),
- kobject/ktype/kset
- modelo de controlador del núcleo de Linux
- archivos de dispositivo
- controlador de carácter
- inicialización
- registro
- abrir, cerrar
- cdev, cdev_add, cdev_del,...
- números mayor/menor
- udev, udevmonitor, udevadm
Operaciones Avanzadas de Controladores de Carácter
- ioctl
- ioctl desbloqueado (unlocked ioctl)
- ioctl compatible (compat ioctl)
- API de espacio de usuario
- API de espacio de núcleo
- ciclo de vida del proceso
- bloqueo/espera activa
- dormir/despertar
- cola de espera
- manada de trueno (thundering herd)
- poll/select
Depuración del Núcleo
- depuración
- depuración del núcleo
- búsqueda binaria con git
- soporte de depuración desde el núcleo
- printk syslogd, klogd, niveles de registro, límite de velocidad, niveles de depuración, subsistemas selectivos
- depuración mediante consulta a debugfs
- depuración de oops, forzar oops
- Tecla mágica SysRq
- kgdb/kdb
- JTAG
Trazado
- gcov
- lcov
- oprofile
- ftrace
- nop tracer
- trazador de funciones
- trazador de cambio de planificación (sched switch)
- trazador de gráfico de funciones
- trazador dinámico
- trace-cmd/kernelshark
- perf
- LTTng
Interrupciones
- interrupciones frente a sondeo (polling)
- interrupción
- secciones de programa
- reentrancia
- eventos
- manejador de interrupciones
- manejador de interrupciones compartido
- flujo de interrupciones
- control de interrupciones
Diferimiento de Tareas
- mitad superior/mitad inferior
- softirqs
- tasklets
- colas de trabajo
- interrupciones en hilo
Concurrencia
- región/sección crítica
- operaciones atómicas
- condición de carrera
- sincronización
- bloqueos (locking)
- soluciones de bloqueo
- cuelgue mortal (deadlock)
- contención
- ¿qué bloquear?
- ¿qué se puede utilizar?
- operaciones atómicas
- bloqueos spin
- bloqueos spin lector-escritor
- semáforo
- semáforo binario
- mutex
- semáforo lector-escritor
- variables de finalización
- bloqueos secuenciales
- desactivar la premptión
- ordenación y barreras
Tiempo
- HZ
- Jiffies
- retrasos grandes/pequeños
- temporizadores del núcleo
I/O de Hardware
- Puertos I/O
- Memoria I/O
- ¿Cómo tratar con los efectos secundarios al acceder a registros?
Comunicación Usuario-Núcleo
- put(get)_user()
- copy to(from)_user()
- I/O del núcleo
- mapeo de memoria
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilidad
- tamaño de palabra
- tipos opacos
- char firmado/sin firmar
- alineación de datos
- promoción entera
- reutilización de código
- endianness
- ticked de sistema
- tamaño de página
- orden de instrucciones
- SMP/premptión/memoria alta
A menos que se indique lo contrario, el contenido y este programa de 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 shell de línea de comandos
- Conocimientos básicos de desarrollo en espacio de usuario / aplicaciones
- Conocimientos intermedios de programación en C
- Se recomienda haber asistido a Arquitectura de Sistemas GNU/Linux Embebidos previamente (fuertemente recomendado) y/o tener una buena comprensión de los temas allí descritos
35 Horas
Testimonios (3)
Todo está bien.
Adrian Rybka - SEOyon
Curso - Flutter Development Bootcamp with Dart
Traducción Automática
Información adicional muy útil
Grzegorz - Comp S.A.
Curso - BLoC Pattern
Traducción Automática
La presentación del formador y su forma de comunicarse.
Gianpiero Arico - Urmet Spa
Curso - Embedded Linux Systems Architecture
Traducción Automática