operating-system - 对于内核/操作系统,C 仍然是它吗?

标签 operating-system kernel osdev

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.

7年前关闭。




Improve this question




我喜欢操作系统,并最终想成为一名主要从事内核工作的操作系统开发人员。将来 C 语言仍将是首选语言,我还应该尝试学习什么?

最佳答案

在研究人群中,有很多人对使用基于语言的技术来保证内核不会出现异常感兴趣。许多人提到了Singularity该项目目前具有(当之无愧的)高调。为什么奇点有趣?

  • 该语言包括一个用于正确使用锁的有限状态模型。编译器可以根据模型对代码进行模型检查,以确保 不会发生死锁 .
  • 第三方驱动程序被赋予系统的有限接口(interface)。编译器完成的检查保证 一个坏的驱动程序无法取出系统 ---它可以做的最糟糕的事情就是淘汰自己的设备。
  • Singularity 使用编译器技术,而不是 OS/MMU 技术,将一个“进程”与另一个“进程”隔离开来。突然 fork 一个新的“过程”(实际上是一种新的 protection domain )非常便宜,而这种便宜使新设计成为可能。

  • Singularity 只是众多使用语言和编译器技术解决操作系统问题的项目中的最新一个。我的最爱之一是华盛顿大学 SPIN kernel ,它允许应用程序安全地扩展内核,并且是用 Modula-3 编写的。

    这个研究领域仍然很开放,还不知道哪种语言或编译器功能是解决操作系统问题的“最佳选择”。所以回答你的问题:
  • 在今天的生产系统中,C 仍然是“它”。
  • 对于 future 的操作系统,C 几乎肯定不是“它”——我们知道它可以做得更好——但新的“它”的确切性质仍然是一个悬而未决的问题。
  • 关于operating-system - 对于内核/操作系统,C 仍然是它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/861257/

    相关文章:

    c - Linux上C中的标准输出线程安全?

    linux - strace整个操作系统同时获取所有进程的strace日志

    Linux内核编程: list all opened socket file descriptors,并检索相关信息

    c++ - 将内核项目从 DJGPP 移植到 MinGW

    operating-system - 识别通用保护故障 (x86) 上的故障地址

    operating-system - 为什么我们在生产者消费者问题中需要 2 个信号量变量?

    linux - 在VMWare上安装KaiOS

    linux - 不执行 "make modules_install"就执行 "make modules"有意义吗?

    c++ - C++程序中使用内核编程函数

    c - 为什么我不能从这个 C 代码访问在汇编中声明的 Tss 变量?