Compiler construction 用解释语言编写操作系统

Compiler construction 用解释语言编写操作系统,compiler-construction,operating-system,interpreter,Compiler Construction,Operating System,Interpreter,是否可以使用未编译的语言(如python)或未使用运行时(如Java)编写操作系统?虚拟机不需要在操作系统上运行吗?当然。只是不要期望它会很快,这就是为什么没有人这么做 您可能需要在解释器中执行一些有趣的操作—虚拟指令—允许您的操作系统更改机器状态寄存器和堆栈、内存映射、I/O设备寄存器,以及一些特定于机器的操作—允许硬件中断转换为执行解释的代码,并从中断返回。您可能会对初始引导逻辑感到不适;您的解释器显然无法从磁盘上加载自己 但是对于大多数操作系统来说,如果操作得当,例如,使用JIT编译器,它

是否可以使用未编译的语言(如python)或未使用运行时(如Java)编写操作系统?虚拟机不需要在操作系统上运行吗?

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

您可能需要在解释器中执行一些有趣的操作—虚拟指令—允许您的操作系统更改机器状态寄存器和堆栈、内存映射、I/O设备寄存器,以及一些特定于机器的操作—允许硬件中断转换为执行解释的代码,并从中断返回。您可能会对初始引导逻辑感到不适;您的解释器显然无法从磁盘上加载自己

但是对于大多数操作系统来说,如果操作得当,例如,使用JIT编译器,它将是非常可移植的,并且实际上可能相当快。[您希望JIT编译器使用相同的语言进行编码,并接受自JIT]


早在20世纪80年代,我就为OS 360系统提出了一个类似C的HLL,它编译成虚拟机解释的代码,正是在这种体系结构中,并且几乎完成了构建它的交易。会很有趣的。啊,好吧。

微软研究院已经开发出了一款操作系统,名为

不过,这是一个研究项目,我认为他们需要一些低级代码,以便在操作系统需要与硬件对话的某个时刻启动引导过程

:

最低级别的x86中断调度代码是用汇编语言和C编写的。一旦该代码完成了它的工作,它就会调用内核,内核的运行时和垃圾收集器是用扩展版本的Spec编写的,本身是C的扩展,并在无保护模式下运行。硬件抽象层是用C++编写的,并在保护模式下运行。还有一些C代码用于处理调试。在16位实模式引导阶段调用计算机的BIOS;一旦进入32位模式,Singularity将不再调用BIOS,而是调用用Sing编写的设备驱动程序。在安装过程中,使用Bartok编译器将公共中间语言CIL操作码编译成x86操作码


是的,这是可能的,如果你在虚拟机中思考的话

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

一个操作系统需要非常精简和快速。如果选择python,则在每个操作中都会有python解释器开销。即使您考虑系统的一小部分,比如设备驱动程序:想象一下python解释器在内核空间中运行一段时间


但对于教育或特殊情况,arduino?嵌入这是可以接受的。我认为lua是个好主意,因为解释器非常小。

有大量的国产操作系统。“第四”一词在某种程度上处于被解释的边缘,但我更愿意避开这个词,因为它太模糊,而且被广泛误用了。

什么?IL不是在奇点中解释的。