Docente |
FRANCESCO ANTONIO BUCCAFURRI |
Obiettivi |
OBIETTIVI FORMATIVI
Gli obiettivi formativi del corso, in accordo ai descrittori di Dublino, sono i seguenti:
1) Conoscenze e capacità di comprensione Conoscenza delle funzioni principali dei sistemi operativi con riferimento a Processi, Gestione della Memoria, Gestione dell'I/O e File System
2) Utilizzazione delle conoscenze e capacità di comprensione Capacità di programmare in accordo al paradigma concorrente, con particolare riferimento al multi-threading di Java
3) Capacità di trarre conclusioni Capacità di valutare in maniera critica le scelte fatte dai diversi sistemi operativi. Acquisizione di un appropriato livello di autonomia nella conoscenza degli aspetti teorici e gestione di aspetti pratici relativi ai sistemi operativi.
4) Abilità comunicative Capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo volte alla progettazione e alla implementazione di sistemi con funzionalità simili a quelle dei sistemi operativi.
5) Capacità di apprendere Capacità di apprendimento di diversi sistemi operativi e di diversi linguaggi di programmazione concorrente
MODALITA' DI ACCERTAMENTO E VALUTAZIONE
La prova d'esame consiste in una prova scritta della durata di 1,5 ore e di una prova orale la cui durata media è di 25 minuti. La prova scritta consiste nella soluzione di un problema di programmazione concorrente sfruttando il multi-threading di Java. E' prevista la progettazione di monitor e processi e l'implementazione di 3-4 metodi. Nella prova orale vengono discussi i concetti illustrati a lezione inerenti al programma del corso, spaziando su almeno 3 argomenti diversi. La prova scritta viene valutata attraverso un giudizio. E' necessario raggiungere una soglia minima che corrisponde alla corretta progettazione del monitor e dei processi e alla soluzione di un numero minimo di quesiti (di norma 2) L'esito dell’esame sarà risulterà dalla valutazione complessiva di scritto e orale.
L’obiettivo della prova scritta, in relazione ai descrittore di Dublino, è quello di valutare:
1) Conoscenze e capacità di comprensione Il Grado di comprensione e assimilazione del concetto di processo, di monitor e delle problematiche di programmazione concorrente. Conoscenza dei meccanismi specifici del multi-threading di Java
2) Utilizzazione delle conoscenze e capacità di comprensione Capacità di programmare in accordo al paradigma concorrente, con particolare riferimento al multi-threading di Java
3) Capacità di trarre conclusioni L'autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base delle caratteristiche richieste ai programmi concorrenti
L’obiettivo della prova orale, in relazione ai descrittore di Dublino, è quello di valutare:
1) Conoscenze e capacità di comprensione Il grado di conoscenza delle funzioni principali dei sistemi operativi con riferimento a Processi, Gestione della Memoria, Gestione dell'I/O e File System
2) Utilizzazione delle conoscenze e capacità di comprensione La capacità di programmare in accordo al paradigma concorrente, con particolare riferimento al multi-threading di Java
3) Capacità di trarre conclusioni La capacità di valutare in maniera critica le scelte fatte dai diversi sistemi operativi. L'acquisizione di un appropriato livello di autonomia nella conoscenza degli aspetti teorici e gestione di aspetti pratici relativi ai sistemi operativi.
4) Abilità comunicative La capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo volte alla progettazione e alla implementazione di sistemi con funzionalità simili a quelle dei sistemi operativi.
5) Capacità di apprendere In misura minore, la capacità di apprendimento di diversi sistemi operativi e di diversi linguaggi di programmazione concorrente
Il voto finale sarà attribuito secondo il seguente criterio di valutazione:
30 e lode: conoscenza completa, approfondita e critica degli argomenti, eccellente proprietà di linguaggio, completa ed originale capacità interpretativa, piena capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti; 28 - 30: conoscenza completa e approfondita degli argomenti, ottima proprietà di linguaggio, completa ed efficace capacità interpretativa, in grado di applicare autonomamente le conoscenze per risolvere i problemi proposti; 24 - 27: conoscenza degli argomenti con un buon grado di padronanza, buona proprietà di linguaggio, corretta e sicura capacità interpretativa, buona capacità di applicare in modo corretto la maggior parte delle conoscenze per risolvere i problemi proposti; 20 - 23: conoscenza adeguata degli argomenti ma limitata padronanza degli stessi, soddisfacente proprietà di linguaggio, corretta capacità interpretativa, più che sufficiente capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti; 18 - 19: conoscenza di base degli argomenti principali, conoscenza di base del linguaggio tecnico, sufficiente capacità interpretativa, sufficiente capacità di applicare le conoscenze di base acquisite; Insufficiente: non possiede una conoscenza accettabile degli argomenti trattati durante il corso.
|
Programma |
introduzione Concetti di base Tipi di sistemi operativi Architetture dei calcolatori (cenni)
Struttura del Sistema Operativo componenti Servizi e funzioni dei SO Interrupt e System Call
Processi Rappresentazione di un processo in un sistema operativo Scheduling dei processi Diagramma di transizione di stato La cooperazione e la comunicazione tra processi
Threads Programmazione multithreading Thread a livello utente e livello kernel Soluzioni miste (Solaris) Scheduling dei Thread
Programmazione concorrente e Deadlock Liveness, Fairness Sezione critica Soluzione di Peterson Semafori Problema Produttore-Consumatore Monitor Implementazione del monitor Gestione delle risorse Deadlock Rilevamento e prevenzione del Deadlock
La programmazione concorrente in Java La classe Thread Costrutti synchronized, notify(), wait() e notifyAll() Esempi di programmi concorrenti
Gestione della memoria Swap di processi Allocazione contigua, rilocazione, registri base e limite, Paginazione Tabella delle pagine e tabella delle pagine invertita Bit di riferimento, bit di modifica, bit di blocco, bit ab/dis cache, bit di validità Segmentazione MMU, TLB
Memoria virtuale Algoritmi di sostituzione delle pagine Allocazione locale e globale Working set e trashing
File system L'astrazione file Directory Struttura di un file system Metodi di allocazione dei file Gestione dello spazio libero
I/O I/O a controllo di programma I/O interrupt-driven I/O basato su DMA Memory mapped I/O
Memoria secondaria Struttura dei dischi Scheduling del disco RAID (0,1,2,3,4,5)
Sistemi operativi con orientamento specifico Sistemi operativi real-time Sistemi operativi Multimediali |
Testi docente |
• Silberschatz, Galvin, Gagne. Sistemi operativi: Concetti ed esempi (8° ed.). Pearson, ISBN: 9- 788871-925691 • S. Tanenbaum. Modern Operating Systems, (3° ed.). Pearson Prentice Hall, ISBN-10: 0136006639 • Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari. Sistemi Operativi, (2° ed.) McGraw-Hill ISBN: 9788838664328 • Deitel & Deitel: Java. Fondamenti di programmazione. 2a ediz, Apogeo, 2003 (per la parte di Programmazione Concorrente in Java)
|
Erogazione tradizionale |
Sì |
Erogazione a distanza |
No |
Frequenza obbligatoria |
No |
Valutazione prova scritta |
Sì |
Valutazione prova orale |
Sì |
Valutazione test attitudinale |
No |
Valutazione progetto |
No |
Valutazione tirocinio |
No |
Valutazione in itinere |
No |
Prova pratica |
No |
Docente |
GIANLUCA LAX |
Obiettivi |
Il corso ha lo scopo di illustrare le tecniche di progettazione e realizzazione di una base di dati. Vengono descritti il ciclo di vita dei sistemi informativi, la specifica e l’analisi dei requisiti e la progettazione della componente dati. Sono inoltre trattati al corso il linguaggio SQL, le transazioni, le forme normali, XML e JSON. |
Programma |
I sistemi informativi, raccolta e analisi dei requisiti, la progettazione concettuale, il modello Entità/Relazione, la progettazione logica, ristrutturazione e traduzione verso il modello relazionale, cenni di progettazione fisica. Il linguaggio SQL: Data Definition Language, Data Manipulation Language, Data Query Language. Le transazioni, lock ottimistico e pessimistico, 2-phase lock. Normalizzazione, prima, seconda e terza forma normale. XML e JSON. Sviluppo di applicazioni stand-alone in Java che si interfacciano ad un DBMS, pattern DAO, driver JDBC.
|
Testi docente |
P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, “Basi di Dati”, V Edizione, McGraw Hill, 2018 |
Erogazione tradizionale |
Sì |
Erogazione a distanza |
No |
Frequenza obbligatoria |
No |
Valutazione prova scritta |
No |
Valutazione prova orale |
Sì |
Valutazione test attitudinale |
No |
Valutazione progetto |
Sì |
Valutazione tirocinio |
No |
Valutazione in itinere |
No |
Prova pratica |
No |