流程概述
OVERVIEW
内核执行流程不是每次都完整经历一次任务切换,而是根据事件类型、当前执行环境和调度结果,选择相应的处理路径。
对实时操作系统而言,事件处理与任务切换是两个相关但不同的过程。 中断可以完成必要的事件处理后返回原执行路径;当系统条件要求改变运行任务时, 内核才需要通过相应的上下文管理路径完成执行权转移。
事件入口与内核处理
EVENT ENTRY & KERNEL PROCESSING
内核相关处理可以由多种事件引起,但不同入口并不必然采用完全相同的执行路径。 理解入口差异,是分析调度行为和上下文切换成本的前提。
硬件中断入口
处理器响应中断后进入相应的中断处理路径。中断服务程序执行必要操作, 并按照内核的中断管理规则处理退出及可能涉及的调度。
系统 API 调用
任务通过内核 API 请求延时、同步、通信或其他服务。 如果调用改变了任务状态或影响了可运行任务集合,系统后续执行可能受到调度规则影响。
时间与任务状态变化
系统时钟、等待条件满足或任务状态更新,可能使任务进入就绪状态, 但任务变为就绪并不意味着处理器必然立即切换到该任务。
执行路径与分支
EXECUTION PATH & DECISION BRANCHES
以下流程用于表达内核控制逻辑的概念关系。 具体入口、状态保存时机和调度实现,应结合对应版本的源码及处理器执行机制理解。
事件或内核请求发生
例如硬件中断、系统 API 调用、时间事件或任务状态变化。
EVENT / REQUEST进入相应处理路径
根据事件来源和当前执行环境,进入中断处理、内核服务或相关控制逻辑。
ENTRY / PROCESSING更新状态并进行必要的调度判定
检查任务状态及相关调度条件,确定是否需要改变后续执行安排。
STATE UPDATE / SCHEDULING是否需要更换运行任务?
根据实际调度结果选择继续原执行路径,或进入任务上下文切换路径。
EXECUTION DECISION继续原执行路径
如果无需更换运行任务,则按照对应的返回路径继续当前任务或完成中断处理。
保存与恢复上下文
按照内核实现保存必要的当前执行状态,选定目标任务,并恢复目标任务所需的上下文。
上下文保存与恢复
CONTEXT SAVE & RESTORE
上下文切换的核心,是让处理器能够从一个任务的执行状态转移到另一个任务, 并在适当的时候继续原任务此前尚未完成的执行过程。
保存当前执行状态
根据具体切换入口和处理器约定,保存恢复原任务所需的寄存器、栈指针或其他上下文信息。 具体保存集合由实现决定。
确定目标执行主体
根据调度结果选择后续运行的任务或相应执行路径。 调度决策与底层寄存器恢复属于相互关联但职责不同的环节。
恢复目标上下文
恢复目标执行主体继续运行所需的状态,并通过相应返回或切换机制继续执行。 恢复过程必须符合具体处理器和编译器的约定。
执行时延与路径分析
LATENCY & PATH ANALYSIS
分析内核实时性能时,应区分中断响应、调度判定、上下文切换和任务开始执行等不同时间区间。 不同指标对应不同的起止事件,不能直接视为同一个延迟值。
中断响应时间
从约定的中断请求或触发时刻,到系统开始执行相应中断处理代码之间的时间。 测量时需要明确中断屏蔽、当前指令和优先级等条件。
调度判定开销
内核完成必要状态处理、检查调度条件并形成调度结果所消耗的时间。 其范围应由实际测试方法明确界定。
上下文切换开销
完成必要的上下文保存、目标状态恢复及相关切换操作的时间。 测量结果取决于所采用的入口、路径和测试边界。
对具体实时性结论,应结合测量方法、目标芯片、编译配置及最坏情况分析结果, 而不是仅根据架构图估算。
进一步阅读
RELATED ARCHITECTURE DOCUMENTATION
如果需要从不同层次理解执行流程,可以继续查看调度决策、中断控制与任务管理的相关文档。
调度器架构
理解任务选择、调度策略与运行状态之间的关系。
中断架构
理解中断入口、嵌套处理与中断返回对执行路径的影响。
任务管理
理解任务状态、上下文组织及任务生命周期。