Hi3516的SAMGR--系统服务框架子系统-5
切入小型系统
liangkz 2021.06.24
写完上一篇《
》有做过一些分析说明,现在回过头来看一下,那些分析简直是皮毛而已,真的详细说起来,需要单独的篇章,下一篇就从它开始。
主要的分析工作,还是在 samgr_lite 目录内,在一头扎进去之前,最好先回顾一下《Hi3861的SAMGR--系统服务框架子系统-1》系列文章中提到的内容,也要重新整理一下Hi3861(轻量系统)和Hi3516(小型系统)之间的一些重大差异。
1. 轻量系统上,只支持线程概念,没有进程概念。
所以你在Hi3861工程代码上是找不到进程Process相关的东西的,各种服务和程序,都是以线程(task/thread)的形式在跑,比如系统启动时,每个service是一个线程,开发者自己编写的程序,在SYS_RUN的时候,也是一个或多个线程。线程间通过消息队列方式进行通信,消息的发送者和接收者,虽属不同的线程,但实际它们还共享着相同的地址空间,仔细跟踪一下Request/Response结构体中的 void *data 的使用,你就可以理解了。
2. 小型系统中,支持线程和进程概念。
每个服务都需要一个守护进程在后台支持,一个或多个线程在前台提供具体的service/feature。不同的进程(Process)独享各自的地址空间,进程间通过IPC共享内存机制进行通信,同一个进程的不同线程间,仍是通过消息队列方式进行通信,中间引入了router、endpoint等概念,实现了一整套相当复杂但也很高效的通信机制。
3. 轻量系统上,SamgrLiteImpl g_samgrImpl 是全局唯一的老大,记录了系统中的service/feature,provider向它注册服务,consumer向它查询服务。
4. 小型系统上,SamgrLiteImpl g_samgrImpl 不再是老大地位了,老大地位被另外一个 SamgrServer g_server 占据了。它们之间的关系,我们后面会详细分析,这也解决了《Hi3861的SAMGR--系统服务框架子系统-2》中提出的疑问。
5. 轻量系统上的SOA的实现,可以说是相当的简单和容易理解了,看前文《Hi3861的SAMGR--系统服务框架子系统-4-面向服务架构的实现》的图片就不难理解。
6. 小型系统上的SOA的实现,可就复杂很多了,因为涉及到跨进程通信,provider和consumer都需要通过代理机制来实现远程(跨进程)接口的调用,这时候《Hi3861的SAMGR--系统服务框架子系统-2》所分析的对“IUnknown 接口类及其相关定义”的理解,就显得非常重要了,要是不理解IUnknown接口的概念,那真的不好理解小型系统上的SOA的实现。
更多的细节,就在接下来的文章中一一剖析了。
相关推荐
CBI资讯
326
0
周正
1
0
周正
285
0
周正
474
0
周正
383
0宋你一朵小红花
我还没有写个人简介......
帖子
提问
粉丝
华为鸿蒙 HarmonyOS 6.0.0.108 SP2 Developer 版本新增 9 套桌面图标
2025-10-20 23:17:16 发布注意!华为开启鸿蒙6.0系统推送,稳定性提升
2025-10-14 15:10:36 发布