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

Número de participantes


Preço por Participante

Próximas Formações Provisórias

Categorias Relacionadas