首页 > 数据库 > 数据库开发技术 > [Kernel]微内核、单内核
微内核:华为鸿蒙系统、Windows系统、塞班系统
单内核:Unix、Linux、FreeBSD、安卓系统
这里两种起始类似与RISC和CISC的比较,可以对比的看一下。
微内核是内核的一种精简模式,通常系统服务层是和内核集成在一起的,而微内核将系统服务层被分离出来,变成可以根据需求加入的选件,这样就可以提供更好的可扩展性和更加有效的应用环境。
微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、处理I/O设备。其他服务,如文件管理、网络支持等通过接口连到微内核。(采用IPC机制)
与微内核相反,单内核是集成的,比微内核更大。单内核是直接将整体作为一个单独的大过程进行实现,并同时运行在一个单独的地址空间。因此,这样的内核通常以单个静态二进制文件的形式存放于磁盘。所有内核服务都在这样的一个大内核空间中运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间:内核可以直接调用函数,这与用户空间没有什么区别。这种模式的支持者认为单模块具有简单和高性能的特点。
Linux是一个单内核,也就是说,Linux内核运行在单独的内核地址空间。不过,Linux汲取了微内核的精华:其引以为豪的是模块化设计、抢占式内核、支持内核线程以及动态装载内核模块的能力。不仅如此,Linux还避其微内核设计上性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无需消息传递。至今,Linux是模块化的、多线程的以及内核本身可调度的操作系统。
Linux支持动态加载内核模块。尽管Linux内核也是单内核,可是允许在需要的时候动态地卸除和加载部分内核代码。
Linux支持对称多处理(SMP)机制,尽管许多Unix的变体也支持SMP,但传统的Unix并不支持这种机制。
Linux内核可以抢占(preemptive)。与传统的Unix不同,Linux内核具有允许在内核运行的任务优先执行的能力。在其他各种Unix产品中,只有Solaris和IRIX支持抢占,但是大多数传统的Unix内核不支持抢占。
Linux对线程支持的实现比较有意思:内核并不区分线程和其他的一般进程。对于内核来说,所有的进程都一样—只不过其中的一些共享资源而已。
Linux提供具有设备类的面向对象的设备模型、热插拔事件,以及用户空间的设备文件系统(sysfs)。
Linux忽略了一些被认为是设计得很拙劣的Unix特性,像STREAMS,它还忽略了那些实际上已经根本不会使用的过时标准。
HarmonyOS 2是华为基于开源项目OpenHarmony 2.0开发的面向多种全场景智能设备的商用版本。Openharmony 和 HarmonyOS(鸿蒙操作系统) 是两个完全不同的概念。华为把 HarmonyOS 中基础功能提取出来,打包成功一个项目叫做“Openharmony” ,把 Openharmony 捐献给了原子开源基金会。而华为自己的商业版本HarmonyOS 2 并没有捐出,这个商业版本也是基于开源项目 OpenHarmony 2.0 开发的,兼容了 AOSP,增加了 HMS 。所以这里仅对OpenHarmony进行简单的介绍。
OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。OpenHarmony技术架构如下所示:

这里我们把目光聚焦于内核层和系统服务层,从前面微内核的特点与OpenHarmony架构的展示不难看出,OpenHarmony是一种微内核。下面对内核层和系统服务层进行介绍。其他部分可以查看官方开源介绍:https://gitee.com/openharmony?utm_source=alading&utm_campaign=repo
内核层
https://blog.csdn.net/FZeroTHero/article/details/88673860
系统服务层
系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
原文作者:KAZIMIYA;如有侵权,请联系管理员删除。