0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为何Linus一个人就能写出这么强的系统

CodeSheep 来源:CodeSheep 2023-05-12 10:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家好,我是程序羊。一个多月前我曾写过一篇文章聊了聊CentOS这款Linux系统在停服后的一些平替问题。

我清晰地记得当时评论区有一位小伙伴提出了一个这样的问题:

“为什么别人信手拈来就能写出一个操作系统,而我们这么多大公司、那么多程序员就不行?”

93b9106e-f004-11ed-90ce-dac502259ad0.png

其实当时看到这条评论时还蛮想写一些文字详细回复一下的,但是受限于时间和评论区篇幅的问题,当时也就没能展开细写。

毕竟一个操作系统的产生、发展和繁荣涉及到的问题还挺多的,比如环境、比如开源、比如生态,甚至还包括一些历史进程和天时地利的影响,所以肯定不是说全靠某一个人信手拈来就能搞定的。

那关于这个问题呢,还记得之前刷知乎时看到过一个非常类似的讨论,印象比较深。

93ef5f98-f004-11ed-90ce-dac502259ad0.jpg

其中有一位网友的回答还是非常专业的(zhihu.com/question/63187737/answer/1415937231),或许可以提供一些参考,所以这里也分享给大家,大家如果有一些其他想法或者见解,也欢迎在评论区分享交流。以下是正文。

Linus研究生时期开始写操作系统(大约是91年),那时候个人电脑(PC)虽然兴起一些年了,但是还只是小部分程序员和狂热爱好者的玩具。

硬件基本上都靠自己攒,软件也是用开源系统各种魔改。所以普通人根本没有折腾PC的动力和理由。

Unix已经霸占了许多生产力场景,唯一的缺点就是贵,而且很多发行版是闭源的。个人用户根本不要考虑。

那时候Linus自己攒了一套386,但是找不到好用,廉价/免费的操作系统用。

当时社区里当然也有一票免费且开源的系统,但是要不就是兼容性差,要不就是各种坑,要不就是没软件,总之各种各样的问题。

而兼容性是最主要的问题,那时候的CPU不像现在的流行架构就那么两种(x86,ARM),那时候叫的上名的架构有十几种,所以操作系统的兼容性是非常重要的。

Linus开始自学操作系统,发现了一本很好的教材《操作系统:设计与实现》,然后花了一个暑假看完,开始自己写操作系统。

《操作系统:设计与实现》这本书的作者是塔雷鲍姆,写书的时候已经是业界大牛了,他在大学为了教学操作系统,但苦于学生买不起太贵的Unix发行版,于是自己写了一个兼容Unix标准操作系统(主要是兼容POSIX标准),叫Minix(名字上就很对仗,Universe - mini)。

Minix这个系统就是为了教学而生的,只要买了这本书,就免费邮寄一份Minix源代码。

Minix为了方便教学,保持代码的简洁,塔雷鲍姆拒绝向里面添加太多复杂的功能。所以Minix虽然实现得优雅,但是社区的玩家要自己日常用,要魔改很多东西。

对了,Minix是微内核的。对,微内核的概念存在几十年了,而不是2019年诞生的。

微内核的结构非常优雅,文件系统,内存管理,硬件驱动都是以进程形式存在的,而不是内核代码,这意味着驱动挂了不会带着内核一起挂。缺点就是系统调用开销太大,以至于慢到无法接受。所以现在的桌面系统,没有纯微内核的。

而对于教学系统来说,微内核不是问题,毕竟是教学,不是生产工具。

社区和Linus都很喜欢Minix,但是都不满足于Minix作者因为教学目的而放弃兼容性和可扩展性。于是Linus在自己运行Minix的PC开始了Linux的开发。Linux是宏内核的。

Linux本来不叫Linux,Linus是一个很内向的人,不好意思取这么自恋的名字,但是合作者强烈建议用这个名字,所以就用了,x代表unix的联系(都兼容POSIX)。提一句,Unix不是为开源和免费而生的,而是为商业而生的,但是Unix的发展催生了最好的开源环境(比如GNU)。

注意,这几年的社区,属于“军阀混战”,大家都缺一款好用的免费操作系统,但并不只是Linus想到要解决这个问题,理查德斯托曼领导的GNU组织在90年代就一直酝酿一款免费的操作系统,因为他们的目的是与商业的Unix对抗,光有一个GCC编译器还不够,还需要有自己的操作系统。

社区里各种技术人员也对GNU的操作系统非常期待,但是这玩意儿难产了。直到很久之后,Linux流行起来后,依然没做出来。

最开始的Linux版本,只有几千行代码,现在基础扎实的CS本科生,花一段时间都可以看懂,甚至有些OS教材就是用Linux最初的版本来教学的,比如哈工大李志军的课程。

Linus从一开始就不断在minix论坛上发布自己的进展,搞得论坛上一堆人非常感兴趣,于是许多人加入了开发,这时候Linus用邮件接收每个人的代码,然后手动合并。

没过一段时间,minix论坛上就全是讨论Linux的了,虽然塔雷鲍姆不是个小气的人,但是这么搞也让塔雷鲍姆很不爽。

不久之后Linus和塔雷鲍姆之间爆发了一次冲突。塔雷鲍姆在论坛上写了一篇文章,论证微内核与宏内核的优缺点,其实主要是攻击宏内核,说宏内核除了性能好点,全是缺点,说Linux过时了。

Linus是脾气暴躁的人,在技术问题上从不妥协。于是开始嘲讽minix。Linux的可移植性比minix更好,而且免费开源(minix需要买书后获得)。

然后来来去去吵了很多次。只是他们两个当时谁也没想到,这次论坛上的口水战会成为几十年后人们依然提起的操作系统之争。

Linus并不恨塔雷鲍姆,他说后来有一次去了塔雷鲍姆的演讲,完了之后拿着那本书想要塔雷鲍姆的签名,但是没有等到人。

我想Linus多少还是尊敬他的,毕竟是自己学习操作系统的领路人。

在Linus和社区人员的努力下,通过扩展GCC支持Linux,Linux也兼容了越来越多的平台。其他各类软件移植到Linux也就变得容易了,尤其是在那个许多软件以源代码方式发行的时代,只要有对应平台的编译器,编译一次就算移植好了。

赶上PC发展的浪潮,但还不够,毕竟苹果微软不是好对付的,商业操作系统的易用性依然很强。

但是Linux开始被各类企业青睐了,因为不是每个企业都有钱花高价买一套Unix来用,或者是更贵的软件+硬件一体的大型机来用。Linux让他们看到了省钱的希望。

GNU开始支持Linux,Linux成为了GNU的官方操作系统,所以现在叫GNU/Linux。可以说Linux和GCC几乎是最伟大的两个开源项目。它们合起来就更强悍了。

GCC让软件方便移植,Linux软件生态就好了,软件生态好了用户就多,用户多了就让硬件公司眼馋,各路硬件公司都为Linux开发驱动和各种扩展,以支持自家硬件,这样用户就更多。这个倍增效应是很强的。

Linus在项目达到一定规模后就不再亲自写代码了,主要是合并代码,毕竟全球那么多人提交代码,他一个人审核合并就够忙了,亲自写代码也没时间。

直到有一天他觉得忙不过来了,审核代码会遇到很多***代码和开发者,于是他开发了现在最流行的版本控制工具,git,字面意思就是饭桶。

从整个发展历程来看,Linux在几个十字路口都做了非常精准的选择。

从1991年0.0.1版到1994年1.0版,这期间Linux进行了极其快速的迭代,社区玩家在使用中给出了宝贵的意见,最好的测试就是让用户去测试,这保证所有的更新都是实际有效的。

要知道,Linus在1991年开始开发时,根本没想过Linux有一天能改变世界,那个时候,他跟所有的社区玩家一样,期待着GNU的系统,所以他在论坛上解释,做Linux只是一个业余爱好,最多用来填补GNU系统出来之前的这段空白时间。

但GNU由于各种名誉加身,导致目标定得很高,于是项目一直延期,同时市面上的系统也在发展,GNU又继续调高目标,然后继续延期,最后难产。

而Linus从一开始,就没什么心理压力,每一点成果都在社区上公布,快速获得反馈,然后及时调整。这种开发方式无意中就超越了GNU的闭门造车。

RedHat这种系统免费,服务收费的模式也取得了成功,这大大激励了其他发行版开发商的信心。目前Linux的发行版,至少几百个吧。

96年2.0版发布,开始支持多核CPU,这个重要的更新,让很多企业开始考虑Linux。

之后几年Linux在服务器的份额快速上升。

03年2.6版发布,稍微了解过Linux的人都只要这意味着什么。2.6版本跨越03年-11年,中间有许多小版本更新。2.6版意味着Linux第一次成为真正具有了高稳定性,高可用性,高可伸缩性的工业级别操作系统。

05年Git诞生,Linus和核心团队摸也索出一套稳定实用的合作开发方式。

之后就是遍地开花的发展历程了。

不得不说,他对操作系统发展方向的把控是精准的。

总结一下,Linux的成功,以下几个条件必不可少:

Linus强大的开发能力

Linus的项目管理能力

Linus对操作系统发展方向的把控

一个群雄割据,缺乏免费好用的操作系统的时代。

一个不仅群雄割据,缺乏免费好用的操作系统,而且程序语言,操作系统理论,编译器技术发展到一定程度,个人PC持续发展的时代。

GNU的系统没做出来

Minix死守着『教育』不放

GNU的支持

全世界硬件厂商的支持

全世界软件厂商的支持

全世界开源开发者的巨大贡献

最后再总结一下,一个人的命运,当然要靠自我奋斗,但也要考虑到历史的进程。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217926
  • 操作系统
    +关注

    关注

    37

    文章

    7328

    浏览量

    128614
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73127

原文标题:为何 Linus 一个人就能写出这么强的系统,而我们却做不出来?

文章出处:【微信号:CodeSheep,微信公众号:CodeSheep】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【社区之星】宿晶亮——一个人的爱好,足以点燃不设限的学习热情

    过是冰山角。偶尔获得的肯定,我更愿视之为种鞭策。正所谓“不要拿自己的爱好去挑战别人的专业”。 这段经历或许可以说明:一个人的爱好,足以点燃不设限的学习热情。以梦为马,或许真能行远致深。同时也说明电子行业
    发表于 12-03 18:11

    路由器+云平台:设备监控系统的搭建就这么简单?

    的 设备运行状态监测系统 ,才发现:原来监控设备可以这么简单,不用布线、不用人盯,手机上就能看所有数据,故障报警比我到现场还快! 、先聊痛点:你是不是也被这些问题折腾过? 跑断腿的巡
    的头像 发表于 09-25 17:09 369次阅读
    路由器+云平台:设备监控<b class='flag-5'>系统</b>的搭建就<b class='flag-5'>这么</b>简单?

    【内测活动同步开启】这么小?这么?新代大模型MCP开发板来啦!

    【内测活动同步开启】这么小?这么?新代大模型MCP开发板来啦! 聆思全新代六合芯片「L
    发表于 09-25 11:47

    这个功能,让你的屏幕,只配你一个人

    远程办公时被控电脑旁边有人?处理敏感信息怕被窥屏?别慌!!!Splashtop的【隐私黑屏】功能,可以键关闭远程屏幕,再也不用担心隐私泄露!只要轻轻点,被控电脑屏幕立马变黑,防止他人窥屏,而你
    的头像 发表于 09-02 17:07 733次阅读
    这个功能,让你的屏幕,只配你<b class='flag-5'>一个人</b>看

    AI的未来,属于那些既能写代码,又能焊电路的“双栖人才”

    的信号:AI真正的未来,不只属于“算法天才”,更属于那些既能写代码,又能焊电路的“双栖工程师”。无论是在AI芯片、智能终端、机器、边缘计算还是大模型下沉的讨论中,我们不断听到同一个问题:“谁能把它
    发表于 07-30 16:15

    低功耗+AI识别:基于树莓派的 LoRa 神经网络安防系统

    这篇博客展示了如何使用树莓派上的神经网络USB插件来检测或“推断”一个人的位置,从而构建安全系统。Arduino型接收器从零开始构建,通过远程LoRa射频协议从树莓派发射器获取数据
    的头像 发表于 06-24 16:24 2125次阅读
    低功耗+AI识别:基于树莓派的 LoRa 神经网络安防<b class='flag-5'>系统</b>!

    高通如何推动五大技术变革

    过去四十年,高通不断发明突破性技术,并致力于将创新成果惠及每一个人
    的头像 发表于 06-12 15:22 1046次阅读

    新视角解锁:树莓派“云”驾驶扫地机器

    。你是否曾在YouTube上看到过猫咪坐在Roomba扫地机器上的热门视频,并幻想自己也能这么做?没有?只有我这么想吗?好吧,对我来说幸运的是,至少还有一个人
    的头像 发表于 06-04 15:33 430次阅读
    新视角解锁:树莓派“云”驾驶扫地机器<b class='flag-5'>人</b>!

    【「# ROS 2智能机器开发实践」阅读体验】机器入门的引路书

    的非常好的,特别是些流程图,很清晰的阐释了概念 很适合作为初学者入门的引路书 还能了解很多技术和框架,破除初学者的自负困境,让初学者知道功能是由很多开发者维护的,前人已经为各种产品搭建了完善的框架。避免陷入得一个人单打独斗的错觉
    发表于 04-30 01:05

    一个人形机器需要近50台电机,人形机器成本高的原因在哪里

    人形机器人中,大电机(100~150瓦)约占机器用的电机总值的25%,中大型电机(50~100瓦)约占电机总值的30%,中型电机(20~50瓦)约占电机总值的30%,小型电机(5~20瓦)约占电机总值的15%。大电机国产成本7000元/,小电机国产成本1000元/
    的头像 发表于 03-14 09:55 2472次阅读

    为什么要费这么大劲让机器人像样,而不是更实用的形态?

    为什么要费这么大劲让机器人像样,而不是更实用的形态? 将机器人设计成人形(即仿人机器)的意义可以从多个角度探讨,涉及技术、社会、心理和实用性等多个层面。以下是主要的考量点: 1.
    的头像 发表于 02-10 10:03 994次阅读

    为何你的项目需要顶尖基准电压源?

    、基准电压源定义、规格:基准电压源只是电路或电路元件,只要电路需要,它就能提供已知电位。这可能是几分钟、几小时或几年。如果产品需要采集真实世界的相关信息,例如电池电压或电流、功耗
    的头像 发表于 02-05 17:01 35次阅读
    <b class='flag-5'>为何</b>你的项目需要<b class='flag-5'>一</b><b class='flag-5'>个</b>顶尖基准电压源?

    20DAC8581为何调试会就烧坏了,发烫?

    我这个月买了20DAC8581为何调试会就烧坏了,发烫。调试的时候还能正常工作呢,但是很多时候开电源就发现不能工作,IC发烫。
    发表于 01-23 07:10

    ADS1247为何满度增益校正寄存器写进这么大的值呢?

    *0x40000,输出值才是跟PGA=1时,有四倍的关糸,为何满度增益校正寄存器写进这么大的值呢,跟原来的感觉相差很大,我以为输到ADC的值为0.385*4,不要校正即可得到4倍的值,6307839左右。请FAE给解答。
    发表于 01-16 08:20

    开源项目!OpenCat—— 全能的平价四足机器

    Arduino。一个人工遥控器处于中间位置,可以拦截机器对自身身体的控制。它仍将保留某些本能,比如拒绝跳下悬崖。 目前,我有两功能原型: 迷你模型是
    发表于 12-16 11:44