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 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