Grazie per aver inviato la tua richiesta! Uno dei nostri team membri ti contatterà a breve.
Grazie per aver inviato il tuo prenotazione! Uno dei nostri team membri ti contatterà a breve.
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