为什么操作系统内核通常用 C 或 C++ 编写?
Why are operating system kernels typically written in C or C++?
已经有用多种语言编写的实验性操作系统,包括 C# (Singularity, SharpOS), Java (JavaOS, JX), and Lisp (various Lisp machines)。
为什么 C(以及较小程度上的 C++)是用于开发操作系统内核的主要语言? C 是否有什么特别适合在内核编程中使用,还是出于历史原因更适合?
OS 内核使用 C 语言的一些(不是全部)原因:
性能对操作系统很重要,因此解释型语言过时了,编译型语言流行了。另外,无论如何,您都必须将解释器作为 OS 的一部分用其他语言编写,所以。 ..
直接访问硬件资源和执行低级位的简单方法 "fiddling" 对于 OS 也很重要,C 和 C++ 都涵盖了这一点。
您通常还需要针对特定的处理器架构直接在汇编中编写一些位。在 C 和 C++ 中在内联 asm 中编写点点滴滴很简单。
此外,大多数其他语言都支持 C 的调用约定,因此在 C 中编写 OS 可以轻松地以易于交互的方式向用户 space 公开系统调用。
已经有用多种语言编写的实验性操作系统,包括 C# (Singularity, SharpOS), Java (JavaOS, JX), and Lisp (various Lisp machines)。
为什么 C(以及较小程度上的 C++)是用于开发操作系统内核的主要语言? C 是否有什么特别适合在内核编程中使用,还是出于历史原因更适合?
OS 内核使用 C 语言的一些(不是全部)原因:
性能对操作系统很重要,因此解释型语言过时了,编译型语言流行了。另外,无论如何,您都必须将解释器作为 OS 的一部分用其他语言编写,所以。 ..
直接访问硬件资源和执行低级位的简单方法 "fiddling" 对于 OS 也很重要,C 和 C++ 都涵盖了这一点。
您通常还需要针对特定的处理器架构直接在汇编中编写一些位。在 C 和 C++ 中在内联 asm 中编写点点滴滴很简单。
此外,大多数其他语言都支持 C 的调用约定,因此在 C 中编写 OS 可以轻松地以易于交互的方式向用户 space 公开系统调用。