# Inferno (sistema operatiu)

Inferno és un sistema operatiu distribuït iniciat als Bell Labs i ara desenvolupat i mantingut per Vita Nuova Holdings com a programari lliure sota la llicència MIT. Inferno es va basar en l'experiència adquirida amb el Pla 9 de Bell Labs i en la investigació posterior de Bell Labs sobre sistemes operatius, idiomes, compiladors sobre la marxa, gràfics, seguretat, xarxes i portabilitat. El nom del sistema operatiu, molts dels seus programes associats i el de l'empresa actual, es van inspirar en la Divina Comèdia de Dante Alighieri. En italià, Inferno significa " infern ", del qual hi ha nou cercles a la Divina Comèdia de Dante.
El març de 2021, totes les edicions van ser rellicenciades principalment sota la llicència MIT.

## Principis de disseny

Inferno va ser creat l'any 1995 per membres de la divisió de recerca en ciències de la computació de Bell Labs per portar idees derivades del seu sistema operatiu anterior, el Pla 9 de Bell Labs, a una gamma més àmplia de dispositius i xarxes. Inferno és un sistema operatiu distribuït basat en tres principis bàsics:
* Recursos com a fitxers: tots els recursos es representen com a fitxers dins d'un sistema de fitxers jeràrquic
* Espais de noms: la vista d'un programa de la xarxa és un espai de noms únic i coherent que apareix com un sistema de fitxers jeràrquic però que pot representar recursos separats físicament (localment o remotament)
* Protocol de comunicació estàndard: s'utilitza un protocol estàndard, anomenat Styx, per accedir a tots els recursos, tant locals com remots
Per gestionar la diversitat d'entorns de xarxa en què es pretenia utilitzar, els dissenyadors van decidir que una màquina virtual (VM) era un component necessari del sistema. Aquesta és la mateixa conclusió del projecte Oak que es va convertir en Java, però a la qual es va arribar de manera independent. La màquina virtual Dis és una màquina de registre destinada a coincidir molt amb l'arquitectura en què s'executa, en contrast amb la màquina de pila de la màquina virtual Java. Un avantatge d'aquest enfocament és la relativa simplicitat de crear un compilador just-in-time per a noves arquitectures.
La màquina virtual proporciona una gestió de memòria dissenyada per ser eficient en dispositius amb tan sols 1 MiB de memòria i sense maquinari de mapatge de memòria. El seu col·lector d'escombraries és un híbrid de recompte de referència i un col·lector de colors en temps real que recull dades cícliques.
El nucli Inferno conté la màquina virtual, el compilador sobre la marxa, el programador, els dispositius, les piles de protocols i l'avaluador d'espai de noms per a l'espai de noms de fitxer de cada procés i l'arrel de la jerarquia del sistema de fitxers. El nucli també inclou alguns mòduls integrats que proporcionen interfícies del sistema operatiu virtual, com ara mòduls de trucades al sistema, gràfics, seguretat i matemàtiques.
L'article de Bell Labs Technical Journal que presenta Inferno va enumerar diverses dimensions de portabilitat i versatilitat proporcionades pel sistema operatiu:
* Portabilitat entre processadors: actualment s'executa amb arquitectures ARM, SGI MIPS, HP PA-RISC, IBM PowerPC, Sun SPARC i Intel x86 i és fàcilment portàtil per a altres.
* Portabilitat entre entorns: s'executa com a sistema operatiu autònom en terminals petits, i també com a aplicació d'usuari sota Bell Plan 9, MS Windows NT, Windows 95 i Unix ( SGI Irix, Sun Solaris, FreeBSD, Apple Mac OS X)., Linux, IBM AIX, HP-UX, Digital Tru64 ). En tots aquests entorns, els programes Inferno veuen una interfície idèntica.
* Disseny distribuït: s'estableix un entorn idèntic al terminal de l'usuari i al servidor, i cadascun pot importar els recursos (per exemple, els dispositius d'E/S o xarxes connectats) de l'altre. Amb l'ajuda de les instal·lacions de comunicacions del sistema en temps d'execució, els programes es poden dividir fàcilment (i fins i tot de manera dinàmica) entre client i servidor.
* Requisits mínims de maquinari: executa aplicacions útils autònomes en màquines amb tan sols 1 MiB de memòria i no requereix maquinari de mapatge de memòria.
* Programes portàtils: els programes Inferno s'escriuen en el llenguatge segur de tipus Limbo i es compilen amb Dis bytecode, que es pot executar sense modificacions a totes les plataformes Inferno.
* Adaptabilitat dinàmica: els programes poden, segons el maquinari o altres recursos disponibles, carregar diferents mòduls de programa per realitzar una funció específica. Per exemple, un reproductor de vídeo pot utilitzar qualsevol dels diversos mòduls descodificadors diferents.

## Característiques

Els programes Inferno són portàtils en una àmplia combinació de maquinari, xarxes i entorns. Defineix una màquina virtual, coneguda com Dis, que es pot implementar en qualsevol màquina real, proporciona Limbo, un llenguatge segur de tipus que es compila en codi de bytes portàtil i, més significativament, inclou un sistema operatiu virtual que proporciona el mateix interfícies tant si Inferno s'executa de forma nativa al maquinari com si s'executa com a programa d'usuari a sobre d'un altre sistema operatiu.

## Referències

* ↑ «Inferno» (en anglès). [Consulta: 6 abril 2024].
* ↑ «inferno-os/inferno-os» (en anglès), 05-04-2024. [Consulta: 6 abril 2024].
* ↑ «Getting started with Inferno» (en anglès). [Consulta: 6 abril 2024].
* ↑ Bell Labs Technical Journal, 2, 1, Winter 1997, pàg. 5–18.