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 kernel
- ciclo de lanzamiento
- ramas del kernel
- mainline
- kernel frente a espacio de usuario
- mecanismo frente a política
- alternativas de controladores del kernel
- RTOS frente a Linux
Gestión de Memoria
- memoria virtual frente a memoria física
- asignación de memoria en el kernel
- páginas
- zonas
- API
- slab
Parche del Kernel
- ciclo de vida
- git
- 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
- EXPORTAR SÍMBOLO GPL
- makefile fuera del árbol de fuentes
- herramientas de inicio de módulo (module-init-tools)
- módulo dentro del árbol del kernel
- Kconfig
- paso de parámetros
- sparse
Controladores de Caracteres
- arquitectura
- interfaz usuario/kernel
- subsistema I/O
- VFS (Sistema de Archivos Virtual)
- sysfs (dispositivos, bus, controladores, clases),
- kobject/ktype/kset
- modelo de controlador del kernel de Linux
- archivos de dispositivo
-
controlador de carácter
- inicialización
- registro
- open, release
- cdev, cdev add, cdev del,...
- números mayor/menor
- udev, udevmonitor, udevadm
Operaciones Avanzadas de Controladores de Caracteres
- ioctl
- ioctl sin bloqueo
- ioctl compatible (compat ioctl)
- API en espacio de usuario
- API en espacio de kernel
- ciclo de vida del proceso
- dormir/bloquear
- dormir/despertar
- cola de espera (wait queue)
- problema del rebaño tronador (thundering herd)
- poll/select
Depuración del Kernel
- depuración
-
depuración del kernel
- búsqueda binaria con git
- soporte de depuración del kernel
- printk syslogd, klogd, niveles de registro, límite de tasa, niveles de depuración, sistemas selectivos de depuración
- depuración mediante consulta de debugfs
- depuración de oops, aseguramiento de oops
- Tecla Mágica SysRq
- kgdb/kdb
- JTAG
Rastreo (Tracing)
- gcov
- lcov
- oprofile
-
ftrace
- traza nop
- traza de funciones
- traza de cambios de planificador (sched switch)
- traza de gráfico de funciones
- traza dinámica
- trace-cmd/kernelshark
- perf
- LTTng
Interrupciones
- interrupciones frente a sondeo (polling)
- interrupción
- secciones de programa
- reintroducción (reentrancy)
- eventos
- manejador de interrupciones
- manejador de interrupciones compartido
- flujo de interrupciones
- control de interrupciones
Aplazamiento de Trabajo
- partes superiores/inferiores (top/bottom halves)
- softirqs (interrupciones de software)
- tasklets
- colas de trabajo (work queues)
- interrupciones en hilo (threaded interrupts)
Concurrencia
- región/sección crítica
- atómico (atomic)
- condición de carrera (race condition)
- sincronización
- bloqueo (locking)
- soluciones de bloqueo
- interbloqueo (deadlock)
- contención
- ¿qué bloquear?
-
¿qué se puede usar?
- operaciones atómicas
- bloqueos de giro (spin locks)
- bloqueos de giro lector-escritor
- semáforo
- semáforo binario
- mutex
- semáforo lector-escritor
- variables de finalización (completion variables)
- bloqueos secuenciales
- deshabilitar preemoción
- ordenación y barreras (barriers)
Tiempo
- HZ
- Jiffies
- demoras grandes/pequeñas
- temporizadores del kernel
E/I de Hardware
- Puertos de E/I
- Memoria de E/I
- ¿Cómo lidiar con los efectos secundarios al acceder a registros?
Comunicación Usuario-Kernel
- put(get)_user()
- copiar a(desde)_user()
- E/I del Kernel
- mapeo de memoria
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilidad
- tamaño de palabra
- tipos opacos
- char con/sin signo
- alineación de datos
- promoción entera (integral promotion)
- reutilización de código
- endianidad (endianess)
- tick del sistema
- tamaño de página
- ordenación de instrucciones
- SMP/preemoción/memoria alta
A menos que se indique lo contrario, el contenido y este programa de curso tienen licencia bajo Atribución-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0).
Requerimientos
- Conocimiento básico del uso de un sistema GNU/Linux como usuario final
- Conocimiento básico de un shell de línea de comandos
- Conocimientos básicos de desarrollo en espacio de usuario / aplicaciones
- Conocimiento intermedio de programación en C
- Debería haber asistido antes a Arquitectura de Sistemas GNU/Linux Integrados (¡muy recomendado!) y/o tener un buen entendimiento 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
Su conocimiento y paciencia.
Chrisna - Agricatural Research Council
Curso - Ionic 4 and Angular for Developers
Traducción Automática