一种增强系统稳定性的方法技术方案

技术编号:4251019 阅读:261 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种增强系统稳定性的方法,属于软件技术领域。本发明专利技术方法为:1)建立一内存映射文件,其包括待处理数据存储部分、处理完数据存储部分;2)主进程将需某不可控模块处理的数据存放在待处理数据存储部分,并判断是否需启动该不可控模块;3)主进程发送一数据处理消息给该不可控模块;4)该不可控模块对数据进行处理并将处理后的数据放到处理完数据存储部分;5)主进程循环检测处理完数据存储部分是否有对应的数据,若有则读取该数据,然后判断后续是否有需该不可控模块处理的数据,若没有则发送一退出消息给该不可控模块;若主进程在设定循环次数内没有检测到对应的数据则退出。本发明专利技术既可提高系统稳定性,又可大大节约系统资源。

【技术实现步骤摘要】

本专利技术涉及,属于计算机软件

技术介绍
在计算机技术发展越来越快的今天,用户对于系统的稳定性要求也越来越高。目 前计算机的主流系统为windows系统,由于在很多情况下系统必须加载某些不可控模块, 当系统必须使用一个不可控模块时,在控制上就会存在很多问题,比如此模块对外只有部 分接口可用,其它卸载和资源释放接口都未知,因此当系统直接加载使用此模块时,必然引 起一系列的问题。首先是稳定性不好,再次是资源不能安全释放,不停的再申请资源,资源 消耗很严重。
技术实现思路
本专利技术的目的在于提供,本专利技术采用多进程内存映射 文件的方式来解决不可控模块的控制,即在使用不可控模块时,可把此不可控模块单独做 为一个子进程,采用多进程内存映射文件的方式来控制不可控模块,可以及时的释放不可 控模块占用的大量资源。本专利技术的技术方案为,其步骤为1)建立一内存映射文件,其包括待处理数据存储部分、处理完数据存储部分;2)主进程将需要某不可控模块处理的数据存放在所述待处理数据存储部分,同时 判断该不可控模块是否运行;如果未运行则启动该不可控模块;3)主进程发送一数据处理消息给该不可控模块;4)该不可控模块收到所述数据处理消息后,对数据进行处理;5)该不可控模块将处理后的数据放到所述处理完数据存储部分;6)主进程循环检测所述处理完数据存储部分是否有对应的数据,如果有则读取该 数据,然后判断后续是否有需要该不可控模块处理的数据,如果没有则发送一退出消息给 该不可控模块;如果主进程在设定的循环次数内没有检测到对应的数据则退出。进一步的,所述内存映射文件还包括一时间存储部分。进一步的,所述方法中设置一临时变量,用于保存所述不可控模块最近一次数据 处理时的时间;所述不可控模块间隔性的判断当前时间与所述临时变量中记录的时间间隔 是否大于设定阈值B,如果大于则退出,否则把当前时间写入所述时间存储部分。进一步的,所述主进程和不可控模块之间通过自定义消息进行通信,其方法为所 述主进程根据需要处理数据的情况发送不同的消息到一消息队列;所述不可控模块间隔性 的触发ontimer消息到所述消息队列,所述不可控模块循环检测所述消息队列中的消息, 根据检测到的消息进行相应的处理。进一步的,所述主进程判断所述不可控模块是否运行的方法为主进程检测当前时间与所述时间存储部分的时间之差是否大于所述阈值A,如果大于则判断为所述不可控 模块未运行,否则判断为所述不可控模块处于运行状态。进一步的,所述阈值A小于所述阈值B ;所述阈值A为2秒,所述阈值B为3秒。进一步的,所述主进程将存放在所述待处理数据存储部分的数据块进行编号,所 述不可控模块对数据块进行数据处理时保持数据块编号不变。进一步的,所述主进程根据编号检测所述处理完数据存储部分是否有对应的数 据。进一步的,所述数据处理消息和所述退出消息由一宏定义产生。本专利技术的积极效果为 与现有技术相比,本专利技术既可以提高系统稳定性,又可以大大节约系统资源,从而 使系统性能得到显著提升。附图说明图1为本专利技术的总体结构图;图2为本专利技术主进程的处理流程图;图3为本专利技术子进程的处理流程图。具体实施例方式下面结合附图和具体实施方式对本专利技术作进一步详细描述在windows系统运行中,很多情况下必须加载某些不可控模块,在此模块中内部 的很多资源释放是未知,当长期运行程序或是反复的运行程序,都会引起占用大量的内存 资源,针对这样的问题本专利技术采用多进程内存映射文件的方式来解决。不可控模块是用来 做数据的解析部分,并要从不可控模块中取出解析后的数据,这样就可以把加载不可控模 块的部分做一个单独子进程。当主程序有数据需要解析的时候,运行单独子进程,解析完后 的数据放到内存映射文件中,主进程从中取出解析出来的数据。子进程中有一个时间空循 环程序,实时的检测目前的系统时间与处理上一个数据之间的时间差,如果超过一定的值, 说明长时间主进程没有数据需要处理,直接卸载子进程。主进程在每次需要解析数据的时 候都检测子进程是否在运行,如果已经卸载,重新启动子进程。这样保证当主进程和子进程 之间通信,当主进程中没有数据的时候,子进程占用的资源可以及时的进行释放,避免了大 量的占用内存及内存泄露问题。如图1所示,本专利技术的总体结构主要分为两个部分主进程和子进程。主进程和 子进程通过把数据放到内存映射文件来实现数据的交互,本专利技术把内存映射文件分为三部 分,第一部分待处理数据部分,第二部分存储处理完数据,第三部分用来存储时间。下面主要分为主进程处理和子进程处理两部分进行介绍。在每次主进程需要往内存映射文件中存放数据的时候,首先检测子进程是否存 活。检测的方式为采用当前系统的时间跟内存映射文件中存放的时间数据比较,如果差值 超过2s钟,就认为子进程已经退出,重新启动子进程,这样就可以重新进行数据的处理。主 进程把待处理数据写入内存映射文件的同时,在存储待处理数据的前4个字节中存放此待 处理数据块的数据编号,方便对处理后数据进行校验。主进程和子进程之间的采用消息机制进行通信,采用宏来自定义两类消息,一类为处理数据消息;一类为退出消息。当主进程 把待处理数据放到的内存映射文件中后就会发送一个处理数据消息到消息队列中;当主进 程没有数据需要数据处理时,发送一个退出消息到消息队列中。主进程中在不停的检测保 存处理完数据的前4个字节是否与待处理数据块前的数据编号相同,如果相同,就会取出 处理后数据进行下一步的工作。如果不同,就循环的判断,循环的次数限制在20次。多于 20次就自动退出主程序,防止程序死循环。 子进程中是一个消息循环的机制,不停的检测消息队列中是否有符合条件的消 息,主要处理三类消息,1 :ontimer时间循环消息;2 处理数据消息;3 退出消息。Ontimer 时间循环消息为子进程中一个按时间触发的消息;处理数据消息和退出消息采用于主进程 中一样的宏自定义消息。设置一临时变量用于保存子进程最近一次(即上一次)数据处理 时的时间,如果子进程检测到为ontimer消息,首先判断当前时间和记录的临时变量的时 间的时间间隔是否大于3s,如果大于3s就认为主进程长时间没有数据需要处理或者主进 程已退出,退出子进程。如果时间小于或等于3s,把当前时间写入内存映射文件的时间存储 部分。Ontimer设置为100ms触发一次,这样保证时间间隔小于主进程中检测的时间。如果 子进程中检测消息队列中有处理数据消息就进行数据的处理,把当前的系统时间保存到一 个临时变量中。数据处理完后把数据放到内存映射文件的保存处理完数据的位置。子进程 把处理完数据写入内存映射文件的同时,数据的前4个字节为处理的数据块的编号,保持 与处理前数据块编号不变。如果检测到为退出消息,直接退出子进程。本文档来自技高网...

【技术保护点】
一种增强系统稳定性的方法,其步骤为:1)建立一内存映射文件,其包括待处理数据存储部分、处理完数据存储部分;2)主进程将需要某不可控模块处理的数据存放在所述待处理数据存储部分,同时判断该不可控模块是否运行;如果未运行则启动该不可控模块;3)主进程发送一数据处理消息给该不可控模块;4)该不可控模块收到所述数据处理消息后,对数据进行处理;5)该不可控模块将处理后的数据放到所述处理完数据存储部分;6)主进程循环检测所述处理完数据存储部分是否有对应的数据,如果有则读取该数据,然后判断后续是否有需要该不可控模块处理的数据,如果没有则发送一退出消息给该不可控模块;如果主进程在设定的循环次数内没有检测到对应的数据则退出。

【技术特征摘要】
一种增强系统稳定性的方法,其步骤为1)建立一内存映射文件,其包括待处理数据存储部分、处理完数据存储部分;2)主进程将需要某不可控模块处理的数据存放在所述待处理数据存储部分,同时判断该不可控模块是否运行;如果未运行则启动该不可控模块;3)主进程发送一数据处理消息给该不可控模块;4)该不可控模块收到所述数据处理消息后,对数据进行处理;5)该不可控模块将处理后的数据放到所述处理完数据存储部分;6)主进程循环检测所述处理完数据存储部分是否有对应的数据,如果有则读取该数据,然后判断后续是否有需要该不可控模块处理的数据,如果没有则发送一退出消息给该不可控模块;如果主进程在设定的循环次数内没有检测到对应的数据则退出。2.如权利要求1所述的方法,其特征在于所述内存映射文件还包括一时间存储部分。3.如权利要求2所述的方法,其特征在于设置一临时变量,用于保存所述不可控模块 最近一次数据处理时的时间;所述不可控模块间隔性的判断当前时间与所述临时变量中记 录的时间间隔是否大于设定阈值B,如果大于则退出,否则把当前时间写入所述时间存储部 分。4.如权利要求3所述...

【专利技术属性】
技术研发人员:张娟娟
申请(专利权)人:北京锐安科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1