Struttura del corso

Introduzione

  •  Obiettivi
  •  Chi Siete
  •  La Linux Foundation
  •  Formazione della Linux Foundation
  •  Programmi di Certificazione e Badge Digitali
  •  Distribuzioni Linux
  •  Piattaforme
  •  Preparazione del 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
  •  Rimanere Vicini al Mainline per Sicurezza e Qualità
  •  Studiare e Comprendere la DNA del Progetto
  •  Identificare Quale Problema Vuoi Risolvere
  •  Identificare i Maintainer e le loro Metodologie di Lavoro
  •  Ottenere Feedback in Fase Iniziale e Collaborare in Aperto
  •  Contribuire con Incrementi, Non Con Grandi Dump di Codice
  •  Lasciare l'Ego alla Porta: Non Essere Suscettibili
  •  Essere Pazienti, Sviluppare Relazioni a Lungo Termine, Essere Utili

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 Collegamenti Dinamici
  •  Laboratori

Make

  •  Utilizzo di make e Makefile
  •  Costruzione di Progetti Grandi
  •  Regole Più Complesse
  •  Regole Predefinite
  •  Laboratori

Controllo del Codice Sorgente

  •  Controllo del Codice Sorgente
  •  RCS e CVS
  •  Subversion
  •  git
  •  Laboratori

Debugging e Core Dumps

  •  gdb
  •  Cos'è un File di Dump di Memoria?
  •  Produzione di Dump di Memoria
  •  Esame dei Dump di Memoria
  •  Laboratori

Strumenti di Debugging

  •  Ottenere il Tempo
  •  Profiling e Prestazioni
  •  valgrind
  •  Laboratori

Chiamate di Sistema

  •  Chiamate di Sistema vs. Funzioni delle Librerie
  •  Come Vengono Eseguite le Chiamate di Sistema
  •  Valori di Ritorno e Numeri d'Errore
  •  Laboratori

Gestione della Memoria e dell'Allocazione

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

File e Filesystem in Linux **

  •  File, Directory e Dispositivi
  •  Il Sistema di File Virtuale
  •  Il Filesystem ext2/ext3
  •  Filesystem con Giornalizzazione
  •  Il Filesystem ext4/
  •  Laboratori

I/O dei File

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

Operazioni Avanzate sui File

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

Processi I

  •  Cos'è un Processo?
  •  Limiti dei Processi
  •  Gruppi di Processi
  •  Il Filesystem proc
  •  Metodi di Comunicazione Interprocessuale
  •  Laboratori

Processi II

  •  Uso di system() per Creare un Processo
  •  Uso di fork() per Creare un Processo
  •  Uso di exec() per Creare un Processo
  •  Uso di clone()
  •  Terminazione
  •  Costruttori e Distruttori
  •  Attesa
  •  Processi Daemon
  •  Laboratori

Pipe e Fifo

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

I/O Asincrono **

  •  Cos'è l'I/O Asincrono?
  •  L'API POSIX di I/O Asincrono
  •  Implementazione in Linux
  •  Laboratori

Segnali I

  •  Cos'è un Segnale?
  •  Segnali Disponibili
  •  Schedulazione dei Segnali
  •  Allarmi, Pausa e Sonno
  •  Configurazione di un Gestore di Segnali
  •  Set di Segnali
  •  sigaction()
  •  Laboratori

Segnali II

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

Thread POSIX I

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

Thread POSIX II

  •  Deadlocks e Condizioni di Correzione
  •  Operazioni su Mutex
  •  Semaphores
  •  Futexes
  •  Operazioni Condizionali
  •  Laboratori

Rete e Socket

  •  Livelli di Rete
  •  Cos'è un Socket?
  •  Socket a Flusso
  •  Socket a Datagrammi
  •  Socket Raw
  •  Ordinamento dei Byte
  •  Laboratori

Sockets Indirizzi e Hosts

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

Sockets Porte e Protocolli

  •  Informazioni sulle Porte di Servizio
  •  Informazioni sui Protocolli
  •  Laboratori

Sockets Client

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

Sockets Server

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

Sockets Operazioni I/O

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

Sockets Opzioni

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

Socket Netlink **

  •  Cos'è un Socket Netlink?
  •  Apertura di un Socket Netlink
  •  Messaggi Netlink
  •  Laboratori

Sockets Multiplexing e Server Concorrenti

  •  Multiplexing e I/O Asincrona dei Socket
  •  select()
  •  poll()
  •  pselect() e ppoll()
  •  epoll
  •  I/O Guidata da Segnali e Asincrono
  •  Server Concorrenti
  •  Laboratori

Comunicazione Interprocessuale

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

Memoria Condivisa

  •  Cos'è la Memoria Condivisa?
  •  Memoria Condivisa POSIX
  •  Memoria Condivisa System V **
  •  Laboratori

Semaphores

  •  Cos'è un Semaphore?
  •  Semaphore POSIX
  •  Semaphore System V **
  •  Laboratori

Code di Messaggi

  •  Cos'è una Code di Messaggi?
  •  Code di Messaggi POSIX
  •  Code di Messaggi System V **
  •  Laboratori

Requisiti

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

Pubblico

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

Livello di Esperienza: Intermedio

 28 Ore

Numero di Partecipanti


Prezzo per Partecipante

Corsi in Arrivo

Categorie relative