Programa do Curso

Introdução

    histórico rápido de licenciamento GNU/Linux controle de versão do kernel ciclo de liberação árvores de kernel kernel principal vs. mecanismo de espaço do usuário vs. políticas alternativas de driver de kernel RTOS vs.

Memória Management

    Memória virtual vs. alocação de memória física em zonas de páginas do kernel Placa de API

Patch do kernel

    ciclo de vida git kernel fonte criar patch verificar patch corrigir patch enviar patch código auditado

Módulos do Kernel

    obter fontes do kernel configurar/construir/instalar drivers de dispositivos (ligados estaticamente, carregados em tempo de execução) licenciamento de inicialização/saída SÍMBOLO DE EXPORTAÇÃO GPL fora da árvore makefile module-init-tools módulo na árvore do kernel Parâmetro Kconfig passando esparso

Drivers de caracteres

    arquitetura interface usuário/kernel subsistema de E/S VFS sysfs (dispositivos, barramento, drivers, classes), kobject/ktype/kset modelo de driver de kernel linux arquivos de dispositivo registro de inicialização do driver char aberto, liberação cdev, cdev add, cdev del,... números maiores/menores udev, udevmonitor, udevadm

Operações avançadas de driver de personagem

    ioctl desbloqueado compatibilidade com ioctl ioctl espaço do usuário API espaço do kernel Ciclo de vida do processo da API dormir/bloquear dormir/acordar fila de espera trovejando pesquisa/seleção de rebanho

Depuração de kernel

    depuração de bugs depuração da pesquisa binária do kernel com git debug suporte do kernel printk syslogd, klogd, loglevels, limite de taxa, níveis de depuração, depuração de subsistemas seletivos depuração consultando debugfs oops depuração, afirmando oops Magic SysRq Key kgdb/kdb JTAG

Rastreamento

    gcov lcov oprofile ftrace nop rastreador de função rastreador sched switch rastreador função rastreador gráfico rastreador dinâmico
trace-cmd/kernelshark
  • desempenho
  • LTTng
  • Interrupções
  • interrupções vs. polling interrupção seções do programa eventos de reentrada manipulador de interrupção manipulador de interrupção compartilhada fluxo de interrupção controle de interrupção

      Adiando Trabalho

    metades superior/inferior softirqs tasklets filas de trabalho interrupções encadeadas

      Simultaneidade

    região/seção crítica condição de corrida atômica sincronização bloqueio soluções de bloqueio contenção de impasse o que bloquear? o que pode ser usado? operações atômicas spin locks leitor-gravador spin locks semáforo semáforo binário mutex leitor-gravador semáforo variáveis de conclusão bloqueios sequenciais desabilitam ordem de preempção e barreiras

      Tempo

    HZ Jiffies grandes/pequenos atrasos nos temporizadores do kernel

      E/S de hardware

    Portas de E/S Memória de E/S Como lidar com efeitos colaterais ao acessar registros?

      Kernel do usuário Communication

    put(get)_user() copiar para(from)_user() Mapeamento de memória de E/S do kernel procfs sysfs debugfs relayfs netlink ioctl

      Portabilidade

    tamanho da palavra tipos opacos assinados/não assinados alinhamento de dados char código de promoção integral reutilização endianess sistema tick tamanho da página instrução ordenação SMP/preempção/memória alta

      Exceto quando indicado de outra forma, o conteúdo e o esboço deste curso estão licenciados sob Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

    Requisitos

    • Familiaridade básica com a utilização de um sistema GNU/Linux como utilizador final
    • Familiaridade básica com um shell de linha de comando
    • Conhecimento básico do espaço do utilizador / desenvolvimento de aplicações
    • Conhecimentos intermédios de programação em C
    • Deve ter frequentado Embedded GNU/Linux Systems Architecture anteriormente (fortemente recomendado!) e/ou ter uma boa compreensão dos tópicos aí descritos
     35 horas

    Número de participantes



    Preço por participante

    Declaração de Clientes (4)

    Cursos Relacionados

    The Yocto Project - An Overview - hands-on

    28 horas

    Categorias Relacionadas