Struttura del corso

Introduzione

  •  Obiettivi
  •  Chi sei
  •  La Fondazione Linux
  •  Linux Formazione di base
  •  Programmi di certificazione e badge digitali
  •  Linux Distribuzioni
  •  Piattaforme
  •  Preparazione del sistema
  •  Utilizzo e download di una macchina virtuale
  •  Le cose cambiano in Linux

Preliminari

  •  Procedure
  •  Norme e l'LSB

Come lavorare nei progetti OSS **

  •  Panoramica su come contribuire correttamente
  •  Rimani vicino alla linea principale per sicurezza e qualità
  •  Studiare e comprendere il DNA del progetto
  •  Capire quale prurito vuoi Scratch
  •  Identificare i manutentori e i loro flussi di lavoro e metodi
  •  Ricevi input tempestivi e lavora all'aperto
  •  Contribuisci con bit incrementali, non con dump di codice di grandi dimensioni
  •  Lascia il tuo ego fuori dalla porta: non essere sottileSkinned
  •  Sii paziente, sviluppa relazioni a lungo termine, sii utile

Compilatori

  •  GCC
  •  Altri compilatori
  •  Principali opzioni gcc
  •  Preprocessore
  •  Ambienti di sviluppo integrati (IDE)
  •  Laboratori

Biblioteche

  •  Librerie statiche
  •  Librerie condivise
  •  Collegamento alle librerie
  •  Caricatore di collegamento dinamico
  •  Laboratori

Fare

  •  Utilizzo di make e Makefile
  •  Costruzione di progetti di grandi dimensioni
  •  Regole più complicate
  •  Regole predefinite
  •  Laboratori

Controllo del codice sorgente

  •  Controllo del codice sorgente
  •  RCS e CVS
  •  Sovversione
  •  Git
  •  Laboratori

Debug e dump di base

  •  Gdb
  •  Cosa sono i file di dump di base?
  •  Produzione di dump di base
  •  Esame dei dump di base
  •  Laboratori

Strumenti di debug

  •  Ottenere il tempo
  •  Profilazione e prestazioni
  •  Valgrind
  •  Laboratori

Chiamate di sistema

  •  Chiamate di sistema e funzioni di libreria
  •  Come vengono effettuate le chiamate di sistema
  •  Valori restituiti e numeri di errore
  •  Laboratori

Memoria Management e allocazione

  •  Memorie Management
  •  Allocazione dinamica
  •  Ottimizzazione di malloc()
  •  Blocco delle pagine
  •  Laboratori

File e filesystem in Linux **

  •  File, directory e dispositivi
  •  Il file system virtuale
  •  Il filesystem ext2/ext3
  •  Journaling dei filesystem
  •  Il filesystem ext4/
  •  Laboratori

File I/O

  •  I/O dei file UNIX
  •  Apertura e chiusura
  •  Leggere, scrivere e cercare
  •  I/O posizionale e vettoriale
  •  Libreria I/O standard
  •  Supporto per file di grandi dimensioni (LFS)
  •  Laboratori

Operazioni avanzate sui file

  •  Funzioni statistiche
  •  Funzioni di directory
  •  inotify
  •  Mappatura della memoria
  •  flock() e fcntl()
  •  Creazione di file temporanei
  •  Altre chiamate di sistema
  •  Laboratori

Processi  I

  •  Che cos'è un processo?
  •  Limiti del processo
  •  Gruppi di processi
  •  Il filesystem proc
  •  Metodi InterProcess Communication
  •  Laboratori

Processi  II

  •  Utilizzo di system() per creare un processo
  •  Utilizzo di fork() per creare un processo
  •  Utilizzo di exec() per creare un processo
  •  Utilizzo di clone()
  •  Uscita
  •  Costruttori e Distruttori
  •  Attesa
  •  Processi demoniaci
  •  Laboratori

Tubi e Fifo

  •  Tubazioni e InterProcess Communication
  •  popen() e pclose()
  •  tubo()
  •  Named Pipe (FIFO)
  •  splice(), vmsplice() e tee()
  •  Laboratori

I/O asincrono**

  •  Che cos'è l'I/O asincrono?
  •  L'API DI I/O asincrono POSIX
  •  Linux Attuazione
  •  Laboratori

Segnali  I

  •  Cosa sono i segnali?
  •  Segnali disponibili
  •  Dispacciamento dei segnali
  •  Allarmi, Pausa e Sonno
  •  Impostazione di un gestore di segnali
  •  Set di segnali
  •  sigaction()
  •  Laboratori

Segnali  II

  •  Reentrancy e gestori di segnali
  •  Salti e ritorni non locali
  •  siginfo e sigqueue()
  •  Segnali in tempo reale
  •  Laboratori

POSIX Discussioni  I

  •  Multithreading in Linux
  •  Struttura di base del programma
  •  Creazione ed eliminazione di thread
  •  Segnali e thread
  •  Forking vs. filettatura
  •  Laboratori

Filettature  POSIX II

  •  Situazioni di stallo e condizioni di gara
  •  Operazioni Mutex
  •  Semafori
  •  Futexes
  •  Operazioni condizionali
  •  Laboratori

Networking e prese

  •  Networking Livelli
  •  Cosa sono le prese?
  •  Prese di flusso
  •  Zoccoli di datagrammi
  •  Prese grezze
  •  Ordinamento dei byte
  •  Laboratori

Socket,  indirizzi e host

  •  Strutture degli indirizzi socket
  •  Conversione degli indirizzi IP
  •  Informazioni sull'host
  •  Laboratori

Socket,  porte e protocolli

  •  Informazioni sulla porta di servizio
  •  Informazioni sul protocollo
  •  Laboratori

Client socket  

  •  Sequenza client di base
  •  presa()
  •  connettere()
  •  close() e shutdown()
  •  Client UNIX
  •  Client Internet
  •  Laboratori

Server Sockets  

  •  Sequenza di server di base
  •  bind()
  •  ascolta()
  •  accettare()
  •  Server UNIX
  •  Server Internet
  •  Laboratori

Operazioni di ingresso/uscita dei  socket

  •  write(), read()
  •  send(), recv()
  •  sendto(), recvfrom()
  •  sendmsg(), recvmsg()
  •  sendfile()
  •  socketpair()
  •  Laboratori

Opzioni socket  

  •  Recupero e impostazione delle opzioni socket
  •  fcntl()
  •  ioctl()
  •  getsockopt() e setsockopt()
  •  Laboratori

Prese Netlink**

  •  Cosa sono i socket netlink?
  •  Apertura di un socket netlink
  •  Messaggi netlink
  •  Laboratori

Server  socket multiplexing e simultanei

  •  I/O socket multiplexati e asincroni
  •  selezionare()
  •  sondaggio()
  •  pselect() e ppoll()
  •  epoll
  •  I/O asincrono e guidato dal segnale
  •  Server simultanei
  •  Laboratori

Inter Processo Communication

  •  Metodi di IPC
  •  POSIX IPC
  •  Sistema V IPC**
  •  Laboratori

Memoria condivisa

  •  Che cos'è la memoria condivisa?
  •  Memoria condivisa POSIX
  •  Memoria condivisa System V**
  •  Laboratori

Semafori

  •  Che cos'è un semaforo?
  •  Semafori POSIX
  •  Semafori System V**
  •  Laboratori

Code di messaggi

  •  Che cosa sono le code di messaggi?
  •  Code di messaggi POSIX
  •  Code di messaggi di System V**
  •  Laboratori

Requisiti

Questo corso è rivolto a sviluppatori esperti. Gli studenti devono essere esperti nella programmazione C e avere familiarità con le utilità di base Linux e gli editor di testo.

Pubblico

Questo corso è rivolto a sviluppatori esperti. Gli studenti devono essere esperti nella programmazione C e avere familiarità con le utilità di base Linux e gli editor di testo.

Livello di esperienza: Intermedio

 28 ore

Numero di Partecipanti



Prezzo per Partecipante

Corsi relativi

Categorie relative