[Kernel]微内核、单内核

[Kernel]微内核、单内核

一、从应用层面直观说明采用各种内核的系统

微内核:华为鸿蒙系统、Windows系统、塞班系统

单内核:Unix、Linux、FreeBSD、安卓系统

二、各自的特点

这里两种起始类似与RISC和CISC的比较,可以对比的看一下。

微内核

微内核是内核的一种精简模式,通常系统服务层是和内核集成在一起的,而微内核将系统服务层被分离出来,变成可以根据需求加入的选件,这样就可以提供更好的可扩展性和更加有效的应用环境。

微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、处理I/O设备。其他服务,如文件管理、网络支持等通过接口连到微内核。(采用IPC机制)

单内核

与微内核相反,单内核是集成的,比微内核更大。单内核是直接将整体作为一个单独的大过程进行实现,并同时运行在一个单独的地址空间。因此,这样的内核通常以单个静态二进制文件的形式存放于磁盘。所有内核服务都在这样的一个大内核空间中运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间:内核可以直接调用函数,这与用户空间没有什么区别。这种模式的支持者认为单模块具有简单和高性能的特点。

三、Unix和Linux内核

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,它还忽略了那些实际上已经根本不会使用的过时标准。

四、Harmony OS内核

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

内核层

  • 内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
如何理解KAL,个人认为可以参考HAL进行解释
HAL是硬件抽象层,介于Android内核和上层之间抽象出来的一层结构,是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件的具体实现,屏蔽了底层的实现细节。

https://blog.csdn.net/FZeroTHero/article/details/88673860

  • 驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

  • 系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
分布式软总线
分布式软总线是多设备终端的统一基座,为设备间的无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。

分布式数据管理
分布式数据管理位于基于分布式软总线之上的能力,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件

分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、绑定/解绑、以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况并结合用户的习惯和意图,选择最合适的设备运行分布式任务

设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,将周边设备作为手机能力的延伸,共同形成一个超级虚拟终端。
  • 基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
  • 增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
  • 硬件服务子系统集:提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

猜你喜欢

转载自blog.csdn.net/qq_40392981/article/details/123041357
今日推荐