admin 管理员组

文章数量: 887021


2024年1月18日发(作者:vba二维数组整行赋值)

一种嵌入式实时操作系统的性能测试平台的构建

王劲松 孙文生

北京邮电大学电信工程学院,北京 (100876)

E-mail:@

摘 要:本文提出一种基于Thread-Metric测试套件和ARM平台的RTOS性能测试平台的构建方案。该测试平台实现原理比较简洁,能有效地测量实时操作系统的运行速度等实时特性。本文以针对μC /OS II的移植和配置为例,详细阐述了平台的搭建和配置过程。

关键词:Thread-Metric,ARM,嵌入式操作系统测试平台

1. 引言

RTOS的应用中,对于其评价可以从很多角度来进行[1],如体系结构、API的丰富程度、网络支持、可靠性等。其中,实时性是RTOS评价的最重要的指标之一,实时性的优劣是用户选择操作系统的一个重要参考。评价一个操作系统的实时性应该着重考察它的哪些指标,以及如何进行测试,是本文着重讨论的问题。

本文提出了使用Thread-Metric测试套件在ARM电路板上搭建测试平台的一种方案[2] [3]。该方案没有采用昂贵的硬件设备,成本不高,能相对有效地衡量不同操作系统技术之间的相对性能。

2. RTOS简介

Thread-Metric是一个开源且免费的测试套件,同时Thread-Metric还提供了ThreadX的测试结果供使用者进行比较参考。ThreadX本身是一个非常优秀的商业化实时内核,在行业里有着许多非常成功的应用,通过与ThreadX测试结果的比较,我们可以对自己所测试的RTOS有个更加直观的了解。

2.1 Thread-Metric的测试原理

整个Thread-Metric测试套件由几个独立的测试项目组成,每个项目分别用于测试实时内核中的某一基本功能(如任务切换、中断处理、信号量处理等等)。测试的基本原理是通过计算一定周期时间长度里内核反复处理某一事务的次数,并将结果通过“printf”函数输出给PC终端获取。

Thread-Metric中的第一个测试项目为“基准测试(Basic Processing Test)”,该测试用于获取一个称之为“校准值(Calibration)”的数据,校准值的大小反映的是测试中所使用的硬件平台的能力,它的引入是为了屏蔽硬件平台对测试结果的影响,因为我们所需要评估的是RTOS的性能,而并非整个系统的性能。

除第一个测试项目(基准测试)外,在其它测试项目中,我们将会获取到一个称之为“迭代值(Iteration)”数据,迭代值的就是在一个测试周期长度里内核所处理的这一事务的次数,于是我们使用公式:

得分 = 迭代值÷校准值

即可得到实时内核在这一测试项目的得分。

-1-

2.2 Thread-Metric的文件结构

Thread-Metric测试套件全部由C语言编写,因此它适用于绝大部分实时内核,使用Thread-Metric也需要一个移植过程,不过Thread-Metric的移植非常简单,其移植过程只是一些API的重映射操作。Thread-Metric测试套件的源文件的组成如表1所示:

文件“tm_porting_layer_threadx.c”是Thread-Metric提供的一个已经完成的基于ThreadX的移植文件,它只是用来帮助我们快速的将Thread-Metric移植到其它实时内核,在我们实际利用Thread-Metric测试其它RTOS时,它是不需要使用的。

表1 Thread-Metric中的文件

Tab.1 List of each file in the Thread-Metric Suit

文件名

tm_api.h

tm_basic_processing_test.c

tm_cooperative_scheduling_test.c

tm_preemptive_scheduling_test.c

tm_interrupt_processing_test.c

tm_interrupt_preemption_processing_test.c

tm_synchronization_processing_test.c

tm_message_processing_test.c

tm_memory_allocation_test.c

tm_porting_layer.c

tm_porting_layer_threadx.c

功能描述

API声明和宏定义常量

基准测试

协同式的任务调度测试

抢占式的任务调度测试

中断处理测试

中断当中的任务抢占处理测试

任务同步处理测试

消息处理测试

内存分配测试

Thread-Metric移植相关文件

Thread-Metric移植于ThreadX内核的参考实例

2.3 Thread-Metric的使用要求

在使用Thread-Metric测试套件时,为了得到一个客观公正的测试结果,我们应当遵循Thread-Metric建议的几点要求,

一、测试周期长度应至少大于30秒。越大的测试周期长度越有利于消除调用“printf”函数输出测试结果时对于测试结果本身的影响;

二、关闭所有编译器优化选项,不允许将代码缓存在处理器的任何高速Cache中运行;

三、在移植Thread-Metric的过程中,API的重映射不能采用宏定义的方式;

四、内核的时钟节拍周期应设置为10毫秒;

3. Thread-Metric中的测试项目

当前版本的Thread-Metric总共包含8个测试项目,这些测试项目基本覆盖了实时操作系统最重要的核心功能[4]。

测试1:基准测试(Basic Processing Test)

测试1的主要目的就是获取硬件平台的性能校准值,校准值越大说明硬件平台的性能越强。在这个测试中将只创建一个运行任务。

测试2:协同式的任务调度测试(Cooperative Scheduling Test)

该测试中包含5个相同优先级的任务,各个任务在在执行过程中会先将自己的计数器加1,然后通过调有“relinquish”函数主动将CPU使用权交给下一个任务。图1是测试2的运行示意图:

-2-

图1 协同式的任务调度测试

测试3:抢占式的任务调度测试(Preemptive Scheduling Test)

该测试中包含5个由高到低不同优先级的任务,各个任务在执行过程中会将自己的计数器加1。在测试开始时,只有优先级最低的任务处于就绪,其它任务都被挂起。优先级最低的任务先唤醒优先级次低的任务被抢占,这样依次抢占下去后,最高优先级的任务获的CPU使用权后又将自己挂起,次高优先级的任务也将自己挂起,到最后优先级最低任务又获得CPU使用权,一个新的循环又开始。图2是测试3的运行示意图:

图2 抢占式的任务调度测试

测试4:中断处理测试(Interrupt Processing Test)

该测试中只包含1个任务,该任务通过调用软中断(SWI)指令的方式来连续模拟中断的发生,中断服务程序会释放一个信号量,中断返回后,任务去获取该信号量。获取成功后再次调用软中断。图4-3是测试4的运行示意图:

图3 中断处理测试

测试5:中断当中的任务抢占处理测试(Interrupt Preemption Processing Test)

该测试中包含2个优先级不同的任务,低优先级的任务通过调用软中断(SWI)指令的方式来模拟中断,中断服务程序中另外一个高优先级的任务被唤醒,中断返回时发生任务抢占。图4是测试5的运行示意图:

-3-

图4 中断当中的任务抢占处理测试

测试6:消息处理测试(Message Processing Test)

该测试包含1个任务,任务先想邮箱中发送一条消息,然后紧接着又再去邮箱中获取,并将获取的消息与发送的做对比,图5是测试6的运行示意图:

图5 消息处理测试

测试7:任务同步处理测试(Synchronization Processing Test)

该测试包含1个任务,任务通过不断获取和释放信号量的操作来模拟信号量的任务同步功能,图6是测试7的运行示意图:

图6 任务同步处理测试

测试8:内存分配测试(Memory Allocation Test)

该测试包含1个任务,任务通过不断获取和释放一个内存块来的测试内核的内存管理功能。图7是测试8的运行示意图:

图7 内存分配测试

4. 测试步骤与方法

在开始使用Thread-Metric进行测试之前,以下几个预备条件应当确保已经满足:

-4-

本文标签: 测试 任务 使用 中断

更多相关文章

Win10测试模式水印

2月前

背景:win10系统右下角显示水印,问度娘去除水印的方法,基本上有以下几种说法: 1.修改注册表current_user->desktop->

windows驱动数字签名之WHQL完整流程 | WHQL认证环境部署以及HLK测试

2月前

文章目录 第一部分:windows驱动数字签名之WHQL完整流程一、驱动数字签名背景二、驱动程序数字签名解决方案—WHQL认证1. 对开发者的影响2. WHQL认证主要作用三、申请WHQL认证的主要目的四、认证周期五、申请WHQL认证流程(

selenium自动化测试debug模式,打开浏览器

2月前

debug模式打开浏览器后,会使用浏览器的缓存进行操作 debug模式需要打开浏览器程序,以Chrome浏览器为例: 1.找到Chrome.exe文件路径 2.创建.b

显示测试模式Windows 7 内部版本7600的解决办法

2月前

问题描述:因为多种原因,一些用户在开机时桌面右下角会显示测试模式Windows 7 内部版本7600的水印信息。如下图: 原因:很多用户检查发现自己的W

几款免费的数据恢复软件测试

2月前

目录 一、前言 二、测试正文 1、Windows File Recovery (不推荐) 2、Recuva 3、Undelete360 (最轻量级&#xff0

渗透测试即时入门(一)

2月前

原文:annas-archivemd5AE7D7A4055A552F39A0E268CF613AE56 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 即时渗透

从实践中学习Kali Linux渗透测试

2月前

目录 第一章 渗透测试概述 1.1 什么是渗透测试 1.1.1 黑盒测试 1.1.2 白盒测试 1.1.3 灰盒测试 1.2 渗透测试流程 1.3 Kali Linux系统概述 1.3.1 为什么使用Kali Linux

英睿达固态硬盘测试软件,高速读写,电竞必备 英睿达P5固态硬盘评测

2月前

原标题:高速读写,电竞必备 英睿达P5固态硬盘评测 硬盘作为电脑必不可少的配件之一,其性能往往在很大程度上影响电脑的办公体验。而如今伴随着人们对电脑性能要求的不断提高&

Metasploit渗透测试框架基础

2月前

Metasploit 简介: Metaspolit是一个渗透测试框架,属于框架,是模块化组成的,是一个免费的可下的框架,通过它可以很容易的获取、开发并

软件测试理论知识

2月前

一、测试基础 知识点1、软件生命周期 阶段    主要人员    主要任务    输出文档 计划    项目经理    指定整个项目的计划(目标、人员、预算)    项目计划 需求分析    产

软件测试理论知识(入门篇)_软件测试入门,2024年软件测试春招面试经历

2月前

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长&a

面试题总结(测试理论)

2月前

测试理论 BS架构和CS架构区别 BS架构需要重点考虑系统在不同的浏览器中的兼容性问题(浏览器的内核不同)CS 架构需要考虑系统在不同平台的安装、卸载、升级HTTP协议 超文本传输协议,应用层协议,由请求与响应组成。 常见的请求方式

软件测试面试题整理

2月前

软件测试面试题整理 一般面试官都会问到你是怎样进入测试的,如何评判你是一个好的测试员,你可这样说, 主要工作:1确定测试范围,制

安全测试流程

2月前

1.安全测试在做什么?扫描?在很多人的眼中,做安全的就是整天拿个工具在哪里做扫描操作,使用各种不同的工具做扫描。是的,扫描是安全测

获取各个浏览器的版本信息及名称(已测试)

2月前

最近有个需求需要在低版本浏览器中对用户进行提示(应用系统支持浏览器版本有要求),所以整理了一下目前主流浏览器各版本的获取方式,以下是具体代码&#

【渗透测试】火狐浏览器必备插件_渗透测试浏览器插件

2月前

目录 Wappalyzer FindSomething X-Forwarded-For Header UA Switcher and Manage superSearchPlus 代理服务器管理工具 Proxy Switchy

渗透测试window7,加强木马防范意识

1月前

渗透测试window7,加强木马防范意识 通过钓鱼网站给win7系统植入后门并控制的流程 一、知识点总结: 1 生成后门程序 2 通过钓鱼方式植入木马靶机(社工) 3 使用Metasploit配置监控并控制靶机 4 控制靶机我们能做什么 二

windows渗透测试

1月前

假设您是一名网络安全工程师,需要对某公司的公司进行黑盒测试,分析windows操作系统有什么漏洞并提出解决方案。 1.通过本地PC中渗透测试平台Kali2.0对服务器场景Windows2020进

登录界面-渗透测试

28天前

由图展开思路: 登陆页面的渗透测试 首先 在进入登陆界面时,一般都是先用万能密码什么的测下输入框有没有注入(现在很少见了)。如果没有&#xff0

Js判断linux还是windows,js获取客户端操作系统类型的方法【测试可用】

16天前

本文实例讲述了js获取客户端操作系统类型的方法。分享给大家供大家参考,具体如下: p> "http:www.w3TRxhtml1DTDxhtml1-transitio

发表评论

全部评论 0
暂无评论