SISTEMI OPERATIVI
3° Anno - Secondo Semestre
Frequenza Non obbligatoria
- 6 CFU
- 48 ore
- ITALIANO
- Sede di Trieste
- Obbligatoria
- Convenzionale
- Orale
- SSD ING-INF/05
L'obiettivo del corso è di fornire una conoscenza del funzionamento dei moderni Sistemi Operativi, con particolare attenzione a Linux e alla famiglia Unix in generale. Durante il corso si approfondiranno le problematiche e i meccanismi relativi al funzionamento interno dei Sistemi Operativi. Verranno inoltre studiati i meccanismi che permettono agli utenti di interagire con i Sistemi Operativi (System Call e pseudo-file system), i principali comandi dei sistemi Linux e elementi di programmazione in Bash. I temi toccati includeranno la gestione dei processi, della memoria, dei dischi e della sincronizzazione tra flussi di esecuzione concorrenti.
Conoscenza e capacità di comprensione: Conoscenza del funzionamento dei sistemi operativi, di come interagiscono con un sistema ad elaboratore e approfondita conoscenza di Linux
Conoscenza e capacità di comprensione applicate: progettare e implementare programmi in ambiente Linux. Risolvere problemi concorrenti tramite costrutti di sincronizzazione
Autonomia di giudizio: capacità di compiere le scelte architetturali nel progetto di un sistema operativo. Scegliere i costrutti e i meccanismi migliori nell'implementazione di un'applicazione Linux.
Abilità comunicative: capacità di esporre il funzionamento di un sistema operativo e di spiegare la filosofia alla base di Linux
Capacità di apprendere: sviluppare le competenze necessarie per apprendere il funzionamento di sistemi operativi non trattati nel corso (ad esempio Windows) e acquisire la capacità di leggere e comprendere la documentazione di Linux e delle sue System Call, incluse quelle non trattate nel corso
Elementi di programmazione in C e conoscenza dell'architettura di un elaboratore
Il corso affronta i principali aspetti progettuali e funzionali dei moderni Sistemi Operativi. Gli argomenti trattati sono i seguenti:
- Definizioni di Sistema Operativo e concetti generali
- Linux: storia e funzionamento
- Programmazione in Bash
- Organizzazione dei dischi, dei dei file system e dei file e delle cartelle
- Gestione e System Call per l'utilizzo dei processi
- Gestione della memoria in un sistema operativo e memoria dinamica
- Thread: concetto, utilizzo e sincronizzazione
- Argomenti accessori: socket, virtualizzazione e gestione dei pacchetti
A. Silberschatz, P. B. Galvin, G. Gagne, Sistemi operativi: concetti ed esempi Pearson Education, 2009
Tanenbaum Andrew S. I Moderni Sistemi Operativi, Pearson Education Italia, 2009
Kerrisk, Michael. The Linux programming interface: a Linux and UNIX system programming handbook. No Starch Press, 2010
Lezioni Frontali: la maggior parte del corso prevede lezioni frontali in aula con slides e appunti scritti alla lavagna didattica dal professore. Parte del corso tratterà aspetti teorici del funzionamento dei sistemi operativi, mentre altre lezioni si concentreranno sull'utilizzo di diverse funzionalità di Linux
Laboratori: il corso prevede attività di laboratorio, assistite dal professore, in cui gli studenti metteranno in pratica le nozioni apprese a lezione
Esame scritto: L'esame mira a verificare che lo studente abbia acquisito confidenza con gli argomenti trattati a lezione e consiste di un test a scelta multipla, esercizi di programmazione e domande aperte
Lo studente deve consegnare il codice svilupato durante le attività di laboratorio che sono un requisito per poter sostenere l'esame.
In ogni tipologia di contenuto prodotto dallo studente per essere ammesso o per partecipare ad una prova d’esame (progetti, relazioni, esercizi, test), l'uso di strumenti Large Language Model (ChatGPT e simili) non è ammesso.
A prescindere dalle modalità di verifica dell'apprendimento, il docente si riserva comunque la possibilità di approfondire con un esame orale l’effettivo contributo dello studente in ogni tipologia di contenuto prodotto.
Questo insegnamento approfondisce argomenti strettamente connessi a uno o più obiettivi dell’Agenda 2030 per lo Sviluppo Sostenibile delle Nazioni Unite