Cos'è un unikernel?

3

Oggi ho cercato includeOS e ho scoperto che si definisce come un minimo unikernel .

Mi chiedo cosa sia UniKernel. Le spiegazioni wikipedia non sono abbastanza chiare per me.

unikernel è un sistema operativo incorporato con una singola applicazione per uno scopo speciale simile ai sistemi embedded?

    
posta ar2015 14.04.2018 - 04:11
fonte

2 risposte

4

Un Unikernel è un tipo speciale di sistema operativo della libreria. Un sistema operativo di libreria offre tutte le sue funzionalità come librerie, generalmente collegate al tempo di compilazione dell'applicazione.

La distinzione non è chiara, ma originariamente quando Anil Madhavapeddy coniò il termine Unikernel intendeva una singola applicazione con thread, con tutto ciò che girava nello spazio di un singolo indirizzo, usando un sistema operativo di libreria creato in un linguaggio di alto livello, sicuro dal tipo, in esecuzione su un hypervisor.

Va notato che il progetto IncludeOS non aderisce rigorosamente alla definizione. È scritto in C ++ che non è sicuro per il tipo, supporta più core CPU, thread e boot su hardware bare metal.

Ho sentito Anil che caratterizza IncludeOS come un Unikernel, quindi suppongo che non sia troppo severo al riguardo.

Le motivazioni che scrivono la tua applicazione usando un Unikernel variano, ma per lo più sono footprint (unikernels è piccolo), performance (chiamate di funzione sono più veloci delle chiamate di sistema) e sicurezza.

I vantaggi in termini di sicurezza derivano dalla natura di Unikernels. Gli Unikernel sono costruiti come immutabili. Quindi, se stai costruendo un dispositivo firewall virtuale con un Unikernel, le regole del firewall dovrebbero essere il codice e il firewall hardcoded per eseguire esattamente quel set di regole. Questo a differenza di un kernel monolitico tradizionale in cui tutta la configurazione è dinamica.

Gli Unikernel non sono pensati per essere riconfigurati. Sono destinati a essere sostituiti. Quindi non hanno le caratteristiche per supportare la riconfigurazione che li rende difficili da sfruttare.

    
risposta data 14.04.2018 - 12:11
fonte
1

"Embedded" non specifica l'architettura del software, implica semplicemente che software e hardware sono raggruppati insieme e inseparabili dal punto di vista dell'utente.

Nella maggior parte dei moderni sistemi di computer si avrebbe un processore che consente al primo programma che gira su di esso (il SO) di prendere il controllo su di esso e, usando quel controllo hardware acquisito, consentire ad altri programmi di funzionare con possibilità limitate. È come un bidello che entra in un edificio, prende le chiavi di tutte le stanze e si siede al pannello di controllo delle strutture. Poi aspetta che gli inquilini o gli ospiti entrino e permettano loro un accesso limitato. Lui stesso non ha uno scopo specifico se non quello di gestire l'edificio. Sta seduto lì a monitorare, distribuire e ritirare le chiavi e mangiare ciambelle.

Con un unikernel c'è solo un programma con uno scopo dedicato. Non è un sistema per scopi generici che consente l'esecuzione di programmi, è un programma one-purpose che non consente l'esecuzione su nessun altro programma. Fondamentalmente, è un'applicazione senza un sistema operativo. L'applicazione controlla la macchina, avendo tutta la potenza e l'accesso necessari.

È come una persona che entra in un hotel vuoto, chiudendo la porta dietro di sé, avviando le strutture di cui ha bisogno, afferrando le chiavi delle stanze alle quali vuole accedere e fare le sue cose.

Nel software, il programma unikernel sarà relativamente piccolo rispetto a un sistema operativo generico più una singola applicazione perché conterrà solo quei servizi che l'applicazione utilizzerà effettivamente. E ciò potrebbe essere utile in un contesto integrato.

    
risposta data 14.04.2018 - 09:59
fonte

Leggi altre domande sui tag