Inferno (网站服务)
开发者 | 贝尔实验室 / Vita Nuova Holdings |
---|---|
编程语言 | C |
操作系统家族 | 类Unix |
运作状态 | 持续中 |
原始码模式 | 自由软件 |
当前版本 |
|
支持平台 | ARM,PA-RISC,MIPS,PowerPC,SPARC,x86 |
内核类别 | 虚拟机 |
许可证 | GPL / LGPL / MIT |
官方网站 | Vita Nuova, bitbucket |
仓库 |
Inferno是种可以创造并支持分布式服务的操作系统。它主要是基于贝尔实验室九号项目的经验以及贝尔实验室接下来对于操作系统、语言、即时编译器、图形、安全性、网络、移植等的研究而产生的。
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)[1]介绍Inferno具有几个方面上由操作系统所支持的可移植性与通用性:
- 可以移植到不同的处理器上:目前可以在ARM、MIPS、PA-RISC、PowerPC、SPARC,以及x86等架构上运作,也可以移植到其他的架构上。
- 可以移植到不同的环境上:它可以以独立的操作系统运作在小型终端上,或是以用户应用软件的形式存在于九号项目、Windows NT、Windows 95、UNIX(Irix、Solaris、FreeBSD、GNU/Linux、AIX、HP-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 Thompson、Dennis 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平台开发并执行。
原生移植包括x86、MIPS、ARM、PowerPC,以及SPARC。
托管或虚拟操作系统移植则包括:Microsoft Windows、GNU/Linux、FreeBSD、九号项目、Mac OS X、Solaris、IRIX、UnixWare。
Inferno也可以以包的方式托管于IE中。根据Vita Nuova的说法,针对其他浏览器的包也在开发中[2]。
Inferno也可以移植到OpenMoko[3]、Nintendo DS[4]以及SheevaPlug[5]。
授权
[编辑]Inferno第四版于2005年初以自由软件的授权发布。具体来说,Inferno采用了双授权的方式采用了两种授权供用户选择。用户可选择在自由软件授权或传统商业化授权的情况下获取Inferno。根据自由软件授权的规范,系统中各个部分可以采用不同的授权方式,这些授权方式包括GPL、LGPL、Lucent 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,只是不幸地作者从未完成或发布该一著作。
引用
[编辑]参考文献
[编辑]- ^ 貝爾實驗室技術論文. [2010-04-05]. (原始内容存档于2018-08-15).
- ^ 包 (页面存档备份,存于互联网档案馆), Vita Nuova.
- ^ 存档副本. [2010-04-05]. (原始内容存档于2016-01-22).
- ^ 存档副本. [2010-04-05]. (原始内容存档于2015-01-06).
- ^ 存档副本. [2010-04-05]. (原始内容存档于2014-09-18).
- ^ Stanley-Marbell, Phillip. Inferno Programming with Limbo. Wiley. 2003 [2010-04-05]. ISBN 0470843527. (原始内容存档于2020-11-09) (英语).
- ^ Stuart, Brian. Principles of Operating Systems: Design and Applications. Course Technology. 2008. ISBN 1418837695 (英语).
外部链接
[编辑]- Inferno Project at Google Code (页面存档备份,存于互联网档案馆)
- Inferno第四版下载页面,提供原始码下载 (页面存档备份,存于互联网档案馆)
- 教学文件 (页面存档备份,存于互联网档案馆)
- Inferno用户手册 (页面存档备份,存于互联网档案馆)
- 其他文件 (页面存档备份,存于互联网档案馆)
- 邮件列表及其他资源 (页面存档备份,存于互联网档案馆)
- Ninetimes:关于Inferno、九号项目及其他相关技术的新闻及文章 (页面存档备份,存于互联网档案馆)
- Inferno Wiki[永久失效链接]
- Inferno程序员手册 - 开发人员所撰写的日志。
Ports
- Inferno for the Nintendo DS (页面存档备份,存于互联网档案馆)
- Inferno for the Marvell Kirkwood/Sheevaplug (页面存档备份,存于互联网档案馆)
- Inferno on OLPC (页面存档备份,存于互联网档案馆)
- Inferno port to the Openmoko neo freerunner (页面存档备份,存于互联网档案馆)
Of Historical Interest