[Share Experiences] 操作系统的内核到底是什么?
Tofloor
poster avatar
道雪仙尘一剑灯
deepin
2021-12-14 03:16
Author

每次谈到什么是内核,就是:进程调度、内存管理、文件系统、网络接口、进程通信等等这些。然后就是内核态、用户态等等。这些其实都对,但是始终感觉没法让人直观的知道,内核到底是个什么东西。

本质上内核是对计算机硬件的抽象。

image.png

这样说是因为这里涉及到一个更根本的问题:人机交互。如何让计算机理解人的想法,需求,并将之实现。

比如:让计算机计算一下硬盘中的一个文档的字数。我们是没有办法去打开“硬盘”翻箱倒柜找到这个文件,然后丢给“CPU”去统计,并从“CPU”那里得到这个结果。对于计算机内部真正的核心组成部分:CPU、硬盘、内存等等这些硬件,人是无法直接去面对和交互的。而计算机处理的所有工作,都是通过调用这些硬件设备来完成的。

对操作系统来说,最重要的正是管理和调度计算机内部的资源。而具体到操作系统的内部分工,则是由内核来真正完成和执行的。除了内核以外,操作系统其他所有的部件,都不需要也不关注如何计算、如何存储、如何和具体的某个硬件设备打交道。所有的部件都只需要将具体的诉求传递给内核,调用内核的接口,即可完成硬件资源的调度和使用。

内核抽象了计算机内部硬件资源,并统一管理对外提供支持,所以内核 = 计算机硬件。

001.jpg

具体到内核内部的组成部分和抽象结构,内核的核心功能和硬件有如下对应和抽象关系:

进程管理 —— CPU

内存管理 —— 内存

虚拟文件系统 —— 硬盘/磁盘

网络接口 —— 网卡

既然硬件是由内核去管理和调度的,那么内核又是如何做到的呢?

从内核的代码量上来说,内核的绝大部分代码是驱动,各个不同设备不同硬件的驱动。驱动是内核和硬件设备之间的桥梁,内核也正是通过驱动来管理和调度硬件设备。

002.jpg

除了驱动以外,内核的另外一部分是各种算法、函数、策略,但是代码量较少。这一部分确实有价值,但是并非唯一无可替代,也并非具有卡脖子的门槛存在。内核真正的价值是其本身涵盖的生态 —— 各种驱动和硬件的适配,日积月累的沉淀。对内核来说,真正关键和重要的是如何保证在更多甚至每一个设备上都能运行。算法和技术的难度形成的门槛,远远比不上日积月累的时间所形成的门槛。使用Linux内核,最大的原因是复用和继承Linux的生态。

而且, Linux开源的内核现在的主要演进工作也是生态的扩大。 比最新发布的Linux原生内核5.15就有如下几个重点更新:

1、集成Paragon Software 的 NTSF3 driver

2、支持AMD 的GPU/CPU

3、支持apple M1芯片

4、支持Intel 12代CPU

5、支持Intel DG2显卡

虽然这只是Linux内核的一个小版本更新,但是从这些更新可以看出,Linux内核的主要演进确实是生态的扩大。

09.png

Linux 内核主要的变化点概括来说有如下三点:新技术新协议的支持、自身算法和策略的优化和bug修复、新硬件新设备的驱动集成和支持。其中第一点和第三点都是为扩大和维护软件和硬件的生态。而做国产操作系统最重要的一点也是如此,扩大和支持国产硬件的生态。

所以使用Linux开源内核,而不去自研一套,“非不能也,实不为也”。生态的打造是日积月累,沉淀之功,即便是国产硬件的生态支持也不是一日之功。集成和使用Linux内核是成本最低,效用最大,且行之有效的策略。可以集中资源,集中优势做更有价值更有意义的其他的部分。

image.png

如果一个操作系统有更高的目的和使命,那么继承和复用只是基础。更重要的如何去掌握、主导和发展,走自己的路,满足自己的需求,这一点对国产操作系统更是如此。Linux开源内核没有适配和支持国内的硬件生态,需要自己来兼容和适配,支持这个生态的发展。Linux开源内核没有考虑的国内使用环境和安全要求,需要自己来投入和满足,保护自己。

Reply Favorite View the author
All Replies
pzm9012
Moderator
2021-12-14 07:01
#1

感谢分享

Reply View the author
lyywil
deepin
2021-12-14 17:19
#2

感觉比以前的操作系统提升不少,流畅度和可操作性.

Reply View the author
希声
deepin
2021-12-14 19:12
#3

好文,深入浅出

Reply View the author
sammy-621
deepin
2021-12-14 19:12
#4

清晰、透彻。所以,笔记本对指纹支持不佳应该是内核的锅。doubt

Reply View the author
mardou
deepin
2021-12-14 19:31
#5

通俗易懂的好文。赞!

Reply View the author
jianghuchuan
deepin
2021-12-16 06:25
#6

内核就相当于人的脑子,大部分的事情要通过他处理

Reply View the author
早起的虫儿有鸟吃
deepin
2021-12-16 07:48
#7
Reply View the author
jelly
deepin
2021-12-18 03:31
#8
lyywil

感觉比以前的操作系统提升不少,流畅度和可操作性.

合上笔记本后,再打开,直接黑屏死机了,感觉是最新的内核问题

Reply View the author
qiiusheng123
deepin
2021-12-20 22:31
#9

内核就是心脏

Reply View the author
方老四
deepin
2021-12-22 17:39
#10

华为的鸿蒙操作系统,从下图看,设备驱动和内核分离,是不是更先进了。

截图_选择区域_20211222093416.png

Reply View the author
xexz
deepin
2021-12-27 19:32
#11
方老四

华为的鸿蒙操作系统,从下图看,设备驱动和内核分离,是不是更先进了。

截图_选择区域_20211222093416.png

对,鸿蒙本质上是个:‘无线互联的异构超算’操作系统,裸机是什么指令系统,操作系统都无所谓,任何裸机只要实现鸿蒙的抽象层就行,就能成为这个‘异构超算’的一部分,核心技术是‘无线’,他可以绑定华为专用硬件,或者成为开放标准.

Reply View the author
守尘
deepin
2022-03-08 03:57
#12

感谢您的分享,谢谢。

Reply View the author
jjcui8595
Moderator
2022-05-11 05:22
#13

这样的帖子一定要支持

Reply View the author
zqdan
deepin
2022-05-12 05:09
#14

好文,通俗易懂

Reply View the author
胡翔宇
deepin
2022-05-12 19:36
#15

看到最近深度这儿讲了有关Linux内核和GNU/Linux的事儿,我就简单汪几句:

1)许多用户实际不明白的不仅仅是Linux,更是操作系统本身。深度官方实际更应该清晰简要的介绍操作系统中,内核上层的各个中间件(音频子系统ALSA+PulseAudio,包管理Apt+dpkg,桌面环境FreeDesktop.org+DDE+DBus,图形子系统Xorg+Gstreamer,打印机组件CUPS,扫描仪组件SANE等等),让用户明白操作系统不仅仅是就光是一个Linux,Linux之上的各个系统组件实际也很重要,用户使用操作系统时大部分时间是在和它们打交道,而不是内核,所以这些组件的质量也会极大地影响系统的性能和使用难易程度。

2)相比于内核,我自己更建议深度重点介绍下目录规范FHS和FreeDesktop.org下的一系列桌面规范,让用户明白各个Linux发行版哪怕再怎么不一样,大家也会在这些重要的规范上达到统一。同时,深度也可以简要介绍下DBus这个消息传递机制,让原先的Windows程序员了解下在Linux发行版上怎么实现类似COM/COM+的机制。这两个重要的点中文Linux圈几乎很少提到,但它们对于桌面Linux发行版来说至关重要。

3)GNU本质上是法律意义上的许可证约束,GNU运动下实现的所有软件都遵从GPL/GPL2.0/LGPL等许可证。但严格来说,Linux内核本身不是GNU运动下的实现的软件,它的许可证是带有附加宽松协议的GPL 2.0+,该协议保证了在Linux之上运行的应用层软件可以闭源发行。GNU/Linux实际上更应该写成GNU+Linux,代表操作系统是以GNU中间件+Linux内核的方式构建起来的。桌面Linux发行版完全不仅仅是光靠GNU中间件就能搭起来的,上两点说的那些组件相比于GNU而言重要的多。

Reply View the author
王子
deepin
2022-05-13 06:45
#16

这些Linux魔改的国产操作系统用来做政府专业系统会有一些帮助!但是让他的生态达到Windows的水平肯定是有很长的路要走!我们如果把这些国内安卓软件的资源整合到这些系统里面来先让这个系统的优势发挥出来,做Windows做不到的功能!这样才会有人使用!

操作系统无非是两个大功能:

1.兼容主流的硬件!国内国外的硬件!还有驱动的完善

2.适配所有的软件!

这两个点都是比较难实现的!现在基本驱动都是用支持Linux的驱动借过来用的,就算发现很多问题跟漏洞都没办法及时的更新处理,所以这些系统我觉得最靠谱的就是像苹果一样与硬件捆绑一起销售!系统驱动与硬件高度兼容。只有这样才可以降低驱动的维护成本! 软件问题就肯定是要建立强大的生态系统!与各大软件开发商合作加大生态系统的维护,软件收费系统完善起来,其实我个人觉得腾讯做这个操作系统比较靠谱,腾讯的才力跟技术加上他的软件整合能力!应该是可以拿下的!在加上中国的芯片!这样国产系统才有希望出头占领桌面系统一部分的江山!

Reply View the author
fozei
deepin
2022-05-14 00:04
#17

真心喜欢这篇文章,我想把它背过kissing_heart

Reply View the author
方老四
deepin
2022-05-15 18:51
#18

好像龙芯在做指令集层面的兼容,新增加了170多条二进制翻译指令,对x86和arm指令进行翻译。龙芯电脑使用linux操作系统,兼容windows下的驱动和应用,以及安卓应用,今年底就会完成。如果实现的话,龙芯电脑将不存在生态的问题。

视频:

www.bilibili.com/video/BV1wS4y1e71c

Reply View the author
xuqi
deepin testing team
2022-10-09 22:43
#19

like

Reply View the author
xiang0703
deepin
2022-10-10 05:00
#20

看天书一样,不过还是佩服大家。

 

Reply View the author