Obrigado por enviar sua consulta! Um dos membros da nossa equipe entrará em contato com você em breve.
Obrigado por enviar sua reserva! Um dos membros da nossa equipe entrará em contato com você em breve.
Programa do Curso
Introdução
- breve história do GNU/Linux
- licenciamento
- versionamento do kernel
- ciclo de lançamento
- árvores de kernel
- mainline
- kernel vs. espaço do usuário
- mecanismo vs. política
- alternativas de driver 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
- código-fonte do kernel
- criar patch
- verificar patch
- corrigir patch
- enviar patch
- código auditado
Módulos de Kernel
- obter fontes do kernel
- configurar/compilar/instalar
- drivers de dispositivos (linkados estaticamente, carregados em tempo de execução)
- init/exit
- licenciamento
- EXPORT SYMBOL GPL
- Makefile fora da árvore
- module-init-tools
- módulo na árvore do kernel
- Kconfig
- passagem de parâmetros
- sparse
Drivers de Caracteres
- arquitetura
- interface usuário/kernel
- subsistema de E/S
- VFS
- sysfs (dispositivos, barramento, drivers, classes),
- kobject/ktype/kset
- modelo de driver do kernel Linux
- arquivos de dispositivo
-
driver de caracteres
- inicialização
- registro
- open, release
- cdev, cdev add, cdev del,...
- números major/minor
- udev, udevmonitor, udevadm
Operações Avançadas de Drivers de Caracteres
- ioctl
- unlocked ioctl
- compat ioctl
- API do espaço do usuário
- API do espaço do kernel
- ciclo de vida do processo
- dormindo/bloqueado
- dormindo/acordando
- fila de espera
- thundering herd
- poll/select
Depuração do Kernel
- depuração
-
depurando o kernel
- pesquisa binária com git
- suporte de depuração do kernel
- printk syslogd, klogd, níveis de log, limitação de taxa, níveis de debug, subsistemas de debug seletivos
- depuração por consulta ao debugfs
- depuração de oops, asserção de oops
- Chave 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. sondagem
- interrupção
- seções de programa
- reentrância
- eventos
- handler de interrupção
- handler de interrupção compartilhado
- fluxo de interrupção
- controle de interrupção
Deferimento de Trabalho
- partes superior/inferior
- softirqs
- tasklets
- filas de trabalho
- interrupções threadadas
Concorrência
- região/seção crítica
- operações atômicas
- condição de corrida
- sincronização
- bloqueio
- soluções de bloqueio
- deadlock
- contentção
- 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 conclusão
- locks sequenciais
- desabilitar a preempção
- ordenação e barreiras
Tempo
- HZ
- Jiffies
- grandes/pequenos atrasos
- timers do kernel
Hardware I/O
- Portas de E/O
- Memória de E/O
- Como lidar com efeitos colaterais ao acessar registros?
Comunicação Usuário-Kernel
- put(get)_user()
- copy to(from)_user()
- I/O do Kernel
- mapeamento de memória
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilidade
- tamanho da palavra
- tipos opacos
- char assinado/não assinado
- alinhamento de dados
- promoção integral
- reutilização de código
- endianness
- tick do sistema
- tamanho da página
- ordem de instrução
- SMP/preempção/memória alta
Exceto quando indicado de outra forma, o conteúdo e este esboço do curso são licenciados sob Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional (CC BY-NC-SA 4.0).
Requisitos
- Conhecimento básico de uso de um sistema GNU/Linux como usuário final
- Conhecimento básico de uma linha de comando shell
- Conhecimento básico de desenvolvimento no espaço do usuário / aplicação
- Conhecimento intermediário de programação em C
- Deve ter participado de Arquitetura de Sistemas GNU/Linux Embarcados (altamente recomendado!) e/ou ter um bom entendimento dos tópicos abordados lá
35 Horas
Testemunhos de Clientes (3)
Tudo está bem.
Adrian Rybka - SEOyon
Curso - Flutter Development Bootcamp with Dart
Máquina Traduzida
Informações adicionais muito úteis
Grzegorz - Comp S.A.
Curso - BLoC Pattern
Máquina Traduzida
Seu conhecimento e paciência.
Chrisna - Agricatural Research Council
Curso - Ionic 4 and Angular for Developers
Máquina Traduzida