# Inferno (sistema operativo)

Inferno è un sistema operativo che permette la creazione e il supporto di servizi distribuiti. Il nome del sistema operativo, e dei programmi ad esso associati, come anche quello della ditta che lo produce, Vita Nuova Holdings, è stato ispirato dalle opere letterarie di Dante Alighieri, in particolare la Divina Commedia.
Inferno può essere eseguito in modalità hosted dentro diversi sistemi operativi, o in modalità nativa su una gamma di architetture hardware ben definita. In ognuna di queste configurazioni il sistema operativo interagisce con le sue applicazioni senz'alcuna differenza di sorta.
Il protocollo di comunicazione denominato Styx viene applicato uniformemente per l'accesso alle risorse, remote o locali che siano. La quarta edizione di Inferno include una revisione di Styx praticamente identica alla versione più recente del protocollo 9P di Plan 9, 9P2000.
Le applicazioni vengono scritte nel linguaggio di programmazione type-safe Limbo, la cui rappresentazione binaria è identica in tutte le piattaforme, e può essere eseguita in una macchina virtuale utilizzando tecniche di compilazione just-in-time.

## Principi di progettazione

Il primo rilascio di Inferno venne effettuato nel 1995 da alcuni membri della sezione di ricerche informatiche dei Bell Labs per portare alcuni elementi di Plan 9 ad altri sistemi operativi. Inferno, come Plan 9, è un sistema operativo distribuito basato su tre principi fondamentali da esso derivati:
* Le risorse sono file: tutte le risorse sono rappresentate tramite dei file, posti in un file system gerarchico;
* Namespace: la visione della rete da parte di un'applicazione è quello di un namespace unico e coerente che si presenta come un file system gerarchico, ma può corrispondere a risorse fisicamente distinte, locali o remote che siano;
* Protocollo standard di comunicazione: un protocollo standard, chiamato Styx, viene utilizzato per accedere a tutte le risorse, sia locali, sia remote.

## Rapporti con Plan 9

Inferno e Plan 9 hanno in comune la provenienza dalla versione stabile di Plan 9 pubblicata nel 1996. Entrambi condividono gli stessi principi di progettazione, con alcune differenze:
| | Plan 9 | Inferno |
| Livello utente | Esegue codice nativo, scritto perlopiù in C, con una piccola parte in assembly | Viene eseguito attraverso un interprete bytecode o compilatore just-in-time chiamato Dis, scritto quasi completamente in Limbo |
| Kernel | Kernel ibrido | Vecchio kernel di Plan 9, modificato: include una macchina virtuale |
| Modalità di esecuzione del kernel | Passa dalla modalità utente (programmi) a quella supervisor (kernel) | Non lascia mai la modalità supervisor (kernel), ma fornisce protezione ai programmi eseguiti attraverso una macchina virtuale. |
Inferno ha punti in comune con la Java Virtual Machine.

## Supporto di rete

Il numero di IEEE Internet Computing di marzo-Aprile 1997 è uscito con un messaggio pubblicitario a proposito del software di rete di Inferno. In esso si affermava che periferiche eterogenee potevano comunicare attraverso "qualunque rete" incluse Internet, le reti di telecomunicazioni e le reti locali. Si affermava anche che i videogame potevano mettersi in comunicazione con i computer (era presente l'immagine di una PlayStation, i telefoni cellulari potevano avere accesso alla posta elettronica e che vi era il supporto voicemail per i televisori).

## Port

Inferno può essere eseguito su hardware nativo o come applicazione che fornisce un sistema operativo virtuale in esecuzione su altre piattaforme. Le applicazioni possono essere sviluppate ed eseguite su una qualunque delle architetture supportate da Inferno senza alcuna modifica o ricompilazione.
Fra i port nativi si annoverano: x86, MIPS, XScale, ARM, PowerPC, SPARC. Invece, fra i port in host o virtuali: Microsoft Windows, Linux, FreeBSD, Plan 9, macOS, Solaris, IRIX, UnixWare.
Inferno può essere anche ospitato da un plugin per Internet Explorer. Secondo Vita Nuova sono in sviluppo plugin per altri browser.
Recentemente è nata anche una versione del sistema operativo per Nintendo DS basata su Inferno4 chiamata InfernoDS

## Licenza

La quarta edizione di Inferno è stata rilasciata all'inizio del 2005 come software libero. Nello specifico, essa gode di una doppia licenza. Gli utenti ne possono entrare in possesso o secondo i termini di una serie di licenze per software libero, o tramite una licenza commerciale tradizionale. Nel caso si scelga la prima opzione, a diverse parti del sistema si applicano altrettante licenze, tra cui la GNU General Public License, la GNU Lesser General Public License, la Lucent Public License, e la Licenza MIT. In seguito, Vita Nuova ha reso possibile ottenere l'intero sistema (esclusi i font, che sono stati rilicenziati da Bigelow and Holmes) secondo i termini della licenza GPLv2. Tutte e tre le possibilità sono attualmente disponibili.

## Libri

Il libro Inferno Programming with Limbo di Phillip Stanley-Marbell, descrive la terza edizione del sistema operativo Inferno, sebbene si concentri maggiormente sul linguaggio Limbo e sulle sue interfacce al sistema Inferno più che su quest'ultimo. Per esempio, vengono fornite poche informazioni sulla versatile shell di Inferno, cosa comprensibile vista la destinazione del testo.
Un altro libro, The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System di Martin Atkins, Charles Forsyth, Rob Pike e Howard Trickey, era stato concepito per fornire un punto di vista centrato sul sistema operativo ma non è mai stato completato o pubblicato dai suoi autori.