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
- Objetivos
- Quem Você É
- The Linux Foundation (Fundação Linux)
- Treinamento da Fundação Linux
- Programas de Certificação e Digital Badging
- Distribuições Linux
- Plataformas
- Preparando Seu Sistema
- Usando e Baixando uma Máquina Virtual
- As coisas mudam no Linux
Preliminares
- Procedimentos
- Padrões e LSB (LSB - Specification)
Como Trabalhar em Projetos de Código Aberto **
- Visão Geral sobre Como Contribuir Corretamente
- Permaneça Próximo à Linha Principal para Segurança e Qualidade
- Estude e Entenda o DNA do Projeto
- Descubra Quais Problemas Você Deseja Resolver
- Identifique Mantenedores e Seus Flows de Trabalho e Métodos
- Obtenha Entrada Antecipada e Trabalhe em Público
- Contribua com Pequenos Bits, Não Com Grandes Depósitos de Código
- Deixe Sua Ego na Porta: Não Seja Sensível
- Seja Paciente, Desenvolva Relações a Longo Prazo e Seja Útil
Compiladores
- GCC
- Outros Compiladores
- Principais Opções do GCC
- Processador de Preprocessamento
- Ambientes de Desenvolvimento Integrados (IDE)
- Laboratórios
Bibliotecas
- Bibliotecas Estáticas
- Bibliotecas Compartilhadas
- Linkando com Bibliotecas
- Carregador de Ligações Dinâmicas
- Laboratórios
Make
- Usando make e Makefiles
- Construindo Projetos Grandes
- Regras Mais Complexas
- Regras Internas
- Laboratórios
Controle de Versão
- Controle de Versão
- RCS e CVS
- Subversion
- git
- Laboratórios
Depuração e Dumps de Core
- gdb
- O que São Arquivos de Dump de Core?
- Produzindo Dumps de Core
- Examinando Dumps de Core
- Laboratórios
Ferramentas de Depuração
- Obtendo o Tempo
- Perfilamento e Desempenho
- valgrind
- Laboratórios
Chamadas de Sistema
- Chamadas de Sistema vs. Funções de Biblioteca
- Como as Chamadas de Sistema São Feitas
- Valores de Retorno e Números de Erro
- Laboratórios
Gestão de Memória e Alocação
- Gestão de Memória
- Alocação Dinâmica
- Otimização malloc()
- Bloqueio de Páginas
- Laboratórios
Arquivos e Sistemas de Arquivos no Linux **
- Arquivos, Diretórios e Dispositivos
- O Sistema Virtual de Arquivos (VFS)
- Sistema de Arquivos ext2/ext3
- Sistemas de Arquivos com Jornalismo
- Sistema de Arquivos ext4/
- Laboratórios
E/S de Arquivo
- E/S de Arquivo UNIX
- Abrindo e Fechando
- Leitura, Escrita e Busca (Seeking)
- Entrada/Saída Posicional e Vetorial
- Biblioteca E/S Padrão
- Suporte a Arquivos Grandes (LFS)
- Laboratórios
E/S de Arquivo Avançada
- Funções stat
- Funções de Diretório
- inotify
- Mapeamento de Memória
- flock() e fcntl()
- Criando Arquivos Temporários
- Outras Chamadas de Sistema
- Laboratórios
Processos I
- O que é um Processo?
- Limites de Processos
- Grupos de Processos
- Sistema de Arquivos proc
- Métodos de Comunicação entre Processos (IPC)
- Laboratórios
Processos II
- Usando system() para Criar um Processo
- Usando fork() para Criar um Processo
- Usando exec() para Criar um Processo
- Usando clone()
- Saindo (Exiting)
- Construtores e Destrutores
- Aguardando (Waiting)
- Processos Daemon
- Laboratórios
Pipes e Fifos
- Pipes e Comunicação entre Processos
- popen() e pclose()
- pipe()
- Pipes Nomeados (FIFOs)
- splice(), vmsplice() e tee()
- Laboratórios
E/S Assíncrona**
- O que é E/S Assíncrona?
- A API de E/S Assíncrona POSIX
- Implementação no Linux
- Laboratórios
Sinais I
- O que São Sinais?
- Sinais Disponíveis
- Encaminhando Sinais
- Alarmes, Pausas e Dormindo (Sleeping)
- Configurando um Manipulador de Sinais
- Conjuntos de Sinais
- sigaction()
- Laboratórios
Sinais II
- Reentrância e Manipuladores de Sinais
- Salto (Jumping) e Retornos Não Locais (NonLocal Returns)
- siginfo e sigqueue()
- Sinais em Tempo Real
- Laboratórios
Fios POSIX I
- Multiprocessamento sob Linux
- Estrutura Básica do Programa
- Criando e Destruindo Fios (Threads)
- Sinais e Fios
- Forking vs. Threading
- Laboratórios
Fios POSIX II
- Mortes por Trava (Deadlocks) e Condições de Competição (Race Conditions)
- Operações de Mutex
- Semaforos
- Futexes
- Operações Condicionalmente
- Laboratórios
Rede e Sockets
- Camadas de Redes
- O que São Sockets?
- Sockets de Fluxo (Stream Sockets)
- Sockets de Datagrama (Datagram Sockets)
- Sockets Brutos (Raw Sockets)
- Ordem de Bytes
- Laboratórios
Sockets Endereços e Hosts
- Estruturas de Endereço Socket
- Convertendo Endereços IP
- Informações do Host
- Laboratórios
Sockets Portas e Protocolos
- Informação de Porta de Serviço
- Informações sobre Protocolos
- Laboratórios
Sockets Clientes
- Sequência Básica do Cliente
- socket()
- connect()
- close() e shutdown()
- Cliente UNIX
- Cliente Internet
- Laboratórios
Sockets Servidores
- Sequência Básica do Servidor
- bind()
- listen()
- accept()
- Servidor UNIX
- Servidor Internet
- Laboratórios
Sockets Operações de E/S
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratórios
Sockets Opções
- Obtendo e Definindo Opções de Socket
- fcntl()
- ioctl()
- getsockopt() and setsockopt()
- Laboratórios
Sockets Netlink**
- O que são Sockets Netlink?
- Abertura de um Socket Netlink
- Mensagens Netlink
- Laboratórios
Sockets Multiplexação e Servidores Concorrentes
- E/S Múltipla e Assíncrona de Sockets
- select()
- poll()
- pselect() and ppoll()
- epoll
- E/S Direcionada por Sinal e Assíncrona
- Servidores Concorrentes
- Laboratórios
Comunicação entre Processos (IPC)
- Métodos de IPC
- IPC POSIX
- IPC System V**
- Laboratórios
Memória Compartilhada
- O que é Memória Compartilhada?
- Memória Compartilhada POSIX
- Memória Compartilhada System V**
- Laboratórios
Semaforos
- O que é um Semaforo?
- Semaforos POSIX
- Semaforos System V**
- Laboratórios
Filas de Mensagens
- O que São Filas de Mensagem?
- Filas de Mensagem POSIX
- Filas de Mensagem System V**
- Laboratórios
Requisitos
Este curso destina-se a programadores experientes. Os alunos devem ser proficientes em programação C e estar familiarizados com utilitários Linux básicos e editores de texto.
Público
Este curso destina-se a programadores experientes. Os alunos devem ser proficientes em programação C e estar familiarizados com utilitários Linux básicos e editores de texto.
Nível de experiência: Intermediário
28 Horas