<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ifdef | 碎碎念</title><description/><link>https://broadcastchannel-c8d.pages.dev</link><item><title>操作系统老兵：软件生态为什么难度这么大？很多没做过操作系统的，很容易受到抖音民族情绪渲染调动，就认为只要有人就可以把操作系统干好，真实的软件生态要比你想象的难很多</title><link>https://broadcastchannel-c8d.pages.dev/posts/1104</link><guid isPermaLink="true">https://broadcastchannel-c8d.pages.dev/posts/1104</guid><pubDate>Fri, 02 May 2025 08:48:33 GMT</pubDate><content:encoded>操作系统老兵：软件生态为什么难度这么大？&lt;br /&gt;&lt;br /&gt;很多没做过操作系统的，很容易受到抖音民族情绪渲染调动，就认为只要有人就可以把操作系统干好，真实的软件生态要比你想象的难很多。&lt;br /&gt;&lt;br /&gt;为了方便大家理解，我尽量简化其中的逻辑，只说我几十年经验的结论。&lt;br /&gt;&lt;br /&gt;操作系统的生态主要有5个方面：&lt;br /&gt;1. 芯片&lt;br /&gt;2. 编译器&lt;br /&gt;3. 基础软件组件&lt;br /&gt;4. 操作系统&lt;br /&gt;5. 关键软件生态&lt;br /&gt;&lt;br /&gt;芯片最难的其实不仅仅是大家熟知的制程和工艺，最难的是指令集。一个不开放的指令集，会导致很多开源软件的代码分支没有这种指令集。而现代操作系统早已离不开开源软件，没有对应的指令集，基本上就要对每个开源组件都手动增加指令集分支的代码，而指令集分支的代码是大量的 &lt;a href=&quot;/search/%23ifdef&quot;&gt;#ifdef&lt;/a&gt; 代码，50个人折腾一年后，一旦上游软件改了代码，手动迁移适配的工作量极大，就像一提花生一样，一环套一环。大家说，为什么不贡献设备到开源社区？因为一个用的很少的芯片，对于上游开发者也是负担，没人用，每天还要维护这个分支的代码，累。&lt;br /&gt;&lt;br /&gt;编译器是开源社区很难理解的难，因为编译器和芯片指令集是绑定的。开源社区大家升级GCC版本觉得很简单，但是一个新的芯片的编译器和芯片的指令集相关。因为你芯片做了任何创新，比如多媒体指令，向量加速指令，AI算子加速指令等等。这些都需要通过编译器翻译，才能让软件用得上这些指令集。所以，你要大量改GCC，让软件编译的时候自动能用上这些新的指令集，这里工作量巨大。最难的还不是这里，而是GCC影响的底层软件太多了，不能有bug，如果有bug会导致你以前编译的软件要全部重新编译，不要问我为什么知道，说多都是泪。 操作系统的基础软件重新编译一遍最少需要1个月的时间，比LFS难一万倍。&lt;br /&gt;&lt;br /&gt;基础软件组件，比如性能分析工具、浏览器引擎、Python、各种数学库。基础软件最麻烦的就是这些带数学库的软件，现代很多先进编程语言的指令集优化不受GCC影响，比如golang，haskell都自带编译器和数学库，这些语言的移植和上面GCC一样难，需要既懂X86指令集，又要懂新的芯片指令集，还需要熟悉新的编程语言，还要数学功底强。虽然没有GCC影响面大，但是工作量非常大，专业编译器团队也要花一年时间才能稳定一个版本。&lt;br /&gt;&lt;br /&gt;操作系统相对于前面三个来说，虽然底层难度不大，但是上层的难度在于应用软件的支持和用户习惯。想要说服成千上万的软件厂商维护你操作系统的版本非常难，你首先要证明你用户量大，否则没人支持。 而你面对的是先有鸡还是先有蛋的问题。而自己造的话，只能造一些通用软件。比如专业点的，Office、CAD、PS等，操作系统厂商本身也不专业，因为你软件工程能力再强，也缺乏这些行业多年的行业认知。&lt;br /&gt;&lt;br /&gt;关键基础软件生态，最典型就是类似CUDA这种护城河。即使你跨越了前面几座高山，每座高山都损失30%的性能，到了专业赛道以后，想要弯道超车非常非常的难。因为别人用CUDA搞钱，你想要别人当小白鼠，基本没人会理你。&lt;br /&gt;&lt;br /&gt;而操作系统软件生态最难的是，用户和行业的习惯，他们习惯于某一个生态的文档，习惯于出了问题网上可以抄答案。 来到一个新的生态， 99%的厂商都没有底层软件调试能力，一个出错可以保证你全网都没有一篇解决方案，最后生态合作伙伴的老板每天思考的问题是，等你平台跑起来，我都饿死了。&lt;br /&gt;&lt;br /&gt;所以，操作系统的软件生态发展只有两条路：&lt;br /&gt;1. 浪潮： 新的赛道，新的浪潮，所有人都是0起步，只要可以赚钱，再烂的操作系统都有人用，比如智能手表，智能门锁，电动汽车等&lt;br /&gt;2. 补贴： 国家巨大的补贴，生态发展起来了给国家省钱和增加贸易谈判筹码，但是结果大家也知道，补贴的市场容易缺乏长远竞争力&lt;br /&gt;&lt;br /&gt;懒猫微服的操作系统是我们耗时3年研发，瞄准家庭服务器和AI Agent赛道，三层操作系统架构设计，怎么折腾都不会挂，商店1000多个应用，好玩好用。</content:encoded></item></channel></rss>