Inferno (网站服务)

Inferno是种可以创造并支持分布式服务的操作系统。它主要是基于贝尔实验室九号计划的经验以及贝尔实验室接下来对于操作系统、语言、即时编译器、图形、安全性、网络、移植等的研究而产生的。

Inferno
Inferno第四版
Inferno第四版
开发者贝尔实验室 / Vita Nuova Holdings
编程语言C
操作系统家族类Unix
运作状态持续中
原始码模式自由软件
当前版本
  • Fourth Edition
编辑维基数据链接
支持平台ARMPA-RISCMIPSPowerPCSPARCx86
内核类别虚拟机
许可证GPL / LGPL / MIT
官方网站Vita Nuova, bitbucket.org/inferno-os/inferno-os
仓库 编辑维基数据链接

Inferno应用程式可以移植到大多数混合的硬件、网络、环境上。它也定义了一套名为Dis虚拟机,这个虚拟机可以在任何实体机器上实做,使用Limbo这种类型安全的语言来编译成位元码。Inferno也提供了具备相同接口的虚拟操作系统来让用户可以在硬件上原生地执行Inferno或以应用程式的方式托管在其他系统中。

一种名为Styx通讯协议被用来让系统内可以采用一致的方式,让应用程式只要使用标准的文件操作,如开启、读取、写入,以及关闭,就可以存取近端与远程的资源。在第四版的Inferno中,Styx跟九号计划9P协议的新版本9P2000是一样的。

操作系统以及相关程序、Vita Nuova Holdings公司的名称都是源自于但丁·阿利吉耶里的著作,尤其是神曲

设计概念 编辑

Inferno最早是于1995年由贝尔实验室电脑科学研究部门(Computer Science Research division)的成员为了把九号计划的思想更广泛的使用在装置及网络上所制作的。Inferno是基于九号计划的三个基础原则而制作的分布式操作系统

  • 把资源视做文件:把所有的资源都列在层次结构式文件系统中以文件表示。
  • 命名空间:从应用程式的观点来看,网络是种单一且清楚的命名空间,能展现层次结构式文件系统,也能代表近端或远程实体分离的资源。
  • 标准通讯协议:采用名为Styx的标准协议,用来存取近端或远程的所有资源。

为了处理并使用多样化的网络环境,设计者决定采用虚拟机当做系统中必要的组件。这跟后来成为Java的Oak项目的结论相同,但各别达成了这样的目标。Dis虚拟机是一种倾向于贴近运行架构的一种寄存器机(register machine),相对来说Java虚拟机则是一种堆栈机(stack machine)。这种方法的优势是只要简单的为新架构创建一个即时编译器就可以了。

虚拟机提供的存储器管理功能设计上在1MB大小的存储器且不提供存储器映射的硬件上会较有效率。垃圾回收机制则是一种引用计数(reference counting)与收集循环资料(cyclic data)的即时染色收集器(real-time coloring collector)混合而成的。

Inferno核心包含了虚拟机、即时编译器(on-the-fly compiler)、调度、装置、协议堆栈(protocol stacks)、各行程文件命名空间的命名空间解释器(evaluator),以及层次结构式文件系统的根目录。核心也同时包含了一些提供了虚拟操作系统接口的内建模块,像是系统调用、图形、安全性、以及数学函数模块。

贝尔实验室技术期刊Bell Labs Technical Journal英语Bell Labs Technical Journal[1]介绍Inferno具有几个方面上由操作系统所支持的可移植性与通用性:

  • 可以移植到不同的处理器上:目前可以在ARMMIPSPA-RISCPowerPCSPARC,以及x86等架构上运作,也可以移植到其他的架构上。
  • 可以移植到不同的环境上:它可以以独立的操作系统运作在小型终端上,或是以用户应用软件的形式存在于九号计划Windows NTWindows 95、UNIX(IrixSolarisFreeBSDGNU/LinuxAIXHP-UX)。Inferno应用程式在这些环境中都有相同的接口。
  • 分布式设计:在用户终端以及伺服器的部分都具有相同的环境,而且彼此间可以导入对方的资源(例如附加的输入/输出装置或是网络)。应用程式可以在运行系统中的通讯机制辅助之下,轻松的(甚至是动态的)分散到客户端或服务端。
  • 最低硬件需求:它在机器上所运行的实用应用程式只需要1MB的存储器,也不需要存储器映射的硬件支持。
  • 便携式应用:Inferno应用程式是以类型安全的Limbo语言所撰写,编译出来的可执行文件在各种平台上的执行结果都会一致。
  • 动态适应性(Dynamic adaptability):应用程式可以根据硬件或其他可用资源来加载不同的程序模块来执行特定的功能。例如像影片播放器可以使用许多不同解码模块中的任何一个来进行影片的解码。

这些设计面上的决定导致它为了能够让内容与服务提供者可以着重于他们所发送的内容,而非把重心放在处理各种不同的硬件、软件或网络环境,因此提供了一种标准的接口来达成这样的目的。

历史 编辑

日期 版本 备注
1996年 Inferno Beta 贝尔实验室
1997年5月 Inferno Release 1.0 贝尔实验室技术期刊文章,1997年冬季
July 1999 Inferno第二版 Lucent's Inferno Business Unit
June 2001 Inferno第三版 Vitanuova
2004 Inferno第四版 开放原始版版本,改善了早期版本不兼容的接口,纳入了9P2000的支持

Inferno是九号计划的派生产品,彼此之间有许多共通的设计概念以及核心中的代码,特别是关于装置以及Styx/9P2000协议的部分。Inferno也把Unix哲学与自贝尔实验室继承而来的UNIX经验分享给九号计划的项目。许多Inferno的命令行工具原先也都是九号计划的工具,之后才用Limbo语言改写。

IEEE Internet Computing在1997年3-4月的刊物中有Inferno网络软件的广告。该广告宣称可利用多种装置在包含互联网、电信网络,以及局域网等之"任何网络"上进行通讯。图中甚至摆放了PlayStation之类的照片,如果电玩可以跟电脑沟通、手机可以存取电邮、电视可以存取语音邮件。

贝尔实验室计算科学研究中心(Computing Science Research Center)的成员Ken ThompsonDennis Ritchie,以及道格拉斯·麦克罗伊研究并开发了C语言,并使用该语言建造了UNIX。贝尔实验室中的程序员随后进行九号计划及Inferno等针对现代分布式环境的操作系统开发。

朗讯科技至少有两个内部项目有采用Inferno:Lucent VPN Firewall Brick以及Lucent Pathstar phone switch。这也开启了贩卖Inferno原始码授权的尝试,不过反应并不热烈。朗讯科技没特别做营销又忽略了Inferno与互联网的重要关连,而Java语言跟Inferno目标市场相似、采用类似的技术、可以在网页浏览器中运行,也同时满足了当时对于面向对象语言的流行。当Sun微系统大力营销自家的Java时,朗讯科技自Sun微系统获取Java的授权,宣称所有Inferno的装置皆能执行Java。Java位元码与Dis位元码的转译器就是为了达成这个功能所产生的。然而Inferno还是卖不出去。

Inferno商业部门过了三年就关闭且被卖给Vitanuova。Vitanuova持有相关的权利后,便继续研发并对整个系统采用商业化授权的方式,随后提供免费下载以及对核心以及虚拟机以外的整个系统采非GPL兼容授权的方式。Vitanuova将软件继续移植到新的硬件以及专注在分布式应用软件上,最终将原始码采用GPLv2授权发布,而Inferno操作系统现今也变成是一个开放原始码的项目。

移植 编辑

Inferno可以直接在原生硬件中执行,也能在其他平台以应用程式的方式提供虚拟操作系统。应用程式无须经过修改或重编译即可在所有的Inferno平台开发并执行。

原生移植包括x86MIPSARMPowerPC,以及SPARC

托管或虚拟操作系统移植则包括:Microsoft WindowsGNU/LinuxFreeBSD九号计划Mac OS XSolarisIRIXUnixWare

Inferno也可以以的方式托管于IE中。根据Vita Nuova的说法,针对其他浏览器的包也在开发中[2]

Inferno也可以移植到OpenMoko[3]Nintendo DS[4]以及SheevaPlug[5]

授权 编辑

Inferno第四版于2005年初以自由软件的授权发布。具体来说,Inferno采用了双授权的方式采用了两种授权供用户选择。用户可选择在自由软件授权或传统商业化授权的情况下获取Inferno。根据自由软件授权的规范,系统中各个部分可以采用不同的授权方式,这些授权方式包括GPLLGPLLucent Public License,以及MIT License。后来Vita Nuova让Inferno可以在GPLv2的授权下获取除了字体(采用Bigelow and Holmes授权)以外的整个系统。现在总共有三种授权方式可供选择。

书籍 编辑

Phillip Stanley-Marbell所撰写的Inferno Programming with Limbo[6]虽然描述了一些Inferno操作系统第三版的情况,但大多都专注在Limbo语言以及Inferno系统所提供的接口上。例如说这本书仅提到一点Inferno多用途命令行(command shell)的功能,不过作为一本程式设计相关的书籍,这也是可理解的情况。

另一本由Brian Stuart所撰写的Principles of Operating Systems: Design and Applications[7]则采用Inferno作为操作系统设计的实例。

而由Martin Atkins、Charles Forsyth、Rob Pike,以及Howard Trickey合著的"The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System"一书,尝试以操作系统为中心的观点介绍Inferno,只是不幸地作者从未完成或发布该一著作。

引用 编辑

参考文献 编辑

  1. ^ 貝爾實驗室技術論文. [2010-04-05]. (原始内容存档于2018-08-15). 
  2. ^ 页面存档备份,存于互联网档案馆), Vita Nuova.
  3. ^ 存档副本. [2010-04-05]. (原始内容存档于2016-01-22). 
  4. ^ 存档副本. [2010-04-05]. (原始内容存档于2015-01-06). 
  5. ^ 存档副本. [2010-04-05]. (原始内容存档于2014-09-18). 
  6. ^ Stanley-Marbell, Phillip. Inferno Programming with Limbo. Wiley. 2003 [2010-04-05]. ISBN 0470843527. (原始内容存档于2020-11-09) (英语). 
  7. ^ Stuart, Brian. Principles of Operating Systems: Design and Applications. Course Technology. 2008. ISBN 1418837695 (英语). 

外部链接 编辑

Ports

Of Historical Interest