openEuler操作系统核心技术与行业应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 多级调度框架

传统的进程/线程调度模型,在有些对时延有严苛要求的实时系统上不能满足需求。例如,在周期极短的时间范围内,业务要求限时完成n个任务的执行,除要求业务本身的执行时间极短以外,操作系统调度这n个任务的时间也被要求尽量短。为了满足这些要求,需要降低操作系统的系统执行底噪(额外的开销和干扰)。

操作系统传统的进程/线程调度模型在任务切换时需要执行完整的上下文保存、切换、恢复等动作,在此过程中涉及对寄存器的保存和恢复,由于寄存器与CPU架构强相关,不同架构保护和恢复的执行时间不同且时长不可控,因此,在部分极限场景下,操作系统的系统消耗时间的占比甚至比业务执行时间的还要大。

为此,openEuler提供了多级调度框架,实现多种调度模型共存,业务可根据需要进行调度模型的选择。

● 相比于传统的进程/线程调度模型更为灵活,可移植性更好。

● 新增的协程等轻量级调度模型切换更快,调度时间占比更小。

对于轻量级硬实时业务,选择协程等轻量级调度模型来进行调度,可以将极短的业务周期的大部分份额让位给用户业务,留出余量让业务分配得更加容易,并且留出的余量也可以被用来应对最坏情况时的时延抖动,而且共栈后的线程模型还能避免资源竞争引起的睡眠等待。下面的章节会介绍共栈的SRP资源竞争协议,这类技术组合可以更为合理地调度用户的实时业务,并且有更低的系统消耗。