Programa do Curso

Introdução

  • Objectivos
  • Quem são vocês
  • A Fundação Linux
  • Formação da Fundação Linux
  • Programas de Certificação e Distintivos Digitais
  • [Distribuições
  • Plataformas
  • Preparando seu sistema
  • Usando e baixando uma máquina virtual
  • As coisas mudam em Linux

Preliminares

  • Procedimentos
  • Padrões e a LSB

Como trabalhar em projetos OSS **

  • Visão geral sobre como contribuir corretamente
  • Fique perto da linha principal para segurança e qualidade
  • Estudar e entender o DNA do projeto
  • Descubra o que você quer fazer Scratch
  • Identificar mantenedores e seus fluxos e métodos de trabalho
  • Obtenha contribuições antecipadas e trabalhe de forma aberta
  • Contribua com bits incrementais, não com grandes despejos de código
  • Deixe seu ego na porta: Não seja magro
  • Seja paciente, desenvolva relações de longo prazo, seja útil

Compiladores

  • GCC
  • Outros compiladores
  • Principais opções do gcc
  • Pré-processador
  • Ambientes de desenvolvimento integrado (IDE)
  • Laboratórios

Bibliotecas

  • Bibliotecas estáticas
  • Bibliotecas partilhadas
  • Ligação a bibliotecas
  • Carregador de ligação dinâmica
  • Laboratórios

Make

  • Usando make e Makefiles
  • Construindo grandes projetos
  • Regras mais complicadas
  • Regras incorporadas
  • Laboratórios

Controlo de Fontes

  • Controlo de fontes
  • RCS e CVS
  • Subversão
  • git
  • Laboratórios

Depuração e Core Dumps

  • gdb
  • O que são ficheiros Core Dump?
  • Produzindo Core Dumps
  • Examinando Core Dumps
  • Laboratórios

Ferramentas de depuração

  • Obtendo o tempo
  • Criação de perfil 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

Memória Management e Alocação

  • Memória Management
  • Alocação Dinâmica
  • Ajustando malloc()
  • Bloqueio de páginas
  • Laboratórios

Ficheiros e Sistemas de Ficheiros em Linux **

  • Ficheiros, Directórios e Dispositivos
  • O sistema de ficheiros virtual
  • O sistema de ficheiros ext2/ext3
  • Sistemas de ficheiros com journaling
  • O sistema de ficheiros ext4/
  • Laboratórios

E/S de ficheiros

  • E/S de ficheiros UNIX
  • Abrir e fechar
  • Leitura, escrita e procura
  • E/S posicional e vetorial
  • Biblioteca de E/S padrão
  • Suporte a ficheiros grandes (LFS)
  • Laboratórios

Operações avançadas de ficheiros

  • Funções de Stat
  • Funções de diretório
  • inotify
  • Mapeamento de memória
  • flock() e fcntl()
  • Criação de ficheiros temporários
  • Outras chamadas de sistema
  • Laboratórios

Processos I

  • O que é um processo?
  • Limites de processos
  • Grupos de processos
  • O sistema de ficheiros proc
  • Métodos InterProcessos Communication
  • Laboratórios

Processos II

  • Usando system() para criar um processo
  • Usando fork() para criar um processo
  • Usando exec() para criar um processo
  • Usando clone()
  • Sair
  • Construtores e Destrutores
  • Esperando
  • Processos Daemon
  • Laboratórios

Pipes e Fifos

  • Pipes e InterProcessos Communication
  • 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 Linux
  • Laboratórios

Sinais I

  • O que são Sinais?
  • Sinais disponíveis
  • Despacho de sinais
  • Alarmes, pausa e suspensão
  • Configuração de um manipulador de sinais
  • Conjuntos de sinais
  • sigaction()
  • Laboratórios

Sinais II

  • Reentrância e manipuladores de sinais
  • Saltos e retornos não-locais
  • siginfo e sigqueue()
  • Sinais em Tempo Real
  • Laboratórios

Threads POSIX I

  • Multithreading em Linux
  • Estrutura Básica do Programa
  • Criando e Destruindo Threads
  • Sinais e Threads
  • Forking vs. Threading
  • Laboratórios

Threads POSIX II

  • Deadlocks e condições de corrida
  • Operações de Mutex
  • Semáforos
  • Futexes
  • Operações condicionais
  • Laboratórios

Networking e Sockets

  • Camadas Networking
  • O que são Sockets?
  • Sockets de fluxo
  • Sockets de datagrama
  • Sockets brutos
  • Ordenação de bytes
  • Laboratórios

Endereços de Sockets e Hosts

  • Estruturas de endereços de sockets
  • Conversão de endereços IP
  • Informações sobre hosts
  • Laboratórios

Portas e protocolos de sockets

  • Informações sobre portas de serviço
  • Informações sobre protocolos
  • Laboratórios

Clientes de sockets

  • Sequência básica de cliente
  • socket()
  • conectar()
  • close() e shutdown()
  • Cliente UNIX
  • Cliente Internet
  • Laboratórios

Servidores de sockets

  • Sequência básica do servidor
  • bind()
  • listen()
  • accept()
  • Servidor UNIX
  • Servidor de Internet
  • Laboratórios

Operações de entrada/saída de sockets

  • escrever(), ler()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • Laboratórios

Opções de Sockets

  • Obtendo e configurando opções de sockets
  • fcntl()
  • ioctl()
  • getsockopt() e setsockopt()
  • Laboratórios

Netlink Sockets**

  • O que são netlink Sockets?
  • Abrindo um netlink Socket
  • Mensagens netlink
  • Laboratórios

Multiplexação de sockets e servidores simultâneos

  • E/S de sockets multiplexados e assíncronos
  • select()
  • poll()
  • pselect() e ppoll()
  • epoll
  • E/S assíncronas e accionadas por sinais
  • Servidores simultâneos
  • Laboratórios

Interprocessos Communication

  • Métodos de IPC
  • IPC POSIX
  • IPC do Sistema V**
  • Laboratórios

Memória Partilhada

  • O que é a Memória Partilhada?
  • Memória Partilhada POSIX
  • Memória Partilhada System V**
  • Laboratórios

Semáforos

  • O que é um Semáforo?
  • Semáforos POSIX
  • Semáforos do Sistema V**
  • Laboratórios

Filas de mensagens

  • O que são filas de mensagens?
  • Filas de Mensagens POSIX
  • Filas de mensagens do 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

Cursos Relacionados

Categorias Relacionadas