Linux调试私房菜(十)系统模块管理的设计

二十一、系统模块管理的设计

1. 系统模块化设计

  • 将系统中有关联的部分组合在一起,构成具有特定功能的子系统
  • 模块的内部组成具有较强的耦合性,模块本身具有一定通用性
  • 不同的模块间可以进行相互组合与依赖,进而构成不同的产品

2. 模块化设计

3. 模块化设计示例

  • 各个模块间需要相互依赖,进而完成产品功能
  • 根据依赖关系能够将模块分为不同的层

4. 模块间的分层

硬件层,系统层,平台层,框架层,应用层

5. 模块的分级(更细的设计粒度)

同一层中的模块根据依赖关系能够继续分级

6. 分层与分级的意义

  • 模块间的依赖关系决定了初始化的前后顺序
  • 被依赖的模块必须先初始化底层先于上层初始化
    • 如:
      • 硬件层模块先于系统层模块初始化
      • 框架层模块先于应用层模块初始化

7. 系统架构示例一

8. 系统架构示例二

9. 设计时需要思考的问题

  • 如何在代码中定义模块?
  • 如何定义的层级关系(依赖关系)?
  • 如何确定模块的初始化顺序?

10. 模块的定义

11. 模块的描述及组织方式

12. 层级关系的定义

13. 状态设计

14. 模块的初始化

15. 模块的销毁

16. 实现要点

  • 每一个模块对应一个ID和一个结构体变量( module_init_t
  • 模块需要注册后才能被初始化( module_register
  • 模块提供一个回调函数( module_callback_t )用于接收事件
  • 所有的模块根据层级关系组织于不同链表中
    • 同一个链表中的模块没有依赖关系
    • 整个系统从最底层(最上层)的模块开始进行初始化(销毁)

17. 实例分析:模块的组织,初始化与销毁

源码分析

module.c  module.h   管理模块

Dll.c  Dll.h                     双向链表

Primitive.h                    定义类型

18. 小结

  • 模块设计是要遵从强内聚弱耦合的原则
  • 模块之间可以相互依赖,并进行模块层级的划分
  • 模块管理是为了系统中各个模块的有序启动和停止
  • 模块设计时需要考虑资源的分配和释放问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值