RTOS,其基本概念、定义、性质、定理
RTOS 的基本概念、定义、性质和一些不成文但广为接受的“定理”或重要原则。这就像学习一门新的科学,掌握了基本公理和定理,才能更好地理解和应用。
一、 基本概念与定义 (Basic Concepts and Definitions)
- 任务 (Task / Thread):
- 定义: RTOS 管理和调度的基本工作单元。一个任务通常是程序中一个独立的、顺序执行的流程。你可以把它想象成一个拥有自己执行上下文(CPU寄存器状态、程序计数器、栈空间)的小程序。
- 与进程的区别: 在通用操作系统中,进程是资源分配的基本单位,线程是CPU调度的基本单位。在很多RTOS中,“任务”的概念更接近于通用操作系统中的“线程”,它们通常共享同一个地址空间(即共享全局变量),从而减少了任务间切换的开销。但也有些RTOS支持类似进程的概念,拥有独立的地址空间(如QNX的进程)。为简洁起见,我们常说的RTOS任务多指轻量级的线程。
- 调度器 (Scheduler):
- 定义: RTOS 的核心组件,负责决定在任何给定时刻哪个任务应该获得CPU的使用权。
- 目标: 确保满足系统中所有任务(尤其是高优先级实时任务)的时间约束。
- 优先级 (Priority):
- 定义: 分配给每个任务的一个数值,用于表示任务的相对重要性或紧急程度。调度器通常会优先执行具有较高优先级的就绪任务。
- 静态优先级 vs. 动态优先级:
- 静态优先级: 任务创建时分配,运行期间通常不变。
- 动态优先级: 任务的优先级可以在运行期间根据特定条件(如等待时间过长)进行调整。
- 抢占 (Preemption):
- 定义: 当一个更高优先级的任务变为就绪态时,调度器可以立即中断(抢占)当前正在运行的较低优先级任务,并将CPU分配给高优先级任务。
- 非抢占式调度 (Non-preemptive / Cooperative): 任务一旦获得CPU,就会一直运行直到它主动放弃CPU(例如,任务完成、等待资源、或调用特定的让出CPU的API)。这种方式简单,但实时性难以保证。
- 抢占式调度 (Preemptive)&#x