ADVANCED OPERATING SYSTEMS AND VIRTUALIZATION
(obiettivi)
Obiettivi generali:
Gli obiettivi del corso Advanced Operating Systems and Virtualization sono legati all'acquisizione di metodologie teoriche e pratiche legate alla progettazione ed allo sviluppo di sistemi operativi moderni. Gli argomenti trattati sono calati all'interno dell'architettura hardware x86, con l'obiettivo di fornire allo studente competenze facilmente spendibili su architetture di elaborazione moderne e largamente diffuse. Le idiosincrasie dell'architettura x86 consentono di introdurre concetti legati alla portabilità del codice dei sistemi operativi e della loro modularizzazione interna, permettendo quindi di applicare i concetti e le competenze di più alto livello anche su altre architetture. Il caso di studio è il kernel Linux, di cui verranno mostrati gli internals di un numero non minimale di sottosistemi e relative strutture dati. In questo modo, lo studente potrà imparare le best practice per la progettazione e lo sviluppo di sistemi operativi.
Durante tutto il corso, in maniera trasversale, verranno mostrati in maniera teorica e pratica aspetti legati alla sicurezza interna ed esterna dei sistemi operativi. In questo modo, lo studente avrà la possibilità di accrescere le proprie competenze in termini di sicurezza, potendo anche arrivare all'identificazione dei correnti limiti delle politiche di sicurezza dei sistemi, ed eventualmente di ragionare su modalità per estendere le stesse.
Il corso ha anche come obiettivo quello di mostrare le tecniche e le metodologie atte a supportare la virtualizzazione di sistemi, sia sfruttando facility hardware che supporti software.
La realizzazione di un progetto in tecnologia C che estenda l'attuale implementazione del kernel Linux permetterà agli studenti anche di migliorare le proprie competenze di programmazione in C.
Obiettivi specifici:
Conoscenza e comprensione: Lo studente acquisirà la capacità di leggere e comprendere il codice sorgente del kernel Linux. Questa capacità riflette la conoscenza degli aspetti teorici legati al funzionamento dei sistemi operativi, e delle necessità di sviluppo legate alle moderne architetture hardware.
Applicare conoscenza e comprensione: Lo studente sarà in grado di progettare ed implementare nuovi sottosistemi all'interno del kernel Linux.
Capacità critiche e di giudizio: Lo studente sarà in grado di valutare la qualità di un implementazione di un sistema software complesso, dal punto di vista della correttezza, delle performance e degli standard di sicurezza.
Capacità comunicative: Lo studente sarà in grado di realizzare documentazioni di qualità elevata di sistemi software complessi e di utilizzare strumenti di sviluppo collaborativo. Inoltre, lo studente acquisirà proprietà di linguaggio tali da descrivere problematiche di correttezza e performance di sistemi software complessi.
Capacità di apprendimento: Lo studente sarà in grado di leggere e comprendere sistemi software complessi e di identificare possibili problematiche di sicurezza. Questo consentirà di progettare e realizzare nuovi sistemi software complessi, di identificare politihche di mitigazione di attacchi, di studiare in maniera autonoma il funzionamento di altri sistemi software complessi.
|