系统架构设计师备考第61天——嵌入式系统架构模式&操作系统&数据库&中间件

一、两种典型的嵌入式系统架构模式

1. 层次化模式架构
  • 核心思想:通过抽象分层实现概念一致性,高层依赖低层实现具体功能。

  • 两种类型

    类型 调用规则 优点 缺点
    封闭型 仅能调用同层或相邻下层对象的方法 封装性好,易移植 性能较低
    开放型 可调用同层或任意下层对象的方法 性能高 破坏封装,移植性差
  • 适用场景:系统存在高层次抽象概念需低层实现时(如嵌入式GUI框架)。

  • 考点:开放型与封闭型的性能与移植性权衡。

2. 递归模式架构
  • 核心思想:通过自顶向下或自底向上分解复杂系统,实现逐步精细化设计。
  • 工作流程
    • 自顶向下:从系统级开始分解,确保需求不偏离用例(如航天控制系统)。
    • 自底向上:基于领域经验构建关键类,逐步抽象到子系统(如工业物联网节点)。
  • 适用场景:需持续分解验证可靠性与实时性的复杂系统(如自动驾驶子系统)。
  • 考点:递归模式解决复杂系统可扩展性问题的设计思想。

典型考题
层次化开放型架构的缺点是什么?
:破坏封装性,导致系统移植性降低。


二、嵌入式操作系统

1. 核心特性
特性 实现方式 应用场景
强实时性 优先级调度、时限任务管理 工业控制、航空航天
可剪裁性 静态编译移除未用模块 资源受限设备(IoT)
安全性 符合DO-178C等安全标准(A~E级) 汽车电子(A级系统)
确定性 静态资源分配、越界检查 医疗设备
2. 典型操作系统
  • VxWorks:高实时性,支持WindRiver Workbench开发环境。
  • 嵌入式Linux:开源可定制,适用于智能终端。
  • INTEGRITY:通过MULTI工具链认证,适用于安全攸关系统。

三、嵌入式数据库

1. 核心需求
  • 低资源占用:轻量级存储引擎(如SQLite)。
  • 高可靠性:事务ACID特性、断电保护(如eXtremeDB)。
  • 实时响应:内存数据库优化(如Redis嵌入式版)。
2. 应用场景
  • 车载系统:存储行驶数据,支持快速查询。
  • 工业传感器:实时记录环境参数。

典型考题
嵌入式数据库为何需支持ACID特性?
:确保在断电等异常场景下数据一致性与完整性。


四、嵌入式中间件

1. 定义与功能
  • 定位:介于OS与应用层之间,屏蔽底层异构性。
  • 核心功能:网络通信、内存管理、数据处理(如DDS/CORBA)。
2. 关键特性
特性 实现要求
通用性 支持多应用场景(如车载娱乐+控制)
异构性 兼容不同硬件/OS平台
QoS保障 满足实时性带宽约束(如视频流传输)
3. 典型中间件
  • 嵌入式Java中间件:跨平台移植(如Android IoT)。
  • DDS(数据分发服务):适用于分布式实时系统(如无人机集群)。

五、嵌入式系统软件开发环境

1. 开发模式
  • 交叉开发(CPD):宿主机(PC)开发 → 目标机运行。
  • 调试方式
    • 模拟器:主机模拟目标环境(低成本)。
    • JTAG仿真器:硬件级调试(高精度)。
    • 监控程序(Monitor):宿主机与目标机通信调试。
2. 开发环境架构(基于Eclipse)
层级 功能 关键组件
宿主层 基础支撑 Eclipse框架、JDK、CDT
基本工具层 交叉编译、调试、工程管理 编译器(GCC)、调试器
应用工具层 效能分析、部署维护 时间监视器、批量升级工具
驻留层 目标机代理程序(Agent) 通信代理、调试代理
3. 典型开发环境
  • GCC工具链:开源跨平台,支持多语言(C/C++/Java)。
  • WindRiver Workbench:高安全性,配套Diab编译器。
  • GreenHills MULTI:实时追踪与反向调试,代码优化效率提升20%。

典型考题
交叉开发环境中"驻留层"的作用是什么?
:在目标机运行代理程序,支持宿主机工具与目标机的通信及调试。


六、考点与考题汇总

  1. 架构模式:层次化封闭型 vs 开放型的移植性差异。
  2. 嵌入式OS安全等级:DO-178C标准(A级最高,如航空软件)。
  3. 中间件功能:DDS解决分布式实时通信问题。
  4. 开发环境核心:Eclipse框架的插件化扩展能力。
  5. 递归模式应用:自底向上构建工业物联网子系统。
相关推荐
打工的小王23 分钟前
redis(四)搭建哨兵模式:一主二从三哨兵
数据库·redis·缓存
Anarkh_Lee44 分钟前
【小白也能实现智能问数智能体】使用开源的universal-db-mcp在coze中实现问数 AskDB智能体
数据库·人工智能·ai·开源·ai编程
橘子131 小时前
MySQL用户管理(十三)
数据库·mysql
Dxy12393102161 小时前
MySQL如何加唯一索引
android·数据库·mysql
我真的是大笨蛋1 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
怣501 小时前
MySQL数据检索入门:从零开始学SELECT查询
数据库·mysql
shengli7221 小时前
机器学习与人工智能
jvm·数据库·python
2301_765703141 小时前
Python迭代器(Iterator)揭秘:for循环背后的故事
jvm·数据库·python
倔强的石头1062 小时前
关键信息基础设施的数据库选型:高可用、全链路安全与平滑替代的技术实践
数据库·安全·金仓数据库
冷崖2 小时前
消息队列-前言
中间件