鸿蒙OS技术点扫盲(微内核,形式化验证等)

鸿蒙OS技术点扫盲(微内核,形式化验证等)

2019年华为开发者大会鸿蒙OS(HarmonyOS)技术点扫盲。

鸿蒙OS 微内核 宏内核

宏内核、微内核、混合内核的操作系统结构

1.宏内核(Monolithic kernel,上图左侧为宏内核操作系统结构)

如图,宏内核架构的特性是整个内核程序是一个单一二进制可执行文件,在内核态以监管者模式(Supervisor Mode)来运行。也就是说,整个操作系统架构大体分为上下两层,上层是用户应用,下层是内核,内核拥有者最高权限,管理用户程序、CPU调度、内存等各模块工作,以及协调软硬件之间的资源。

这种设计的优点是设计简单,上下两层结构,中间通信层;系统调用速度快,用户态可通过内核接口直接调用内核态函数,所以性能很好;

缺点也有很多,从安全角度来说一旦内核中某个服务崩溃,那么可能导致整个内核崩溃,进而整个系统崩溃;

传统的宏内核包括Linux,BSDs,Microsoft Windows等。(感谢评论,Windows是混合内核,这里写错了)

2.微内核(Microkernel,上图中间为微内核操作系统结构)

如图,微内核的架构是将核心功能模块化,各自运行在独立的资源环境下(比如独立内存块,独立cpu等),所有的服务行程,都运行在不同的地址空间。只有需要绝对特权的行程,才能在具特权的运行模式下运行,其余的行程则在用户空间运行。

这样设计的优点有:

1)设计上变的更简单。需要特权的行程,只有基本的线程管理,内存管理和进程间通信等,这个部分,由一个简单的硬件抽象层与关键的系统调用组成。其余的服务行程,则移至用户空间。

2)服务各自独立,可以减少系统之间的耦合度,易于实现与调试,也可增进可移植性。操作系统也可以视需要,抽换或新增某些服务行程,使功能更有弹性。

3)它可以避免单一组件失效,而造成整个系统崩溃,内核只需要重启这个组件,不致于影响其他服务器的功能,使系统稳定度增加。

缺点是各个功能模块间通信(IPC)大大增加,又带宽受限等原因,所以微内核性能相比宏内核较差。


可信与形式化验证

1.可信

可信是近几年比较火的一个词,各大公司都打着“打造可信安全产品”的口号,可信到底是什么?

可信最初来源于信息安全领域,用来评价产品的可以信赖的程度。如何做到可以信赖(可信)呢?通常会通过产品的整个开发过程进行评估,而既然是程度,便划分了可信等级。所以说,打造可信的产品,必须在架构设计阶段、产品开发阶段(需求、设计、编码等)可信,比如产品架构设计充分考虑架构安全性等,产品开发阶段保留证据,比如需求设计方案,测试用例,每次迭代的测试结果等。

当然完成以上任务仍然不可以说自己产品可信,因为要对整个流程和证据(文档)进行评估(更多依赖第三方评估机构,客户更信赖),比如流程是否规范,设计文档是否符合标准,测试是否符合标准等。国际有很多可信的评估标准,比如

TCSEC:en.wikipedia.org/wiki/T

ITSEC:en.wikipedia.org/wiki/I

Evaluation Assurance Level:en.wikipedia.org/wiki/E

等等

可信的最终目标是让客户对产品完全信赖。


2.形式化验证

在计算机硬件(特别是集成电路)和软件系统的设计过程中,形式验证的含义是根据某个或某些形式规范或属性,使用数学的方法证明其正确性或非正确性。

形式化验证是用数学语言描述清楚我们要解决的问题。通过对问题建立数学模型限定系统在不同时刻应该有的状态,以及不应该有的状态。然后用这些数学规则去限定系统的设计以及实现。

软件测试无法证明系统不存在缺陷,也不能证明它符合一定的属性。只有形式化验证过程可以证明一个系统不存在某个缺陷或符合某个或某些属性。系统无法被证明或测试为无缺陷,这是因为不可能形式地规定什么是“没有缺陷”。所有可以做的,就是证明一个系统没有任何可以想到的缺陷,并且满足所有的使系统符合功能要求的和有用的属性。

确定时延技术

linux系统中,一个用户调用到达内核里面,然后经过内核的相关函数调用,最终返回用户结果的耗时是不确定性的,主要受cpu多核调度机制、调度算法以及调度压力大导致带宽波动等影响。

确定性时延便是采用资源隔离分配、合适的调度策略等方法,保证调度时延的确定性,保证某些业务低时延、高流畅性和性能,比如游戏运行时,网络和显卡比较吃资源,保证网络或显卡相关调度拿到较多的资源和优先调度,则可以大大提高用户体验。


以上,还有疑问可留言。

编辑于 2019-08-26

文章被以下专栏收录

    大三开始认识并学习Linux,如今在内核岗位工作5年有余,将近“三十而不惑”,希望在三十岁之前能将个人学习Linux历程和总结通过这个专栏记录并展现出来,后来者可用以参考和指引,仅此而已。 暂时分类: 1.x,linux入门知识; 2.x,linux基本应用; 3.x,调测工具相关; 4.x,arm64相关特性或知识点; 5.x,linux特性或知识点; 专栏中提及书籍、安装软件以及观点涉及的文档报告等,个人均会保留,获取方式: 1.知乎直接私信me; 2.关注个人微信公众号“hello小崔”,回复“分享”或私信me;