CN101876922A - 一种增强***稳定性的方法 - Google Patents

一种增强***稳定性的方法 Download PDF

Info

Publication number
CN101876922A
CN101876922A CN 200910236980 CN200910236980A CN101876922A CN 101876922 A CN101876922 A CN 101876922A CN 200910236980 CN200910236980 CN 200910236980 CN 200910236980 A CN200910236980 A CN 200910236980A CN 101876922 A CN101876922 A CN 101876922A
Authority
CN
China
Prior art keywords
data
uncontrollable
message
module
host process
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
Application number
CN 200910236980
Other languages
English (en)
Other versions
CN101876922B (zh
Inventor
张娟娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Ruian Technology Co Ltd
Original Assignee
Beijing Ruian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Ruian Technology Co Ltd filed Critical Beijing Ruian Technology Co Ltd
Priority to CN 200910236980 priority Critical patent/CN101876922B/zh
Publication of CN101876922A publication Critical patent/CN101876922A/zh
Application granted granted Critical
Publication of CN101876922B publication Critical patent/CN101876922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种增强***稳定性的方法
技术领域
本发明涉及一种增强***稳定性的方法,属于计算机软件技术领域。
背景技术
在计算机技术发展越来越快的今天,用户对于***的稳定性要求也越来越高。目前计算机的主流***为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个字节为处理的数据块的编号,保持与处理前数据块编号不变。如果检测到为退出消息,直接退出子进程。

Claims (9)

1.一种增强***稳定性的方法,其步骤为:
1)建立一内存映射文件,其包括待处理数据存储部分、处理完数据存储部分;
2)主进程将需要某不可控模块处理的数据存放在所述待处理数据存储部分,同时判断该不可控模块是否运行;如果未运行则启动该不可控模块;
3)主进程发送一数据处理消息给该不可控模块;
4)该不可控模块收到所述数据处理消息后,对数据进行处理;
5)该不可控模块将处理后的数据放到所述处理完数据存储部分;
6)主进程循环检测所述处理完数据存储部分是否有对应的数据,如果有则读取该数据,然后判断后续是否有需要该不可控模块处理的数据,如果没有则发送一退出消息给该不可控模块;如果主进程在设定的循环次数内没有检测到对应的数据则退出。
2.如权利要求1所述的方法,其特征在于所述内存映射文件还包括一时间存储部分。
3.如权利要求2所述的方法,其特征在于设置一临时变量,用于保存所述不可控模块最近一次数据处理时的时间;所述不可控模块间隔性的判断当前时间与所述临时变量中记录的时间间隔是否大于设定阈值B,如果大于则退出,否则把当前时间写入所述时间存储部分。
4.如权利要求3所述的方法,其特征在于所述主进程和不可控模块之间通过自定义消息进行通信,其方法为:所述主进程根据需要处理数据的情况发送不同的消息到一消息队列;所述不可控模块间隔性的触发ontimer消息到所述消息队列,所述不可控模块循环检测所述消息队列中的消息,根据检测到的消息进行相应的处理。
5.如权利要求3所述的方法,其特征在于所述主进程判断所述不可控模块是否运行的方法为:主进程检测当前时间与所述时间存储部分的时间之差是否大于所述阈值A,如果大于则判断为所述不可控模块未运行,否则判断为所述不可控模块处于运行状态。
6.如权利要求5所述的方法,其特征在于所述阈值A小于所述阈值B;所述阈值A为2秒,所述阈值B为3秒。
7.如权利要求1所述的方法,其特征在于所述主进程将存放在所述待处理数据存储部分的数据块进行编号,所述不可控模块对数据块进行数据处理时保持数据块编号不变。
8.如权利要求7所述的方法,其特征在于所述主进程根据编号检测所述处理完数据存储部分是否有对应的数据。
9.如权利要求1所述的方法,其特征在于所述数据处理消息和所述退出消息由一宏定义产生。
CN 200910236980 2009-10-30 2009-10-30 一种增强***稳定性的方法 Active CN101876922B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910236980 CN101876922B (zh) 2009-10-30 2009-10-30 一种增强***稳定性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910236980 CN101876922B (zh) 2009-10-30 2009-10-30 一种增强***稳定性的方法

Publications (2)

Publication Number Publication Date
CN101876922A true CN101876922A (zh) 2010-11-03
CN101876922B CN101876922B (zh) 2012-12-19

Family

ID=43019483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910236980 Active CN101876922B (zh) 2009-10-30 2009-10-30 一种增强***稳定性的方法

Country Status (1)

Country Link
CN (1) CN101876922B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216771A (zh) * 2013-05-30 2014-12-17 华为技术有限公司 软件程序的重启方法及装置
CN110008036A (zh) * 2019-02-19 2019-07-12 西安万像电子科技有限公司 数据传输方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100343826C (zh) * 2003-04-29 2007-10-17 华为技术有限公司 一种实现内存管理的方法
CN100539713C (zh) * 2004-08-31 2009-09-09 华为技术有限公司 一种在单板中存储数据流的方法
CN101567002B (zh) * 2009-05-25 2011-08-17 北京中企开源信息技术有限公司 一种实时数据存储的方法和***

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216771A (zh) * 2013-05-30 2014-12-17 华为技术有限公司 软件程序的重启方法及装置
CN104216771B (zh) * 2013-05-30 2018-01-23 华为技术有限公司 软件程序的重启方法及装置
CN110008036A (zh) * 2019-02-19 2019-07-12 西安万像电子科技有限公司 数据传输方法及装置

Also Published As

Publication number Publication date
CN101876922B (zh) 2012-12-19

Similar Documents

Publication Publication Date Title
CN103761182A (zh) 一种死锁检测方法及装置
CN109918141B (zh) 线程执行方法、装置、终端及存储介质
US20080098243A1 (en) Power-optimizing memory analyzer, method of operating the analyzer and system employing the same
RU2629431C2 (ru) Программируемый логический контроллер и способ его событийно-управляемого программирования
KR20130108613A (ko) 프로세스 간 통신을 위한 방법, 장치 및 컴퓨터 기록 매체
CN106897133B (zh) 一种基于pbs作业调度管理集群负载的实现方法
CN101154185A (zh) 软件运行时执行恢复与重放方法
CN103593257A (zh) 一种数据备份方法及装置
CN103077135A (zh) 一种支持并行测试的测试资源管理方法
CN113157411B (zh) 一种基于Celery的可靠可配置任务***及装置
US20230305880A1 (en) Cluster distributed resource scheduling method, apparatus and device, and storage medium
CN106170013B (zh) 一种基于Redis的Kafka消息唯一性方法
CN101876922B (zh) 一种增强***稳定性的方法
CN112130923A (zh) 容器的管理方法、装置、电子设备及计算机可读存储介质
CN100583047C (zh) 实时中断与多个进程状态同步的方法
CN105634502A (zh) 基于状态机的按键扫描的实现方法
CN105824709A (zh) 一种临界区访问方法及装置
US20230409391A1 (en) Thread priority adjusting method, terminal, and computer-readable storage medium
CN102455932A (zh) 一种任务实例串行执行方法、装置及***
JP2001318807A (ja) タスク切り替え制御方法及び装置
WO2020224218A1 (zh) 基于hbase的数据写入方法、***、装置及可读存储介质
CN107102582A (zh) 一种子***命令的同步方法及装置
WO2023193527A1 (zh) 线程执行方法、装置、电子设备及计算机可读存储介质
CN105094827B (zh) 一种处理器启动的方法
WO2023284877A1 (zh) 检测方法、装置及电子设备

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for improving system stability

Effective date of registration: 20150723

Granted publication date: 20121219

Pledgee: China Co truction Bank Corp Beijing Zhongguancun branch

Pledgor: Rui-an Science and Technology Co., Ltd., Beijing

Registration number: 2014990000497

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20180327

Granted publication date: 20121219

Pledgee: China Co truction Bank Corp Beijing Zhongguancun branch

Pledgor: Rui-an Science and Technology Co., Ltd., Beijing

Registration number: 2014990000497

PC01 Cancellation of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for improving system stability

Effective date of registration: 20180627

Granted publication date: 20121219

Pledgee: China Co truction Bank Corp Beijing Zhongguancun branch

Pledgor: Rui-an Science and Technology Co., Ltd., Beijing

Registration number: 2018110000015

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20210128

Granted publication date: 20121219

Pledgee: China Co. truction Bank Corp Beijing Zhongguancun branch

Pledgor: Run Technologies Co.,Ltd. Beijing

Registration number: 2018110000015

PC01 Cancellation of the registration of the contract for pledge of patent right