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

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

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

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

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

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

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

进程管理 —— CPU

内存管理 —— 内存

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

网络接口 —— 网卡

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

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

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

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

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

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

操作系统的内核到底是什么?相关推荐

  1. RTOS内功修炼记(三)—— 内核到底是如何管理中断的?

    内容导读: 第一篇文章讲述了任务的三大元素:任务控制块.任务栈.任务入口函数,并讲述了编写RTOS任务入口函数时三个重要的注意点. RTOS内功修炼记(一)-- 任务到底应该怎么写? 第二篇文章从任务 ...

  2. LINUX操作系统的内核编译内幕详解一

    内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/u ...

  3. ucos操作系统的内核有哪些调度方法

    1)时间片轮番调度法 假设系统中有5个任务,T1,T2,T3,T4,T5,这个时候,操作系统为每一个任务分配时间,比如说我们为T1任务分配10毫秒,为T2任务分配20毫秒,为T3任务分配5毫秒,为T4 ...

  4. linux内核分为四个子系统,linux操作系统的内核有哪几个子系统构成,简要说明各子系统的作用...

    Linux是一个一体化内核(monolithic kernel)系统."内核"指的是一个提供硬件抽象层.磁盘及文件系统控制.多任务等功能的系统软件.一个内核不是一套完整的操作系统. ...

  5. LINUX操作系统的内核编译内幕详解二

    5. Memory Technology Device(MTD) MTD设备支持.可不选. 6. Parallel port support 串口支持.如果不打算使用串口,就别选了. 7. Plug ...

  6. 亲临方德体验日 – 主流国产操作系统的成色到底如何?

    犹如春秋时期的百家争鸣,国产操作系统品牌如雨后春笋般一个个出来,这是好事.但公众对于其认知却总犹若搁着一层纱布,普通人也许连国产桌面操作系统.国产服务器操作系统.OS等是什么都分不清. 毕竟能近距离体 ...

  7. 华为安全技术专家与Linux内核到底发生了什么?这本小册子是怎么回事?

    第1章 介绍什么是Linux系统,以及常用的Linux发行版.接着介绍宏内核和微内核之间的区别,以及如何学习Linux 内核等内容.该章还包括如何安装Linux系统,如何编译Linux内核等实验. 第 ...

  8. 漫画赏析:Linux 内核到底长啥样

    今天,我来为大家解读一幅来自 TurnOff.us 的漫画 "InSide The Linux Kernel" . TurnOff.us 是一个极客漫画网站,作者Daniel St ...

  9. java 输入输出最终还是调用操作系统的内核函数,网易Java研制笔试题(附答案)——20160322...

    网易Java研发笔试题(附答案)--20160322 这里的答案都是本人做的,非标准答案.如果错误,请在评论里指正,一起讨论共同进步!谢谢! 一.单选题 1. 一棵树有2个2度顶点 1个3度顶点 3个 ...

最新文章

  1. android studio 使用CMAKE
  2. java怎么删除List中的指定元素
  3. Java-Web 监听器和过滤器
  4. CSS之元素视图属性
  5. OAuth 授权的工作原理是怎样的?
  6. snort简介以及在Ubuntu下的安装
  7. 帆软报表插件开发之fine-decision中的EmbedRequestFilterProvider扩展
  8. ORACLE 10g下载|ORACLE 10g下载地址|ORACLE 10g官网下载地址
  9. java运行nc后空白页,用友NC开发本地启动客户端时界面空白问题的解决
  10. 视频识别车牌号(Python)
  11. c语言中find的作用,c语言find函数的用法详解
  12. PDF编辑器中文版怎么插入PDF空白页面
  13. 【自动化测试selenium】
  14. maptalk地图以及自定义标点的引入
  15. elementui去掉表格所有边框
  16. 计算机应用考试怎么改卷的,电脑阅卷流程是这样的!读完可多拿20分(转给考生,这对他们有用)...
  17. C语言 —— 你不得不知道的 scanf 的高级用法
  18. 如何创建批处理文件?
  19. 记:.net中海关终端节点报文加签与推送
  20. 视频显示设备和光栅扫描系统

热门文章

  1. 洛谷——P1348 Couple number(java实现)
  2. 转计算机大牛-崔添翼
  3. android studio distributionurl是干嘛的,不懂就学系列(一):gradle配置本地distributionUrl...
  4. mining.subscribe与initiate_stratum函数
  5. python量化分析岗位_量化金融有哪些职位可以选择?
  6. 2022-2028全球与中国移动网页浏览器市场现状及未来发展趋势
  7. 协同过滤入门介绍(转)
  8. 黄金期货对比现货黄金有哪些优势
  9. IPHONE苹果手机短信短消息备份导出,格式分析,数据库sqlite
  10. TOPSIS--优劣解距离法