| SISTEMI OPERATIVI AVANZATI E SICUREZZA DEI SISTEMI
(obiettivi)
Il corso si propone di presentare metodi e tecniche avanzate per la progettazione e l'implementazione dei sistemi operativi. Esso fornisce anche approfondimenti sulle effettive operazioni eseguite a livello hardware nei processori moderni, compresi gli effetti del parallelismo hardware implicito ed esplicito, e illustra come questi abbiano impatto sugli approcci di progettazione del software. Gli argomenti trattati dal corso sono legati a casi di studio orientati ai sistemi Linux ed a processori x86. Forte attenzione viene posta sui metodi e sulle tecniche per la sicurezza nei sistemi, e sulle criticita' di sicurezza derivanti dalle interazioni dell'hardware con il software. Il corso richiede conoscenze di base sulla struttura e sulle funzionalita' dei sistemi operativi e conoscenze di programmazione in linguaggiì C/ASM. CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Al termine del corso lo studente sarà in grado di comprendere il funzionamento dei sistemi operativi, anche per quel che concerne il livello kernel, e le interazioni che avvengono tra questo ed il software delle applicazioni sviluppate su di esso. CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: Al termine del corso lo studente sarà in grado di progettare e sviluppare nuove parti di un sistema operativo, in particolare per quel che concerne sistemi Linux. AUTONOMIA DI GIUDIZIO: Lo studente viene abituato a ragionare in maniera critica su scelte alternative di progetto e sviluppo, e su come queste possano poi avere impatto su aspetti funzionali e non funzionali del software. ABILITÀ COMUNICATIVE: Il superamento dell'esame prevede che lo studente affronti una prova scritta e lo sviluppo un progetto software, nelle quali deve essere in grado di esporre correttamente gli argomenti e presentare in modo chiaro la struttura del software sviluppato. CAPACITÀ DI APPRENDIMENTO: Una parte del materiale didattico è costituito da manuali e documentazione per il sistema operativo Linux. Lo studente impara ad usare ed interpretare in modo autonomo la manualistica di comune uso nello sviluppo del software di sistema.
|