CODICE 80300 ANNO ACCADEMICO 2019/2020 CFU 12 cfu anno 2 INFORMATICA 8759 (L-31) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Prendendo spunto dalla convergenza tra le tecnologie di elaborazione e di trasmissione delle informazioni, il corso 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. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Prendendo spunto dalla convergenza tra le tecnologie di elaborazione e di trasmissione delle informazioni, il corso vuole fornire una visione d'insieme delle principali problematiche di progettazione, realizzazione e gestione efficiente e sicura di un moderno sistema distribuito di rete. Dopo una breve introduzione alle tecniche di misurazione quantitativa delle risorse impiegate da un programma in fase di esecuzione e all'analisi operazionale (non statistica) dei sistemi, si prosegue lungo il percorso iniziato nel corso di Sistemi di elaborazione dell'informazione, presentando i problemi fondamentali e le principali tecniche, realizzate a livello di Sistema Operativo, relative ai seguenti aspetti dei moderni sistemi di elaborazione: esecuzione multitasking; supporto alla concorrenza, cooperazione e sincronizzazione fra thread e fra processi; gestione dell'I/O; gestione dei file; virtualizzazione di calcolatori. Verrà fornito inoltre un quadro di insieme delle principali problematiche della trasmissione dei dati e dell'architettura e dei meccanismi di una moderna rete di calcolatori basata sulla suite TCP/IP, secondo un modello a livelli di astrazione successivi, partendo dal livello applicazione (RPC, Socket, FTP, HTTP, DNS, SMTP, POP, ecc.) e scendendo fino al livello data link (Ethernet). Oltre alla mera descrizione dei protocolli, si enfatizzano le caratteristiche di affidabilità, sicurezza, e maggiore o minore facilità di gestione che derivano dalle varie scelte di progetto dei protocolli stessi. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Obiettivo del corso è far acquisire agli studenti la consapevolezza di come funziona un sistema operativo e come comunicano gli elaboratori in rete, formando professionisti che possano gestire un moderno sistema di elaborazione, intervenendo efficacemente in caso di problemi. MODALITA' DIDATTICHE Mista: Le lezioni sono svolte in forma tradizionale in aula, mentre le esercitazioni di laboratorio (a consegna obbligatoria) sono gestite mediante Aulaweb. PROGRAMMA/CONTENUTO l programma del corso è molto vasto, si elencano qui alcuni degli argomenti affrontati a lezion (l'ordine degli argomenti non corrisponde necessariamente alla cronologia delle lezioni). Parte di sistemi di elaborazione - panoramica storica e introduzione ai moderni sistemi operativi, basandosi sugli argomenti visti a "Sistemi di Elaborazione dell'Informazione" - 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 nel corso "Programmazione Concorrente e Algoritmi Distribuiti". 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 - posta elettronica - directory service di Internet, il protocollo DNS - protocolli di trasporto: UDP e TCP - protocollo IP - livello Link e reti locali. Sono previste delle esercitazioni, che devono essere consegnate durante il semestre e vengono valutate in sede di esame. TESTI/BIBLIOGRAFIA Libri utili (non indispensabili) Per la parte di sistemi sono sostanzialmente equivalenti, e ne esista una versione italiana: - Modern Operating Systems, 4a ed., di Andrew S. Tanenbaum e Herbert Bos - Operating System Concepts, 9a ed., di Avi Silberschatz, Peter Baer Galvin e Greg Gagne Inoltre: The Linux Command Line (gratuito), di William Shotts; scaricabile da: http://linuxcommand.org/tlcl.php Per approfondimenti: - What Every Superuser Should Know, 2a ed., di Brian Ward - Operating Systems: Internals and Design Principles, 8a ed., di William Stallings - Advanced Programming in the UNIX Environment, 3a ed., di W. Richard Stevens e Stephen A. Rago - The Linux Programming Interface: A Linux and UNIX System Programming Handbook, di Michael Kerrisk Per la parte di reti: - Computer Networking, a Top-Down Approach di James F. Kurose e Keith W. Ross DOCENTI E COMMISSIONI GIOVANNI CHIOLA Ricevimento: Orario di ricevimento: su appuntamento (contattare preferibilmente via email) GIOVANNI LAGORIO Ricevimento: Orario di ricevimento: su appuntamento via email Commissione d'esame GIOVANNI CHIOLA (Presidente) DAVIDE ANCONA GIOVANNI LAGORIO FRANCESCO MASULLI LEZIONI Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME Esame orale dopo prova scritta di autovalutazione. L'esame orale verte sulla correzione degli esercizi di laboratorio consegnati e su tutti gli argomenti teorici visti a lezione. Calendario appelli Data appello Orario Luogo Tipologia Note 15/01/2020 10:00 GENOVA Scritto 05/02/2020 10:00 GENOVA Scritto 10/06/2020 10:00 GENOVA Scritto 02/07/2020 10:00 GENOVA Scritto 31/08/2020 10:00 GENOVA Scritto