Hi3516的SAMGR--系统服务框架子系统-5-切入小型系统
头像 宋你一朵小红花 2021-06-27 10:19:16    发布
3229 浏览 22 点赞 20 收藏



Hi3516的SAMGR--系统服务框架子系统-5

切入小型系统

liangkz 2021.06.24

写完上一篇《

Hi3516的SAMGR--系统服务框架子系统-5-切入小型系统-鸿蒙开发者社区》有做过一些分析说明,现在回过头来看一下,那些分析简直是皮毛而已,真的详细说起来,需要单独的篇章,下一篇就从它开始。


主要的分析工作,还是在 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的实现。

更多的细节,就在接下来的文章中一一剖析了。


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255