首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux为什么不用功能更齐全的C+编写,而是选择C语言。你懂了吗

最初计划使用C ++接口。如果您查看早期的内核,您会发现它是针对C ++进行的配置,但从未有人使用过。

如果您要编写OS内核,则C ++库非常尴尬,因为您不必使用任何需要OS内核的东西。在Linux中,您会注意到设置了标志来阻止任何运行时库的链接。

C ++会生成大量代码。最初编写Linux时,最主要的机器是386SX’,只有几兆字节的扩展内存。不需要协处理器,支持小内存模型,没有可用的交换空间。将编译器与源一起放入内存是一个挑战。

这些机器也很慢。您今天肯定不想使用16MHz的计算机。像这样说,编译X11R4花了我大约一天半的时间。但那只是X Windows。我不记得,Manchester Computing Center发行版包括内核,一系列系统实用程序,游戏,可能还有LaTeX。老实说,我很惊讶他们在同年发行了发行版。

后来,当Linux开始移植到其他体系结构(IIRC,Atari ST就是其中之一)时,您受到了进一步的限制-现有源代码必须在其他平台上进行编译,除了特定于体系结构的元素外,不能进行其他任何修改。这意味着编译器必须在内存限制内可靠地在那些平台上工作,并生成干净的二进制文件。

C实际上非常灵活。由于什么都不能放入(所以没有STL,没有库,什么也没有),因此所有内容都必须从头开始编写,Linus,AC和该团伙的其他成员绝对可以自由编写任何内容,任何实用程序,任何宏,任何东西,他们可以随意编写伪对象。但是他们不仅没有这样做,还使人们束手无策地进行代码整合,这会导致性能下降。大量的堆栈,队列等并不是偶然的,而是有意将每个实现调整为精确的任务而不会降低速度。

当时,Linux的主要竞争对手是William Jolitz的386BSD(用C语言编写,基于BSD4.3磁带)。大约第二个竞争对手HURD(基于MACH磁带)也与当时的竞争对手同时出现,同时还有Dell和SCO的商用PC Unix。 386BSD死了,并由BSDI(被遗忘)和FreeBSD取代。当时的386BSD和FreeBSD都是相当扎实的代码,运行稳定并且能够完成人们需要完成的大多数工作,但是它们确实存在一些性能问题。 HURD一无所获,最终因过多的微内核而死亡。

Linux之所以幸免于难,是因为它干净,紧凑且运行迅速。它也很容易阅读,并且程序员的数量非常多(我认为第1版有数千名,今天有数十万)。

FreeBSD之所以能够幸存,是因为它虽然膨胀,但它很稳定,并且可以满足人们所需的大多数工作,而且再次通过用C编写,大量的程序员都可以访问它。

如今,C在OS开发人员中仍然很流行,但是原因略有不同。有用于C的程序验证器,这意味着可以开发被证明正确的专业内核。的确是。 C在机器级别的操作方面也非常擅长。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210320A0B9UF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券