Entrar em Contato

Programa do Curso

Introdução

  • breve história do GNU/Linux
  • licenciamento
  • versionamento do kernel
  • ciclo de lançamento
  • árvores do kernel
  • mainline
  • kernel vs. espaço de usuário
  • mecanismo vs. política
  • alternativas para drivers de kernel
  • RTOS vs. Linux

Gerenciamento de Memória

  • memória virtual vs. memória física
  • alocação de memória no kernel
  • páginas
  • zonas
  • API
  • slab

Patch do Kernel

  • ciclo de vida
  • git
  • fonte do kernel
  • criar patch
  • verificar patch
  • corrigir patch
  • distribuir patch
  • código auditado

Módulos do Kernel

  • obter fontes do kernel
  • configurar/compilar/instalar
  • drivers de dispositivo (vinculados estaticamente, carregados em tempo de execução)
  • init/exit
  • licenciamento
  • EXPORT SYMBOL GPL
  • makefile fora da árvore do kernel
  • module-init-tools
  • módulo na árvore do kernel
  • Kconfig
  • passagem de parâmetros
  • sparse

Drivers Char

  • arquitetura
  • interface usuário/kernel
  • subsistema I/O
  • VFS
  • sysfs (dispositivos, barramento, drivers, classes),
  • kobject/ktype/kset
  • modelo de driver do kernel Linux
  • arquivos de dispositivo
  • driver char

    • inicialização
    • registro
    • open, release
    • cdev, cdev_add, cdev_del,...
    • números major/minor
    • udev, udevmonitor, udevadm

Operações Avançadas de Driver Char

  • ioctl
  • ioctl unlocked
  • compat ioctl
  • API de espaço de usuário
  • API de espaço de kernel
  • ciclo de vida do processo
  • sleep/bloqueio
  • sleep/wake up
  • wait queue
  • thundering herd
  • poll/select

Depuração de Kernel

  • depuração
  • depurando o kernel

    • busca binária com git
    • suporte de depuração do kernel
    • printk, syslogd, klogd, loglevels, rate limit, debug levels, debug selective subsystems
    • depuração através da consulta ao debugfs
    • depuração de oops, forçando oops
    • Tecla Mágica SysRq
    • kgdb/kdb
    • JTAG

Rastreamento

  • gcov
  • lcov
  • oprofile
  • ftrace

    • nop tracer
    • function tracer
    • sched switch tracer
    • function graph tracer
    • dynamic tracer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Interrupções

  • interrupções vs. polling
  • interrupção
  • seções de programa
  • reentrancy
  • eventos
  • manipulador de interrupção
  • manipulador de interrupção compartilhada
  • fluxo de interrupção
  • controle de interrupção

Adiar Trabalho

  • top/bottom halves
  • softirqs
  • tasklets
  • work queues
  • interrupts encadeados

Concorrência

  • região/seção crítica
  • atomic
  • condição de corrida
  • sincronização
  • locking
  • soluções de locking
  • deadlock
  • contention
  • o que bloquear?
  • o que pode ser usado?

    • operações atômicas
    • spin locks
    • reader-writer spin locks
    • semáforo
    • semáforo binário
    • mutex
    • reader-writer semaphore
    • variáveis de completamento
    • sequential locks
    • desativar preempção
    • ordem e barreiras

Tempo

  • HZ
  • Jiffies
  • atrasos grandes/pequenos
  • timers do kernel

I/O de Hardware

  • I/O Ports
  • I/O Memory
  • Como lidar com efeitos colaterais ao acessar registradores?

Comunicação Usuário-Kernel

  • put(get)_user()
  • copy to(from)_user()
  • Kernel I/O
  • mapeamento de memória
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portabilidade

  • tamanho de palavra
  • tipos opacos
  • char assinado/não assinado
  • alinhamento de dados
  • promoção inteira
  • reutilização de código
  • endianess
  • tick do sistema
  • tamanho de página
  • ordenação de instruções
  • SMP/preempção/high memory

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

Requisitos

  • Conhecimento básico sobre o uso de um sistema GNU/Linux como usuário final
  • Conhecimento básico de um shell de linha de comando
  • Conhecimento básico de desenvolvimento em espaço de usuário / aplicação
  • Conhecimento intermediário de programação em C
  • Deve ter participado anteriormente de Arquitetura de Sistemas GNU/Linux Embarcados (fortemente recomendado!) e/ou ter um bom entendimento dos tópicos descritos nesse curso.
 35 Horas

Treinamento Corporativo Personalizado

Soluções de treinamento projetadas exclusivamente para empresas.

  • Conteúdo Personalizado: Adaptamos o programa e os exercícios práticos aos objetivos e necessidades reais do seu projeto.
  • Horário Flexível: Datas e horários adaptados à agenda da sua equipe.
  • Formato: Online (ao vivo), In-Company (em suas instalações) ou Híbrido.
Investimento

Preço por grupo privado, treinamento online ao vivo, a partir de 6500 € + VAT*

Entre em contato conosco para obter um orçamento preciso e conhecer nossas promoções mais recentes

Testemunhos de Clientes (3)

Próximas Formações Provisórias

Categorias Relacionadas