实时非实时系统对比实验

网友投稿 857 2022-05-28

实时与非实时系统对比实验

实时与非实时系统对比实验

一   实时工具RTX简介

Windows是通用操作系统,其调度功能不针对实时应用程序。因此,实时开发人员受到严重限制,并且经常无法使用Windows操作系统。 IntervalZero的RTX64产品通过向Windows添加实时功能来弥补这一差距。它还提供用于构建和执行实时程序的工具和实用程序。实时系统有时被分类为硬实时或软实时系统。硬实时系统是其中响应时间确定性要求是绝对的;对于软实时系统,允许一些小的偏差。 IntervalZero没有容忍的偏差,这意味着硬实时。

通过扩展Windows操作系统,RTX64使需要确定性和高速响应时间的应用程序组件或模块与其他非实时应用程序组件一起在通用Windows系统上协同工作。使用RTX64,可以使用单个,低成本的平台来满足全方位的实时和嵌入式应用需求。

二   安装RTX插件

从intervalzero公司的官网即可下载RTX插件,64位系统可选择intervalzero公司最新推出了64位插件RTX64 3.0版本的插件,安装好RTX64 3.0 SDK和RTX64 3.0Runtime后需要激活。激活完成后,配置分配运行在window系统下和RTSS系统下的处理器。打开RTX64 3.0Runtime下的ControlPanel软件点击Assign system processors进行分配。分配如图1所示,可选择将电脑或者笔记本的处理器分成window处理器和RTSS处理器,本次实验使用的笔记本有8个处理器,最大可选7个处理器为RTSS处理器。于是可分配处理器如图1所示,4个window处理器,4个RTSS处理器。重启电脑,在visual stdio工具中即可建立实时工程如图2所示。通过编译运行实时代码进行实时开发。

图1

图2

三   intervalzero rtx64延迟视图工具

intervalzero RTX64延迟视图工具如图3所示,是RTX插件附带的一个程序, IntervalZero延迟视图工具显示Windows和RTX64内核之间的延迟比较。 系统定时器响应延迟测量为从子系统定时器中断发送信号到该信号被中断服务线程(IST)中运行的软件识别的总时间。 如图4所示,延迟由硬件延迟,(信号被中断服务程序(ISR)识别所花费的时间),以及软件延迟(从ISR到IST中的例程运行所花费的时间)组成 。

图3  intervalzero RTX64延时视图工具

图4

延迟工具以1秒为间隔重复捕获数据,并为每个核心提供该时间段的最大值的图形显示。 每个磁芯还显示累计最小值,最大值和平均值。 可以从运行在Windows内核上的32位和/或64位进程查看延迟值,并将其与运行在RTSS内核上的64位进程的延迟值进行比较。 可以选择向选定的内核添加视频和/或磁盘负载,模拟系统活动,以便更准确地显示繁忙系统上的最大延迟时间如图5所示选择加载磁盘负载来达到使系统繁忙情况下采集延迟值的数据。

图5

图6是在加载了磁盘负载的情况下,window系统内核的每个磁芯还显示累计最小值,最大值和平均值,图7在加载了磁盘负载的情况下,RTSS系统内核的每个磁芯还显示累计最小值,最大值和平均值。

从显示的数据来看window系统内核的平均延迟为52us,53us,49us,49us,RTSS系统内核的平均延迟为2us,2us,2us,3us。RTSS系统响应延迟非常小,是window系统下响应延迟的1/26。

图6

图7

那么实时window和非实时window下相同的程序运行结果会发生变化吗?我们进行了优先级翻转实时与非实时的对比试验进行观察。

四   优先级翻转

4.1 概念

有优先级为A、B和C三个任务,优先级A>B>C,任务A,B处于挂起状态,等待某一事件发生,任务C正在运行,此时任务C开始使用某一共享资源S。在使用中,任务A等待事件到来,任务A转为就绪态,因为它比任务C优先级高,所以立即执行。当任务A要使用共享资源S时,由于其正在被任务C使用,因此任务A被挂起,任务C开始运行。如果此时任务B等待事件到来,则任务B转为就绪态。由于任务B优先级比任务C高,因此任务B开始运行,直到其运行完毕,任务C才开始运行。直到任务C释放共享资源S后,任务A才得以执行。在这种情况下,优先级发生了翻转,任务B先于任务A运行。

4.2 程序实现流程

按照概念选择使用临界区建立线程1和线程3的共享资源,程序流程图如图8所示。首先建立三个线程1,2,3,并使3个线程挂起,为线程分配优先级。按照概念令线程1优先级最高,其次线程2,线程3优先级最低。初始化临界区,激活线程3,线程3处于运行状态执行占用临界区资源的指令。激活线程1,激活线程2,三个线程执行完后释放。

图8

4.3 实时与非实时系统结果对比

在window和RTSSwindow系统上实现上述程序逻辑后。分别统计10次结果,window系统执行效果如图9所示,RTSSwindow如图10所示。Window系统下,程序执行不一定发生优先级翻转,而RTSSwindow系统下,程序均发生优先级翻转。

图9

图10

4.4 结论

出现线程2先于线程1执行结果的情况即可认为优先级发生翻转,在本次实验window系统和RTSSwindow系统下模拟现实生活任务执行过程中出现的优先级翻转的情况,发现实时和非实时系统下执行效果具有如下差异:

Ø  非实时情况下:

优先级不一定按照程序的逻辑效果进行翻转

Ø  实时情况下:

优先级在观测下均发生发展,严格按照程序逻辑进行执行

经思考,两者的差异来自于实时与非实时内核的延迟时间不同。实时系统在执行任务方面表现效果优于非实时系统。

任务调度 Windows

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python 包之 Pygame 游戏开发教程
下一篇:DayDayUp:编程语言之以python为例带你理解什么叫做【面向对象】
相关文章