【问题标题】:Why are operating system kernels typically written in C or C++? [closed]为什么操作系统内核通常用 C 或 C++ 编写? [关闭]
【发布时间】:2019-09-04 15:58:52
【问题描述】:

已经出现了用多种语言编写的实验性操作系统,包括 C#(SingularitySharpOS)、Java(JavaOSJX)和 Lisp(各种Lisp machines)。

那么为什么 C(以及较小程度的 C++)是用于开发操作系统内核的主要语言? C 语言有什么特别适合在内核编程中使用的,还是因为历史原因?

【问题讨论】:

  • 不是真的,不。
  • 不管怎样,大多数操作系统的最低级别实际上不是用 C 语言编写的,而是用汇编语言编写的。上面的第一层通常用 C 编写,因为它是与汇编语言结构和原始内存地址交互的最简单的语言之一。
  • 系统编程中没有使用C# :) 它需要操作系统才能运行(以及JIT编译器或解释器)
  • @DanielPryden 在评论之前阅读更多内容。 The hardware abstraction layer is written in C++ and runs in protected mode. There is also some C code to handle debugging。如果您愿意,其余的甚至可以用 HASKEL 编写,但 OS 的“本质”是用 C++ 和 C 编写的
  • 您需要一种可以直接寻址内存并与汇编程序轻松集成的自托管语言。

标签: c kernel


【解决方案1】:

在操作系统内核中使用 C 语言的一些(不是全部)原因:

性能对操作系统很重要,因此解释型语言已被淘汰,而编译型语言则流行。此外,无论如何,您都必须使用其他语言将解释器编写为操作系统的一部分,所以...

直接访问硬件资源和进行低级位“摆弄”的简单方法对于操作系统也很重要,C 和 C++ 都涵盖了这一点。

您通常还需要直接在汇编中为您所针对的特定处理器架构编写一些位。在 C 和 C++ 中,在内联 asm 中编写点点滴滴很简单。

此外,大多数其他语言都支持 C 的调用约定,因此用 C 编写您的操作系统可以轻松地将系统调用以一种易于交互的方式暴露给用户空间。

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2020-02-10
    • 2011-10-29
    • 2011-03-19
    • 2011-01-02
    • 2023-04-10
    相关资源
    最近更新 更多