2012-05-11 49 views

回答

4

微软研究院创建了一个名为Singularity的操作系统。

尽管这是一个研究项目,我认为他们需要一些低级代码来启动启动过程(在某些时候操作系统需要与硬件进行通信)。

Wikipedia says

最低级别的x86中断调度代码是用汇编语言和C一旦该代码已经完成了它的任务,它调用内核,其运行时间和垃圾收集都写在唱歌#(Spec#的扩展版本,本身是C#的扩展),并且运行在不受保护的模式下。硬件抽象层用C++编写,并运行在保护模式下。还有一些C代码来处理调试。计算机的BIOS在16位实模式引导阶段被调用;一次在32位模式下,Singularity不会再次调用BIOS,但会调用以Sing#编写的设备驱动程序。在安装过程中,通用中间语言(CIL)操作码使用Bartok编译器编译为x86操作码。

+0

什么? IL不以奇点解释。 –

3

当然。只是不要指望它快,这就是为什么没有人这样做。

您可能需要在解释器中执行一些有趣的事情(虚拟指令),以允许您的操作系统更改机器状态(寄存器和堆栈,内存映射,I/O设备寄存器)以及某些机器具体用于允许硬件中断转换为解释代码的执行,并返回中断返回。你可能在初始引导逻辑上有一段艰难的时间;你的解释器显然无法从磁盘上载入。

但是对于大多数操作系统来说,如果正确完成,例如使用JIT编译器,它将非常轻便,实际上可能相当快。 [您希望JIT编译器使用相同的语言进行编码,并且可以进行自我测试]。

我提出了一种类似于C语言的HLL,它编译成虚拟机解释的代码,恰好在上世纪80年代的OS 360系统的这种架构中,并且几乎完成了构建它的交易。会很有趣。呃,好吧。

0

是的,这是可能的,如果你在虚拟机中考虑专业。

例如,您可以在java中创建一个小版本的minix以在JVM的顶部运行。但我不知道有人这样做的原因,除了太多的空闲时间:)

一个运营系统需要非常薄和快。如果你选择python,你在每个操作中都会有python解释器开销。即使你认为在系统的一小部分,如设备驱动程序:想象python解释器在内核空间中运行一段时间...

但对于教育或特殊情况(arduino?嵌入?)它可以被接受。我认为lua可以是一个好主意,因为口译员很小。

0

有大量的本土Forth操作系统。 Forth有些处于被“解释”的边缘(但我宁愿远离这个术语,它太模糊而且被广泛滥用)。