大师兄的鸿蒙学习笔记:对比HarmonyOs和Android系统

2021-06-08  本文已影响0人  superkmi

一. 与Android系统架构比对

1. HarmonyOs架构概览
1.1 内核层

内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核,如:Linux Kernel, LiteOs等。
内核抽象层(KAL,KernelAbstract Layer):通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
驱动子系统:HarmonyOS驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

1.2 系统服务层

系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成。其中,方舟运行时提供了C/C++/JS多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。
基础软件服务子系统集:为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX、MSDP&DV等子系统组成。
增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

1.3 应用框架层
1.4 应用层

FA有UI界面,提供与用户交互的能力;
PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。

2. 与Android系统架构比对
2.1 架构不同

微内核:内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址空间中实现。在应用程序和硬件的通信中,内核进程和内存管理的极小的服务,而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不会有直接的交互,这样一来,微内核中的执行速度相对就比较慢了,这是微内核架构的一个缺点。
在内核架构中,用户服务是独立于内核服务的,因此任何用户服务崩溃都不会影响到内核服务,这就加强了操作系统的健壮性,这是微内核的优势所在。另一点,微内核的扩展性强,添加一个功能,只需要建立一个新的服务到用户空间当中,而内核空间不需要任何的修改。因此,微内核可移植性强、安全并且易于扩展。

宏内核定义:宏内核同样管理着用户程序和硬件之间的系统资源,但是和微内核不一样的是,在宏内核架构中,用户服务和内核服务在同一空间中实现。具体一点,就是内核可以代表内核进程运行代码,就是通常的内核进程;当用户进程经过系统调用或者中断进入到内核态时,内核也可以代表它运行代码。这样一来,宏内核需要管理的资源多于微内核,其大小就相对大一些了。
在宏内核架构当中,内核管理着CPU调度,内存管理,文件管理和系统调用等各模块的的工作,由于用户服务和内核服务被实现在同一空间中,这样在执行速度上要比微内核快。然而,宏内核的劣势也是显而易见的,那就是当内核中的某个服务崩溃了,整个内核也会崩溃。另一点,想要在内核中添加新的功能就意味着内核中的各个模块需要做相应的修改,因此其扩展性很弱。

区别 微内核 宏内核
基本概念 用户服务和内核服务运行在不同的地址空间 用户服务和内核服务运行在相同的地址空间
执行速度
尺寸 较小 较大
可扩展性 易扩展 不易扩展
安全性 单个服务崩溃不影响全局 单个服务崩溃往往意味整个系统崩溃
开发量 开发量大 平台提供的代码多,相对开发量少
2.2 使用范围不同

二. 与Android系统工程结构比对

1. HarmonyOs的APP工程结构

entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry类型的HAP,可独立安装运行。
feature:应用的动态特性模块。一个 APP 可以包含一个或多个 feature类型的HAP,也可以不含。

2. 与Android工程结构对比
目录结构 Android HarmonyOS
源码目录 project\entry\src\main\java project\app\src\main\java
资源文件目录 project\app\src\main\res project\entry\src\main\resources
清单文件 project\app\src\main\AndroidManifest.xml project\entry\src\main\config.json
依赖文件目录 project\app\libs project\entry\libs
模块编译配置文件 project\app\build.gradle project\entry\build.gradle
gradle目录 project\gradle project\gradle

三. 与Android安装包比对

  • hap文件在被打包构建时会生成一个entry_signed_entry.apk文件,用于兼容Android系统
  • classes.dex文件与Android系统相同,对应HarmonyOS中Java部分的代码。
  • assets\entry\resources对应Android系统中的res目录,用于储存resources中的资产文件。
  • config.json对应Android系统中的AndroidosManifest.xml清单文件。
上一篇 下一篇

猜你喜欢

热点阅读