当前位置:  开发笔记 > 编程语言 > 正文

对于内核/操作系统来说还是C呢?

如何解决《对于内核/操作系统来说还是C呢?》经验,为你挑选了3个好方法。

我喜欢操作系统,最终想成为一个主要从事内核工作的操作系统开发人员.在未来,C仍然是首选语言,我还应该学习什么?



1> Norman Ramse..:

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

该语言包括正确使用锁的有限状态模型.编译器可以针对模型对代码进行模型检查,以确保不会发生死锁.

第三方驱动程序具有有限的系统接口.编译器完成的检查可以保证坏的驱动程序无法取出系统 ---它可以做的最糟糕的事情就是淘汰自己的设备.

Singularity使用编译器技术而非OS/MMU技术将一个"进程"与另一个"进程"隔离开来.突然分支一个新的"过程"(真的是一种新的保护领域)是便宜的,这种廉价使新设计成为可能.

Singularity只是一长串项目中的最新项目,这些项目使用语言和编译器技术来解决操作系统问题.我最喜欢的一个是华盛顿大学的SPIN内核,它允许应用程序安全地扩展内核,并用Modula-3编写.

这个研究领域仍然是开放性的,并不知道什么语言或编译器功能是解决操作系统问题的"最佳点".所以回答你的问题:

今天的生产系统中,C仍然是"它".

对于未来操作系统,C几乎肯定不是"它" - 我们知道它可以做得更好 - 但新"它"的确切性质仍然是一个悬而未决的问题.


+1.如果有机会,我会支持十几次.

2> mgriepentrog..:

我认为可以肯定地说,由于速度的原因,操作系统的低级部分(例如内核)将继续用C语言编写.就像在别处提到的那样,你需要知道内核某些部分的汇编程序(需要将内核加载到内存中).但是你可以在很少或没有汇编知识的情况下使用内核.一个很好的例子就是你要实现一个文件系统.

不要担心操作系统的实现语言.重要的是如何使用操作系统,以及可以采取哪些措施来改进它们.一个很好的例子是Unix首次问世.文件系统在磁盘前面有inode,在剩余空间中有数据.由于您正在为所有文件寻找磁盘的不同部分,因此效果不佳.然后创建Berkeley快速文件系统以创建磁盘感知文件系统.这意味着在其相应数据附近有inode.我遗漏了很多细节,但我希望这说明考虑如何改进操作系统而不是编程的语言更为重要.

最近操作系统的一些趋势是虚拟化和分布式计算(参见Google关于MapReduce的论文).即使这些问题不是新问题,文件系统,安全性,调度(尤其是多核处理器)等也是不断感兴趣的领域.

如果您想了解有关内核开发的更多信息,请参阅以下资源:

Linux Kernel Newbies - 为那些想要开始修改Linux内核的人提供的资源.

xv6 source - Unix版本6的x86端口.由MIT用于教授操作系统类.简单,易于扩展(更多信息).

Linux内核映射 - 在Linux中调用系统调用链.用于可视化系统调用的功能.

结论:开始熟悉内核并阅读研究人员正在撰写的论文(USENIX对此非常有用).这种知识比学习一门新语言更有价值,因为如果确实发生了什么操作系统的转变,一种语言的大多数概念都可以很容易地转移到另一种语言.希望这可以帮助!


这忽略了所有在托管内核上进行的研究,正如Chris所链接的那样.此外,坚持使用C与速度无关(Singularity已证明托管操作系统由于托管代码的安全性而更快,更快)并且与标准有关.

3> Chris Jester..:

科迪不想为这个问题烦恼,所以我代表他传递了这个.:-P有关使用托管语言编写的操作系统的一些示例,而不是C或程序集,请查看:

奇异

SharpOS

宇宙

MOSA

幻影

当然,科迪也不想提这个:

Renraku

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有