一文看懂什么是微内核架构

前言:

大概是昨天,华为终于发布了万众期待的鸿蒙操作系统-HarmonyOS ,因为截止到现在2019年8月11日,鸿蒙OS依然不是我这们这种普通的消费者可以体验到的,既然没有体验过,所以本篇笔记我们不对鸿蒙OS作任何评价,转而将焦点用在了解鸿蒙OS背后所使用到的技术上,等之后如果有机会可以体验到搭载鸿蒙OS的华为产品,我在做比较公正客观的评价。

鸿蒙OS在发布会上强调了多个特性用来强调鸿蒙OS作为一个操作系统而言本身的突破和优势在哪里,根据余承东的发言,大致可以分为下面四点:

  • 采用分布式架构,可以实现跨终端的能力互助共享
  • 低时延和高性能IPC带来高流畅的使用体验
  • 基于微内核技术的可信执行环境,通过形式化方法提升了内核安全,全面提升全场景终端设备的安全能力
  • 鸿蒙OS可支撑开发者实现一次开发、多端部署,最终实现跨终端生态共享。

根据三短一长选最长定理,本篇笔记我们来说一下微内核架构。

相关概念:

在了解微内核之前,我们先要了解操作系统,内核这几个基本概念,方便我们下面的阅读与理解。

操作系统(Operation System,简称OS):是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;

内核:内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等

微内核定义:

微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入选件,这样就可提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要用新模块替换旧模块,不需要改变整个操作系统

根据以往我们的惯例,概念什么的太晦涩难懂了。

为了大家更好的理解微内核的概念,我们先来介绍一下宏内核架构。

微内核与宏内核

既然微内核是把内核集成在一起的系统服务给分离出来,那么宏内核必然反其道而行之,宏内核遵循的原则是一个都别想走原则,及相关系统服务都集成在一个内核中,宏内核在操作系统中扮演的角色类似于哆啦A梦,本身精通无数项操作系统必备技能,而且为人热心,凡事都身体力行,事必躬亲 。即我们所有系统服务都是通过这一个内核来完成的。大家想,宏内核啥事儿都得自己一个人干,就像家里的顶梁柱一样,万一顶梁柱有个三长两短,那这个家岂不是都要塌了,是这样的,这就是宏内核架构的弊端,因为所有的系统服务都集成在了一个内核中,就导致万一某个系统服务出现了故障,就会影响到整个操作系统的运行。当然,顶梁柱毕竟称之为顶梁柱,三天两头出事千斤顶也顶不住,宏内核绝大多数情况下是不会出问题的,宏内核架构的代表是linux操作系统。

关于linux是宏内核还是微内核,这点网上众说纷坛,各有各的道理,在查阅了相关的资料,包括linux创始人关于微内核和宏内核比较著名的那一场整理,本人不才,没有找到英文原文,但是维基百科上有所说明,链接如下:

https://zh.wikipedia.org/wiki/整塊性核心

而微内核呢,我们可以看作是一个团队,核心呢就是我们这个团队的领导者,即最核心的那一个。而团队的其他人,则负责各自的区域。而微内核和其他模块之间互相通信,也就是当我们向内核调用某些内核没有包含的系统调用时,内核负责通知相应模块执行调用。这种架构带来一个什么样的好处呢,可扩展性非常高,模块化,插件化的设计,意味着我们可以很方便的添加新的模块而不对其他模块造成影响,同样也可以很方便的卸载某些系统服务。同时呢,当系统内一些模块出现故障无法运行时,也只是对这个模块造成影响,而其他的模块则几乎没有影响。算是解决了宏内核“得个感冒,殃及全身”的问题。而我们大多数人使用的windows操作系统就是基于微内核架构实现的。

那既然微内核架构这么好,那为什么linux还要固执的使用宏内核呢,换成微内核不就好了吗?

不尽然,尽管微内核采用了插件式的设计,扩展性很高。但是大家想,团队之间最重要的是什么,沟通和合作,正因为微内核分离了系统服务层,每次调用都需要通信,而这种通信是需要时间成本的,这就意味着微内核的效率往往是低于宏内核的。还是不理解?看下面这个极端的沟通例子。

[美人鱼名场面]

微内核(邓超):你知道吗,我见到了美人鱼,就是那种,那种,美人鱼,你知道吗?

系统服务层(文章,那个人不认识):是这样的?(画画中)

微内核:不是,就是那种看起来,很美的美人鱼

系统服务层:先生,我们都是经过严格的训练..

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈嗝嗝哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

宏内核:我见到了美人鱼,这个样子啊,记住了。

很明显嘛,考虑到微服务架构出现的时间(2005)是晚于微内核出现的时间的,所以我做了一个大胆的猜测,微服务架构在设计的时候其实是有借鉴微内核架构的,毕竟微服务架构也是将单一的应用拆分成不同的服务,不同服务之间相互进行通信。同时我们IDEA的插件系统其实也有采用微内核架构。

总结:

本篇文章我们初步的从宏观上地了解了微内核架构的特征,因为个人水平原因,相关细节没有办法给读者很生动的阐述,所以代码部分提及较少(这篇文章你根本没提好吧),感兴趣的通信可以自行下去查阅相关资料。

等等,你是不是忘了什么,鸿蒙OS呢?都快结束了,也不提一下?(内心戏,发布会还没看,跑了跑了)

我是韩数,欢迎大家关注我,我们下篇笔记再见!拜拜。

暂无评论

文艺中二理工男,技术极客程序员

发表评论