基于消息机制的实时进程与非实时进程间的数据交互方法转让专利

申请号 : CN201210053879.7

文献号 : CN102662771B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许志

申请人 : 西北工业大学

摘要 :

本发明涉及一种基于消息机制的实时进程与非实时进程间的数据交互方法,可以在不影响实时进程实时性和计算数据不丢失条件下,实现在非实时进程中对的实时进程产生的计算和仿真数据进行显示和分析。本发明所有的方法具有较强的通用性,因此可以方便对实时仿真产生的数据进行保存、显示分析和处理。

权利要求 :

1.一种基于消息机制的实时进程与非实时进程间的数据交互方法,其特征在于步骤如下:

步骤1:针对进行数据交互的实时进程和非实时进程,设定两个相互独立共享内存消息栈,分别是实时进程发-非实时进程收消息栈和实时进程收-非实时进程发消息栈,所述两个消息栈的数据管理采用数据缓冲和先进后出机制;

步骤2:设置实时进程和非实时进程数据交互的消息类型,实时进程发出-非实时进程接收消息包括仿真计算消息、错误消息、通知显示消息、计算结束消息;非实时进程发出-实时进程接收消息包括仿真计算管理消息,初始参数设置消息;

步骤3:设置共享内存消息栈机制的缓冲区 Fpr为实时进程计算频率,Fpc为非实时进程读取频率;

步骤4:实时进程将每步计算数据和触发的错误以消息模式压栈进入实时进程发-非实时进程收共享内存消息栈,同时非实时进程查询实时进程发-非实时进程收共享内存消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止;

步骤5:非实时进程将控制指令信息以消息模式压栈进入实时进程收-非实时进程发消息栈;同时实时进程查询实时进程收-非实时进程发消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止。

说明书 :

基于消息机制的实时进程与非实时进程间的数据交互方法

技术领域

[0001] 本发明涉及一种基于消息机制的实时进程与非实时进程间的数据交互方法,用于计算机操作系统实时进程与非实时进程间的数据交互方法,用于计算机实时计算和实时仿真。

背景技术

[0002] 实时操作系统由于具有确定的中断响应和线程优先级,因此主要用于在计算机实时计算和实时仿真,但由于其结构简单,人机交互能力较差,因此目前普遍将其作为实时调度内核,而采用Windows系统完成人机交互。
[0003] 现有的实时进程与非实时进程的数据交互,通常采用在计算机内存开辟一块存储空间,能够被双方进程读写的共享内存机制,实时进程每计算一次,将计算结果保存在内存中,而非实时进程在进行界面显示与处理时,设置一个定时器,定时在共享内存中取数据,完成人机交互。这种方法虽然易于实现,但是需要两个进程对一块内存区频繁进行读写操作,同时计算和仿真数据可能丢失,对结果分析产生影响,此外,这种方式不能够灵活实现数据交互,开发者必须知道双方的数据约定,因此不能灵活应用。

发明内容

[0004] 要解决的技术问题
[0005] 为了避免现有技术的不足之处,本发明提出一种基于消息机制的实时进程与非实时进程间的数据交互方法,已达到能够实时进程和非实时进程间灵活进行数据交互,并且不丢失交互数据。
[0006] 技术方案
[0007] 一种基于消息机制的实时进程与非实时进程间的数据交互方法,其特征在于步骤如下:
[0008] 步骤1:针对进行数据交互的实时进程和非实时进程,设定两个相互独立共享内存消息栈,分别是实时进程发-非实时进程收消息栈和实时进程收-非实时进程发消息栈,所述两个消息栈的数据管理采用数据缓冲和先进后出机制;
[0009] 步骤2:设置实时进程和非实时进程数据交互的消息类型,实时进程发出-非实时进程接收消息包括仿真计算消息、错误消息、通知显示消息、计算结束消息;非实时进程发出-实时进程接收消息包括仿真计算管理消息,初始参数设置消息;
[0010] 步骤3:设置共享内存消息栈机制的缓冲区 Fpr为实时进程计算频率,Fpc为非实时进程读取频率;
[0011] 步骤4:实时进程将每步计算数据和触发的错误以消息模式压栈进入实时进程发-非实时进程收共享内存消息栈,同时非实时进程查询实时进程发-非实时进程收共享内存消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止;
[0012] 步骤5:非实时进程将控制指令信息以消息模式压栈进入实时进程收-非实时进程发消息栈;同时实时进程查询实时进程收-非实时进程发消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止。
[0013] 有益效果
[0014] 本发明提出的一种基于消息机制的实时进程与非实时进程间的数据交互方法,可以在不影响实时进程实时性和计算数据不丢失条件下,实现在非实时进程中对的实时进程产生的计算和仿真数据进行显示和分析。本发明所有的方法具有较强的通用性,因此可以方便对实时仿真产生的数据进行保存、显示分析和处理。

附图说明

[0015] 图1:本发明方法流程图

具体实施方式

[0016] 现结合实施例、附图对本发明作进一步描述:
[0017] 现需要在Windows计算机上安装RTX(Window嵌入式操作系统)完成实时仿真计算,同时应用Windows友好的人机交互界面实现仿真数据的显示和分析、仿真流程的控制。RTX实时仿真进程周期为10毫秒,每步仿真计算产生的最大数据量为512个字节,而Windows非实时进程界面刷新周期为50毫秒,主要进行仿真流程控制和数据结果的显示和保存。
[0018] 根据本发明,具体实施过程如下:
[0019] 1)对任务功能按照运行特性进行正确有效的划分成两部分:非实时部分(Windows进程)和实时部分(RTX进程)。两者数据交互的类型主要包括实时进程的仿真计算结果消息、错误消息、仿真过程通知消息;非实时进程消息主要包括仿真流程控制消息、参数设置消息等;
[0020] 2)分别建立RTX进程收(Windows进程发)和Windows进程收(RTX进程发)两个共享内存消息堆栈,为保证系统运行的高效性,尽量减少在两种进程之间的同步信号和数据流。将堆栈消息缓冲数设置为128,将消息最大允许数据量设置为512字节;
[0021] 3)仿真数据记录与显示。在RTX进程对硬盘进行读写记录仿真数据严重影响了仿真性能,而RTX系统是Windows的嵌入实时系统,其任何一个优先级都要高于Windows,在Windows环境下对硬盘操作不会对RTX实时性能产生影响,因此通过共享内存消息机制将RTX每仿真一步,将仿真数据存储到Windows进程收(RTX进程发)共享内存消息堆中,而Windows程序则不断对缓存区进行检测,发现有数据立即取出将其写到硬盘上存储成数据文件,或者添加到示波器实时显示,同时将缓存区中的原有数据清除。
[0022] 4)仿真流程控制。RTX进程不具有人机交互界面,当Windows进程进行人机交互,将仿真过程通知消息(包括启动、停止等消息)添加到RTX进程收(Windows进程发)共享内存消息堆栈中,而RTX程序则不断对缓存区进行检测,发现有消息立即取出进行相应。
[0023] 为了验证本发明的效果,将本基于消息的进程交互方法与传统进程间查询模式进行对比,两者实时仿真周期为0.1毫秒,交互数据量为512字节,比较结果如图1所示。
[0024] 表1两种方法进程交互性能对比表
[0025]性能指标 本发明方法 传统方法
单步最小计算时间 0.080ms 0.083ms
单步最大计算时间 0.12ms 0.13ms
单步平均计算时间 0.088ms 0.089ms
实时时钟抖动 0.006ms 0.008ms
最多丢失数据帧 0 30
[0026] 由表1可知采用本发明有效解决了实时进程数据丢失的问题,避免了同一内存区两个进程同时读写,提高了计算效率,同时实时进程的时钟精度收到的影响也比较小。