我在没做过实际测试的情况下论述微内核效率的问题似乎有所不妥,我提出效率的问题也是有机制上的依据的,因为我能在两个问题上提出优化的空间。这两个问题都是基于目前架构最优秀的zircon微内核(我认为),或是形式化验证过得sel4微内核。

1.微内核进程间通讯效率

短消息机制使微内核利用寄存器实现了进程间短数据的快速传递,这是非常好的机制,非常好的解决了短消息的传递。

不过很明显对于一个微内核来说,一个依赖于进程间数据传递的微内核,仅有快速的短消息很明显是不够的,超过短消息长度之后的数据怎么办?或许可以用直接进行内存映射实现快速且大规模的进程间通讯,资源共享引起的锁的问题怎么办,很明显带有锁应用的设计复杂度较普通应用多得多。或许可以妥善的设计实现无锁,但是很明显使用内核的最广大人民群众并没有普遍具备如此优秀的设计的能力,一边面对丰富多彩的业务逻辑,一边是内核的苛刻要求,开发者简直要怀疑人生的吧。

所以说,微内核已经有了快速的进程间通讯机制,但是面对非常普遍的超过短消息限制的进程间通讯需求,并不足够。我在zircon中看到了应用向块设备写入数据时,不需要将数据复制到文件系统进程再写入,而是直接将待写入数据所在的内存映射了过去,宣称实现了零复制。对于依赖于进程间通讯的微内核,苛刻的零复制明显能够提高数据的读写速度,不过zircon基于capability,要写入VMO的数据需要先形成完整的数据段后再写入VMO,这应该算是一次复制而不是零复制。我有想到真正能够零复制且保障安全的IPC,不出意外地话可以到(3.解决问题)找到。或许这看起来有些极端,但是在用户态的驱动带来的开销下,如何极端、如何丧心病狂的设计都是值得一试的。毕竟,微内核是要与Linux相媲美才能算有所建树,如果同为内核,基本的性能要求都无法与之匹敌,要那些次要的指标何用?

2.微内核响应速度

在微内核的架构中,原本在宏内核中的驱动是活在用户态的进程;也许乍一看没什么问题,就是会产生一些开销;但这开销如何产生,会产生多少?我在<aarch64异常>中说,“写内核的大神们为所有程序猿发福利:这段代码,我们为你们写!(豪迈语气)”。写内核的大神当真是要为全世界发福利吗?

以读写文件为例,当Linux中打开一个文件,要读其中内容时(此处不将对文件的预缓存带来的收益加入考虑),从read开始,进程飞快的从用户态进程通过系统调用进入了内核态,然后交给worker去搬数据或是直接去搬,有worker搬或许需要等work被调度,以及worker可能还要完成的其他任务,如果直接搬的话则让DMA去做,然后线程可能就暂停切出了,整个过程是非常直接的,worker线程是内核线程,其调度进、出执行都只需要保存现场切换堆栈,毕竟,内核页表是公共的。而在微内核中,还是以我最看好的zircon为例,通过进程通讯,向文件系统进程发出读文件请求;于是作为一个进程的文件系统,进程肯定是逃不开由虚拟地址空间的,有地址空间就要有一套页表,有一套页表就占页表缓存,进程切进切出是开销必然是更大的。而Linux内核中的线程由于共地址空间的优势,worker的开销显然更小一些。

当外部设备产生中断,在Linux中通过中断的处理是在内核中完成,同样由于共地址空间的优势,仅少量的线程切换时间和等待调度时间;而微内核对中断处理的开销则更大一些,进程的切换(含地址空间的切换和线程切换)、等待调度、用户态/内核态转换等均需要开销,需要时间。

用用户态进程实现驱动带来了稳定性,这种稳定性是基于虚拟内存实现的隔离,但虚拟内存的隔离也会带来性能的开销,欲戴其冠必承其重。只有一点性能损失的话,对于现代CPU来说忽略也是可以的,但这使Linux对微内核产生效率(即性能)的优势,一个不能全面压倒Linux的微内核如何应对整个Linux的生态的倾轧。


L4微内核提出了基于capability的权限管理使整个内核都是基于权限搭建,据说实现了安全;我从来对权威的说法都是保持认真聆听的态度,但我从不认为权威既事实;限制对内存的访问,是形成权限的基础,现代计算机体系中通过MMU实现内存访问的限制,如果一段内存如果不是基于MMU来限制访问,那么它无法阻挡躁动不安的指针,而MMU分页最小的单位是4KB;对于基于capability的权限限制,在seL4中内核对象Untyped Memory 最小16bytes,也就是说capability的限制并不是基于MMU设计,于是我猜测seL4微内核不会让用户态的指针真正进入Untyped Memory,而是通过系统调用将其中内容复制出Untyped Memory。在zircon中,对WMO即存在读取和写入其中内容的系统调用,另外将VMO加入一个进程,是需要页对齐的(只有这样才敢允许指针在其中驰骋)。L4微内核基于capability的设计,我能领会其设计意图,但是很明显我才疏学浅,并不能看清基于capability是否能效率、安全兼顾;毕竟本就效率不足的微内核,在与Linux肉搏的时候,再加入更多效率得枷锁,还能否与之匹敌。从zircon来看,capability是与MMU结合了的,并无效率损失,但从sel4上,我并未找到相关线索。

上面啰啰嗦嗦说了我看到了当前阶段微内核还可以改进的地方,其实并不是想表达其设计存在问题,而是说,我有想到实现一些更好的机制可以提升上述两个问题

我认为微内核的意义(4)-分析微内核效率相关推荐

  1. 服务器和微内核系统哪个好,分析微内核架构操作系统优缺点

    <分析微内核架构操作系统优缺点>由会员分享,可在线阅读,更多相关<分析微内核架构操作系统优缺点(2页珍藏版)>请在人人文库网上搜索. 1.分析微内核架构操作系统优缺点一 优点: ...

  2. linux系统微内核,微内核操作系统的定义及用微内核设计的系统,附Linux是单内核结构介绍...

    本文为你介绍微内核操作系统的定义,及其采用微内核设计的操作系统都有哪些?同时附有 Linux 是一个单内核结构的介绍,不过 Linux 还吸收了微内核的优点,所以系统表现相当的出色.微内核如今非常受关 ...

  3. 鸿蒙使用linux内核微内核,浅谈鸿蒙操作系统的微内核

    描述 华为在松山湖的华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 -- 微内核.华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可 ...

  4. 鸿蒙微内核基于,华为发布基于微内核、面向全场景的分布式操作系统:鸿蒙OS...

    原标题:华为发布基于微内核.面向全场景的分布式操作系统:鸿蒙OS PingWest品玩8月9日讯,华为消费者业务今天在其全球开发者大会上正式向全球发布其全新的基于微内核的面向全场景的分布式操作系统-- ...

  5. echarts 百度地图,城市区域场景标识参数意义配置分析

    有不足或者错误的请大佬指出,仅仅个人的分析结果. 由于颜色貌似用16进制才能使用或者识别,先来个进制的颜色参照表吧,颜色可以直接在这个网页上ctrl+f查找 颜色对照表http://www.fsskq ...

  6. deepstream系列gst-shark工具分析插件效率

    参考:https://www.it610.com/article/1277920951371055104.htm https://github.com/RidgeRun/gst-perf GstSha ...

  7. 软件测试影响与分析,软件测试效率影响因素分析 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    方法是影响测试效率的主要因素之一.此外,人为因素.软件类型.缺陷数量.测试充分度等都会对测试效率产生影响.下面对这些因素作一个简要分析.51Testing软件测试网@&WMh,K#qdoq$~ ...

  8. 从数据结构角度分析foreach效率比for循环高的原因

    来源:http://www.2cto.com/kf/201610/555055.html 在PHP开发过程中,我们都知道在循环的时候,foreach效率比for高,但是为什么foreach效率高呢?其 ...

  9. 微内核是什么?宏内核是什么?一文带你了解操作系统内核架构!

    近年来,我国自主研发操作系统被反复提及.近期,一个计算机领域内非常专业的词来到了几乎所有人的视线内,这就是--微内核.人们对操作系统内核的讨论越来越热烈,甚至有人说我不懂什么叫微内核,什么是宏内核,接 ...

最新文章

  1. linux安装anaconda3时出现error,the size of ** should be 6*** bytes
  2. aspnet还有人用吗_别盲目跟风!理性分析:超火的小香风外套真的适合你吗?
  3. 创建springmvc配置
  4. 搭建nginx + python + django +memcached+ mysql +fastcgi 环境
  5. 区块链去中心化分布式_为什么渐进式去中心化是区块链的最大希望
  6. yum 安装apache php mysql
  7. 刘卫国python实验答案_MATLAB(刘卫国)部分实验答案
  8. 骨干云池存储方式_你好,我存个对象(大误)漫谈对象存储
  9. 神奇的python(二)之python打包成应用程序
  10. 第五十二篇 仿真电路简单说明multisim12 函数发生器 示波器
  11. matlab红外图像的处理,数字图像,红外图像处理,matlab实现
  12. 训练loss不下降原因总结
  13. Android Q 修改Fingerprint
  14. 家庭整理-《家庭断舍离》书中的精髓:如何通过家庭断舍离,来消除家居环境和家庭关系间的堆积物,从而拥有自由舒适的家庭关系。
  15. NAS网络存储器(转)
  16. linux ps1 主机名 ip,Bash Shell PS1: 自定义你的linux提示符十例
  17. idea中translation插件显示网络异常(试一试)
  18. 给儿子的一封信——大学才是人生真正的起点
  19. Scala 034 特质trait
  20. vue element-ui elementUi 邮箱自动补全 邮箱自动填充

热门文章

  1. QLogic CTO看2016年的网络趋势
  2. 手柄连接小米3,小米3连接小米盒子
  3. python项目实战(一):购物商城(采用面向过程思想开发)
  4. 一种用凹槽斜支撑和弹簧拉紧的天然气罐对接机构
  5. 计算机专业认证协会,计算机科学与技术专业接受中国工程教育认证协会认证评估...
  6. 为什么无法在 Adobe XD 中导入或导出文件?
  7. python输入学生姓名、性别、学号、各科成绩连续输出_编程:完成若干学生和教师的数据的输入、存储和输出。...
  8. uniapp H5与原生安卓的数据互通和方法调用
  9. 远程连接桌面不能全屏显示
  10. 还有人没尝过 Pinia 吗,请收下这份食用指南!