Struttura del corso

Introduzione

  •  Obiettivi
  •  Chi Sei Tu
  •  Linux Foundation
  •  Formazione della Linux Foundation
  •  Programmi di Certificazione e Digital Badge
  •  Distribuzioni Linux
  •  Piattaforme
  •  Preparare il Sistema
  •  Utilizzo e Download di una Macchina Virtuale
  •  Le cose cambiano in Linux

Preliminari

  •  Procedure
  •  Standard e LSB

Come Lavorare nei Progetti OSS **

  •  Panoramica su Come Contribuire Correttamente
  •  Resta Vicino alla Mainline per Sicurezza e Qualità
  •  Studia e Comprendi il DNA del Progetto
  •  Capisci Cosa Vuoi Risolvere
  •  Identifica gli Sviluppatori Principali e le loro Workflow ed Metodologie
  •  Ottieni Input Iniziale e Lavora in Modo Aperto
  •  Contribuisci con Piccoli Pezzi, Non Con Grandi Carichi di Codice
  •  Lascia Fuori l'Orgoglio alla Porta: Non Essere Pelli Sottili
  •  Sii Paziente, Crea Relazioni a Lungo Termine, Sii Utile

Compilatori

  •  GCC
  •  Altri Compilatori
  •  Opzioni Principali di GCC
  •  Preprocessore
  •  Ambienti di Sviluppo Integrati (IDE)
  •  Laboratori

Biblioteche

  •  Biblioteche Statiche
  •  Biblioteche Condivise
  •  Collegamento a Biblioteche
  •  Caricatore di Collegamento Dinamico
  •  Laboratori

Make

  •  Utilizzo di make e Makefiles
  •  Costruire progetti grandi
  •  Regole più complesse
  •  Regole predefinite
  •  Laboratori

Gestione delle Sorgenti

  •  Gestione delle Sorgenti
  •  RCS e CVS
  •  Subversion
  •  git
  •  Laboratori

Risultati di Debugging e Core Dumps

  •  gdb
  •  Cosa sono i File di Core Dump?
  •  Produzione di Core Dumps
  •  Esame dei Core Dumps
  •  Laboratori

Strumenti di Debugging

  •  Ottienere il Tempo
  •  Profilazione e Prestazioni
  •  valgrind
  •  Laboratori

Chiamate al Sistema

  •  Chiamate al Sistema vs. Funzioni della Libreria
  •  Come Sono Effettuate le Chiamate al Sistema
  •  Valori di Ritorno e Numeri di Errore
  •  Laboratori

Gestione della Memoria ed Allocazione

  •  Gestione della Memoria
  •  Allocazione Dinamica
  •  Ottimizzazione di malloc()
  •  Bloccaggio delle Pagine
  •  Laboratori

File e Filesystem in Linux **

  •  File, Directory ed Dispositivi
  •  Il Virtual File System
  •  Il filesystem ext2/ext3
  •  Filesystems di Journaling
  •  Il filesystem ext4/
  •  Laboratori

I/O su File

  •  I/O File UNIX
  •  Apertura e Chiusura
  •  Lettura, Scrittura e Cerca
  •  I/O Posizionale e Vettoriale
  •  Libreria I/O Standard
  •  Supporto per File Grandi (LFS)
  •  Laboratori

Operazioni Avanzate sui File

  •  Funzioni Stat
  •  Funzioni Directory
  •  inotify
  •  Mappatura della Memoria
  •  flock() e fcntl()
  •  Creazione di File Temporanei
  •  Altre Chiamate al Sistema
  •  Laboratori

Processi I

  •  Cosa è un Processo?
  •  Limiti dei Processi
  •  Gruppi di Processi
  •  Il filesystem proc
  •  Metodi di Comunicazione Interscambio
  •  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 Daemon
  •  Laboratori

Pipes e Fifos

  •  Pipes e Comunicazione Interscambio
  •  popen() e pclose()
  •  pipe()
  •  Pipe Nominate (FIFOs)
  •  splice(), vmsplice() e tee()
  •  Laboratori

I/O Asincrono**

  •  Cosa è l'I/O Asincrono?
  •  L'API I/O Asincrona POSIX
  •  Implementazione Linux
  •  Laboratori

Sigilli I

  •  Cosa sono i Sigilli?
  •  Sigilli Disponibili
  •  Invio di Sigilli
  •  Allarmi, Pausa e Sonno
  •  Impostazione di un Gestore di Segnali
  •  Set di Segnali
  •  sigaction()
  •  Laboratori

Sigilli II

  •  Reentrancy e Gestori di Segnali
  •  Salto e Ritorni Non Locali
  •  siginfo e sigqueue()
  •  Segnali in Tempo Reale
  •  Laboratori

Fasi POSIX I

  •  Multithreading sotto Linux
  •  Struttura di Base del Programma
  •  Creazione e Distruzione dei Thread
  •  Segnali e Thread
  •  Forking vs. Threading
  •  Laboratori

Fasi POSIX II

  •  Impasse e Condizioni di Corsa
  •  Operazioni Mutex
  •  Semafori
  •  Futexes
  •  Operazioni Condizionali
  •  Laboratori

Rete e Socket

  •  Strati di Rete
  •  Cosa sono i Socket?
  •  Socket di Flusso
  •  Socket Datagramma
  •  Socket Raw
  •  Ordinamento dei Byte
  •  Laboratori

Indirizzi e Host dei Socket

  •  Strutture di Indirizzamento Socket
  •  Conversione degli Indirizzi IP
  •  Informazioni sui Host
  •  Laboratori

Porte e Protocolli dei Socket

  •  Informazioni sulla Porta del Servizio
  •  Informazioni sul Protocollo
  •  Laboratori

Clients di Socket

  •  Sequenza Base del Client
  •  socket()
  •  connect()
  •  close() e shutdown()
  •  Client UNIX
  •  Client Internet
  •  Laboratori

Servers di Socket

  •  Sequenza Base del Server
  •  bind()
  •  listen()
  •  accept()
  •  Server UNIX
  •  Server Internet
  •  Laboratori

I/O su Socket

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

Opzioni dei Socket

  •  Recupero e Impostazione delle Opzioni del Socket
  •  fcntl()
  •  ioctl()
  •  getsockopt() e setsockopt()
  •  Laboratori

Sockets Netlink**

  •  Cosa sono i Socket Netlink?
  •  Apertura di un Socket Netlink
  •  Messaggi Netlink
  •  Laboratori

Sockets  Multiplexing e Server Concurrenti

  •  I/O Multiplexato e Asincrono dei Socket
  •  select()
  •  poll()
  •  pselect() and ppoll()
  •  epoll
  •  I/O Indotto da Segnali e Asincroni
  •  Server Concurrenti
  •  Laboratori

Comunicazione Interscambio di Processi

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

Memoria Condivisa

  •  Cosa è la Memoria Condivisa?
  •  Memoria Condivisa POSIX
  •  Memoria Condivisa Sistema V**
  •  Laboratori

Semafori

  •  Cosa è un Semaforo?
  •  Semafori POSIX
  •  Semafori Sistema V**
  •  Laboratori

Code dei Messaggi

  •  Cosa sono le Code dei Messaggi?
  •  Code dei Messaggi POSIX
  •  Code dei Messaggi Sistema 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 in Arrivo

Categorie relative