
Corso per programmatore di sistema
Passi dalla scrittura di codice applicativo al possesso dell'intero stack di sistema: interfacce del kernel, gestione della memoria, concorrenza e debug a livello hardware. Questo corso Le fornisce le basi tecniche approfondite che distinguono gli ingegneri di sistema senior da tutti gli altri. Ogni concetto è fondato su strumenti reali, codice reale e scenari di produzione reali.
Cosa imparerai:
Costruirà un modello mentale completo di come il software interagisce con l'hardware e il kernel Linux, a partire dall'architettura della CPU e dal layout della memoria di processo. Padroneggerà il linguaggio C per il lavoro di sistema, inclusa la gestione manuale della memoria, l'aritmetica dei puntatori e i pattern di programmazione difensiva. Il corso copre l'assembly x86-64, il debug di basso livello con GDB e l'analisi binaria con objdump. Implementerà la creazione di processi, i thread POSIX, le primitive di sincronizzazione e la comunicazione tra processi. Gli argomenti avanzati includono la memoria virtuale, la progettazione di allocatori personalizzati, l'I/O su file ad alte prestazioni e lo sviluppo di moduli del kernel. L'hardening della sicurezza, gli aspetti interni della containerizzazione, lo scheduling in tempo reale e il profiling delle prestazioni con perf completano il curriculum.
Come studi in modo pratico Corso per programmatore di sistema
Come metti in pratica Corso per programmatore di sistema
Per te che sei un'azienda e vuoi formare il tuo team
Su Dedika per aziende, il corso include esercizi ed esempi personalizzati sul tuo business e secondo le esigenze della tua azienda.
Contenuto del corso
8 Capitoli • 40 LezioniDurata tra 4 e 360 ore (decidi tu)
Capitolo 1NascondiNascondi dettagliVedi dettagliFondamenti di programmazione di sistema
Fondamenti di programmazione di sistema
Lezione 1 • Toolchain e ambiente di compilazione
Configura compilatori, linker, assemblatori e debugger utilizzati durante il corso. Garantisce che ogni studente possa compilare, linkare e ispezionare file binari fin dal primo giorno.
Lezione 2 • Astrazioni del sistema operativo
Introduce lo spazio kernel vs. spazio utente, le chiamate di sistema e la gestione delle risorse del sistema operativo. Collega i concetti hardware alle interfacce software che i programmatori utilizzano quotidianamente.
Lezione 3 • Layout della memoria di processo
Esamina i segmenti stack, heap, BSS, dati e testo in un processo in esecuzione. Fornisce il modello spaziale necessario per l'aritmetica dei puntatori e la gestione della memoria.
Lezione 4 • Elementi essenziali di architettura dei calcolatori
Tratta i registri della CPU, i cicli di istruzione e la gerarchia di memoria. Stabilisce il vocabolario hardware necessario per ogni argomento di sistema successivo.
Lezione 5 • Livelli di privilegio e anelli di protezione
Spiega gli anelli di privilegio implementati via hardware e come il sistema operativo applica l'isolamento. Prepara gli studenti a ragionare sui confini di sicurezza nel codice di sistema.
Capitolo 2NascondiNascondi dettagliVedi dettagliProgrammazione C per lavoro di sistema
Programmazione C per lavoro di sistema
Lezione 1 • Tipi di dato e rappresentazione in memoria
Tratta la larghezza degli interi, l'endianness, l'allineamento e il padding nelle struct. Fornisce agli studenti le basi su come i tipi C si mappano sui byte effettivi in memoria.
Lezione 2 • Gestione degli errori e codifica difensiva
Introduce errno, le convenzioni sui codici di ritorno e le strategie di asserzione in C. Costruisce abitudini che prevengono fallimenti silenziosi nel codice di sistema in produzione.
Lezione 3 • Preprocessore C e macro
Spiega le guardie di inclusione, le macro object-like e function-like e la compilazione condizionale. Consente agli studenti di scrivere header di sistema portabili e configurabili.
Lezione 4 • Gestione manuale della memoria
Tratta malloc, calloc, realloc e free, oltre agli errori di allocazione comuni. Gli studenti imparano a rilevare perdite di memoria e a usare strumenti in stile valgrind per la verifica.
Lezione 5 • Puntatori e aritmetica dei puntatori
Insegna la dichiarazione dei puntatori, la dereferenziazione e l'aritmetica su array e buffer. Abilita direttamente la gestione manuale della memoria e l'accesso ai registri hardware.
Capitolo 3NascondiNascondi dettagliVedi dettagliLinguaggio assembly e debug di basso livello
Linguaggio assembly e debug di basso livello
Lezione 1 • Assembly inline in C
Insegna la sintassi assembly inline estesa di GCC, i vincoli e le clobber list. Consente l'accesso diretto all'hardware da C senza un file assembly separato.
Lezione 2 • Set di istruzioni principale
Tratta le istruzioni di spostamento dati, aritmetiche, logiche e di controllo del flusso. Fornisce agli studenti un vocabolario sufficiente per leggere l'output del compilatore e scrivere piccole routine.
Lezione 3 • Set di registri x86-64 e convenzioni di chiamata
Associa i registri general-purpose, di segmento e SIMD ai loro ruoli. Stabilisce il contratto ABI che il codice C e assembly devono rispettare quando interagiscono.
Lezione 4 • Analisi binaria con disassemblatori
Utilizza objdump e strumenti simili per ispezionare file binari compilati e librerie condivise. Collega la comprensione a livello di codice sorgente al codice macchina effettivo negli artefatti di produzione.
Lezione 5 • Tecniche di debug di basso livello
Applica GDB a livello assembly: breakpoint, watchpoint e ispezione dei registri. Gli studenti diagnosticano crash e corruzione della memoria leggendo lo stato macchina grezzo.
Capitolo 4NascondiNascondi dettagliVedi dettagliGestione di processi e thread
Gestione di processi e thread
Lezione 1 • Segnali ed eventi asincroni
Spiega l'invio dei segnali, il mascheramento e la registrazione degli handler con sigaction. Prepara gli studenti a scrivere codice safe per i segnali e a gestire le notifiche asincrone del sistema operativo.
Lezione 2 • Creazione e ciclo di vita dei processi
Tratta la semantica di fork, exec, wait ed exit in ambienti POSIX. Gli studenti comprendono come il sistema operativo traccia lo stato di un processo dalla creazione alla terminazione.
Lezione 3 • Fondamenti di thread POSIX
Introduce la creazione di pthread, il join e il detachment insieme agli attributi dei thread. Stabilisce il modello di threading utilizzato in tutti gli argomenti successivi sulla concorrenza.
Lezione 4 • Primitivi di sincronizzazione
Tratta mutex, variabili condizione, semafori e lock read-write. Gli studenti applicano ciascun primitivo per eliminare le corse critiche nei programmi a memoria condivisa.
Lezione 5 • Comunicazione tra processi (IPC)
Esamina pipe, FIFO, memoria condivisa e code di messaggi per IPC. Gli studenti selezionano e implementano il meccanismo IPC appropriato per un dato vincolo di progettazione.
Capitolo 5NascondiNascondi dettagliVedi dettagliGestione della memoria e memoria virtuale
Gestione della memoria e memoria virtuale
Lezione 1 • Profilazione della memoria e rilevamento delle perdite
Applica Valgrind Memcheck, AddressSanitizer e /proc/maps per trovare perdite di memoria e corruzione. Gli studenti producono profili di memoria puliti per codice di grado production.
Lezione 2 • Architettura della memoria virtuale
Spiega le tabelle delle pagine, il funzionamento del TLB e l'hardware di traduzione degli indirizzi. Fornisce le basi per comprendere mmap, huge page ed effetti NUMA.
Lezione 3 • Huge page e consapevolezza NUMA
Introduce le huge page trasparenti, l'allocazione esplicita di huge page e la topologia NUMA. Gli studenti regolano il posizionamento della memoria per carichi di lavoro di sistema sensibili alla latenza.
Lezione 4 • Progettazione di allocatori di memoria personalizzati
Costruisce un allocatore in stile slab utilizzando sbrk e mmap come backing store. Rafforza la comprensione di frammentazione, coalescenza e metadati dell'allocatore.
Lezione 5 • Mappatura della memoria con mmap
Tratta mappature anonime e basate su file, flag di protezione e MAP_SHARED vs. MAP_PRIVATE. Gli studenti usano mmap per I/O zero-copy e IPC a memoria condivisa.
Capitolo 6NascondiNascondi dettagliVedi dettagliFile system e sottosistemi di I/O
File system e sottosistemi di I/O
Lezione 1 • I/O avanzato: Scatter-Gather e asincrono
Introduce readv/writev, io_uring ed epoll per I/O ad alte prestazioni. Consente agli studenti di costruire server guidati da eventi con un overhead minimo di chiamate di sistema.
Lezione 2 • Ottimizzazione delle prestazioni di storage
Applica fio, iostat e blktrace per misurare e migliorare il throughput e la latenza di I/O. Gli studenti identificano i colli di bottiglia nello stack di storage, dall'applicazione al dispositivo.
Lezione 3 • I/O bufferizzato vs. non bufferizzato
Contrappone il buffering stdio all'I/O diretto tramite chiamata di sistema e spiega quando ciascuno è appropriato. Gli studenti misurano l'impatto prestazionale delle strategie di buffering sul throughput.
Lezione 4 • API di I/O su file POSIX
Tratta open, read, write, lseek e close con tutti i flag e le modalità pertinenti. Stabilisce il modello dei descrittori di file come astrazione I/O universale in POSIX.
Lezione 5 • Interni del file system
Esamina inode, voci di directory, extent e journaling nei file system moderni. Gli studenti comprendono come le strutture su disco influenzano la durabilità e il ripristino da crash.
Capitolo 7NascondiNascondi dettagliVedi dettagliInterfacce kernel e driver di dispositivo
Interfacce kernel e driver di dispositivo
Lezione 1 • Sviluppo di moduli del kernel
Tratta le funzioni init/exit del modulo, il sistema Kbuild e i requisiti dello stile di codifica del kernel. Gli studenti compilano, caricano e scaricano un modulo kernel minimale in sicurezza.
Lezione 2 • Memoria del kernel e DMA
Spiega kmalloc, vmalloc e allocazione DMA-coherent per l'uso nei driver. Gli studenti scelgono l'API di allocazione corretta in base a dimensione, allineamento e requisiti DMA.
Lezione 3 • Basi del driver di dispositivo a caratteri
Implementa i callback delle file_operations: open, release, read, write e ioctl. Gli studenti espongono una sorgente dati del kernel allo spazio utente attraverso un file di dispositivo.
Lezione 4 • Interni delle chiamate di sistema
Traccia una chiamata di sistema dallo spazio utente attraverso la syscall table fino all'handler nel kernel. Gli studenti comprendono il cambio di contesto, il passaggio degli argomenti e i percorsi di ritorno.
Lezione 5 • Gestione degli interrupt e bottom half
Registra gli handler IRQ, implementa tasklet e workqueue per il lavoro differito. Gli studenti scrivono codice driver interrupt-safe che soddisfa i vincoli di latenza in tempo reale.
Capitolo 8NascondiNascondi dettagliVedi dettagliAnalisi e ottimizzazione delle prestazioni
Analisi e ottimizzazione delle prestazioni
Lezione 1 • Tecniche di ottimizzazione della cache
Applica il layout delle strutture dati, il prefetching e il loop tiling per migliorare l'utilizzo della cache. Gli studenti misurano i tassi di cache miss prima e dopo ogni trasformazione.
Lezione 2 • Metodologia di benchmarking
Tratta la progettazione di microbenchmark, l'analisi statistica e come evitare le insidie comuni. Gli studenti producono risultati di benchmark riproducibili che resistono alla revisione tra pari.
Lezione 3 • Ottimizzazioni del compilatore e Link-Time Optimization
Esplora i livelli -O, PGO, LTO e i flag di auto-vectorizzazione. Gli studenti verificano che le trasformazioni del compilatore producano binary corretti e più veloci.
Lezione 4 • Contesa sui lock e scalabilità
Misura la contesa sui lock con perf lock e applica tecniche lock-free ove appropriato. Gli studenti riprogettano la sincronizzazione per scalare su molti core della CPU.
Lezione 5 • Contatori di prestazione della CPU e profilazione
Utilizza perf stat, perf record e flame graph per identificare gli hotspot della CPU. Gli studenti correlano i dati dei contatori hardware con il codice sorgente per guidare l'ottimizzazione.
Il tuo certificato valido di completamento
Questo corso è per te:
Ingegnere backend: desidera smettere di considerare il sistema operativo come una scatola nera.
Studente di informatica: pronto ad applicare la teoria a codice reale a livello kernel.
Sviluppatore firmware: necessita di solide basi Linux e POSIX per il lavoro embedded.
Ingegnere DevOps: cerca una comprensione più approfondita del funzionamento interno di container e scheduler.
Ricercatore di sicurezza: deve comprendere a fondo la struttura della memoria e i confini dei privilegi.
Persona in cambiamento di carriera: in transizione da ruoli di scripting all'ingegneria delle infrastrutture di basso livello.
Cosa dicono i nostri studenti
Le sue lezioni sono perfette. Ho acquistato il pacchetto annuale e finalmente ho l'opportunità di seguire diversi argomenti di mio interesse senza dover cambiare piattaforma... vi ringrazio per tutto quello che fate, vi ho già raccomandati ad altre persone...

Mi piace come le lezioni vanno dritte al punto e come riesco a cambiare capitoli e saltare contenuti di cui non ho bisogno.

Mi piace il contenuto e il modo di presentazione e trascrizione dei video, che accelera il processo!

La piattaforma è veloce, semplice da usare. La diversità dei contenuti e i video complementari aiutano molto nell'apprendimento.

Principali percorsi formativi
FAQ
Chi è Dedika?
Il certificato è valido in Italia?
I corsi sono gratuiti?
Qual è il carico di lavoro del corso?
Come sono strutturati i corsi?
Come funzionano i corsi?
Qual è la durata dei corsi?
Qual è il costo o il prezzo dei corsi?
Cos’è un corso EAD o online e come funziona?
Corso PDF




















