多核嵌入式实时操作系统测试方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

龙源期刊网多核嵌入式实时操作系统测试方法作者:沈旻园傅俊彦来源:《数字技术与应用》2017年第02期摘要:嵌入式实时操作系统测试结果是嵌入式应用软件的重要参考依据,而对多核嵌入式实时操作系统需要考虑多核的因素对其功能、性能及安全性进行测试。评估多核嵌入式实时操作系统的时间性能,设计了不同的测试方法,考虑多核情况下核间同步时间。针对某国产多核嵌入式实时操作系统的测试方法,在测试项目实施过程中方法可行。关键词:多核嵌入式操作系统;时间性能;测试方法中图分类号:TP316.2文献标识码:A文章编号:1007-9416(2017)02-0184-04在单核操作系统中,内核负责任务管理、资源管理、中断管理、事件处理及通信管理等工作。在多核操作系统中,这些功能同样具有,除此之外,还包括核间通信与同步、核间任务调度管理、资源共享及设备管理等部分。性能方面主要考虑任务切换时间、中断响应时间、运算性能、信号量延迟时间、内存读写性能等常规的嵌入式实时操作系统性能以外,针对多核还需要检测核间同步时间,针对图形的操作系统检测图形的运行性能,针对文件系统进行文件读写性能。以下是针对某国产多核嵌入式实时操作系统的测试方法。1功能测试针对多核嵌入式实时操作系统以下几方面的功能进行测试:多核管理功能:操作系统能在系统初始化阶段,完成引导可用的所有处理器核。支持处理器集合操作,对处理器核能够进行启停状态查询的功能进行测试,通过对已加载被测系统的目标机上电,在上电完成后监测所有处理器核的启停状态,验证多核管理功能的正确性。多核同步功能:提供自旋锁、原子操作、内存屏障等机制实现多个处理器核间数据可重入的功能进行测试,通过运行测试程序,构建多个任务,对比使用和不使用自旋锁的方式访问共享的临界资源,监测这些任务对临界资源访问的正确性(符合数据的可重入),验证多核同步功能的正确性;通过在使用内存屏障的情况下,多任务并发访问同一全局变量,通过对比编译之后的汇编代码及运行结果,验证多核环境下内存屏障能够保证数据运算顺序的正确性;通过运行测试程序,对启用原子操作和不启用原子操作时程序运行结果进行对比,验证多核环境下启用原子操作能够保证运行结果的正确性。多核调度功能:支持多核并行运行,支持核心可抢占、提供基于优先级抢占调度、时间片轮转调度,保证任务不会有饿死的情况;采用统一的任务队列管理,基于高效的核间中断机制实现多核任务统一调度,赋予多核环境中各CPU调度本地就绪队列的能力;支持处理器亲和性,提供任务和中断绑定到指定处理器核的编程接口,用户可以根据应用的需要把任务绑定到龙源期刊网指定的处理器核上运行的功能进行测试。通过运行测试程序,测试多种优先级任务组合情况下,同时运行的环境下监测任务调度情况,查看系统中各个CPU的负载情况,验证多核调度功能的正确性。设置了如下几种优先级任务组合情况,查看是否依据任务优先级进行调度,假设任务优先级由0~255个级别。运行4个任务,优先级相同(250),不指定运行在哪个cpu上,观察4个任务在cpu上的分布情况,之后运行4个新任务,优先级逐一提高(251、252、253、254),观察任务抢占调度。是否高优先级任务抢占低优先级任务。四个核上运行任务为(251、252、253、254),待这4个任务完成之后再运行优先级为250的4个任务。运行4个任务,优先级各不相同(250、251、252、253),不指定运行在哪个cpu上,观察4个任务在cpu上的分布,之后运行4个新任务,优先级逐一提高(251、252、253、254),观察任务抢占调度。是否高优先级任务抢占低优先级任务。251的抢250、252的抢251、253的抢251、254的抢252,此时四个核上运行的任务应该为254、253、253、252,待任务运行完之后再按顺序调度252、251、251、250的任务。运行4个任务,优先级相同(250),不指定运行在哪个cpu上,观察4个任务在cpu上的分布,之后运行4个新任务,优先级逐一提高(251、252、253、254),观察任务抢占调度;之后动态调整优先级252任务的优先级到249,观察任务抢占调度。是否高优先级任务抢占低优先级任务。动态调整优先级252任务的优先级到249后,252任务运行的核被优先级为250的任务抢占。运行4个任务,优先级各不相同(250、251、252、253),指定cpu(对应顺序0、1、2、3),观察4个任务在cpu上的分布。是否每个任务运行在指定的核上。运行4个任务,优先级各不相同(250、251、252、253),指定cpu(对应顺序0、1、2、3),观察4个任务在cpu上的分布;之后运行4个新任务,不指定CPU,优先级254,观察任务抢占调度。是否高优先级任务抢占低优先级任务。四个核上运行的任务应该均为254,待任务运行完之后再按指定的CPU调度253、252、251、250的任务。运行4个任务,优先级各不相同(250、251、252、253),指定cpu(对应顺序0、1、2、3),观察4个任务在cpu上的分布;之后运行1个新任务,优先级252,指定CPU0(对应优先级250的任务),观察任务抢占调度。是否高优先级任务抢占低优先级任务。优先级为252的任务抢占优先级250的任务运行在CPU0上,待任务运行完之后CPU0再运行优先级250的任务。运行4个任务,优先级各不相同(245、246、247、248),不指定cpu,观察4个任务在cpu上的分布,之后运行4个新任务,优先级为250、251、252、253,指定CPU(对应顺序0、1、2、3),观察任务抢占调度。是否高优先级任务抢占低优先级任务。优先级为250、龙源期刊网、252、253的任务运行在指定的核上,待运行完毕后再运行优先级245、246、247、248的任务。运行4个任务,优先级各不相同(245、246、247、248),指定CPU(对应顺序0、1、2、3),观察4个任务在CPU上的分布,之后运行4个新任务,优先级为250、251、252、253,指定CPU(对应顺序3、2、1、0),观察任务抢占调度。是否按照指定的核进行任务抢占,250抢248运行在CPU3上,251抢247运行在CPU2上,252抢246运行在CPU1上,253抢245运行在CPU0上,待新任务运行完毕后,优先级245、246、247、248的任务再运行在指定的核上。运行2个任务,优先级各不相同(250、251),指定CPU0和1,观察2个任务在CPU上的分布;之后运行1个新任务,优先级252,指定CPU0(对应优先级250的任务),观察任务抢占调度。高优先级任务抢占低优先级任务。优先级252的任务抢占CPU0,待运行完毕后CPU0再运行优先级250的任务。运行2个任务,优先级各不相同(250、251),指定CPU0和1,观察2个任务在CPU上的分布;之后运行1个新任务,优先级252,指定CPU0(对应优先级250的任务),观察任务抢占调度;之后取消优先级250任务的CPU绑定,观察任务抢占调度。高优先级任务抢占低优先级任务。优先级252的任务抢占CPU0,取消优先级250任务的CPU绑定后,优先级250的任务选择空闲CPU继续运行。2性能测试2.1任务切换时间任务切换时间,即CPU的控制权由运行任务主动转移到另外一个就绪任务时所花费的时间。任务切换时间包括保存当前运行任务上下文的时间、选择下一个任务的调度时间以及将要运行任务的上下文恢复时间。为了测试任务切换时间,需要制造任务之间的切换事件。在非抢占情况下,制造的测试场景是让当前正在执行的任务激活另一个任务,然后自身挂起,那么,被激活的任务将处于就绪状态,从而引起调度。切换过程包含了一系列的操作,如当前任务上下文的保存、新任务上下文的恢复等,这一过程所需要的时间开销就是任务切换时间。设当前正在运行的任务为TASK[i],将要运行的新任务为TASK[i+I]。用T1表示新任务TASK[i+I]的激活时刻,T2表示新任务TASK[i+I]表示新任务开始运行的时刻,可以用T2.T1来近似地表示两个任务之间的切换时间。测试用例设计,构建my_test_performance工程,通过在任务一中调用pthread_suspend(此处任务调度函数为Posic通用接口)挂起任务二,之后调用pthread_resume恢复任务二的执龙源期刊网行,插桩获取从调用pthread_resume到任务二开始执行之间的时间,测试多核环境下的任务切换时间。2.2任务抢占时间任务抢占时间,即系统将控制权从低优先级任务转移到高优先级任务所花费的时间,它包括识别引起高优先级任务就绪的事件,比较两个任务的优先级,最后进行任务的切换。构建my_test_performance工程,通过在任务一中调用pthread_suspend挂起任务二,之后调用pthread_resume恢复任务二的执行,插桩获取从调用pthread_resume到任务二开始执行之间的时间,测试多核环境下的任务响应时间。2.3中断响应时间中断响应时间,即从中断产生到开始执行中断处理程序的第一条指令之间的时间间隔。主要由系统锁中断时间和中断执行准备时间组成。系统中断是一种重要的异步事件,使用中断的目的在于提高系统的效率。避免CPU对某些事件的轮询,占用资源。在中断驱动的系统中,CPU运行正常执行程序,当输入输出设备需要服务时,输入输出设备会通过中断的方式通知CPU,CPU通过中断服务程序对其作出快速的反应。测试时制造场景IntrResp_test工程。安装用户自定义异常处理程序,之后触发中断,通过sys_timestamp获取从中断触发时刻到进入异常处理程序所需时间,得到多核环境下的中断响应时间。多次测试取最大值。2.4运算性能多核设定不同的参与计算的CPU核数进行各种典型计算,比对消耗的运算时间,测试多核环境下CPU计算性能。PI运算、n皇后算法、Fibonacci数列算法。此处同时还移植Linux平台测试工具CPU2006,在操作系统上运行。获取bzip、specrand、libqua、hmmer等运算处理时间。2.5信号量延迟时间信号量延迟时间,即一个任务释放信号量到另一个任务等待信号量的任务获得信号量的时间间隔。当无任务等待信号量时,信号量延迟即为其释放操作和获取操作所需时间。当信号量的等待队列上有阻塞等待的任务时,信号量延迟时间包含从等待队列中解除阻塞任务,到该任务被调度执行的时间间隔。龙源期刊网工程,测试多核环境下的核间同步时间。运行my_test_performance工程。通过启动两个优先级相同任务,任务1调用spin_lock关任务抢占再spin_unlock开抢占,任务2也调用spin_lock关任务抢占,使用TestbedRtInsight工具插桩获取从任务1调用spin_unlock开抢占到任务2spin_lock关任务抢占之间的时间,测试多核环境下的核间同步时间。多次测试取最大值。2.7内存读写速度程序代码按预先分配好的地址空间存放在ROM中,不可能重新分配地址,程序的最终加载地址必须生成程序时重新分配,由于数据存储在RAM中,系统要分别对代码和数据定位,同时,为了节省昂贵的RAM,需要确定ROM中的只读数据和可变数据,大量的只读数据不用传到RAM中。嵌入式系统存储管理不仅仅包括RAM(片内RAM,SRAM)管理,还包括ROM(MASK-ROM、FLASH)管理及虚拟内存管理(仅对含有MMU的MCU/CPU)。本文不讨论虚拟内存管理。嵌入式系统的内存管理可以细分为:全局内存管理:任务共享数据管理及设备驱动的内存管理。虚拟内存管理:主要用于需要大内存并且FLASH大

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功