平平安安顺顺利利健健康康 發表於 2026-5-5 09:02:37

操作系统的内核到底是什么?

<p><img class="alignnone size-full wp-image-35740" src="https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面.png" alt="" width="900" height="383" srcset="https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面.png 900w, https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面-300x128.png 300w, https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面-150x64.png 150w, https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面-768x327.png 768w, https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面-24x10.png 24w, https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面-36x15.png 36w, https://www.deepin.org/wp-content/uploads/2024/12/蓝色科技发布会宣传微信公众号封面-48x20.png 48w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<p><strong>作者:道雪仙尘一剑灯</strong></p>
<p>每次谈到什么是内核,就是:进程调度、内存管理、文件系统、网络接口、进程通信等等这些。然后就是内核态、用户态等等。这些其实都对,但是始终感觉没法让人直观的知道,内核到底是个什么东西。</p>
<p>本质上内核是对计算机硬件的抽象。</p>
<p style="text-align: center;"><img loading="lazy" class="alignnone aligncenter" src="https://storage.deepin.org/thread/202112131844522804_image.png" alt="image.png" width="602" height="335" /></p>
<p>这样说是因为这里涉及到一个更根本的问题:人机交互。如何让计算机理解人的想法,需求,并将之实现。</p>
<p>比如:让计算机计算一下硬盘中的一个文档的字数。我们是没有办法去打开“硬盘”翻箱倒柜找到这个文件,然后丢给“CPU”去统计,并从“CPU”那里得到这个结果。对于计算机内部真正的核心组成部分:CPU、硬盘、内存等等这些硬件,人是无法直接去面对和交互的。而计算机处理的所有工作,都是通过调用这些硬件设备来完成的。</p>
<p>对操作系统来说,最重要的正是管理和调度计算机内部的资源。而具体到操作系统的内部分工,则是由内核来真正完成和执行的。除了内核以外,操作系统其他所有的部件,都不需要也不关注如何计算、如何存储、如何和具体的某个硬件设备打交道。所有的部件都只需要将具体的诉求传递给内核,调用内核的接口,即可完成硬件资源的调度和使用。</p>
<p>内核抽象了计算机内部硬件资源,并统一管理对外提供支持,<strong>所以内核 = 计算机硬件。</strong></p>
<p><img loading="lazy" class="aligncenter" src="https://storage.deepin.org/thread/202112131849221215_001.jpg" alt="001.jpg" width="634" height="397" /></p>
<p>具体到内核内部的组成部分和抽象结构,内核的核心功能和硬件有如下对应和抽象关系:</p>
<p>进程管理 —— CPU</p>
<p>内存管理 —— 内存</p>
<p>虚拟文件系统 —— 硬盘/磁盘</p>
<p>网络接口 —— 网卡</p>
<blockquote><p><strong>既然硬件是由内核去管理和调度的,那么内核又是如何做到的呢?</strong></p></blockquote>
<p>从内核的代码量上来说,内核的绝大部分代码是驱动,各个不同设备不同硬件的驱动。驱动是内核和硬件设备之间的桥梁,内核也正是通过驱动来管理和调度硬件设备。</p>
<p><img loading="lazy" class="aligncenter" src="https://storage.deepin.org/thread/202112131852431719_002.jpg" alt="002.jpg" width="633" height="395" /></p>
<p>除了驱动以外,内核的另外一部分是各种算法、函数、策略,但是代码量较少。这一部分确实有价值,但是并非唯一无可替代,也并非具有卡脖子的门槛存在。内核真正的价值是其本身涵盖的生态 —— 各种驱动和硬件的适配,日积月累的沉淀。对内核来说,真正关键和重要的是如何保证在更多甚至每一个设备上都能运行。算法和技术的难度形成的门槛,远远比不上日积月累的时间所形成的门槛。<strong>使用Linux内核,最大的原因是复用和继承Linux的生态。</strong></p>
<p>而且, <strong>Linux开源的内核现在的主要演进工作也是生态的扩大。</strong> 比最新发布的Linux原生内核5.15就有如下几个重点更新:</p>
<p>1、集成Paragon Software 的 NTSF3 driver</p>
<p>2、支持AMD 的GPU/CPU</p>
<p>3、支持apple M1芯片</p>
<p>4、支持Intel 12代CPU</p>
<p>5、支持Intel DG2显卡</p>
<p>虽然这只是Linux内核的一个小版本更新,但是从这些更新可以看出,Linux内核的主要演进确实是生态的扩大。</p>
<p><img loading="lazy" class="aligncenter" src="https://storage.deepin.org/thread/202112131855095014_09.png" alt="09.png" width="631" height="395" /></p>
<p>Linux 内核主要的变化点概括来说有如下三点:新技术新协议的支持、自身算法和策略的优化和bug修复、新硬件新设备的驱动集成和支持。其中第一点和第三点都是为扩大和维护软件和硬件的生态。而做国产操作系统最重要的一点也是如此,扩大和支持国产硬件的生态。</p>
<p>所以使用Linux开源内核,而不去自研一套,“非不能也,实不为也”。生态的打造是日积月累,沉淀之功,即便是国产硬件的生态支持也不是一日之功。集成和使用Linux内核是成本最低,效用最大,且行之有效的策略。可以集中资源,集中优势做更有价值更有意义的其他的部分。</p>
<p><img loading="lazy" class="aligncenter" src="https://storage.deepin.org/thread/202112131924205740_image.png" alt="image.png" width="639" height="399" /></p>
<p>如果一个操作系统有更高的目的和使命,那么继承和复用只是基础。更重要的如何去掌握、主导和发展,走自己的路,满足自己的需求,这一点对国产操作系统更是如此。Linux开源内核没有适配和支持国内的硬件生态,需要自己来兼容和适配,支持这个生态的发展。Linux开源内核没有考虑的国内使用环境和安全要求,需要自己来投入和满足,保护自己。</p>
<p>&nbsp;</p>

<div class="entry-content">
<h1><strong>相关阅读:</strong></h1>
<p>(1)支持 deepin(深度)社区</p>
<p>(2)deepin 从哪里来?将往哪里去?</p>
<p>&nbsp;</p>
<p style="text-align: right;">内容来源:deepin(深度)社区</p>
<p style="text-align: right;">转载请注明出处</p>
</div>
</article>
<div id="comments" class="comments-area">
<div id="respond" class="comment-respond"></div>
</div>
                        </div>
頁: [1]
查看完整版本: 操作系统的内核到底是什么?