我知道这个项目。问题是“我们可以用托管代码创建一个真正的操作系统,还是用这个项目创建的操作系统是一个 hello world 操作系统?” 操作系统需要完全控制硬件。我们可以用这个来做吗?如果还有其他项目,请告诉我
Cosmos Project
1 回答
是的,它可以完成 - 请参阅Singularity,它是(曾经)一个 Microsoft 研究项目,用于在“Sing#”(“Spec#”的扩展版本,它本身是 C# 的扩展)中创建一个完全托管的操作系统。 值得强调的是,这只是一个对该概念的研究项目,从未打算作为 Windows 或 Max OSX 之类的“完整”操作系统。
源代码可在CodePlex上获得- 您可以下载代码、构建它并自己在模拟器中运行它(我自己完成了它,它有据可查并且相对容易,尽管我自己不记得确切的步骤)。
系统的某些部分是用汇编/C 编写的,特别是引导加载程序和最低级别的 x86 中断调度代码,但这基本上是不可避免的(它本质上非常依赖于平台 -需要编写 x86 指令来控制和响应基本硬件)。就操作系统的实际运行方式而言,低级中断也不是特别有趣,所以我个人认为这并不是在欺骗“完全托管”的定义。
查看 Singularity 的 Wikipedia 页面也有 5-6 个类似的项目,包括 Cosmos 和一些使用 Java 而不是 C# 的类似尝试。
Singularity OS 的重点是安全性和依赖性,但令人印象深刻的是,根据An Overview of the Singularity Project1 (PDF)中的一些基本基准,其架构的性能实际上可以与其他“更传统”的操作系统相媲美:
...这些数字表明,我们提出的架构不仅不会导致性能损失,而且通常与更传统的架构一样快或更快。换句话说,它是构建系统的实践基础。