用什么语言编写操作系统(Windows)?

时间:2010-07-23 10:31:11

标签: windows operating-system boot osdev

用于编写操作系统(Windows)或启动CD的语言是什么?

5 个答案:

答案 0 :(得分:7)

引导加载程序通常用汇编语言编写,以及低级内核部分,如硬件驱动程序 内核本身可以用不同的语言编写,如Assembly,C或C ++。

答案 1 :(得分:6)

也许你想看看奇点项目。

来自Microsoft Reseach,关于今天如何构建操作系统。

在那里你找到了很多关于构建操作系统概念的论文。

Singularity

答案 2 :(得分:5)

答案 3 :(得分:3)

我很确定最早的Windows版本主要是用Pascal编写的。这就是为什么你仍然可以在旧文档和头文件中找到对pascal调用约定的引用,尽管AFAIK这些约定只适用于16位Windows。

[编辑 - 我现在很确定我刚才被告知这是错的。微软有理由使用我不记得的Pascal调用约定,但没有使用Pascal编写Windows(或大部分或其他)编码。

现在,Windows可能是用多种语言编写的,但强调C和C ++。例如,.NET的某些部分可能是用C#编写的,而现在很容易算作O / S组件。

同样,我敢打赌,在现代版本的Mac O / S中至少有一些Objective C组件。

有很多语言有点适合编写操作系统。在利基领域,我确信你会找到Ada,Modula 2等等。

没有垃圾收集的命令式语言可能是最常见的,因为与硬件和汇编代码的接口相对容易。但是,大多数函数式语言都是不纯的。如果你看起来足够努力,有低级别的Lisp版本。 ML系列语言和Haskell可能已经用于操作系统,至少用于研究/学术目的。

事实上,在一些操作系统组件中找到一些Prolog并不会感到惊讶 - 当然也有一些代码使用定制的域特定语言编写。

实际操作系统通常是一个非常大的软件系统。甚至嵌入式操作系统也具有相当大的复杂性,例如对于您不需要硬件但其他人不需要的选项。我从来没有参与其中,但我敢打赌,为了实现这一目标,开发人员主要是实用主义者 - 使用他们所拥有的任何东西来完成工作。

答案 4 :(得分:2)

嗯,问题还在于“什么是操作系统?” (捆绑的Internet Explorer是否计入?),但我认为Windows主要是C和C ++。