Prendendo spunto dalla convergenza tra le tecnologie di elaborazione e di trasmissione delle informazioni, l'insegnamento vuole fornire una visione d'insieme sulla progettazione, realizzazione e gestione efficiente e sicura di un sistema operativo di rete, analizzando inoltre le principali problematiche legate alla trasmissione dei dati in una moderna rete di calcolatori.
Assimilare le tecniche per la progettazione, la realizzazione e la gestione efficiente e sicura di sistemi di elaborazione e sistemi distribuiti: a livello di sistema operativo, per esecuzione multitasking, supporto alla concorrenza, cooperazione e sincronizzazione fra thread e fra processi, gestione dell'I/O, gestione dei file e virtualizzazione di calcolatori. A livello di una moderna rete di calcolatori, per valutare le caratteristiche di affidabilità, sicurezza e facilità di gestione che derivano dalle scelte di progetto dei protocolli utilizzati.
Al termine dell'insegnamento, lo studente/la studentessa sarà in grado di:
comprendere il funzionamento di un sistema operativo e le modalità di comunicazione degli elaboratori in rete, formando professionisti che possano gestire un moderno sistema di elaborazione, intervenendo efficacemente in caso di problemi.
Familiarità con il linguaggio C/C++
Lezioni in aula, utilizzando la lavagna oppure slide, ed esercitazioni in laboratorio
l programma dell'insegnamento è molto vasto, si elencano qui alcuni degli argomenti affrontati a lezione (l'ordine degli argomenti non corrisponde necessariamente alla cronologia delle lezioni). Parte di sistemi di elaborazione - panoramica storica e introduzione ai moderni sistemi operativi - processi e thread; scheduling - gestione e virtualizzazione della memoria - file system - input/output - protezione e sicurezza. Le tematiche di sincronizzazione e i problemi di deadlock, tipici argomenti dei corsi di sistemi operativi, verranno solo accennati perché trattati approfonditamente in altri corsi.
Parte di trasmissione delle informazioni - panoramica sulle tecnologie di rete e sull'internetworking - stratificazione dei protocolli - qualità di servizio e caratteristiche di sicurezza dei protocolli - lo stack di Internet, dal livello applicativo a quello di rete locale - il Web e il protocollo HTTP - trasferimento di file, protocollo FTP - posta elettronica, protocolli SMTP, POP, IMAP - directory service di Internet, il protocollo DNS - protocolli di trasporto: UDP e TCP - protocollo IP - livello Link e reti locali, protocolli 802.3 e 802.11, ARP, DHCP
Sono previste delle esercitazioni, che devono essere consegnate durante il semestre e vengono valutate in sede di esame.
Libri utili Per la parte di sistemi : - The Linux Command Line (gratuito), di William Shotts; scaricabile da: http://linuxcommand.org/tlcl.php - "Operating Systems: Three Easy Pieces" (gratuito) http://pages.cs.wisc.edu/~remzi/OSTEP/ - "xv6 Book" (gratuito) https://pdos.csail.mit.edu/6.828 Per la parte di reti: - Computer Networking, a Top-Down Approach di James F. Kurose e Keith W. Ross
Ricevimento: Orario di ricevimento: su appuntamento (prenotazioni via messaggi su Aulaweb).
Ricevimento: Orario di ricevimento: su appuntamento via email
GIOVANNI CHIOLA (Presidente)
MARINA RIBAUDO
GIOVANNI LAGORIO (Presidente Supplente)
In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica
Prova di laboratorio per l'ammissione al successivo esame orale. L'esame orale verte sugli esercizi di laboratorio consegnati e su tutti gli argomenti teorici visti a lezione.
L'esame consiste in - esercizi di programmazione, consegnati durante l'anno (o, comunque, prima di sostenere le altre prove), volti a verificare che lo studente sappia utilizzare gli strumenti teorici e pratici visti a lezione - una prova di laboratorio, di ammissione all'orale, volta ad accertare le conoscenze teoriche e competenze pratiche acquisite durante lo svolgimento degli esercizi di programmazione - una prova orale che consisterà nella discussione degli esercizi consegnati e argomenti teorici discussi durante l'insegnamento; in particolare, verrà valutata la capacità di analizzare criticamente pro e contro di diverse scelte progettuali e implementative