• Non ci sono risultati.

4 Sistema Operativo per edifici

4.3 Software Defined Buildings

Le funzionalità e i servizi offerti da un OS possono differire da un sistema all’altro ma è necessario identificare classi comuni di tali servizi.

Gli edifici sono intrinsecamente molto complessi, sia strutturalmente che funzionalmente. Serve un ambiente dove poter integrare dati statici derivanti dalla modellazione dell’edificio con dati dinamici derivanti dalle misurazione effettive dei parametri di funzionamento dello stesso (configurazione e runtime). Il sistema deve poter trattare gli elementi in maniera uniforme e ospitare logiche di controllo astratte e multidominio, processi concorrenti, applicazioni pensate e implementate secondo il paradigma “write once run everywhere”.

Nel contesto building, è possibile identificare le seguenti funzioni base:

 Metadata Service: servizio di rappresentazione e dichiarazione su base ontologica delle entità, delle relazioni tra entità e delle proprietà associate alle entità e alle relazioni. I metadati sono fondamentali per l’interpretazione dei dati e per sviluppare applicazioni portabili

 Reasoner & QueryService: servizio ricerca risorse basato su motore di reasoning capace di interpretare query complesse

 HPL: Hardware Presentation Layer (driver compatibilità HW-OS): astrazione hardware e astrazione all’accesso

84

 HAL: Hardware Abstraction Layer (modellazione del dominio e relazioni nel dominio + servizi): definizione degli oggetti e delle interfacce con cui tali oggetti dialogano con il mondo esterno (tramite modellazione semantica)  Data Service: servizio per la storicizzazione, recupero e processamento

dati.

 Processi di sistema: insieme di processi che si occupano di trattare i dati secondo i modelli che vengono inseriti all’interno del sistema:

o Virtualizzatore risorse o Riconoscitore scenari

 Resource Management: gestione dell’accesso concorrente a risorse condivise

o Transaction Manager: gestore delle transazioni ovvero della coerenza del risultato di sequenze di operazioni che possono concludersi con un successo o un insuccesso; in caso di successo, il risultato delle operazioni deve essere permanente o persistente, mentre in caso di insuccesso si deve tornare allo stato precedente all'inizio della transazione.

 Process/Task Management: servizi per la gestione del ciclo di vita delle applicazioni

o Scheduler: processo che definisce secondo criteri opportuni quando una applicazione può essere eseguita e quando deve essere congelata o interrotta

85

Figura 15: componenti essenziali del sistema operativo

Molte altre funzionalità possono essere identificate come ad es. servizi per l’autenticazione e la gestione della multi-tenancy o multi-utenza ma che possono essere tralasciate in questo lavoro di tesi.

Ontologia e metadati

Un’ontologia è una rappresentazione formale, condivisa ed esplicita di una concettualizzazione di un dominio di interesse. Il termine ontologia è entrato in uso nel campo dell’intelligenza artificiale e della rappresentazione della conoscenza, per descrivere il modo in cui diversi schemi vengono combinati in una struttura contenente tutte le entità rilevanti e le loro relazioni in un dominio. Un’ontologia è una specificazione esplicita di una concettualizzazione (intendendo con “concettualizzazione” un’astratta e semplificata visione del mondo che si vuole rappresentare per qualche scopo, cioè una parziale visione del mondo che consiste solo di quegli oggetti e di quei concetti che si assume esistano in una certa area di interesse). Un’ontologia sarebbe, dunque, una parziale concettualizzazione

86

del mondo, creata da una comunità di utenti per uno scopo esplicito, e definita in un linguaggio formale e comprensibile dalle macchine.

Metadata & Query Service

Il servizio per la catalogazione delle entità e dei metadati relativi ad esse risulta essenziale per tutte le esigenze che riguardano sia la dichiarazione delle componenti del sistema che le fasi di ricerca. Il servizio deve essere sufficientemente generale per poter inglobare informazione di altre basi dati e/o poter essere collegato a sistemi preesistenti come ad es. sistemi per il BIM.

I servizi di ricerca devono esporre chiamate per ricerche complesse anche di tipo semantico: è quindi necessario disporre di un sistema di reasoning capace di interpretare correttamente richieste articolate. Tramite tale sistema le applicazioni possono identificare le componenti dell’edificio e interagire con esse in base alle relazioni che quest’ultime hanno rispetto alle altre componenti del sistema piuttosto che specificare puntualmente la risorsa hardware (ad es. le applicazioni devono poter accedere al controllo dell’ “impianto di illuminazione della cucina” piuttosto che identificare “attuatore con indirizzo x”).

HPL: Hardware Presentation Layer

Lo strato di presentazione dell’hardware è uno strato di astrazione che consente l’integrazione di qualunque tipo di hardware. Gli edifici sono costituiti da un ampio numero di sensori, attuatori e architetture di controllo, ognuna con le proprie tecnologie di comunicazione, protocolli e caratteristiche. Una sfida importante è quella di riuscire a superare questa eterogeneità fornendo un accesso uniforme a queste risorse mappandole nella loro rappresentazione virtuale dell’hardware sottostante. Tipicamente tale funzionalità viene risolta definendo un framework per i driver che definisca l’insieme dei protocolli, dei formati e delle interfacce che devono essere implementate per esporre le funzionalità hardware all’interno del sistema operativo in maniera coerente e

87

uniforme. Questo strato nasconde la complessità e la diversità dei sottostanti protocolli di comunicazione e delle diverse interfacce per l’interazione con i singoli dispositivi presentando le capacità hardware utilizzando un protocollo auto- descrittivo.

HAL: Hardware Abstraction Layer

Lo strato di astrazione hardware è uno strato che consente da un lato la virtualizzazione delle risorse di sistema e dall’altro la definizione di componenti come risultato della composizione (su base modello) di altre componenti.

Tale strato fornisce servizi per il trattamento dei dati grezzi affinchè siano disponibili alle applicazioni in modo conveniente: dati possono essere combinati tramite modelli opportuni per ottenere nuovi dati; errori di misura possono essere filtrati; le misurazioni possono essere attualizzate e rese sempre disponibili ad es. associando un indicatore di bontà del dato attraverso modelli di decadimento temporale.

Kernel

Il kernel è quella parte del sistema operativo che ha il compito di fornire ai processi in esecuzione un accesso sicuro e controllato all'hardware; il kernel ha anche la responsabilità di schedulare l’accesso alle risorse di sistema a ciascun task (multitasking). Tra i servizi fondamentali vi sono la definizione di protocolli e meccanismi per la comunicazione tra processi e la definizione delle chiamate esposte dal sistema (System API).