论文部分内容阅读
与非实时系统不同,实时系统的正确性不仅要求输出结果在逻辑上正确,而且要求输出结果必须在规定的时间范围内产生。时间对于实时系统具有至关重要的意义。分析实时程序最差情况执行时间(Worst-Case Execution Time,WCET)的目的是,在程序或者程序片段投入使用之前获得其最差情况的执行时间估值。事先获知任务的WCET估值是实时系统调度及可调度性分析的前提,也是检查实时系统的性能是否满足要求的依据。获得WCET估值的常用方法是静态分析方法。静态分析方法在分析处理器特性的基础上,计算执行程序代码所占用的处理器时间上限(upper bound)。WCET分析要求安全和尽可能精确。精确的WCET估值能够节省资源。为了得到精确的WCET估值,需要获得针对WCET分析的程序流信息,例如循环的迭代范围。自动分析程序的流信息是自动分析程序WCET的关键。论文针对WCET分析方法展开了深入研究,重点研究了程序流信息的自动分析方法,包括:分析程序变量取值范围的方法和获得针对WCET分析的程序流信息的方法;基于程序模式(mode)的WCET分析方法。程序轨迹是程序的一个节点序列。当输入参数值在一定范围内变化时,程序可沿固定的轨迹执行,该轨迹对应程序的一个模式。在每个程序模式下,我们可以计算出一个WCET值。如果事先得知程序按照哪个模式运行,那么根据此模式计算的WCET值比不区分模式所计算的WCET值更精确。本文研究了自动分析程序模式的方法以及基于模式的WCET分析方法;面向对象程序的WCET分析方法。用面向对象技术进行分析、设计和编码是实时系统领域的发展趋势,但面向对象多态性却使程序的WCET分析难以进行。本文研究了具有多态特征的面向对象程序的WCET分析方法;实时系统测试中修正插装断言引起的程序时间变化的方法。为了充分测试实时程序,需要对被测程序进行插装以便获知程序的内部状态。然而,程序插装会使原有程序的时间行为发生改变。本文研究了精确计算插装断言的执行时间以及修正程序测试时间变化的方法。论文的主要创新点包括:1.系统地提出了一个基于抽象解释和通用单调数据流框架的分析程序变量取值范围的方法。该方法不仅能够保证分析的正确性,而且能够提高分析的迭代速度。在程序变量取值范围分析的基础上,提出了自动计算用于WCET分析的程序流信息的方法,该方法用于计算循环迭代范围、循环中路径和基本块的迭代范围、标识不可行路径。该方法为精确的WCET分析提供了保证。2.通过使用程序切片技术和面向路径的测试数据生成技术,提出了一种自动确定程序模式的方法。针对现代RISC处理器,提出了自动计算程序模式的WCET的方法;针对CISC处理器,提出了一种生成程序带条件的WCET符号表达式的方法。3.通过把UMI_设计信息用于程序的WCET分析,提出了一个解决面向对象程序的多态性所导致的不确定性问题的方法。在要求说明关联角色多重性的基础上,通过建立关联关系到其程序表示的对应关系,计算了多态循环的迭代范围,确定了虚类函数调用对应的各个具体类调用,从而能够自动计算具有多态特征的面向对象程序的WCET。4.设计并实现了WCET分析的工具原型WCETAnalyzer。该工具能够自动分析C/C++程序针对WCET分析的程序流信息和程序模式,确定多态循环的迭代范围以及其中虚类函数调用和具体类调用的对应关系,并根据用户要求计算一个程序模块或者整个程序的WCET。5.利用WCET分析技术和原型工具WCETAnalyzer,提出了一个自动计算插装前后程序时间的变化,并根据变化的时间修正程序测试时间的方法。实验结果表明,本文的方法提高了WCET、分析的精度,扩大了WCET分析的适用范围。由于这些方法是自动的,因此它们具有良好的工业应用前景。