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
trace-cmd/kernelshark
  • Perf
  • LTTng
  • Interrumpe
  • 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
     

    Número de participantes


    Comienza

    Termina


    Dates are subject to availability and take place between 09:30 and 16:30.
    Los cursos de formación abiertos requieren más de 5 participantes.

    Testimonios (3)

    Cursos Relacionados

    El Proyecto Yocto - Una Visión General - Práctico

      28 horas

    IBM MobileFirst Platform for Hybrid Mobile Application Development

      21 horas

    Categorías Relacionadas