01 嵌入式系统软件组成与实时操作系统
考频:★★★★★(高频,每年必考)
一、嵌入式软件层次结构
嵌入式软件从底层到上层,分为以下几层(从低到高):
┌──────────────────────────────────┐
│ 应用程序(Application) │ ← 最上层,用户直接使用
├──────────────────────────────────┤
│ 文件系统 / 网络协议栈 / GUI 中间件 │
├──────────────────────────────────┤
│ 操作系统(OS Kernel) │
├──────────────────────────────────┤
│ 驱动程序(Device Driver) │
├──────────────────────────────────┤
│ 引导程序(Bootloader / HAL) │ ← 最底层,上电第一个运行
└──────────────────────────────────┘
硬件(Hardware)
[!TIP] 填空题记忆口诀:引(引导程序)→ 驱(驱动程序)→ 操(操作系统)→ 文/网/图 → 应(应用程序)
填空题标准答案
嵌入式软件通常由以下部分组成: 1. 引导加载程序(Bootloader) 2. 外设驱动程序(Device Driver) 3. 操作系统(OS) 4. 文件系统 / 网络协议栈 / GUI 5. 应用程序
二、实时系统特征
实时系统必须具备的特征
| 特征 | 说明 |
|---|---|
| 异步 I/O | 能响应随机发生的外部事件 |
| 中断处理 | 快速响应硬件中断 |
| 优先级调度 | 高优先级任务优先执行 |
| 时间确定性 | 响应时间可预测,有时间保证 |
[!CAUTION] 时间片轮转调度不是实时 OS 必须具备的特征!
考题中如果问"实时操作系统应具有哪些特征",选项里有"时间片轮转调度"就不选它(选 D 是陷阱)。 时间片轮转是分时系统的特征,实时系统强调的是优先级抢占,而不是平等地分配时间片。
三、实时时限:相对时限 vs 绝对时限
考频:★★★★(填空常考)
| 时限类型 | 定义 | 举例 |
|---|---|---|
| 相对时限(Relative Deadline) | 从任务请求发出到必须响应完成的最大允许时间段 | "必须在 10ms 内响应" |
| 绝对时限(Absolute Deadline) | 任务必须完成的具体截止时刻(某个固定时间点) | "必须在 14:30:00.500 前完成" |
记忆方法: - 相对 = 一段时间(时间段,从现在开始算) - 绝对 = 一个时刻(时间点,某个固定时间)
四、硬实时 vs 软实时
考频:★★★★★(选择题必考)
定义对比
| 类型 | 定义 | 后果 |
|---|---|---|
| 硬实时(Hard Real-Time) | 必须严格在时限内完成,不允许任何超时 | 错过时限 = 系统失败(可能造成灾难) |
| 软实时(Soft Real-Time) | 尽量在时限内完成,偶尔超时可以容忍 | 错过时限 = 性能下降,但系统不会崩溃 |
常见系统分类
| 系统名称 | 实时类型 | 备注 |
|---|---|---|
| VxWorks | 硬实时 | 工业级 RTOS,航空航天常用 |
| QNX | 硬实时 | 微内核架构,车载系统常用 |
| μC/OS-II | 硬实时 | 嵌入式教学标准 RTOS |
| Windows Embedded | 软实时 | 微软嵌入式版本 |
| 嵌入式 Linux | 软实时 | 通用 Linux 嵌入式版 |
| μCLinux | 软实时 | 无 MMU 的 Linux,注意:是软实时! |
[!WARNING] 高频陷阱:μCLinux 是软实时,不是硬实时! 考题中常把 μCLinux 混入"硬实时OS"选项,要选三个硬实时的话,答案是 VxWorks、QNX、μC/OS-II。
五、实时系统的重要性质:可预测性
[!NOTE] 实时系统最重要的性质是可预测性(Predictability)。
具体含义:RTOS 能对任务的响应时间和执行时间进行准确判断,确保在规定时间内完成任务。
填空答案:实时操作系统最重要的性质是可预测性,即能对任务的响应时间(有时也说"执行时间")进行判断。
六、操作系统内核结构
考频:★★★★(单内核/微内核对比必考)
单内核(宏内核,Monolithic Kernel)
所有操作系统功能都运行在同一个内核空间中,功能紧密耦合。
代表系统:Linux、Unix、Windows CE(WinCE)、Android、DOS
| 优点 | 缺点 |
|---|---|
| 运行效率高,性能好 | 内核体积大,占用内存多 |
| 模块间通信开销小 | 可靠性低(一个模块出错影响全局) |
| 不易扩展和裁剪 |
微内核(Microkernel)
内核只保留最基本功能(调度、IPC、内存管理),其余功能以服务进程方式运行在用户空间。
代表系统:QNX、L4、Mach
| 优点 | 缺点 |
|---|---|
| 内核体积小,占用内存少 | 功能切换(进程间通信)开销大 |
| 可靠性高,灵活易扩展 | 性能不如单内核 |
| 便于移植和定制 |
[!CAUTION] 两个常见陷阱:
WinCE 是单内核,不是微内核!考题里经常把 WinCE 放在微内核选项里迷惑你。
单内核的缺点是"内存大、可靠性低、不易扩展","内核切换开销太大"是微内核的缺点,不是单内核的缺点。
七、iOS 与 Unix 的关系
[!NOTE] iOS 基于 UNIX。
苹果的 macOS 和 iOS 底层都使用 XNU 内核,XNU 基于 Mach 微内核 + BSD Unix,所以说 iOS 是 UNIX 系的操作系统。
填空/选择答案:iOS 基于 UNIX(或说"iOS的底层内核基于Unix")。
本章小结
实时OS特征:异步I/O + 中断处理 + 优先级调度 + 时间确定性
(时间片轮转 ≠ 实时OS特征!)
硬实时三剑客:VxWorks + QNX + μC/OS-II
软实时:嵌入式Linux + μCLinux + Windows Embedded
内核结构:
单内核 → Linux/WinCE/Android(性能好,可靠性差)
微内核 → QNX/L4(灵活可靠,切换开销大)
真题演练
以下是NCRE三级嵌入式真题中与本节相关的典型考题:
1. IEEE的实时UNIX分委会认为实时操作系统应该具备若干特征,下面哪一项不是实时操作系统必须具有的特征?( )
- A)具有异步I/O和中断处理能力
- B)任务切换时间和中断延迟时间确定
- C)优先级中断和调度
- D)轮转调度
答案解析
答:D IEEE的实时UNIX分委会认为实时操作系统应具备7个特征:具有异步I/O和中断处理能力;任务切换时间和中断延迟时间确定;优先级中断和调度;抢占式调度;内存锁定;连续文件;同步。轮转调度不是实时操作系统的必备特征。
2. 一般按照对外部事件的响应时间快慢,将嵌入式操作系统分成强实时型和普通实时型。以下均为强实时嵌入式操作系统的是( )。
- A)VxWorks,pSOS,uC/OS-II
- B)VxWorks,pSOS,Windows Embedded
- C)pSOS,uC/OS-II,uCLinux
- D)pSOS,Windows Embedded,Symbian
答案解析
答:A 强实时嵌入式操作系统有VxWorks、pSOS、uC/OS-II。Windows Embedded、uCLinux和Symbian属于普通实时(软实时)系统。
3. 以下关于微内核操作系统的叙述中,错误的是( )。
- A)内核小巧,传统操作系统内核中的许多部分都被移出内核
- B)接口一致,所有进程请求使用统一接口,进程不区分内核模式和用户模式服务
- C)各个功能模块之间松散耦合,只完成服务功能,系统管理功能交给一个或多个特权服务程序
- D)微内核功能扩充方便,而且各个功能之间的切换而引起的开销比较小
答案解析
答:D 微内核操作系统将传统内核中的许多部分移出内核,接口一致,模块间松散耦合。微内核功能扩充确实方便,但各个功能之间的切换开销比较大(而非比较小),这是微内核相对于单内核的主要缺点。
4. 【填空题】响应时间(Response Time)是计算机从识别一个外部事件到做出响应的时间。在RTOS运行过程中响应时间是重要指标之一,其具体指标包括:_延迟时间和_切换时间。
答案
答:中断;任务 RTOS的响应时间具体指标包括中断延迟时间(从中断发生到开始执行中断服务程序的时间)和任务切换时间(从一个任务切换到另一个任务所需的时间)。这两个指标是衡量RTOS实时性能的关键参数。