Pagina principale Attività di ricerca Pubblicazioni Presentazioni Progetti di tesi per LS Hobby & tempo libero Scrivetemi Questo sito usa
Google Analytics
Sito aggiornato al
28 Novembre 2017

Argomenti di tesi disponibili

Ecco una lista degli argomenti di tesi disponibili, nelle aree di ricerca di mia competenza, per studenti di Laurea Magistrale/Specialistica in Ingegneria Informatica o Informatica o corsi di laurea affini, interessati a svolgere il progetto di tesi presso il Real-Time Systems Lab (ReTiS) della Scuola Superiore Sant'Anna di Pisa.

Se siete interessati ad uno degli argomenti disponibili, mandatemi un'e-mail contenente il vostro CV completo, transcript degli esami sostenuti, e lettera di presentazione.

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

Fault-tolerant replication log con caratteristiche real-time ed elevata affidabilità
I servizi di data-base NoSQL stanno prendendo piede nel mondo del cloud & distributed computing come una tecnologia chiave per la realizzazione di applicazioni scalabili e real-time, per permetter loro di memorizzare e recuperare dati rispettando predeterminati requisiti di temporizzazione, consistenza e disponibilità (che possono essere formalizzati in termini di un SLA -- service-level agreement).
Un componente chiave di tale sistema è il replication log, che garantisce una visione consistente della sequenza di operazioni che interessano un data object. Realizzare un replication-log fault-tolerant con elevate garanzie di affidabilità, ma performance predicibili, richiede di affrontare una serie di problematiche in diverse aree, dal software engineering al concurrent programming, sistemi operativi e kernel internal, fino a scheduling CPU e disco.
In questa tesi si propone la progettazione e realizzazione di un fault-tolerant, real-time replication log con funzionalità minime.

Requisiti

Lo studente deve avere ottime capacità di programmazione in C/C++ e/o Java, esperienza con programmazione concorrente e multi-threading, forti competenze in ambito di architetture dei calcolatori e loro impatto sulla performance, sistemi operativi e Linux, ed avere familiarità con lo sviluppo di software distribuito.

Benefici

Lo studente avrà l'opportunità di approfondire le proprie competenze negli ambiti sopra citati, e di acquisire esperienza nella realizzazione di componenti software distribuite, fault-tolerant e real-time, che sono di importanza fondamentale per il mondo del lavoro nell'ambito delle ICT.
Improvements to the SCHED_DEADLINE Linux process scheduler for real-time multimedia
The Linux kernel has been recently enriched with SCHED_DEADLINE, an EDF-based process scheduler that is particularly promising for real-time and multimedia workloads. The scheduler exhibits a minimum set of features, but several extensions are possible for various use-cases. In this project, the student will design and realize extensions suitable to support a specific multimedia-oriented use-case (e.g., when using the JACK architecture for low-latency audio), and will adapt user-space application components to gain advantage of the enriched scheduler.

Requirements

The student shall have strong programming skills in C/C++, experience with concurrent/multi-threaded programming, solid knowledge and understanding of computer architectures and their performance implications, operating systems internals and Linux, and be familiar with developing kernel-level software.

Benefits

The student will have a good opportunity to refine his/her skills in the above fields, and gain a unique experience with developing real-time multimedia-oriented systems.
Simulazione di infrastrutture per il cloud computing
Descrizione mancante
Prototipo FPGA di un ambiente per secure cloud computing
Descrizione mancante
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.
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, riprogettazione di alcune strutture chiave del kernel che sono condivise in maniera tale da ridurre la contesa fra i molti core che vi accedono, 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 massicciamente paralleli, con particolare riferimento alla progettazione di algoritmi di scheduling e primitive di sincronizzazione scalabili ed efficienti.

Pagina principale Attività di ricerca Pubblicazioni Presentazioni Progetti di tesi per LS Hobby & tempo libero Scrivetemi Sito aggiornato al
28 Novembre 2017