Singularity

Singularity，一種實驗性操作系统，在2003年至2015年間由微软研究院設計與開發。该操作系统的核心、驅動程式以及应用程序都以「受控代碼」写成。系统“Singularity”在设计上完全改头换面，不再以其性能為標準，而以系統稳定性作为首要标准。

Singularity操作系统會在系统构建、編寫程式等应用微软最先进的技术，例如Singularity的核心技术之一：软件独立进程（Software Isolated Processes，SIP）将采用型別安全的编程语言以及精简的指令完成，保证系统運作之间的高度独立性。SIP保证每个程序、驅動程式以及系统扩展组件都在獨立的SIP内运行，並不允许互相共享内存或修改自身代码，能夠使系统的稳定性增強。

Singularity的低级x86中断以汇编语言和C语言写成。一旦这些代码完成工作，它将调用核心，核心的运行时代码和垃圾收集器用C♯语言写成并在非安全模式下运行。Singularity的硬件抽象层用C++语言写成并运行在安全模式下。并且也有部分C代码负责调试工作。计算机的BIOS只在16位元真實模式阶段被调用；一旦系统进入32位元模式，Singularity将永远不再调用BIOS，而改以调用以Sing♯写出的设备驱动代码。当安装时，通用中間語言形态的opcode将藉由Bartok编译为x86形态的opcode。Bartok是一种以C#写成的早期优化编译器。

 设计 
Singularity是一个微内核操作系统；无论如何，不似过去的微内核，Singularity的不同组件不在单独的地址空间（进程）内运行，而是每個软件独立进程（SIP）分配到一个独立的单一地址空间。这些SIP的行为类似普通进程，但SIP将不会在任务调度时请求开销惩罚（overhead penalty）。系统的保护由不变式（invariants）集提供，比如内存不变式将维护内存内两个SIP间没有交互參照（或循环的内存指针）。这项规则将在应用程序安装阶段进行检查，并且不得违反，否则Singularity将禁止安装（注意：Singularity系统中安装完全由操作系统管理）。

大部分不变式依赖于带有安全机制语言的使用，如Java语言或C#，这些语言拥有垃圾收集机制，没有专断指针并且代码可以辑由某种计算机安全策略得以验证。

 版本歷史 
2007年：Singularity 1.0
2007年3月：Singularity 1.1
2008年12月14日：Singularity 2.0

 参见 
Sing♯
Spec♯

 參考資料 

 外部链接 
官方主页
Singularity Design Motivation (pdf)
Detailed overview of the Singularity project (pdf)
Channel9 thread, with interview of Jim Larus and Galen Hunt
The JX Operating System (pdf)，another operating system similar in concept

Category:微软研究院
Category:微軟操作系統
Category:微內核
Category:組合語言軟體