loading ...
loading...

2007-04-05 | [翻译]Singularity项目概览 - 2.Singularity

分享

Singularity是一个新的操作系统,它被用来开发成为更加可信赖系统和应用软件的基础平台。Singularity利用现代编程语言和工具的进步来创建一种环境,使得软件更容易被正确构建,使得程序行为更容易被验证,也能容忍运行时失败。

Singularity很关键的一方面是基于软件隔离进程(SIP)的扩展模型。SIP封装了程序或系统的一部分,并且提供了信息隐藏,失败隔离和强壮的接口。SIP贯穿于整个操作系统和应用程序软件中。我们相信,构建于这个抽象概念上的系统将会导致更加可信赖的软件平台。

SIP实际上就是Singularity操作系统的进程。所有内核之外的代码都运行在SIP中。SIP在许多方面都不同于常规操作系统的进程概念:

  • SIP是封闭的对象空间,而不是地址空间。两个Singularity进程不能同时访问一个对象。进程间通信则互斥转移数据的所有权。
  • SIP是封闭的代码空间。进程不能动态加载或生成代码。
  • SIP并不依赖内存管理硬件来达到隔离的目的。多个SIP均在同一物理或虚拟地址空间中。
  • SIP间通信是通过双向作用的,强类型的,高阶次序的管道来完成的。管道不仅说明了双方通信协议,还指出了传输的值和双方都是经过验证的。
  • 创建SIP开销并不大,而且在SIP间通信也是低负载。低开销便会使得把SIP作为良好细粒度和扩展的机制可行。
  • 我们通过操作系统来创建和结束SIP,这样在终止SIP时,SIP的资源也能被有效收回。
  • SIP独立运行,即使有不同的数据布局,运行时系统和垃圾收集。

SIP不止可以用来封装应用程序扩展,还可以用来作为保护和扩展的单独机制,来替代常规的进程和动态代码加载双重机制。如此一来,Singularity就只需要一个错误恢复模型,一个通信机制,一个安全策略和一个编程模型,而不是当前系统的层层多余机制和政策。Singularity的一个很重要的实验就是使用SIP来构造整个操作系统以及证明这个系统比常规系统更加可信赖。

Singularity内核几乎全部由安全代码组成。其余的部分则运行在SIP中,只由经过验证的安全代码组成,包括所有的设备驱动,系统进程和应用程序。在所有非信任代码必须验证其安全的同时,部分Singularity内核和运行时系统(叫做trusted base,即信任基础)则没有验证其安全。语言安全性保护了来自于非信任代码的trusted base。

SIP的完整依赖于语言安全性和泛系统不变量,即进程不能引用另外一个进程的对象空间。

确保代码安全性是很明显的要点。就眼前来说,Singularity依赖于源代码和中间代码的编译器验证。未来,类型化汇编语言(Typed Assembly Language,即TAL)将允许Singularity来验证编译代码的安全性。TAL要求可运行的程序提供它类型安全性的凭据(这个对于安全语言来说,会通过编译器自动产生)。对于简单审核几千行代码来验证凭据是否正确,以及运行指令是否适合是一件非常简单的任务。那么这种端到端的验证策略便可以从Singularity的trusted base来剔除编译器。这个验证程序必须被仔细设计,实现和检验,但这些任务是可行的。这是由于它的尺寸和简易性。

独立于内存的不变量(the memory independence invariant,即禁止跨对象空间的指针)担当了几个用途。首先,通过隐藏实现的具体细节和预防指针指向已终结的进程,它增强了进程的数据抽象和失败隔离。其次,通过允许进程拥有不同的运行时系统和垃圾收集器,它减轻了运行无关的实现限制。再次,通过明确内存的进程所有权,它阐明了资源计数和回收。最后,通过消除操作多类型指针和地址空间的需要,它简化了内核接口。

该架构的主要难点在于通过消息传递的通信与直接共享数据相比缺乏灵活性。Singularity现在正通过有效的消息系统,编程语言扩展(基于管道的简洁明确的通信)和验证工具致力于解决这个问题。
分享 分享 |  评论 (0) |  阅读 (?)  |  固定链接 |  类别 (操作系统) |  发表于 19:23  | 最后修改于 2007-05-10 17:26
搜狐博客温馨提示:搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  *中国人爱国心,搜狗输入法爱国主题皮肤下载>>
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复