Pagina principale Attività di ricerca Hobby & tempo libero Scrivetemi Sito aggiornato al
04 Agosto 2010

Argomenti di tesi disponibili

Ecco una lista degli argomenti di tesi disponibili, nelle aree di ricerca di mia competenza, per il Corso di Laurea Specialistica in Ingegneria Informatica dell'Università degli studi di Pisa. Le tesi potranno essere svolte presso il laboratorio di sistemi in tempo reale (ReTiS) della Scuola Superiore Sant'Anna (sede in Via Moruzzi 1, all'interno dell'area CNR, Pisa). Se siete interessati ad uno degli argomenti disponibili, mandatemi un'e-mail per prendere un appuntamento.

Per una lista dei progetti di tesi completati, fate riferimento alla pagina dedicata.

Sistemi Operativi e scheduling per sistemi multicore scalabili
I sistemi multicore stanno prendendo piede ad un ritmo incalzante. In un prossimo futuro, il mondo del computing sarà dominato da dispositivi mobili che costituiranno il punto d'accesso ad applicativi completamente distribuiti messi a disposizione remotamente da opportuni provider. Le applicazioni di Cloud Computing di domani faranno largo uso di sistemi massicciamente paralleli, i cosiddetti sistemi many-core, per i quali i Sistemi Operativi di oggi risultano inadeguati per una gestione ottimale delle risorse.
In quest'ambito si propone di investigare su problematiche di scalabilità a livello di kernel di Sistema Operativo. In particolare, le possibilità di lavori di tesi in quest'area sono molteplici:
  • simulazione dell'impatto sulle applicazioni di modelli di kernel innovativi recentemente apparsi in letteratura con obiettivi di scalabilità rispetto al numero di core, che ad esempio impongono un partizionamento delle funzionalità sui core disponibili, riducendo le contese per l'accesso a strutture dati condivise del kernel; la simulazione dovrebbe tener conto dell'impatto della topologia dell'hardware interconnect sulle comunicazioni fra i diversi core, sia esplicite (inter-core interrupt) che implicite (protocolli di coerenza delle cache);
  • algoritmi di scheduling distribuiti che scalino su migliaia di core, con politiche di load-balancing basate su una conoscenza solamente parziale dello stato del sistema; eventualmente, si potrà esplorare la possibilità di utilizzo in tale ambito di concetti dal mondo dei sistemi peer-to-peer, e dei protocolli di gossip;
  • modifiche al kernel del Sistema Operativo Linux per il miglioramento di aspetti legati alla scalabilità in funzione del numero di core disponibili; ad esempio, meccanismi per la riduzione del numero di core fra cui alcune strutture chiave del kernel sono condivise, sperimentazione con protocolli di locking che riducano le contese, modifiche allo scheduler e alla logica di load balancing per un maggior disaccoppiamento delle operazioni svolte da ciascun core, partizionamento delle risorse hardware disponibili fra istanze indipendenti (e possibilmente eterogenee) del kernel, ecc.

Requisiti.

In generale, per tutte le tesi che si collocano in quest'area, è necessaria un'ottima conoscenza dei sistemi operativi e delle architetture dei calcolatori. Inoltre, per ciascuna proposta di tesi specifica, possono essere richieste ulteriori conoscenze e capacità individuali.

Benefici.

Lo studente avrà l'opportunità di acquisire competenze ed esperienza nel mondo del calcolo parallelo, della programmazione concorrente e distribuita, del supporto a livello di Sistema Operativo per sistemi massivamente paralleli, con particolare riferimento alla progettazione di algoritmi di scheduling e primitive di sincronizzazione scalabili ed efficienti, grazie anche al lavoro sperimentale che potrà essere condotto su di una piattaforma a 48 core disponibile in laboratorio.
Predicibilità temporale di applicazioni real-time distribuite e virtualizzate
Negli ultimi anni le tecnologie di virtualizzazione si stanno imponendo come una soluzione efficace per fornire servizi software anche complessi ad applicazioni distribuite. Le suddette tecnologie permettono di astrarre la reale macchina fisica su cui avvengono le elaborazioni, creando un insieme di macchine virtuali (VM) e permettendo quindi di eseguire più di un sistema operativo (con relative applicazioni) sulla stessa macchina fisica. Sfortunatamente, però, le tecnologie di virtualizzazione attualmente esistenti sono spesso inadeguate per supportare applicazioni con vincoli temporali e non permettono di garantire stabilmente all'utente finale dei livelli di qualità del servizio prefissati. Oggigiorno, molte applicazioni distribuite richiedono tempi di risposta limitati e predicibili per poter fornire i propri servizi in modo corretto: ad esempio, applicazioni di realtà virtuale, telepresenza o generalmente per la collaborazione on-line, che richiedono di acquisire, elaborare e visualizzare dati con una temporizzazione abbastanza precisa.
Il problema di garantire una quantità sufficiente di risorse, e con la giusta granularità temporale, a questo tipo di applicazioni diventa ancor più spinoso a causa delle interferenze che possono crearsi fra VM che impegnano risorse diverse, tipicamente di elaborazione e di rete. Ad es., una VM con un traffico di I/O pesante può influenzare negativamente la performance di elaborazione di altre VM.
In questa tesi, si propone di investigare sulle problematiche che impediscono di avere una performance real-time e predicibile di componenti software virtualizzate, nonché di sperimentare alcuni dei meccanismi per l'isolamento temporale all'avanguardia nel mondo dei sistemi soft real-time.

Requisiti.

Ottima conoscenza del linguaggio C, dello stack TCP/IP, e dei cosiddetti "server" nella letteratura degli scheduler real-time. Buona dimestichezza con il Sistema Operativo Linux, interesse per la sperimentazione di feature non standard del kernel.

Benefici.

Lo studente avrà l'opportunità di applicare concretamente alcuni aspetti della teoria dei sistemi real-time, nel contesto estremamente spinoso delle applicazioni real-time distribuite virtualizzate, utilizzando meccanismi per l'isolamento temporale che costituiranno le fondamenta per il supporto alla Quality of Service nei Sistemi Operativi di domani. Inoltre, prenderà dimestichezza con strumenti di virtualizzazione come KVM, che sono alla base delle infrastrutture di rete allo stato dell'arte.
Meccanismi di protezione del bytecode di Java.
Come è noto, nel linguaggio di programmazione Java le caratteristiche di modularità e binding dinamico del codice obbligano a mantenere nel bytecode compilato moltissime informazioni sul sorgente Java (ad esempio, i nomi delle classi e dei metodi). Questo rende abbastanza facile fare il reverse engineering di un software Java, dato che decompilando il bytecode si ottiene qualcosa che è abbastanza simile al sorgente Java originale. Questo porta a problematiche nella protezione del software e dei diritti di autore, che possono essere affrontate mediante meccanismi di offuscamento dei sorgenti prima della compilazione, nonchè di cifratura del bytecode compilato. Tecniche di questo tipo di solito scoraggiano il pirata occasionale, ma sono del tutto inefficaci contro il pirata ostinato.
In questa tesi, si propone di studiare qual'è lo stato dell'arte nelle metodologie di protezione del bytecode Java nella pratica industriale, e di realizzare un meccanismo prototipale.

Requisiti.

Conoscenza del linguaggio Java, interesse per le problematiche di protezione del software.

Benefici.

Conoscenza avanzata di alcune caratteristiche del linguaggio Java e del funzionamento della Java Virtual Machine, metodologie di offuscamento e cifratura del bytecode, sistema di compilazione Ant.

Pagina principale Attività di ricerca Hobby & tempo libero Scrivetemi Sito aggiornato al
04 Agosto 2010