大家好,我是学徒小z,最近在研究鸿蒙中一些偏底层原理的内容,今天分析进程通信给大家,请用餐😊
文章目录
- 进程间通信
- 1. 通过公共事件(@ohos.commonEventManager)
- 公共事件的底层原理
- 2. IPC Kit能力
- Lite IPC 的归属与特点
- 1. 所属内核
- 2. 核心思想
- 3.公共事件子系统
- 鸿蒙内核小知识
进程间通信
1. 通过公共事件(@ohos.commonEventManager)
公共事件的底层原理
- 公共事件是一种基于发布-订阅模型的通信机制,其底层依赖于 CES(Common Event Service) 和 Binder 驱动 。
- 发布者将事件发送到系统事件总线,订阅者 通过注册感兴趣的事件来接收消息
公共事件从系统角度可分为:系统公共事件和自定义公共事件。 - 系统公共事件:CES内部定义的公共事件,当前仅支持系统应用和系统服务发布,例如HAP安装、更新、卸载等公共事件。
- 自定义公共事件:应用定义的公共事件,可用于实现跨进程的事件通信能力。
2. IPC Kit能力
- IPC:设备内的进程间通信(Inter-Process Communication)
- RPC:设备间的进程间通信(Remote Procedure Call)
IPC/RPC用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备跨进程通信。需要跨进程通信的原因是因为每个进程都有自己独立的资源和内存空间,其他进程不能随意访问不同进程的内存和资源,IPC/RPC便是为了突破这一点。
CES是通过IPC能力实现的
Lite IPC 的归属与特点
1. 所属内核
Lite IPC 是 LiteOS-A 内核 的核心功能之一,主要用于支持中型设备(如智能音箱、路由器等)的进程间通信LiteOS-A 是鸿蒙系统中面向中型设备的内核,提供比 LiteOS-M 更丰富的功能,同时保持较高的性能和灵活性
2. 核心思想
Lite IPC 的核心思想是在内核态为每个服务任务维护一个 IPC 消息队列 ,并通过 LiteIPC 设备文件向上层用户态程序提供接口
这种设计使得 Lite IPC 能够以较低的资源开销实现高效的跨进程通信
3.公共事件子系统
鸿蒙内核小知识
鸿蒙操作系统的多内核设计通过 LiteOS-M 、LiteOS-A 、Linux 和 UniProton 这四种内核部件,实现了对不同设备和场景的全面覆盖
- LiteOS-M(通常小于1MB,最小128KB) :轻量级,适用于资源受限的小型设备。
- LiteOS-A (1-128MB):中型设备内核,兼顾性能和功能。
- Linux (最小128MB):高性能内核,适用于智能手机和智能终端。
- UniProton(最小1GB) :实时性内核,适用于工业和汽车领域。