CN102662771A - 基于消息机制的实时进程与非实时进程间的数据交互方法 - Google Patents
基于消息机制的实时进程与非实时进程间的数据交互方法 Download PDFInfo
- Publication number
- CN102662771A CN102662771A CN2012100538797A CN201210053879A CN102662771A CN 102662771 A CN102662771 A CN 102662771A CN 2012100538797 A CN2012100538797 A CN 2012100538797A CN 201210053879 A CN201210053879 A CN 201210053879A CN 102662771 A CN102662771 A CN 102662771A
- Authority
- CN
- China
- Prior art keywords
- real
- time process
- message
- stack
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于消息机制的实时进程与非实时进程间的数据交互方法,可以在不影响实时进程实时性和计算数据不丢失条件下,实现在非实时进程中对的实时进程产生的计算和仿真数据进行显示和分析。本发明所有的方法具有较强的通用性,因此可以方便对实时仿真产生的数据进行保存、显示分析和处理。
Description
技术领域
本发明涉及一种基于消息机制的实时进程与非实时进程间的数据交互方法,用于计算机操作系统实时进程与非实时进程间的数据交互方法,用于计算机实时计算和实时仿真。
背景技术
实时操作系统由于具有确定的中断响应和线程优先级,因此主要用于在计算机实时计算和实时仿真,但由于其结构简单,人机交互能力较差,因此目前普遍将其作为实时调度内核,而采用Windows系统完成人机交互。
现有的实时进程与非实时进程的数据交互,通常采用在计算机内存开辟一块存储空间,能够被双方进程读写的共享内存机制,实时进程每计算一次,将计算结果保存在内存中,而非实时进程在进行界面显示与处理时,设置一个定时器,定时在共享内存中取数据,完成人机交互。这种方法虽然易于实现,但是需要两个进程对一块内存区频繁进行读写操作,同时计算和仿真数据可能丢失,对结果分析产生影响,此外,这种方式不能够灵活实现数据交互,开发者必须知道双方的数据约定,因此不能灵活应用。
发明内容
要解决的技术问题
为了避免现有技术的不足之处,本发明提出一种基于消息机制的实时进程与非实时进程间的数据交互方法,已达到能够实时进程和非实时进程间灵活进行数据交互,并且不丢失交互数据。
技术方案
一种基于消息机制的实时进程与非实时进程间的数据交互方法,其特征在于步骤如下:
步骤1:针对进行数据交互的实时进程和非实时进程,设定两个相互独立共享内存消息栈,分别是实时进程发-非实时进程收消息栈和实时进程收-非实时进程发消息栈,所述两个消息栈的数据管理采用数据缓冲和先进后出机制;
步骤2:设置实时进程和非实时进程数据交互的消息类型,实时进程发出-非实时进程接收消息包括仿真计算消息、错误消息、通知显示消息、计算结束消息;非实时进程发出-实时进程接收消息包括仿真计算管理消息,初始参数设置消息;
步骤4:实时进程将每步计算数据和触发的错误以消息模式压栈进入实时进程发-非实时进程收共享内存消息栈,同时非实时进程查询实时进程发-非实时进程收共享内存消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止;
步骤5:非实时进程将控制指令信息以消息模式压栈进入实时进程收-非实时进程发消息栈;同时实时进程查询实时进程收-非实时进程发消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止。
有益效果
本发明提出的一种基于消息机制的实时进程与非实时进程间的数据交互方法,可以在不影响实时进程实时性和计算数据不丢失条件下,实现在非实时进程中对的实时进程产生的计算和仿真数据进行显示和分析。本发明所有的方法具有较强的通用性,因此可以方便对实时仿真产生的数据进行保存、显示分析和处理。
附图说明
图1:本发明方法流程图
具体实施方式
现结合实施例、附图对本发明作进一步描述:
现需要在Windows计算机上安装RTX(Window嵌入式操作系统)完成实时仿真计算,同时应用Windows友好的人机交互界面实现仿真数据的显示和分析、仿真流程的控制。RTX实时仿真进程周期为10毫秒,每步仿真计算产生的最大数据量为512个字节,而Windows非实时进程界面刷新周期为50毫秒,主要进行仿真流程控制和数据结果的显示和保存。
根据本发明,具体实施过程如下:
1)对任务功能按照运行特性进行正确有效的划分成两部分:非实时部分(Windows进程)和实时部分(RTX进程)。两者数据交互的类型主要包括实时进程的仿真计算结果消息、错误消息、仿真过程通知消息;非实时进程消息主要包括仿真流程控制消息、参数设置消息等;
2)分别建立RTX进程收(Windows进程发)和Windows进程收(RTX进程发)两个共享内存消息堆栈,为保证系统运行的高效性,尽量减少在两种进程之间的同步信号和数据流。将堆栈消息缓冲数设置为128,将消息最大允许数据量设置为512字节;
3)仿真数据记录与显示。在RTX进程对硬盘进行读写记录仿真数据严重影响了仿真性能,而RTX系统是Windows的嵌入实时系统,其任何一个优先级都要高于Windows,在Windows环境下对硬盘操作不会对RTX实时性能产生影响,因此用过共享内存消息机制将RTX每仿真一步,将仿真数据存储到Windows进程收(RTX进程发)共享内存消息堆中,而Windows程序则不断对缓存区进行检测,发现有数据立即取出将其写到硬盘上存储成数据文件,或者添加到示波器实时显示,同时将缓存区中的原有数据清除。
4)仿真流程控制。RTX进程不具有人机交互界面,当Windows进程进行人机交互,将仿真过程通知消息(包括启动、停止等消息)添加到RTX进程收(Windows进程发)共享内存消息堆栈中,而RTX程序则不断对缓存区进行检测,发现有消息立即取出进行相应。
为了验证本发明的效果,将本基于消息的进程交互方法与传统进程间查询模式进行对比,两者实时仿真周期为0.1毫秒,交互数据量为512字节,比较结果如图1所示。
表1两种方法进程交互性能对比表
性能指标 | 本发明方法 | 传统方法 |
单步最小计算时间 | 0.080ms | 0.083ms |
单步最大计算时间 | 0.12ms | 0.13ms |
单步平均计算时间 | 0.088ms | 0.089ms |
实时时钟抖动 | 0.006ms | 0.008ms |
最多丢失数据帧 | 0 | 30 |
由表1可知采用本发明有效解决了实时进程数据丢失的问题,避免了同一内存区两个进程同时读写,提高了计算效率,同时实时进程的时钟精度收到的影响也比较小。
Claims (1)
1.一种基于消息机制的实时进程与非实时进程间的数据交互方法,其特征在于步骤如下:
步骤1:针对进行数据交互的实时进程和非实时进程,设定两个相互独立共享内存消息栈,分别是实时进程发-非实时进程收消息栈和实时进程收-非实时进程发消息栈,所述两个消息栈的数据管理采用数据缓冲和先进后出机制;
步骤2:设置实时进程和非实时进程数据交互的消息类型,实时进程发出-非实时进程接收消息包括仿真计算消息、错误消息、通知显示消息、计算结束消息;非实时进程发出-实时进程接收消息包括仿真计算管理消息,初始参数设置消息;
步骤4:实时进程将每步计算数据和触发的错误以消息模式压栈进入实时进程发-非实时进程收共享内存消息栈,同时非实时进程查询实时进程发-非实时进程收共享内存消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止;
步骤5:非实时进程将控制指令信息以消息模式压栈进入实时进程收-非实时进程发消息栈;同时实时进程查询实时进程收-非实时进程发消息栈,当有消息时压栈取出消息进出消息响应,直到消息栈清空为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210053879 CN102662771B (zh) | 2012-03-03 | 2012-03-03 | 基于消息机制的实时进程与非实时进程间的数据交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210053879 CN102662771B (zh) | 2012-03-03 | 2012-03-03 | 基于消息机制的实时进程与非实时进程间的数据交互方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662771A true CN102662771A (zh) | 2012-09-12 |
CN102662771B CN102662771B (zh) | 2013-12-25 |
Family
ID=46772270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210053879 Expired - Fee Related CN102662771B (zh) | 2012-03-03 | 2012-03-03 | 基于消息机制的实时进程与非实时进程间的数据交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662771B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310048A (zh) * | 2012-12-24 | 2013-09-18 | 国家电网公司 | 电力协同实时仿真平台系统及其数据协同方法 |
CN114741338A (zh) * | 2022-06-06 | 2022-07-12 | 飞腾信息技术有限公司 | 旁路转换缓存器、数据更新方法、内存管理单元及芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127685A (zh) * | 2007-09-20 | 2008-02-20 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
CN102129396A (zh) * | 2011-03-04 | 2011-07-20 | 中国科学院软件研究所 | 一种实时快速的线程间数据交换方法 |
-
2012
- 2012-03-03 CN CN 201210053879 patent/CN102662771B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127685A (zh) * | 2007-09-20 | 2008-02-20 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
CN102129396A (zh) * | 2011-03-04 | 2011-07-20 | 中国科学院软件研究所 | 一种实时快速的线程间数据交换方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310048A (zh) * | 2012-12-24 | 2013-09-18 | 国家电网公司 | 电力协同实时仿真平台系统及其数据协同方法 |
CN114741338A (zh) * | 2022-06-06 | 2022-07-12 | 飞腾信息技术有限公司 | 旁路转换缓存器、数据更新方法、内存管理单元及芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN102662771B (zh) | 2013-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9965014B2 (en) | Techniques for tracing wakelock usage | |
US9507688B2 (en) | Execution history tracing method | |
US9329958B2 (en) | Efficient incremental checkpointing of virtual devices | |
US9003375B2 (en) | Optional logging of debug activities in a real time instruction tracing log | |
EP3748470A1 (en) | Resource scheduling method and terminal device | |
CN111611125A (zh) | 用于改善高性能计算应用的性能数据收集的方法与设备 | |
US10216517B2 (en) | Clearing specified blocks of main storage | |
US20170300362A1 (en) | Performance optimization of hardware accelerators | |
CN111506581A (zh) | 一种数据聚合方法和服务器 | |
CN102662771B (zh) | 基于消息机制的实时进程与非实时进程间的数据交互方法 | |
CN114691448A (zh) | 应用程序卡顿监测方法、装置、设备及存储介质 | |
CN104239121A (zh) | 显卡重定向系统和利用该系统实现图形显示的方法 | |
CN107003828B (zh) | 图形指令的仪器化 | |
US11507413B2 (en) | Tracking method, apparatus, device, and machine-readable medium | |
US9329883B2 (en) | Post-execution instruction tracing of virtualized instructions | |
CN102193843B (zh) | 虚拟机系统崩溃现场保存的加速方法 | |
KR101735590B1 (ko) | 트랜잭션 추출 장치 및 방법 | |
CN102147786B (zh) | 一种双端口虚拟fifo数据交换的方法 | |
CN111625328A (zh) | 适用于risc-v架构的中断装置、系统及方法 | |
CN113806250B (zh) | 通用处理器核心与向量部件的协同方法、接口及处理器 | |
CN110765045B (zh) | 一种基于fpga的中断延时计数系统及方法 | |
CN102098214A (zh) | 一种采用轮询机制的高速报文接收方法 | |
CN204462976U (zh) | 一种高负载量的多功能计算机主机装置 | |
WO2018228524A1 (zh) | 一种ssd控制芯片的中断控制方法、装置及ssd设备 | |
CN110018789A (zh) | 动态适配NAND的Tr和Tprom时间的方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131225 Termination date: 20150303 |
|
EXPY | Termination of patent right or utility model |