II MODULO

Obiettivi formativi

Obiettivi generali: Il corso ha come obiettivi i concetti, la struttura, e i meccanismi dei sistemi operativi. Verranno trattate caratteristiche fondamentali, presenti fin dai sistemi più tradizionali, ma anche peculiarità dei sistemi moderni che nascono come conseguenza dell’evoluzione ricorrente della tecnologia. Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux. Obiettivi specifici: Caratteristiche e concetti dei sistemi operativi moderni, con particolare riferimento ai sistemi Unix e Linux. Si inizierà con una descrizione dell’evoluzione dei sistemi operativi nel tempo, per continuare con concetti fondamentali come i processi, lo stallo, e relativi meccanismi di prevenzione, la concorrenza tra processi, la gestione della memoria, processore e I/O, i file system e la sicurezza. Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux. Conoscenza e comprensione: Capire in modo profondo come i sistemi operativi danno supporto all’esecuzione dei programmi degli utenti e gestiscono le periferiche hardware di un computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate. Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux. Applicare conoscenza e comprensione: Progettare programmi a livello utente e di sistema in modo efficiente e sicuro. Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse. Capacità critiche e di giudizio: Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra processi e l’accesso protetto a zone di memoria o risorse sensibili. Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux. Capacità comunicative: Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware. Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux. Capacità di apprendimento: Saper sfruttare la conoscenza acquisita nella progettazione di sistemi e di programmi utente nel modulo successivo del corso. Essere in grado di usare questa conoscenza nell’apprendimento di proprietà di sistemi più complessi come quelli distribuiti e cloud. Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.

Canale 1
PAOLO ZULIANI Scheda docente

Programmi - Frequenza - Esami

Programma
Sistema operativo e kernel Unix/Linux shell e suo uso File system Processi Linguaggio C Programmazione di sistema
Prerequisiti
Nessuno requisito. E' consigliato aver sostenuto il modulo I.
Testi di riferimento
B. Kernighan & D. Ritchie, “Il Linguaggio C”, Jackson Libri o Pearson W. Stevens & S. Rago. Advanced Programming in the UNIX Environment. 3a edizione, Addison-Wesley
Frequenza
Consigliata.
Modalità di esame
Questionario a risposta multipla. (Opzionale) Sviluppo di un programma C di media complessità. Date appelli ordinari: 09/06/2025 10/07/2025 04/09/2025
Bibliografia
W. R. Stevens, S. A. Rago, “Advanced Programming in the UNIX  Environment 3rd ed.”, Addison-Wesley G. Glass, K. Ables, “Linux for Programmers and Users”, Prentice Hall C.F.A. Johnson, J. Varma, “Pro Bash Programming”, Apress
Modalità di erogazione
Lezioni in laboratorio informatico.
PAOLO ZULIANI Scheda docente

Programmi - Frequenza - Esami

Programma
Sistema operativo e kernel Unix/Linux shell e suo uso File system Processi Linguaggio C Programmazione di sistema
Prerequisiti
Nessuno requisito. E' consigliato aver sostenuto il modulo I.
Testi di riferimento
B. Kernighan & D. Ritchie, “Il Linguaggio C”, Jackson Libri o Pearson W. Stevens & S. Rago. Advanced Programming in the UNIX Environment. 3a edizione, Addison-Wesley
Frequenza
Consigliata.
Modalità di esame
Questionario a risposta multipla. (Opzionale) Sviluppo di un programma C di media complessità. Date appelli ordinari: 09/06/2025 10/07/2025 04/09/2025
Bibliografia
W. R. Stevens, S. A. Rago, “Advanced Programming in the UNIX  Environment 3rd ed.”, Addison-Wesley G. Glass, K. Ables, “Linux for Programmers and Users”, Prentice Hall C.F.A. Johnson, J. Varma, “Pro Bash Programming”, Apress
Modalità di erogazione
Lezioni in laboratorio informatico.
Canale 2
EMILIANO CASALICCHIO Scheda docente

Programmi - Frequenza - Esami

Programma
Introduzione al corso, storia del sistema operativo linux, Cenni Basilari Sulla Shell; - Il File system - I Processi Introduzione al C - Loop statements; Array, stringhe, controllo di flusso, esercizi, I/O da stdin, Allocazione dinamica, Struct, File I/O System programming; - System call gestione memoria e file (open(), close(), read(), write(), dup, stat, chmod, chown); " - System call gestione processi - System call IPC (Signals, PIPE, FIFO; socket) - Thread: (libreria PThread: creazione, gestione e sincronizzazione dei thread) GDB + Makefile; Bash: Scripting, variabili di ambiente
Prerequisiti
Sistemi Operativi I modulo
Testi di riferimento
- Materiale presentato a lezione (slides e codice) - W. R. Stevens, S. A. Rago, “Advanced Programming in the UNIX Environment 3rd ed.”, Addison-Wesley
Frequenza
La frequenza del corso è fortemente consigliata
Modalità di esame
La valutazione avviene per mezzo di - Esame Scritto. L'esame consiste in un test a risposta multipla su tutti gli argomenti del corso. - Homework (uno su programmazione C e uno su Programmazione di Sistema)
Bibliografia
• Glass, Ables, “Linux for Programmers and Users", Prentice Hall • Johnson, “Pro Bash Programming", Apress • B. Kernighan e D. Ritchie, “Il Linguaggio C", Jackson Libri
Modalità di erogazione
Lezioni in laboratorio: presentazioni concetti fondamentali, esperienze pratiche
EMILIANO CASALICCHIO Scheda docente

Programmi - Frequenza - Esami

Programma
Introduzione al corso, storia del sistema operativo linux, Cenni Basilari Sulla Shell; - Il File system - I Processi Introduzione al C - Loop statements; Array, stringhe, controllo di flusso, esercizi, I/O da stdin, Allocazione dinamica, Struct, File I/O System programming; - System call gestione memoria e file (open(), close(), read(), write(), dup, stat, chmod, chown); " - System call gestione processi - System call IPC (Signals, PIPE, FIFO; socket) - Thread: (libreria PThread: creazione, gestione e sincronizzazione dei thread) GDB + Makefile; Bash: Scripting, variabili di ambiente
Prerequisiti
Sistemi Operativi I modulo
Testi di riferimento
- Materiale presentato a lezione (slides e codice) - W. R. Stevens, S. A. Rago, “Advanced Programming in the UNIX Environment 3rd ed.”, Addison-Wesley
Frequenza
La frequenza del corso è fortemente consigliata
Modalità di esame
La valutazione avviene per mezzo di - Esame Scritto. L'esame consiste in un test a risposta multipla su tutti gli argomenti del corso. - Homework (uno su programmazione C e uno su Programmazione di Sistema)
Bibliografia
• Glass, Ables, “Linux for Programmers and Users", Prentice Hall • Johnson, “Pro Bash Programming", Apress • B. Kernighan e D. Ritchie, “Il Linguaggio C", Jackson Libri
Modalità di erogazione
Lezioni in laboratorio: presentazioni concetti fondamentali, esperienze pratiche
  • Anno accademico2025/2026
  • CorsoInformatica
  • CurriculumTecnologico
  • Anno2º anno
  • Semestre2º semestre
  • SSDINF/01
  • CFU6