引导装载程序通常用汇编语言编写,以及低级内核部分(如硬件驱动程序)。
内核本身可以用不同的语言编写,如Assembly,C或C ++。
也许你想看看奇点项目。
它来自微软的研究,今天如何建立一个操作系统。
在那里你可以找到很多论文,关于构建操作系统的概念。
奇异
操作系统可以用几乎任何语言编写,而且有很多操作系统都是用一大堆语言编写的。 只是几个例子:
我很确定最早的Windows版本主要是在Pascal中编写的。 这就是为什么你仍然可以在旧文档和头文件中找到pascal调用约定的引用,尽管AFAIK这些约定只应用于16位Windows。
[ 编辑 – 我现在很确定我刚才被告知这是错的。 微软有理由使用我不记得的Pascal调用约定,但没有使用Pascal编码Windows(或大部分或任何其他)]。
现在,Windows可能是用多种语言编写的,尽管强调C和C ++。 例如,.NET的某些部分可能用C#编写,而这些日子很容易算作O / S组件。
同样,我敢打赌现代版本的Mac O / S中至少有一些Objective C组件。
有很多语言适合编写操作系统。 在利基领域,我敢肯定,你会发现Ada,modulea 2等等。
没有垃圾收集的命令式语言可能是最常见的,因为与硬件和汇编代码的接口相对简单。 但是,大多数功能语言都是不纯的。 如果你看起来够硬的话,那么Lisp的低级版本就可以使用了。 ML系列语言和Haskell可能已被用于操作系统,至少为了研究/学术目的。
事实上,在某些操作系统组件中,甚至找到一些Prolog,当然也有一些代码是使用定制的特定于领域的语言编写的。
现实世界的操作系统通常是一个非常大的软件系统。 即使是嵌入式操作系统也有相当的复杂性,例如,对于硬件不需要的选项,但是其他人却可以。 我从来没有一个工作过,但我敢打赌,为了得到这个工作,开发人员主要是实用主义者 – 使用他们有效的工作来完成工作。
那么问题是“什么是操作系统?” (捆绑的Internet Explorer计数?),但否则我相信Windows主要是C和C + +。