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
- Breve historia de GNU/Linux
- Licenciamiento
- Versionado del núcleo
- Ciclo de lanzamiento
- Árboles del núcleo
- Línea principal (mainline)
- Núcleo frente a espacio de usuario
- Mecanismo frente a política
- Alternativas de controladores del núcleo
- RTOS frente a Linux
Gestión de Memoria
- Memoria virtual frente a memoria física
- Asignación de memoria en el núcleo
- Páginas
- Zonas
- API
- Slab
Parche del Núcleo
- Ciclo de vida
- git
- Código fuente del núcleo
- Crear un parche
- Revisar un parche
- Corregir un parche
- Envío de un parche
- Código auditado
Módulos del Núcleo
- Obtener las fuentes del núcleo
- Configurar/compilar/instalar
- Controladores de dispositivos (enlazados estáticamente, cargados en tiempo de ejecución)
- inicialización/salida
- Licenciamiento
- EXPORT SYMBOL GPL
- Makefile fuera del árbol del núcleo
- herramientas de inicialización de módulos
- Módulo dentro del árbol del núcleo
- Kconfig
- Paso de parámetros
- sparse
Controladores de Caracteres
- Arquitectura
- Interfaz usuario/núcleo
- Subsistema de E/S
- VFS (Sistema de Archivos Virtual)
- sysfs (dispositivos, bus, controladores, clases),
- kobject/ktype/kset
- Modelo de controladores del núcleo de Linux
- Archivos de dispositivo
-
Controlador de caracteres
- inicialización
- registro
- abrir, cerrar
- cdev, cdev_add, cdev_del,...
- números mayor/menor
- udev, udevmonitor, udevadm
Operaciones Avanzadas de Controladores de Caracteres
- ioctl
- ioctl desbloqueado
- ioctl compatible
- API en espacio de usuario
- API en espacio de núcleo
- Ciclo de vida de procesos
- Dormir/bloquear
- Dormir/activar
- Cola de espera
- Manada retumbante (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 del núcleo
- printk syslogd, klogd, niveles de registro, límite de tasa, niveles de depuración, sub-sistemas selectivos de depuración
- Depuración mediante consulta de debugfs
- Depuración de fallos (oops), simulación de fallos
- Tecla Mágica SysRq
- kgdb/kdb
- JTAG
Trazabilidad
- gcov
- lcov
- oprofile
-
ftrace
- trazador nop
- trazador de funciones
- trazador de cambios de planificación (sched switch)
- trazador de gráficos de funciones
- trazador dinámico
- trace-cmd/kernelshark
- perf
- LTTng
Interrupciones
- Interrupciones frente a sondeo (polling)
- Interrupción
- Secciones de programa
- Reentrancia
- Eventos
- Controlador de interrupción
- Controlador de interrupción compartido
- Flujo de interrupción
- Control de interrupciones
Aplazamiento de Trabajo
- Mitad superior/inferior
- Softirqs
- Tasklets
- Colas de trabajo
- Interrupciones subprocesadas
Concurrencia
- Región/Sección crítica
- Atómico
- Condición de carrera
- Sincronización
- Bloqueo
- Soluciones de bloqueo
- Punto muerto (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 interrupciones previas (preemption)
- Ordenación y barreras
Tiempo
- HZ
- Jiffies
- Retrasos grandes/pequeños
- Temporizadores del núcleo
E/S de Hardware
- Puertos de E/S
- Memoria de E/S
- ¿Cómo manejar los efectos secundarios al acceder a registros?
Comunicación Usuario-Núcleo
- put(get)_user()
- copiar a(desde)_user()
- E/S del Núcleo
- Mapeo de memoria
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilidad
- Tamaño de palabra
- Tipos opacos
- char con signo/sin signo
- Alineación de datos
- Promoción entera
- Reutilización de código
- Endianness
- Tick del sistema
- Tamaño de página
- Orden de instrucciones
- SMP/interrupciones previas/alta memoria
Excepto donde se indique lo contrario, el contenido y este plan de estudios están licenciados 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
- Conocimiento básico del desarrollo de aplicaciones en espacio de usuario
- Conocimiento intermedio de programación en C
- Haber asistido previamente a Arquitectura de Sistemas Embebidos GNU/Linux (muy recomendado) y/o tener una buena comprensión de los temas allí expuestos
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