1 鸿蒙系统设计:宏内核vs微内核的基础逻辑-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

鸿蒙系统设计:宏内核vs微内核的基础逻辑

鸿蒙系统HarmonyOS 来源:CSDN博主 作者:beyondma 2021-03-23 15:01 次阅读

鸿蒙OS宣布开源的时候,各种空洞的炒作,几乎把国产操作系统的技术本质掩盖了,虽然笔者没亲眼见过鸿蒙的代码,也没用方舟成功编译什么程序,不过当华为官宣鸿蒙将使用微内核的时候其实这款OS的风格就已经确定了,因为这就是内核的价值和意义。

记得十几年前笔者刚刚毕业,初次进入嵌入式开发的圈子,那时总感觉操作系统距离我很远,甚至有些高不可攀。当时看到CSDN论坛上各种有关WINCE、MINIGUI等嵌入式OS的发贴时,那些生硬的代码真是给我当时还年轻的心灵留下了巨大的阴影,不过这十年来虽然工作和嵌入式渐行渐远,但是不断总结经验回头来看,感觉操作内核的设计并不是一个纯数学或者技术的建模过程,甚至还反应了我们日常生活中的很多道理。

科技界有一句名言“如果你无法简洁的表达你的想法,那只说明你还不够了解它”,所以经过了这些年的沉淀,笔者尝试使用最通俗的语言来向大家解释,什么是内核、什么又是微内核,阅读本文不需要读者具备什么操作系统的知识。

宏内核vs微内核的基础逻辑

上世纪90年代,微内核操作Minix的作者Tanenbaum与微内核操作系统Linux的作者Linus,曾经有一段非常著名的论战,(具体链接: https://www.oreilly.com/openbook/opensources/book/appa.html),这里笔者无意全文翻译,只是想说即便是Linus这样的大神级人物也难免会陷入谁优谁劣的口水仗之中,而普通人士可能更难免俗,所以我们先搁置优劣的争议,先直观来感受宏内核与微内核的架构图是什么样子的。

图1. 宏内核架构图

图1. 微内核架构图

简单的讲宏内核就是操作系统是个大管家,几乎包办一切,用户应用程序的需求直接向内核提出就行;微内核更向一个代理人,几乎所有的驱动、文件系统全部运行在与用户应用程序平级的用户模式下。

内核类型的简单类比

为了让读者理解起来更方便,接下来让我们做一个比较简单的类比,如果把操作系统看成一家公司,而宏内核的特点是用户请求直达内核,内核统一安排执行,这代表此公司使用扁平化的管理架构,而微内核的操作系统中则需要设立很多如驱动,文件系统等部门,这显示公司使用制度化、等级化的管理架构。

简而之宏内核代表的是层次简单的扁平化管理风格,微内核则代表多部门的制度化管理风格。

基础概念释义

上下文及上下文切换:这个名词经常出现在各类操作系统的书籍当中,还是以公司为例,上下文就代表了处理一个项目所需要的相关材料、文件,而上下文切换则代表这些材料文件在不同部门(进程)或者领导(CPU)之间的流转。

状态保持(快照)及恢复:假设这样一种场景,我正在领导的办公室中汇报工作,此时外面另一个人有更重要的事情向领导汇报,由于涉及权限问题需要我先退出他的办公室,那么我在退出前需要做一次状态快照,以便领导处理完紧急事务后可以继续处理我的工作。这就是计算机中状态保持与恢复的过程。

基本推论

运行效率宏内核更优:相信大家都有过跑部门跑公章的经历,很多时间、精力都浪费在了部门(进程)之间的上下文切换(上文已经释义)中了,微内核在效率方面肯定是处于劣势的,所以目前的主流操作系统如Linux和Windows本质上使用的都是宏内核,当然有读者可能会提出Windows使用的是混合内核,不过这种混合内核也是以效率优先的扁平化架构,本质上还是宏内核。

宏内核vs微内核 谁更安全

有关安全性的比较,其实仅凭直觉就能得到正确结论。正如各位日常所见,正规军队采用的都是“下级服从上级、命令绝对执行”的管理方式,而只有游击队才搞会扁平化管理的。其中逻辑也不难理解,扁平化虽然能有比较高的效率,但是难免会在身份鉴别、数据传递的过程中出现纰漏,从而给入侵者可称之机。

而目前已有部分宏内核如sel4(Github地址:https://github.com/seL4/seL4)已经被形式化证明无误(论文地址:http://ts.data61.csiro.au/publications/nicta_full_text/955.pdf),

对于sel4的形式化证明笔者在这里多聊几句,从本质上来说sel4的内核代码只有1万行左右,而linux的内核代码已经突破了2000万行,所以微内核的sel4由于其代码数量较小,所以研究人员干脆将其内核抽象成一个有限状态机,进而证明在状态迁移与跃迁的过程中都不会发生会被恶意利用的漏洞,从而保证整个体系的安全。当然这个安全也有前提:

一、不有有内鬼:即生成内核的编译器、链接器与操作运行的硬件环境如DMA等设备不能被提前恶意植入后门。

二、不能有密码泄露:形式化验证只能保证制度体系本身不出问题,如果用户将自身密码泄露那系统是无法防范的。

不过我们也知道宏内核的操作系统尤其是Windows,经常会暴出安全漏洞,用户在没有泄露密码且没使用问题硬件的情况下,还是会遭到被黑客入侵。所以在安全性对比上微内核可谓优势明显。

宏内核vs微内核 谁实时性强

这个问题的答案可能与读者的第一反应不同,效率更优的宏内核在实时性方面的表现其实不如微内核。那些对于实时性要求极高的军用操作系统(如vxWorks等)使用的都是微内核架构。

请想象这样一个场景,假如我是公司的销售部负责人,正在向总经理汇报明年的销售计划,这时总经理状态一般办公室屏蔽来访,手机屏蔽来电,专门处理我的汇报,恰在此时读者做为战略部负责人带着阿里即将收购公司的消息,来到总经理办公室门口,请求汇报。假设此时有关阿里收购汇报的优先级是高于其它所有工作的优先级,所以总经理会把我汇报的内容做一下状态保持(快照),尽快安排战略部负责人进来汇报。

由于宏内核的扁平化架构,几乎所有请求都是直达总经理的,所以总经理对于来访及来电的屏蔽时间就会变得不可控,而反观微内核此时多部门的制度化架构优势开始显现,因为总经理一般只要核对一下其它部门的处理过程是否合规,然后签名即可,因此微内核的最长屏蔽时间是可预期的。

So当我们在向下思考一层就会发现,制度化、流程化的微信核更能保证决策层在最短时间内就给最重要的任务予以响应。

宏内核vs微内核 谁更适合多核处理器

其实目前微内核的回归正好说明了微内核与多处理器的硬件平台配合会更好。请想象这样的场景,假如我是一家餐厅的外卖小哥,我向内核发送了回单位取餐的请求,这是内核会把这个请求拆解为两个,一是我到达单位,状态改为空闲的通知,二是帮我准备指定的菜品,如果这家餐厅规模很小只有一个总经理当然没有任何问题,不过如果餐厅有两个决策人(双核),那么我到达的通知可能先发给了总经理1,而为我准备菜品时总经理1(核心1)有其它任务了,所以需要总经理2(核心2)来安排协调了,这时就需要在总经理1和总经理2进行上下文切换才可以满足我的需求了。而微内核在内核下面设计有部门(服务进程)的架构,就几乎不存在宏内核在核心间调研上下文切换的问题。所以在总体来说,宏内核会在CPU核心间不断进行上下文切换,而微内核则不断在部门(进程)间进行上下文切换。

当然了宏内核针对多处理器时代也不是完全束手无策,比如Linux就提出了用户协议栈的概念,其本质逻辑就是成立一个直属某一总经理的特别行动小组,这一小组的所有任务全部在此总经理的领导下进行,从而避免跨总经理间的上下文切换以提高效率,其实这种方案也有一定局限性,比如出现单个总经理根本管不过来特别组的情况,该如何优化其实还是有待探索。

编辑:hfy

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

    关注

    0

    文章

    57

    浏览量

    13430
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2634

    浏览量

    66302
收藏 人收藏

    评论

    相关推荐

    鸿蒙内核源码Task/线程技术分析

    前言 在鸿蒙内核中,广义上可理解为一个Task就是一个线程 一、怎么理解Task 1. 官方文档是怎么描述线程 基本概念 从系统的角度看,线程是竞争系统资源的最小运行单元。线程可以使用
    的头像 发表于 10-18 10:42 2207次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>内核</b>源码Task/线程技术分析

    HarmonyOS学习之十:HarmonyOS内核技术

    系统是无法防范的。我们知道内核的操作系统尤其是Windows,经常会暴出安全漏洞,用户在没有泄露密码且没使用问题硬件的情况下,还是会遭到被黑客入侵。所以在安全性对比上
    发表于 11-30 13:55

    华为“鸿蒙”所涉及的内核到底是什么?

    最近内核的概念常常被大家提及,同时还有Google Fuchisa这样的内核新星,这里让我们一起来认识下
    的头像 发表于 06-28 11:55 3304次阅读
    华为“<b class='flag-5'>鸿蒙</b>”所涉及的<b class='flag-5'>微</b><b class='flag-5'>内核</b>到底是什么?

    什么是内核_内核的发展历史

    内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。
    的头像 发表于 08-14 17:20 1.2w次阅读
    什么是<b class='flag-5'>微</b><b class='flag-5'>内核</b>_<b class='flag-5'>微</b><b class='flag-5'>内核</b>的发展历史

    浅谈鸿蒙操作系统内核

    华为在松山湖的华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 内核。华为声称,
    的头像 发表于 10-13 12:36 6156次阅读

    鸿蒙系统是基于安卓吗

    有网友询问鸿蒙系统是基于安卓吗?答案:鸿蒙系统并不是基于安卓! 安卓与鸿蒙手机操作系统都是基于L
    的头像 发表于 06-18 16:17 3.1w次阅读

    关于鸿蒙OS的内核概念介绍

    按照发布会的PPT来看,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架。所谓的第二层基础服务应该就是那些从内核态空间移到用户态空间的基础服务程序。当然,也可能部
    的头像 发表于 03-23 14:51 4624次阅读

    鸿蒙内核源码分析:task是内核调度的单元

    系统的角度看,线程是竞争系统资源的最小运行单元。线程可以使用或等待CPU、使用内存空间等系统资源,并独立于其它线程运行。 鸿蒙内核每个进
    发表于 11-23 15:51 22次下载
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>内核</b>源码分析:task是<b class='flag-5'>内核</b>调度的单元

    鸿蒙内核源码分析 :内核最重要结构体

    为何鸿蒙内核源码分析系列开篇就说 LOS_DL_LIST ? 因为它在鸿蒙 LOS 内核中无处不在,在整个内核占了极大的比重,豪不夸张的说
    发表于 11-24 17:54 35次下载
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>内核</b>源码分析 :<b class='flag-5'>内核</b>最重要结构体

    内核内核的比较与分析

    混合内核实质上也是内核,而外内核是一种比较极端的设计方法,目前还处于研究阶段,所以我们就着重讨论内核
    发表于 03-17 16:05 11次下载
    <b class='flag-5'>微</b><b class='flag-5'>内核</b>与<b class='flag-5'>宏</b><b class='flag-5'>内核</b>的比较与分析

    华为系统openharmony 鸿蒙内核的理解

    鸿蒙OS分布式操作系统是一款基于内核的全场景分布式OS,是华为自主研发的操作系统
    的头像 发表于 06-23 10:48 4101次阅读

    鸿蒙内核开发概述

    第一章 鸿蒙内核开发概述1.1 鸿蒙系统有哪些内容?鸿蒙系统,就相当于一套完整的PC软件
    发表于 11-03 11:21 20次下载
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>内核</b>开发概述

    什么是内核内核

    操作系统和普通的大型应用程序项目类似,都涉及代码组织方式的问题,但操作系统的独特之处在于其核心部分必须运行在内核态,kernel model,所谓内核态严格讲是指在该状态下程序拥有对硬
    的头像 发表于 02-17 14:32 1770次阅读
    什么是<b class='flag-5'>宏</b><b class='flag-5'>内核</b>、<b class='flag-5'>微</b><b class='flag-5'>内核</b>?

    鸿蒙使用的是内核

    我们常说,看一个系统是不是自研,就看它的内核,常见的内核分为:内核
    的头像 发表于 01-30 16:43 477次阅读
    <b class='flag-5'>鸿蒙</b>使用的是<b class='flag-5'>微</b><b class='flag-5'>内核</b>?

    欢创播报 华为宣布鸿蒙内核已超越Linux内核

    1 华为宣布鸿蒙内核已超越Linux内核   6月21日,在华为开发者大会上, HarmonyOS NEXT(鸿蒙NEXT)——真正独立于安卓和iOS的
    的头像 发表于 06-27 11:30 825次阅读