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

3.1 实时系统

实时系统的实例包括数字控制、指挥控制、信号处理、电信系统等,这些系统每天都在为人们提供重要的服务。每一个实时系统必须及时地完成任务并提交服务。

实时应用有两类:硬实时类应用和软实时类应用。图3-1展示了硬实时和软实时两类应用的执行时间(X轴)与相应收益(Y轴)的变化关系。

如果一个应用在最终期限前未完成,就会直接产生负向收益,从而引起一系列不可接受的后果,我们称这类应用为硬实时类应用,或者称为强实时应用。硬实时类应用对执行的最终期限有严格的要求,必须100%保证在最终期限前完成并提交服务,不能有任何例外。

图3-1 应用收益与执行时间的关系

如果一个应用的执行时间即使超过了最终期限,也只是降低收益,并不会产生其他不良后果,我们就称这种应用为软实时类应用,或者称为弱实时应用。软实时类应用在大部分时间里,都可以在最终期限内完成并提交服务,但是在某些情况下偶尔也被允许超过这个最终期限。

显然,如果要让操作系统支持硬实时类应用的运行,那么操作系统必须采用一系列诸如最终期限调度之类的、具有确定性低时延的技术,以确保硬实时业务的每一次任务请求,都在确定的时间范围内被响应,并且在确定的时间范围内被执行完成。

硬实时系统按照执行的硬件环境又分为单核与多核两类。

在单核领域中,主要研究的内容如下。

(1)硬实时系统可调度性分析问题。

● 最坏执行时间(Worst-Case Execution Time,WCET)估算。

● 最坏响应时间(Worst-Case Response Time,WCRT)估算。

(2)硬实时调度算法变种及优化问题。

● 周期性调度算法(Periodic Scheduling Algorithms)的变种和优化问题,包括调度顺序优化、负载均衡、优先级分配和实时资源分配。

● 最早截止时间优先(Earliest Deadline First,EDF)调度算法的变种和优化问题,包括实时性分析、调度延迟的减少、优先级计算和资源管理。

● 最低松弛度优先(Least Laxity First,LLF)调度算法的变种和优化问题,包括松弛度计算、任务截止时间的分配和动态优先级更新。

● 静态优先级调度算法的变种和优化问题,包括优先级分配策略、优先级继承和对优先级反转的处理。

● 动态优先级调度算法的变种和优化问题,包括优先级更新策略、优先级提升机制和优先级下降机制。

● 资源共享和互斥调度算法的变种和优化问题,包括资源分配策略、死锁避免机制和互斥访问机制。

(3)资源竞争引起的阻塞时序问题。

● 资源分配策略。

● 死锁避免机制和互斥访问机制。

目前,有关单核场景领域的理论研究已经基本成熟,并且在产业界逐步有技术和工具落地的案例。

在多核领域中,主要研究的内容如下。

(1)从简单任务到多任务协同的调度问题。

(2)同构/异构场景的资源共享问题。

(3)内存建模及行为约束问题。

(4)多核场景下的核间通信、众核调度等问题。

在多核领域中,调度分为局部(Partition)调度和全局(Global)调度。局部调度:由于任务不会产生迁移,因此系统的确定性和可预测性相对于全局调度的确定性和可预测性更容易评估。全局调度:从表面上看允许任务在核间迁移,通过使系统负载更加平衡来提升系统的实时性能,但是在最坏的情况下反而会导致非常低的系统性能,从而使系统的可预测性非常差。

一个例子是低优先级的任务持有高优先级任务的资源,导致高优先级的任务无法及时运行的现象,我们称为优先级逆转。此类现象会导致高优先级任务无法及时执行,从而增加响应时间,我们说发生了Dhall效应。

openEuler结合业界基础理论研究和实际工程实践,按优先级提炼并实现了多项确定性低时延的技术。本章将分别从CPU调度、线程通信、竞争资源管理、工程实现等方向展开介绍openEuler的几项实时系统技术:多级调度框架、资源竞争协议、异步通信、临界区优化。