Riassunto analitico
I moderni processori multicore nascono con l'intento di supportare la coesistenza di sistemi software eterogenei sul medesimo hardware. Questo tipo di approccio è reso possibile solo grazie a tecniche di virtualizzazione, che permettono la creazione di ambienti virtuali, logicamente isolati tra loro. Questo, oltre che a permettere il pieno uso delle risorse disponibili, permette, a seconda delle specifiche richieste, la cooperazione controllata di applicazioni oppure il completo isolamento delle stesse. Esistono diverse tipologie di virtualizzazione e tecnologie di hypervisor, valide a seconda dei campi di utilizzo. Consideriamo Jailhouse, un hypervisor partizionatore statico capace di eseguire più sistemi operativi o applicazioni bare metal accanto a Linux. Esso è in grado di partizionare le risorse hardware della macchina host e assegnarle a differenti macchine virtuali, le quali saranno poi in grado di esistere in un ambiente virtuale con la sola percezione delle risorse assegnate. L'obiettivo, nel caso preso in esame in questo elaborato, è di permettere ad applicazioni su partizioni differenti l'uso della medesima periferica hardware (ad esempio l'interfaccia seriale o quella del CAN bus) in modo controllato, senza compromettere il funzionamento delle parti interessate. Considerato che Jailhouse è un hypervisor partizionatore statico che non supporta sovrallocazione delle risorse, e che virtualizza solamente componenti hardware fisicamente esistenti, la condivisione di periferiche non è nativamente supportata. Per trovare una soluzione al problema si è deciso di paravirtualizzare i driver della periferica condivisa e fare in modo che, alle applicazioni contendenti, sia reso disponibile l'accesso alle stesse mediante API specifiche. Questo tipo di approccio, a differenza della classica virtualizzazione, in cui tutte le risorse sono virtualizzate dall'hypervisor stesso, richiede ingenti modifiche ai sistemi operativi in esecuzione sulle macchine virtuali, in quanto necessitano dei driver specifici per interagire con l'hypervisor ed accedere alla risorsa condivisa. Nel caso specifico, per rendere il sistema modulare e riutilizzabile, è stata creata un'applicazione bare metal che contiene i driver paravirtualizzati delle periferiche fisiche e che gestisce l’utilizzo delle stesse da parte dei guest sfruttando il sistema di comunicazione inter-virtual machine messo a disposizione dall'hypervisor. Lo scopo finale è quello di mettere a disposizione del progettista uno strumento software che potrebbe trovare impiego in diversi scenari: a partire da quelli in cui c’è necessità di attuare sistemi di ridondanza software fino a contesti relativi alla sicurezza informatica, in cui vi è la necessità di attuare politiche di filtraggio e validazione di dati o anche più banalmente per virtualizzare componenti hardware.
|
Abstract
Modern multicore processors born with the aim of supporting the coexistence of heterogeneous software systems on the same hardware.
This type of approach is made possible thanks to virtualization techniques that allow creation of virtual environments, logically isolated from each other. This, in addition to allowing full use of the available resources, allows, depending on the specific constraints, the controlled cooperation of applications or the complete isolation of the same.
There are different virtualization and hypervisor technologies, valid according to the fields of use. Consider Jailhouse, a static partitioning hypervisor capable of running multiple operating systems or bare metal applications alongside Linux. It is able to partition the hardware resources of the host machine and assign them to different virtual machines, which will then be able to exist in a virtual environment with the awareness vision of the only assigned resources.
In the case considered in this paper, the objective is to allow applications on different partitions to interact with the hardware peripherals (for example the serial interface or the CAN bus interface) in a controlled way, without compromising the functionalities of the interested parties. Given the fact that Jailhouse is a static hypervisor and does not allow for the allocation of hardware resources that are not physically available, this specific use case is not directly achievable without further customization.
To find a solution to the problem, it was decided to paravirtualize the drivers of the shared device and make it possible for contending applications to have access to these resources through specific APIs. This type of approach, unlike classic virtualization, in which all resources are virtualized by the hypervisor itself, requires significant changes to the virtual machine's operating systems, specific drivers are required to interact with the hypervisor and access the shared resources.
In the specific case, to make the system modular and reusable, a bare metal application was created containing the para-virtualized drivers for the physical peripherals and which allows access to the guests thanks to the inter-virtual machine communication mechanism defined in the hypervisor's configuration phase.
The aim of the project is to provide a software tool, available to the designer that could find application in case there were the need to implement redundancy systems, rather than in situations where a data filtering and validation mechanism or more is required or to easly virtualize hardware components.
|