CN101114252A - 管理线程异常的防护方法 - Google Patents

管理线程异常的防护方法 Download PDF

Info

Publication number
CN101114252A
CN101114252A CNA2006100992695A CN200610099269A CN101114252A CN 101114252 A CN101114252 A CN 101114252A CN A2006100992695 A CNA2006100992695 A CN A2006100992695A CN 200610099269 A CN200610099269 A CN 200610099269A CN 101114252 A CN101114252 A CN 101114252A
Authority
CN
China
Prior art keywords
unusual
management thread
thread
defence
management
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
CNA2006100992695A
Other languages
English (en)
Other versions
CN100478911C (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CNB2006100992695A priority Critical patent/CN100478911C/zh
Publication of CN101114252A publication Critical patent/CN101114252A/zh
Application granted granted Critical
Publication of CN100478911C publication Critical patent/CN100478911C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种管理线程异常的防护方法,包括如下步骤:获取系统进程的状态信息,记录管理线程异常的进程名称;根据获取的该进程名称,查找该进程名称对应的进程号;清除该进程号对应的线程;创建该进程名称的进程。本发明完善了POSIX多线程进程的管理,使原来无人监管的管理线程得到了监控,避免了由于管理线程异常而出现的所在进程工作异常,从而影响用户使用的问题。

Description

管理线程异常的防护方法
技术领域
本发明涉及一种线程维护方法,具体说涉及一种在POSIX(PortableOperating System Interface,可移植操作系统接口)线程库环境下、多线程进程的管理线程异常的防护方法。
背景技术
Linux系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过/proc虚拟文件系统实现的。/proc文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做/proc)。这个伪文件系统可以和内核内部数据结构进行交互,可以用于获取运行中的进程的信息。在/proc中有一些编号的子目录,每个编号的目录对应一个进程标识PID。这样,每一个运行中的进程/proc中都有一个用它的PID命名的目录。这些子目录中包含可以提供有关进程的状态和环境的重要细节信息的文件。
POSIX线程库是uclibc库中提供的标准线程库,用来提供在各个满足POSIX标准的系统中可方便移植的通用线程库接口。该线程库主要提供了线程创建,销毁等线程管理的功能,使用该库接口函数编写的多线程程序,可以在任何其他的POSIX操作系统上编译执行。
在该库的实现中,为了实现信号处理、线程创建和进程管理中其他部分的正确语义,引入了管理线程的概念。管理线程对用户透明,从层次上看,它位于主线程和用户创建的子线程之间。从用户角度来看,线程的层次结构是主线程——子线程的二层模式,但从系统角度来看,实际上已转化为主线程——管理线程——子线程的三层模式。管理线程不执行用户代码,只是集中处理来自其他线程(包括主线程)的创建线程、请求退出等请求,担负着整个进程管理的重大职责。
由于实现方面的种种原因,使管理线程的权力过高,同时又不受任何其他进程监管,这便导致了目前POSIX线程库的如下缺陷:一旦管理线程异常(ZOMBIE),所在进程的所有工作可能也会中止,但是整个系统却浑然不知。如果在产品中出现这种情况,必将会影响到用户的正常使用。
发明内容
本发明所解决的技术问题是提供一种管理线程异常的防护方法,能够在POSIX线程库环境下避免由于管理线程变成ZOMBIE状态而引起进程异常。
本发明的技术方案如下:
管理线程异常的防护方法包括如下步骤:
(1)通过状态检测,获取系统进程的状态信息,记录管理线程异常的进程名称;
(2)根据获取的该进程名称,查找该进程名称对应的进程号;
(3)清除该进程号对应的线程;
(4)创建该进程名称的进程。
进一步,步骤(1)进一步包括:设定异常检测的定时时间间隔。
进一步,步骤(1)具体为:定时扫描proc目录下所有进程目录,利用linux系统的proc文件系统对应目录下的进程信息进行查询,记录所有管理线程状态为管理线程异常的进程名称。
进一步,步骤(1)中,proc目录下,linux系统的proc文件系统下的stat文件存放着进程的状态信息,所述管理线程异常的状态信息存放在所述stat文件中。
进一步,步骤(2)中,当管理线程异常的进程名称的数量为一个以上时,依次查找每个进程名称的线程的进程号;步骤(3)中,依次清除每个进程号对应的线程;步骤(4)中,依次创建进程名称对应的进程。
进一步包括步骤(5):等待定时时间间隔后,进行下一轮的检测。
进一步,步骤(1)中,在系统进程的当前状态信息中没有检测到管理线程异常的状态,则执行步骤(5)。
进一步,步骤(1)中,所述proc文件系统的所有信息都会由内核定时更新。
进一步,步骤(1)中,定时时间间隔的范围是0~50秒。
本发明所提供的管理线程异常的防护方法可以保证:
1、在用户指定的定时间隔内,可以成功检测出所有管理线程变成ZOMBIE状态的进程。
2、对于检测出上述异常的多线程进程,可以保证及时将这些进程从异常恢复过来。
本发明完善了POSIX多线程进程的管理,使原来无人监管的管理线程得到了监控,避免了由于管理线程异常而出现的所在进程工作异常,从而影响用户使用的问题。
附图说明
图1是本发明优选实施例的流程图。
具体实施方式
下面参照附图对本发明的优选实施例作详细描述。
本发明方法的技术方案从整体上来说,包括管理线程异常状态检测和异常后的恢复两方面。
首先,管理线程异常(ZOMBIE)状态的检测。
参照图1所示,状态的检测可以定时进行,定时间隔可以根据需要进行设定。查询进程状态时,可凭借linux系统自带的/proc文件系统,其下的数字目录即为该系统上所有的运行进程,每个数字目录下还包括一些文件,表示了这个进程的所有相关信息,其中stat文件存放着进程的状态信息。由于/proc文件系统的所有信息都会由内核定时更新,故通过对/proc中信息的查询,可以即时获得系统中进程的当前状态信息,只需要把状态为ZOMBIE的进程名称记录下来,就完成了状态检测的过程。
其次,异常(ZOMBIE)后的恢复。
异常后的恢复包括清除原来进程和创建新进程两步。
在管理线程异常(ZOMBIE)后,由于管理线程层次和作用的特殊性,采用通常的清除主线程的方法是清除不了整个进程的所有线程的。要把进程清除干净,需要根据获得的进程名称,在/proc文件系统中依次查找每个进程名称的所有线程的进程号,逐个清除进程号对应的线程,从而达到把整个进程清除干净的目的。接着,再次创建相应进程,从而将异常的进程恢复。
以下结合一个例子,对本发明涉及的管理线程ZOMBIE状态防护的整个流程进行详细的阐述:
假设系统运行了一段时间后,系统中有两个多线程进程的管理线程状态先后异常(ZOMBIE)。设定异常检测的定时间隔为30秒,则在第一个进程管理线程异常后30秒内执行的第一次进程状态扫描过程中,将检测到有两个管理线程处于ZOMBIE状态,并记录这两个进程名称。假设这两个进程名称为“proc1”、“proc2”。
再次对/proc文件系统中的进程的当前状态进行查询,首先查询名称为“proc1”的所有进程号,将会找到和异常的管理线程属于同一进程的所有线程,将找到的所有线程清除后,则“proc1”进程清除干净。然后重新创建“proc1”的进程,使其恢复正常执行。
接着,再处理“proc2”的进程。查询名称为“proc2”的所有进程号,找到和异常的管理线程属于同一进程的所有进程号,将找到的所有线程清除后,则“proc2”进程清除干净。然后重新创建“proc2”的进程,使其恢复正常执行。
等到两个进程处理完毕,本次扫描检测和恢复过程结束,将等待30秒进行下一轮的监测。
假设系统运行了一段时间后,系统中发现多个管理线程状态异常(ZOMBIE),则对多个进程名称对应的进程依次进行记录、清除和恢复,从而将异常的进程恢复。

Claims (9)

1.一种管理线程异常的防护方法,包括如下步骤:
(1)通过状态检测,获取系统进程的状态信息,记录管理线程异常的进程名称;
(2)根据获取的该进程名称,查找该进程名称对应的进程号;
(3)清除该进程号对应的线程;
(4)创建该进程名称的进程。
2.根据权利要求1所述的管理线程异常的防护方法,其特征在于,步骤(1)进一步包括:设定异常检测的定时时间间隔。
3.根据权利要求2所述的管理线程异常的防护方法,其特征在于,步骤(1)具体为:定时扫描proc目录下所有进程目录,利用linux系统的proc文件系统对应目录下的进程信息进行查询,记录所有管理线程状态为管理线程异常的进程名称。
4.根据权利要求3所述的管理线程异常的防护方法,其特征在于,步骤(1)中,proc目录下,linux系统的proc文件系统下的stat文件存放着进程的状态信息,所述管理线程异常的状态信息存放在所述stat文件中。
5.根据权利要求1所述的管理线程异常的防护方法,其特征在于,步骤(2)中,当管理线程异常的进程名称的数量为一个以上时,依次查找每个进程名称的线程的进程号;步骤(3)中,依次清除每个进程号对应的线程;步骤(4)中,依次创建进程名称对应的进程。
6.根据权利要求2所述的管理线程异常的防护方法,其特征在于,进一步包括步骤(5):等待定时时间间隔后,进行下一轮的检测。
7.根据权利要求6所述的管理线程异常的防护方法,其特征在于,步骤(1)中,在系统进程的当前状态信息中没有检测到管理线程异常的状态,则执行步骤(5)。
8.根据权利要求3所述的管理线程异常的防护方法,其特征在于,步骤(1)中,所述proc文件系统的所有信息都会由内核定时更新。
9.根据权利要求2所述的管理线程异常的防护方法,其特征在于,步骤(1)中,定时时间间隔的范围是0~50秒。
CNB2006100992695A 2006-07-25 2006-07-25 管理线程异常的防护方法 Expired - Fee Related CN100478911C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100992695A CN100478911C (zh) 2006-07-25 2006-07-25 管理线程异常的防护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100992695A CN100478911C (zh) 2006-07-25 2006-07-25 管理线程异常的防护方法

Publications (2)

Publication Number Publication Date
CN101114252A true CN101114252A (zh) 2008-01-30
CN100478911C CN100478911C (zh) 2009-04-15

Family

ID=39022609

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100992695A Expired - Fee Related CN100478911C (zh) 2006-07-25 2006-07-25 管理线程异常的防护方法

Country Status (1)

Country Link
CN (1) CN100478911C (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101916224A (zh) * 2010-08-20 2010-12-15 迈普通信技术股份有限公司 测试进程异常检测方法以及自动化测试控制装置
CN101587521B (zh) * 2009-06-17 2011-12-28 北京东方微点信息技术有限责任公司 获取远程计算机信息的方法及装置
CN102609308A (zh) * 2011-12-22 2012-07-25 深圳市万兴软件有限公司 一种非主线程失效方法及装置
CN105786714A (zh) * 2016-03-31 2016-07-20 北京奇虎科技有限公司 进程检测方法及装置
CN105843675A (zh) * 2016-04-01 2016-08-10 腾讯科技(深圳)有限公司 线程退出方法和装置
CN106779717A (zh) * 2016-11-30 2017-05-31 宇龙计算机通信科技(深圳)有限公司 一种支付认证方法及装置
CN108243056A (zh) * 2016-12-27 2018-07-03 大唐移动通信设备有限公司 一种获取异常信息的方法及装置
CN109144681B (zh) * 2017-06-27 2021-01-22 大唐移动通信设备有限公司 一种控制方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587521B (zh) * 2009-06-17 2011-12-28 北京东方微点信息技术有限责任公司 获取远程计算机信息的方法及装置
CN101916224A (zh) * 2010-08-20 2010-12-15 迈普通信技术股份有限公司 测试进程异常检测方法以及自动化测试控制装置
CN102609308A (zh) * 2011-12-22 2012-07-25 深圳市万兴软件有限公司 一种非主线程失效方法及装置
CN105786714A (zh) * 2016-03-31 2016-07-20 北京奇虎科技有限公司 进程检测方法及装置
CN105786714B (zh) * 2016-03-31 2019-08-02 北京奇虎科技有限公司 进程检测方法及装置
CN105843675A (zh) * 2016-04-01 2016-08-10 腾讯科技(深圳)有限公司 线程退出方法和装置
CN105843675B (zh) * 2016-04-01 2020-06-26 腾讯科技(深圳)有限公司 线程退出方法和装置
CN106779717A (zh) * 2016-11-30 2017-05-31 宇龙计算机通信科技(深圳)有限公司 一种支付认证方法及装置
CN108243056A (zh) * 2016-12-27 2018-07-03 大唐移动通信设备有限公司 一种获取异常信息的方法及装置
CN109144681B (zh) * 2017-06-27 2021-01-22 大唐移动通信设备有限公司 一种控制方法及装置

Also Published As

Publication number Publication date
CN100478911C (zh) 2009-04-15

Similar Documents

Publication Publication Date Title
CN100478911C (zh) 管理线程异常的防护方法
US20220327026A1 (en) Partial database restoration
CN102982067B (zh) 以可重复方式遍历数据
US8468136B2 (en) Efficient data backup
US8280926B2 (en) Scalable de-duplication mechanism
CN104040481B (zh) 用于融合、存储和检索增量式备份数据的方法和系统
US20060235907A1 (en) Pausable backups of file system items
US20070079087A1 (en) User interface for archival storage of data
US20080034017A1 (en) Links to a common item in a data structure
CN102541757B (zh) 写缓存方法、缓存同步方法和装置
CN1524223A (zh) 信息备份的系统和方法
CN101158918A (zh) 用于跟踪文件的软错误收集的方法和系统
AU2009206038A1 (en) Scalable de-duplication mechanism
CN102043655A (zh) 一种强力卸载软件的方法及系统
US20080065637A1 (en) Locating last processed data
US20110178992A1 (en) File management method of server
US9740571B1 (en) Intelligent continuous data protection snapshot based backups
US20030101167A1 (en) File maintenance on a computer grid
US11645161B2 (en) Catalog of files associated with snapshots
US20060031267A1 (en) Apparatus, system, and method for efficient recovery of a database from a log of database activities
JP5613252B2 (ja) 順次アクセス・バックアップ・アーカイブからデータを効率的に復元する装置及び方法
CN112685370B (zh) 一种日志采集方法、装置、设备和介质
CN101828189A (zh) 用于中断写入恢复的数据存储方法、设备和系统
CN115408200A (zh) 多存储引擎的数据备份方法、装置、电子设备及存储介质
JPH1027116A (ja) 不要ファイル削除装置

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: 20090415

Termination date: 20150725

EXPY Termination of patent right or utility model