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

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

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

f921a9eee46ecd59acd5a353680d9f14.png

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

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

9a2d0d96e7612d3b98c3b8a1c59ed7ab.png

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

d75d1962f60674bd00a34033819dc511.png

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

d16ada43c9f644441d97e25fed948325.png

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

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

b3d0131fe628b400d45f1797a7af1dfc.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值