鸿蒙系统扫盲(四):鸿蒙使用的是微内核?

我们常说,看一个系统是不是自研,就看它的内核,常见的内核分为:宏内核和微内核,当然还有两者结合体,他们到底有什么区别?

1.白话宏内核和微内核

有一天,你结婚了,你和你的爱人住一套房子,你的父母和你爱人的父母,希望和你们住一起,能够照应的到,那么就出现一个问题,你们是买三套房子住,还是买一间大房子?

买一间房子的好处是,大家能够互相照应的很及时,一旦有人不舒服或着需要帮助,另外的人能够非常方便地在20s内到达,只要打开自己的房门,进入对方的房间就可以,一家人其乐融融。但是也会带来坏处,比如有时候会一起抢占资源(卫生间,电视机),也没什么太多的隐私空间。而且如果你家夏天如果停电了,那门整个家庭都得热死。

买三间房子呢?好处是,大家不会再抢占资源,你和你的爱人可以独享卫生间,有很好的隐私空间,如果不想做饭了,就可以去父母或着爱人的父母家蹭饭,换换不同的口味,此外如果夏天你家停电或着电器坏了,可以暂时去其他家继续生活;当然这样也会带来坏处,那就是如果有人需要帮助,你得先出房门,再出家门,然后等电梯,进入他家门(假设你有钥匙),然后进入房门,才能达到,这个过程时间不可控,可能电梯要等很久。

翻译成内核的模样就是这样:

当然,操作系统内核比笔者图示的复杂很多很多,这里只是简单示意一下,优点和缺点会更加直观,混合内核就是两者混合在一起,在一些频繁交互的接口直接放入到内核中,以达到快速通讯的目的。

2.鸿蒙设备分级

1、Linux 面向手机 (L5级别设备) 

2、LiteOS-a 面向有MMU的设备 (>=L1级别且<L5) 

3、LiteOS-m 面向无MMU的嵌入式设备 (L0级别)

可以看到,目前并非所有的鸿蒙版本都是使用的微内核,对于L5以下的设备,由于设备功能比较单一, 不需要那么多功能,所以资源的分配和争夺并不激烈,是可以通过微内核达到自由裁剪的目的,一次开发多段部署。

3.举个冰箱的例子

我们经常用的冰箱,如果是普通冰箱,大概具备下图左边的功能,如果它运行了鸿蒙系统(比如海尔就有鸿蒙版本的冰箱),其实它可以把文件管理,网络功能,多媒体功能全部裁剪掉,成为L0级别的设备,各个模块之间,通过微内核通讯,就非常简单,发送简单的指令就行,也不用那么高的实时性;而右图的智能冰箱,就需要跟服务器通讯,上传冰箱信息,也可以通过蓝牙直接连上手机,更高端点的,可能还有摄像头,监控实物的新鲜程度然后再门外的屏幕上显示,此时智能冰箱,就需要更高的处理器能力,并且加载功能的功能,成为L3-L4级别的设备,但是比起手机的功能还是要简单很多,当成为L3-L4级别的设备后,就需要加载网络,蓝牙,多媒体等功能,此时资源的调度就会复杂一些。

PS:这里补充一个知识点,Linux内核也是可以裁剪的,只是它的裁剪成本很高,你需要重新配置内核选项,然后去除不要的模块,然后重新编译成镜像,替换,再开机,可能出现开机不了的情况,然后得继续排查,而微内核的情况下,只要不加载该模块就行了,就像乐高积木上,把一些不要的形状拔下来,需要的时候再插上去一样,简单高效率。

总结:

微内核和宏内核各有各的好处,而现在鸿蒙系统,除了L5级别,由于设备的高要求,无法达到所需的高实时性,还用着Linux的内核,其他设备已经全部使用鸿蒙内核(LiteOS-m和LiteOS-A,根据设备的等级,选择不同的内核),希望在华为的努力下,L5也可以接入微内核,让我们一起期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微机原理9

一、单项选择题(本大题共15小题,每小题3分、共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 8088 系统的内存最大容量为 16MB. 其地址总线为&#xff08;&#xff09; A. 16 位 B. 20 位 C. 24 位 D. 32 位 2,以CPU为核心…

2023年12月4日:多继承

代码 #include <iostream>using namespace std;class Sofa { private:string sit;int *len; public:Sofa(){cout << "Sofa::无参构造函数" << endl;}Sofa(string sit,int len):sit(sit),len(new int(len)){cout << "Sofa::有参构造函数…

【uni-app】赋予你的APP(Android原生)小程序开发能力

采用DCloud(数字天堂&#xff08;北京&#xff09;网络技术有限公司)的uniMPsdk(uni小程序SDK)&#xff0c;是为原生App打造的可运行基于 uni-app 开发的小程序前端项目的框架&#xff0c;从而帮助原生App快速获取小程序的能力。 uni-app文档地址(小程序开发人员开发用) uniMP…

全网最新最全的自动化测试教程:python+pytest接口自动化(9)-cookie绕过登录(保持登录状态

在编写接口自动化测试用例或其他脚本的过程中&#xff0c;经常会遇到需要绕过用户名/密码或验证码登录&#xff0c;去请求接口的情况&#xff0c;一是因为有时验证码会比较复杂&#xff0c;比如有些图形验证码&#xff0c;难以通过接口的方式去处理&#xff1b;再者&#xff0c…

java连接池 理解及解释(DBCP、druid、c3p0、HikariCP)

一、在Java开发中&#xff0c;有许多常见的数据库连接池可供选择。以下是一些常见的Java数据库连接池&#xff1a;不使用数据库连接池的特性&#xff1a; 优点&#xff1a;实现简单 缺点&#xff1a;网络 IO 较多数据库的负载较高响应时间较长及 QPS 较低应用频繁的创建连接和关…

学习pytorch17 pytorch模型保存及加载

pytorch模型保存及加载 代码 import torch import torchvisionvgg16 torchvision.models.vgg16(pretrainedFalse)# 1. save model 1 保存模型结构及模型参数 torch.save(vgg16, ./vgg16_save1.model)# 2. save model 2 只保存模型参数 比第一种保存方法保存的文件要小 t…

企业架构LB-服务器的负载均衡之LVS实现

企业架构LB-服务器的负载均衡之LVS实现 学习目标和内容 1、能够了解LVS的基本工作方式 2、能够安装配置LVS实现负载均衡 3、能够了解LVS-NAT的配置方式 4、能够了解LVS-DR的配置方式 #一、LVS介绍和安装 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&…

Vue项目目录结构

项目结构 目录说明.vscodeVSCode工具的配置文件node_modulesVue项目的运行依赖文件public资源文件夹&#xff08;浏览器图标&#xff09;src源码文件夹.gitignore配置git忽略文件index.html入口HTML文件package-lock.json信息描述文件&#xff08;所有模块&#xff09;package…

分布式追踪

目录 文章目录 目录自定义指标1.删除标签2.添加指标3.禁用指标 分布式追踪上下文传递Jaeger 关于我最后最后 自定义指标 除了 Istio 自带的指标外&#xff0c;我们还可以自定义指标&#xff0c;要自定指标需要用到 Istio 提供的 Telemetry API&#xff0c;该 API 能够灵活地配…

飞致云1panel + 雷池WAF

可能有许多人都有这个需求&#xff1a;为自己的个人站点套上WAF&#xff0c;增加安全性&#xff0c;本文将介绍如何将1panel面板深度结合长亭雷池防火墙&#xff0c;实现为个人站点套上WAF并且自动续签ssl证书。 前提条件&#xff1a; 服务器IP已绑定域名 完整的1panel环境 …

软考初级、中级、高级怎么选?

本年度的PMP考试已经结束啦&#xff0c;对于刚考完的威宝和已经通过考试的威班们来说&#xff0c;刚开始接触PMP认证的时候在科普阶段有看到过“软考”的字眼。什么是软考&#xff0c;它主要考什么&#xff1f;通常用于哪些方面&#xff1f;软考又和PMP有什么关系&#xff1f;如…

Shutdown Signal: channel error; protocol method: #method<channel.close>

完整异常信息&#xff1a; Shutdown Signal: channel error; protocol method: #method<channel.close>(reply-code404, reply-textNOT_FOUND - no exchange fanoutExchange in vhost /, class-id60, method-id40) 意思是找不到名字是 fanoutExchange 的虚拟机 就是虚拟机…

SQL Sever 基础知识 - 数据筛选(3)

SQL Sever 基础知识 - 四、数据筛选 第7节 BETWEEN7.1 BETWEEN 运算符概述7.2 BETWEEN 示例7.2.1 BETWEEN 与数字示例7.2.2 BETWEEN 和日期示例 第8节 LIKE8.1 LIKE运算符概述8.2 转义字符8.3 LIKE 示例8.3.1 % (百分号) 通配符示例8.3.2 _(下划线)通配符示例8.3.3 [字符列表] …

vivado实现分析与收敛技巧9-分析使用率统计数据

实现问题的常见原因之一是未考量显式和隐式物理约束。例如 &#xff0c; 管脚分配 (pinout) 在逻辑布局上变为显式物理约束。 slice&#xff08; 分片 &#xff09; 逻辑在大部分器件中都是一致的。但如下专用资源表示的是隐式物理约束 &#xff0c; 因为这些资源仅在某些位置…

React创建项目

React创建项目 提前安装好nodejs再进行下面的操作&#xff0c;通过node -v验证是否安装 1.设置源地址 npm config set registry https://registry.npmmirror.com/2.确认源地址 npm config get registry返回如下 https://registry.npmmirror.com/3.输入命令 npx create-re…

SQL手工注入漏洞测试(PostgreSQL数据库)-墨者

———靶场专栏——— 声明&#xff1a;文章由作者weoptions学习或练习过程中的步骤及思路&#xff0c;非正式答案&#xff0c;仅供学习和参考。 靶场背景&#xff1a; 来源&#xff1a; 墨者学院 简介&#xff1a; 安全工程师"墨者"最近在练习SQL手工注入漏洞&#…

如何使用gdb调试fork程序

代码示例 #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<stdlib.h> #include<sys/wait.h>int main(int argc, const char* argv[]) {pid_t pid -1;int status 0;int ret -1; // 创建子进程。若创建成功&#xff0c;…

使用ES6 async awai t进行异步处理

我们往往在项目中会遇到这样的业务需求&#xff0c;就是首先先进行一个ajax请求&#xff0c;然后再进行下一个ajax请求&#xff0c;而下一个请求需要使用上一个请求得到的数据&#xff0c;请求少了还好说&#xff0c;如果多了&#xff0c;就要一层一层的嵌套&#xff0c;就好像…

Typora免费版安装教程(仅供学习)

目录 一、Typora简介二、Typora安装三、Typora补丁四、Typora使用体验五、总结 一、Typora简介 Typora是一款非常流行的Markdown编辑器&#xff0c;它能够将Markdown文本转化为漂亮的排版&#xff0c;并且支持实时预览。Typora具有简单易用的界面&#xff0c;使得用户可以轻松地…

12.04

#include <iostream>using namespace std;class Sofa { private:string sitting;double *weight; public:Sofa(){cout << "Sofa::无参构造函数" << endl;}Sofa(string s,double w):sitting(s),weight(new double(w)){cout << "Sofa::有…