在介绍OpenHarmony的内核层之前,我们先介绍一下内核的概念,内核是操作系统的核心组件,是计算机物理硬件与运行在其上的进程之间的主要接口。内核通过提供对 CPU、内存、磁盘 I/O 和网络的访问,使多个应用程序能够共享硬件资源。
你可以想象一下,一台计算机由一系列层组成,就像OpenHarmony由内核层、系统服务层、框架层和应用层一样,最内层是硬件,最外层是计算机上运行的软件应用程序。在这个类比中,内核位于硬件和应用程序之间,因为它不仅负责管理硬件资源和执行软件程序,还负责监督这些层之间的交互。简单点说硬件资源就像一个还没有烧录代码的开发板,就像没有注入灵魂一样,写入代码之后,代码中的内核层就负责和这些硬件资源打交道,并且完成软件程序想要执行的操作。

现代计算机一般是将内存分为两大部分,一部分是内核空间,另外一部分是用户空间 。用户空间是执行应用软件的地方,而内核空间专门用于运行计算机所需的幕后工作,举个例子,就像内存分配和进程管理。一个负责台前,一个负责幕后,好处在于你在调试应用程序的时候,不需要花费太大精力去弄懂内核层面是如何执行的,大大降低了新手入门的门槛。由于内核空间和用户空间的这种分离,内核所做的工作通常对用户是不可见的。
OpenHarmony的内核层分成了两大块,一部分是内核子系统,另外一部是驱动子系统。其内核子系统采用多内核设计,也就是支持Linux内核或者LiteOS内核,支持针对不同资源受限设备选用适合的OS内核。那么HarmonyOS到底是宏内核还是微内核呢?要回答这个问题的话,我觉得要看当前的HarmonyOS到底是基于怎么样的内核来判断。如果是基于LiteOS内核的,那么是HarmonyOS就是微内核操作系统;如果是基于Linux Kernel内核的,那么是HarmonyOS就是宏内核操作系统。

我们在文档中还看到这段话,内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
那么如何理解这段话呢?这段话说白了就是说KAL层事实上是屏蔽底层的内核,谁能访问底层内核呢?当然是程序员,这样做的好处是便于在不同平台开发时迁移内核层,坏处就是多个内核如果同时工作,那么两个内核的资源调度,以及驱动的处理会比较复杂。
|