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

news/2024/7/21 11:24:23 标签: harmonyos, 华为

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

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.niftyadmin.cn/n/5237366.html

相关文章

Java使用MongoTemplate操作MangoDB,实现根据时间等条件组合查询日期范围

Java和Mongo中的Date比较 Java中的Date&#xff1a;“createTime” : (“2018-09-13 14:04:05”), MongoDB中的Date&#xff1a; “createTime” : ISODate(“2018-09-13T14:04:05.268Z”) MongoDB中的日期格式 是 UTC 通用标准&#xff0c;以z来标识&#xff0c;格式为"…

【软件测试】银行测试项目,转账功能+Web银行开户测试点(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、银行项目转账功…

【static】关键字静态成员:在类级别上共享数据和方法的机制

这里写目录标题 static类的大小四种作用域 static static成员独立于类对象存在&#xff0c;也就是说它不属于对象的成员&#xff0c;它能被全体对象所共享。 统计类类型对象创建的个数&#xff0c;用static成员来实现。 非static成员属于类对象&#xff0c;每个对象都有一份拷…

stm32L071KB单片机字节对齐问题

字节对齐问题由来很关键 字节对齐问题由来 字节对齐问题由来 在移植同事代码的时候发现到一个赋值变量的地方就会出现死机&#xff0c;进入hardfault,怎么也找不不到原因&#xff0c;最后没办法去了github https://github.com/armink/CmBacktrace/blob/master/README_ZH.md Cm…

使用Redis做动态页面缓存,提高网页访问速度

目的 本关目的&#xff1a;实现使用Redis缓存网页。 相关知识 本文将教会你掌握&#xff1a;1&#xff0e;SETEX命令&#xff0c;2&#xff0e;hash()方法。 在动态生成网页的时候&#xff0c;通常会使用模板&#xff08;template&#xff09;来简化网页的生成&#xff0c;…

附近最小(st表,线段树,单调队列三种解法)

问题描述 小蓝有一个序列 a[1],a[2],…,a[n]。 给定一个正整数 k&#xff0c;请问对于每一个 1 到 n 之间的序号 i&#xff0c;a[i−k]&#xff0c;a[i−k1]&#xff0c;…&#xff0c;a[ik] 这2k1 个数中的最小值是多少&#xff1f; 当某个下标超过 1 到 n 的范围时&#xf…

Configure ssh-config简化ssh , scp命令;Screen 后台运行命令

1. Configure .ssh/config简化ssh, scp命令 # Configure myServer Host myServerHostName <ServerIP>User ubuntuIdentityFile /home/ubuntu/.ssh/<myServerKey>.pemssh 命令简化为. ssh myServer ssh myServerscp 命令简化为 scp -rp test.txt myServer:~/Down…

JS数据类型

数据类型 一、js 数据类型 NullUndefinedBooleanNumberBigIntStringSymbolObject Null Null 类型 只有一个值 null Undefined Undefined 类型 只有一个值 undefined &#xff0c;undefined 表示值缺失&#xff0c; null 表示对象缺失 Boolean Boolean 类型有 2 个值&am…