CN1353831A - 用于监视正在计算机***中执行的应用内的子进程的建立和解除的方法和设备 - Google Patents
用于监视正在计算机***中执行的应用内的子进程的建立和解除的方法和设备 Download PDFInfo
- Publication number
- CN1353831A CN1353831A CN00808157A CN00808157A CN1353831A CN 1353831 A CN1353831 A CN 1353831A CN 00808157 A CN00808157 A CN 00808157A CN 00808157 A CN00808157 A CN 00808157A CN 1353831 A CN1353831 A CN 1353831A
- Authority
- CN
- China
- Prior art keywords
- subprocess
- data library
- database structure
- existing
- new
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于监视正在计算机***中执行的由操作***,例如视窗操作***控制的应用内子进程(450,445,465)或者线程的建立或解除的方法和虚拟设备驱动程序。提供一个用于存储和该正执行应用(410)内的现存的子进程对应的现存子进程数据库结构的表(455)。周期性地检查该表。若检查时该表不具有条目,可安全地假定现存子进程以及可能的相关子系进程已经退出并且已完成该应用的执行。接着可以执行一系列应用中的其它应用,例如在一软件程序的安装期间,并且使因并发地执行该系列中的应用造成破坏的风险为最小。
Description
技术领域
本发明一般地涉及在执行软件应用期间跟踪进程建立。更具体地,本发明涉及监视正执行的应用的子进程和孙进程的建立和解除。
背景技术
图1中示出常规计算机***100,其具有若干硬件部件,包括诸如中央处理器(CPU)的处理器110、诸如RAM的存储器和非易失性存储媒体130,它们彼此通信。未示出的其它硬件部件包括磁盘机、网络部件以及其它业内人士周知的硬件部件。
常规计算机***100还包括可以利用这些硬件部件110、120、130存储并执行的软件程序。具体地,计算机***100中的软件包括:驻留在存储媒体130中的应用150、存储器120中存储的操作***160和可能存储在存储媒体130及存储器120中的其它应用或程序。当计算机现用时,可在存储器120中找到应用150。当关掉计算机时,可在存储媒体130中找到操作***160。这样,如业内人士应该了解的那样,可在不同的位置存储操作***160。
应用150和操作***160彼此并且可能和***100中的其它软件交互,以便如用户指定那样向用户提供数据存取以及控制***100中的其它硬件和软件。计算机***100的用户通过指示操作***160执行或“运行”应用150而执行应用150。接着操作***160利用存储器120、处理器110以及可在计算机***100中得到的其它设备执行所需的应用150并且可能执行与应用150交织的其它程序。
操作***160可以是业内人士周知的任何常见操作***。个人计算机中使用的流行常规操作***包括诸如微软公司的各种32位视窗(“Win32”)操作***。它们包括微软的视窗NT、视窗95和视窗98。其它可用作为操作***160的其它常见操作***包括供工作站使用的UNIX和供个人计算机使用的DOS。
按照操作***,***中运行的基于Win32的应用被称为“进程”。每个进程至少包括单个由操作***运行的执行线程。线程是代码的单元,其可从操作***得到一些操作时间以便和其它代码单元并发地运行,而且线程必须和某进程相关。
基于Win32的应用可以利用视窗操作***提供的各种技术来提高并发运行多个应用的能力。这些并发技术中的一种是“多线索化”,其中一个或多个进程的一部分或“多个线程”是独立的并且可并发执行。
然而,并发地执行二个独立线程有时并不特别有效。在一个正执行的应用或进程,即“父”进程,产生另一个“子”进程并且尤其在该子进程产生孙进程的情况中,出现这种低效率。当该父进程是一系列要执行的进程或者应用中的一个时,可能产生问题。例如,可能在其子进程或孙进程中一个或多个终止之前父进程已终止。尽管诸如视窗95的操作***提供多线索技术,如果在被终止父进程的子进程仍为现用的同时开始执行某另一个应用,在一些计算机***中可能造成破坏。
图2示出在一计算机***例如图1的***100中存储供执行的一系列应用。该系列包括第一应用210、第二应用220和第三应用230,每个应用代表一级更大的用于安装软件程序的安装进程。应用210、220、230可存储在存储介质130或存储器120中,如图1中示出那样。应用210、220、230的执行是由存储器120中存储的操作***240管理的。
在图2中,由于操作***240的控制,按顺序地执行应用210、220、230。图2是在已经开始执行第一应用210并且第一应用210已经建立子进程250、260的时刻画出的。此外,子进程260已经产生它自己的子进程,即“孙”进程270、280。
在图2中,可能在终止子进程250、260或者孙进程270、280之前终止第一应用210的执行。如果该安装进程不等待子进程或孙进程的执行的终止,操作***240可能启动第二应用220,即下一级安装的执行。在第一应用210的一个或多个子进程或者孙进程仍在执行的同时执行第二应用或可能执行另一个应用会在使用这些应用的计算机***中造成破坏。
在视窗95中,已公布的Win32 API被认为是用于在终止某父应用的子进程之前延迟其它应用的执行。但是,由于Win32 API不跟踪父应用的孙进程的建立,Win32 API常常不能正确工作。从而,当只使用Win32API时,可能会在父进程的子进程尤其是孙进程终止之前开始执行其它应用。概言之,现存技术不能在计算机***中执行应用期间可靠地跟踪子进程和孙进程的建立和解除。
技术内容
本发明一般地涉及监视正在计算机***中经操作***控制而执行的应用内的子进程和孙进程的建立和解除。子进程具有对应的子进程数据库结构,而正执行的应用具有对应的应用进程数据库结构。设置一个用于存储和正执行应用内正执行的子进程对应的现存子进程数据库结构的表。
依据本发明的一个方面,当在执行应用期间建立新进程时,检索和该新进程对应的新进程数据库结构。利用该新进程数据库结构,检索和该新进程的父进程对应的父进程数据库结构。该父进程数据库结构和该应用进程数据库结构比较。若该父进程数据库结构和该应用进程数据库结构相同,把该新进程识别为一个现存的子进程。若把该新进程识别为现存子进程,把该新进程数据库结构添加到现存子进程数据库结构表中。
依据本发明的另一个方面,监视应用内的子进程的建立和解除包括确定在执行该应用期间中何时终止某进程。检索和该终止进程对应的终止进程数据库结构。该终止进程数据库结构和该表中的现存子进程数据库结构比较,若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程识别为一个终止的子进程。若该终止进程被识别为终止的子进程,从该现存子进程数据库结构表中去掉该终止进程数据库结构。
依据另一个方面,本发明可位于驻留在操作***和正执行应用或进程之间的虚拟设备驱动程序中。可以在该计算机***中的存储媒体中存储该虚拟设备驱动程序。该VxD(虚拟设备驱动程序)和操作***以及正执行应用二者交互。
依据本发明的再一个方面,周期地检查该表以判定该表是否具有入口。若该表不具有入口,可安全地假定现存子进程以及,可能地,相关的孙进程已经退出并且该应用的执行已完成。接着可以在因并发地执行一系列应用,例如在安装某软件程序期间,多个应用而产生破坏的最小风险下执行该系列中的其它应用。
本发明的这些以及其它方面和优点会在下述连带着附图描述本发明的示范实施例的详细说明中变为清楚。
附图说明
图1是常规计算机***100的概括方块图;
图2是一个概括方块图,示出常规计算机***100内一系列软件应用的执行;
图3是依据本发明的一示范实施例的包含着用于监视正执行应用内的子进程的建立和解除的设备和方法和计算机***300的概括方块图;
图4是依据本发明的一示范实施例的监视正执行应用内子进程的建立的虚拟设备驱动程序的概括方块图;
图5是依据本发明的一示范实施例的用来监视正执行应用内子进程的建立的方法的流程图;
图6是依据本发明的一示范实施例的监视正执行应用内子进程的解除的虚拟设备驱动程序的概括方块图;以及
图7是依据本发明的一示范实施例的用来监视正执行应用内子进程的解除的方法的流程图。
具体实施方式
在下述详细说明中,将提供本发明的用来监视正执行应用内子进程的建立和解除的设备和方法的各种实施例。本发明的一些实施例,尤其是本发明的一些示范方法,将代表一些具体应用,包括一种计算机***和一种计算机可读媒体。参照图3-7详细说明本发明的实施例。
图3是包含着依据本发明的一实施例的用于监视正执行应用内子进程的建立和解除的一种设备和方法的计算机***300的方块图。图3的计算机***300包括处理器330和存储器325。处理器330可含有单个微处理器,或者含有用于把该计算机***配置成多处理***的多个微处理器。存储器325存储供处理器330执行的指令和数据的一部分。如果全部地或者部分地用软件(包括计算机程序)实现本发明的示范***,存储器325在运行时存储可执行代码。存储器325可包括多组动态随机存取存储器(DRAM)以及高速缓冲存储器。
图3的***还包括海量存储设备335、***部件(组)340、输入部件(组)355、便携式存储媒体驱动器(组)360、图形子***370和显示器385。为了简明,图3中示出的部件描述成通过单条总线380连接。然而,可以通过一个或多个数据传输装置连接这些部件。例如,可以通过本地微处理器总线连接处理器330和存储器325,并且可通过一条或多条输入/输出(I/O)总线连接海量存储设备335、***设备(组)340、便携式存储媒体驱动器(组)360和图形子***370。
典型地用磁盘机或光盘机实现的海量存储设备335是非易失性存储部件,用于存储供处理器330使用的数据和指令。在另一实施例中,海量存储设备存储一个计算机程序,该程序被执行时供装入到存储器325中以实现本发明的示范方法。也可以在处理器330中存储本发明的示范方法。
便携式存储媒体驱动器360和诸如软盘、硬盘或光盘的便携式非易失性存储媒体一起运行,并且可以包括一种或多种机器可读媒体例如半导体存储器(如EEPROM)或者其它计算机可读媒体,用于对和从图3的计算机***输入和输出数据以及代码。在一实施例中,在这样的便携式媒体上存储本发明的示范方法并且通过该便携式存储媒体驱动器360输入到该计算机***300。
***设备(组)340可包括任何类型的计算机支持设备,例如输入/输出(I/O)接口,以便对计算机***300增加其它功能。例如,***设备(组)340可包括一个网络接口卡,用于使计算机***300和网络、调制解调器等交互。
输入设备(组)355提供用户接口的一部分。输入设备(组)355可包括用于输入字母数字以及其它键信息的字母数字键盘,或者包括指点设备,例如鼠标、跟踪球、操纵杆或光标方向键组。这样的设备提供用来和依据本发明的示范实施例的方法交互的辅助手段。
为了显示文本和图形信息,图3的计算机***300包含图形子***370和显示器385。显示器385可包括阴极射线管(CRT)显示器,液晶显示器(LCD)、其它适用的显示器设备,或者其它用于显示以便使用户能观看子进程的状态例如子进程在正执行应用内的建立和解除的装置。图形子***370接收文本和图形信息并处理这些信息以供输出到显示器385。显示器385可用于显示对象、部件接口和/或显示其它作为用户接口的一部分的信息。
图3的***300还包括声频***350。在一实施例中,声频***350包括一个声卡,该声卡从***设备340中的麦克风接收声频信号。
此外,图3的***包括输出设备345。适用的输出设备的例子包括扬声器、打印机等等。
图3的计算机***中含有的设备是通用计算机***中的典型设备,并且用来代表业内人士周知的大范围的这种计算机设备。图3的***示出一种实践上可用来实现依据本发明的各种示范实施例的方法的平台。大量其它平台也是足以满足的,例如可从苹果计算机公司购到的基于Macintosh平台、网络平台、多处理器平台、其它个人计算机、工作站、主机、导航***等等。
计算机***300还可包括一个用于监视的不同的显示装置,例如CRT显示器、LCD显示器、投影显示器等。类似地,任何类型的存储器可充当存储器325。除了部件接口之外,还可以使用其它接口装置,包括字母数字键盘、其它键信息或任何指点设备,诸如鼠标、跟踪球、操纵杆、光标或方向键。
图3的计算机***300还包括一个设备驱动程序,其中可存储依据本发明建立的示范虚拟设备驱动程序(“VxD”)。一些操作***,例如视窗95,提供使用虚拟设备驱动程序,后者通常用于改进软件性能。虚拟设备驱动程序典型地是一个32位保护方式驱动程序,它管理诸如硬件设备或已安装软件的***资源,从而多于一个的应用可同时使用资源。“VxD”中的“x”代表设备驱动程序的类型。例如,用于显示设备的虚拟设备驱动程序称为VDD,用于计时设备的虚拟设备驱动程序是VTD,用于打印设备的虚拟设备驱动程序是VPD,并依此类推。
VxD支持用于典型计算机的硬件设备,包括盘控制器、串行和并行端口、键盘和显示设备,等等,如果多个应用之间的切换会破坏硬件设备的状态,该设备通常具有对应的虚拟设备和VxD。该VxD典型地为每个应用跟踪设备的状态并且确保只要某应用继续该设备处于正确状态。
尽管大多数虚拟设备管理硬件,一些虚拟设备只管理已安装应用,例如MS_DOS设备驱动程序。这样的虚拟设备含有仿真该软件的代码或者确保该软件只使用对该目前运行的应用提供的数据。
在图3中,VxD可存储在存储器325、海量存储器335或便携式存储媒体360中。虚拟设备驱动程序代表一种依据本发明的示范方法(后面更详细解释)并且可以和例如视窗95的操作***一起使用以便监视应用执行期间子进程的建立和解除。
图4示出依据本发明的一个示范虚拟设备驱动程序400。VxD400配置成判定新进程425是否是正执行应用410的现存子进程465。从而,VxD400和正执行应用410以及操作***405通信,其中操作***405存储在图3的计算机***300的海量存储设备335或存储器325中。操作***405控制应用410的执行。
在图4中,正执行应用410示成是现存子进程445和450的父进程。正执行应用410可由操作***405直接控制,或者,它可以是在操作***405控制下正执行的一个或多个父进程建立的子进程或孙进程。从而,例如,如果正执行应用410是另一个父进程(未示出)的子进程,现存子进程445和450应是该父进程的孙进程。这样,VxD400配置成监视子进程和孙进程二者的建立和解除。
在图4中,应用410具有对应的用来标识具体应用410的应用数据库结构(“APDB”)412。APDB412包括若干进程标识符,这些标识符分别标识应用410、应用410的任何子进程以及应用410的任何孙进程。例如,下述代码代表视窗95或视窗NT操作***中使用的一个示例APDB:
typedef struct PDB DWORD Type; DWORD cReference; DWORD unl; DWORD pSomeEvent; DWORD TerminationStatus; DWORD un2; DWORD DefaultHeap; DWORD MemoryContext; DWORD flags; DWORD pPSP; WORD PSPSelector; WORD MTEIndex; WORD cThreads; WORD cNotTermThreads; WORD un3; WORD cRingOThreads; DWORD HeapHandle; DWORD W16TDB; DWORD MemMapFiles; PENVIRONMENT DB pEDB; DWORD pHandleTable; struct PDB*ParentPDB; DWORD MODREFList; DWORD ThreadList; DWORD DebuggeeCB; <!-- SIPO <DP n="8"> --> <dp n="d8"/> DWORD LocalHeapFreeHead; DWORD InitialRingOID; DWORD crst[41; DWORD un4[3] DWORD pConsole; DWORD tlsInUseBits1; DWORD tlsInUseBits2; DWORD ProcessDWORD; struct PDB*ProcessGrou DWORD pExeMODREF; DWORD TopExcFilter; DWORD BasePrilrity; DWORD HeapOwnList; DWORD HeapHandleBlockLis DWORD pSomeHeapPtr; DWORD pConsoleProvider; WORD EnvironSelector; WORD ErrorMode; DWORD pevtLoadFinished; WORD UTState; }PDB,*PPDB;
在图4中,操作***405包括一个控制计算机***300中新进程的建立的***进程建立子例程415。***进程建立子例程415在应用410的执行期间建立具有对应的新进程数据库结构(“NPDB”)430的新进程425。新进程数据库结构430可以包括一些进程标识符,它们分别标识新进程425和新进程425的父进程。
在图4中,一旦建立新进程425,***进程建立子例程415在线路435上输出一个信号。在操作***405为视窗95的一个例子中,该信号是Create_Thread信号或Thread_Init信号。
在图4中,操作***405还包括一个取得现行进程子例程420。在该操作***405为视窗95的例子中,子例程420是视窗95操作***提供的VWIN32_GetCurrentProcessHandle子例程。当由调用方475调用时,取得现行进程子例程420在线路440上把新进程数据库结构430转发给VxD 400。
在图4中,已经开始执行应用410并且已经产生包括着子进程445和子进程450的子进程。这些进程445和450被当成是“现存的”,因为它们尚未终止,反之则被标识为正执行应用410的终止子进程。现存子进程445和450分别具有对应的现存子进程数据库(“EPDB”),在图4中用EPDB0和EPDB1表示。每个现存子进程数据库结构最好包括标识它自己、它的父进程以及它的祖父进程或应用(若有的话)的各个进程标识符。
在图4中,设置一个表455,用于存储和该正执行应用内现存的子进程对应的现存子进程数据库结构。如图4中所示,已经利用后面会更详细说明的方法把和现行子进程445和450对应的EPDB0和EPDB1按序地添加到表455中。取决于所需实现,可以用软件或者硬件实现表455。例如,在图3中,可以利用计算机***300中的缓冲器实现表455,并且保持在存储器425或者海量存储器335中。图4中示出表455至少具有四个条目(条目0到条目3),并且可按该程序的具体应用的需要具有任何数量的条目。
在图4中,设置一个指针460以用于标识表455中的一个现存子进程数据库结果,最好是最最近添加到该表中的EPDB。在图4,EPDB1是在EPDB0的后面添加到表455中的,从而指针460指向EPDB1。指针460最好用一个计数器体现,其可以用计算机***300的硬件或者软件实现。指针460是可移动的以指向表455中各条目中的任一条目,如后面更详细说明那样。
在图4中,VxD配置成监视新进程425的建立和判定能否在框465中把新进程425分类为正执行应用410的一个现存子进程。为此,VxD400包括执行在图5的流程图中描述的各特定操作的各个部分。
在图4和5中,在步骤510中开始应用410的执行,VxD400包括一个判定部分470,其在步骤520判定何时建立新进程425。如图4中所示,判定部分470和***进程建立子例程415通信,以便在线路435上接收指示已经建立新进程425的信号。从而,在该操作***405为视窗95的例子中,当建立新进程425时VxD400的判定部分470在线路435上接收Create Thread信号或者Thread Init信号。如业内人士理解的那样,可以向判定部分470传送其它各种报文和信号,以便告诉VxD400线程的建立。
在图5中,在步骤520中判定已经建立新进程425后,在步骤530中,VxD400调用“取得现行进程”子例程420以便在线路440上得到和新进程425对应的新进程数据库结构430。如图4中所示,操作530是由在线路上和取得现行进程子例程420通信的调用部分475实现的。在该操作***405为视窗95的例子中,调用部分475调用子例程VWIN32_GetCurrentProcessHandle来得到和新进程425对应的现行进程句柄或数据库结构,即NPDB430。
在图4和5中,当调用取得现行进程子例程420时,在步骤530中把NPDB430传送到调用部分475。在NPDB430内,含有标识新进程425的父进程的父进程标识符。这样,VxD400可以利用该父进程标识符检索新进程425的父进程的父进程数据库结构(PPDB)。例如,在一实施例中,和NPDB430一起传送一个指针,然后VxD400可利用该指针从操作***405检索该PPDB。
如图4和5中所示,虚拟设备驱动程序400还包括一个和调用部分以及正执行应用410通信的比较部分480。比较部分480从调用部分475接收该PPDB,并且接着在步骤540中比较该PPDB和与应用410对应的APDB 412。这样,VxD400确定线程425是否是正执行应用410的子进程。若正在执行多于一个的应用,该PPDB和各个应用的应用数据库结构比较。
在图5的步骤550中,若比较部分480判定在与新进程425的父进程对应的PPDB和APDB 412之间不存在相同,则VxD识别新进程425不是正执行应用410的子进程,并且VxD不注意新进程425,然后流程返回到步骤520。另一方面,如果在步骤550中PPDB和APDB匹配,该流程进入步骤560。在步骤560中,VxD400的标识部分485在框465中把新进程425标识为现存子进程。接着把该正面识别告诉VxD400的加法器部分490。
在图4和5中,步骤560后在步骤570,加法器部分490从判定部分470检索NPDB 430并且把NPDB 430加到现存子进程数据库表455的条目“2”中。在把NPDB 430加到表455后,移动指针以指向条目“2”中的NPDB 430。在该利用计数器维持指针460的例子中,该计数器递增“1”。然后图5的方法从步骤570返回到520以便确定在执行应用410中何时建立下个新进程。
如图6和7中示出那样,依据本发明的各实施例的示范虚拟设备驱动程序也能临视正执行应用内的线程的解除。示范性虚拟设备驱动程序600具有和VxD400相类似的各个部分,并且还包括下面详细说明的配置成监视正执行应用410内子进程和孙进程的解除的各个部分。
在图6中,图3的计算机***300的海量存储设备335或存储器325中存储的操作***605共有图4中的操作***405的特性。例如,操作***605类似地控制应用410的执行并且包括取得现行进程子例程420。此外,操作***605包括一个***进程终止子例程610,子例程610在计算机***300中正执行应用410的同时控制进程的终止。图6中,***进程终止子例程610在应用410的执行中终止具有对应的终止进程数据库结构(“TPDB”)620的进程615。TPDB 620最好包括和图4的NPDB430相类似的进程标识符组。
一旦终止进程615,***进程终止子例程610在线路625上输出一个信号。在操作***605为视窗95的一个例子中,该信号是Terminate_Thread信号。利用视窗95,***进程终止子例程610还可以向线路625输出其它指示解决线程的报文信号,其中包括Thread_Not_Executable报文信号和Destroy_Thread报文信号。如业内人士应了解那样,可以对线路625输出各种其它类似的报文信号以通知VxD 600某线程的解除。
在图6中,已经开始执行应用410,并且已经产生现存子进程630、635和640。现存子进程630-640各具有对应的EPDB,即EPDB0、EPDB1和EPDB2,如图6中所示。利用上面根据图4和5说明的方法,已经把EPDB0-2加到表455中。
在图6中,VxD 600不仅配置成类似于图4的VxD400在应用410的执行中监视子进程的建立,还配置成监视进程615的终止并确定终止进程615是否是现存子进程630-640中的任一个。为了实现这种监视,VxD400包括实现图7的流程图700所描述的一些特定操作的若干部件。
在图6和7中,在步骤710开始应用410的执行。VxD 600包括一个在步骤720中确定何时终止进程615的判定部分645。判定部分645和***进程终止子例程610通信,以便从线路625接收指示进程615已终止的信号。在操作***405为视窗的该例子中,判定部分645对线路625监视Terminate_Thread报文信号或Thread_Not_Executable报文信号或Destroy_Thread报文信号。通过对线路625监视这些信号中的任一个,VxD 600得知何时终止某线程,例如进程615。
在图7中,在步骤720中确定进程615已终止后,VxD600在步骤730中利用调用部分655调用“取得现行进程”子例程420,以便在线路650上得到和终止进程615对应的终止进程数据库结构620。在操作***605为视窗95的该例中,调用部分655调用子例程VWIN32_GetCurrentProcessHandle来得到作为和终止进程615对应的现行进程句柄或数据库结构的TPDB 620。
如图6和7中所示,虚拟设备驱动程序600还包括一个和调用部分655通信接收TPDB 620的并接着在步骤740中把TPDB 620和表455中存储的现存子进程数据库结构EPDB 0_2比较的比较部分660。
在图6和7的步骤750中,若比较部分660判定TPDB 620和表455中存储的任何现存进程数据库结构EPDB 0_2之间不存在匹配,VxD 600识别终止进程615不是现存子进程630-640中的一个,然后该流程返回到步骤720。在步骤760中,若比较部分660判定TPDB 620和表455中存储的EPDB 0-2中的任一个相同,标识部分把终止进程615标识为终止子进程。例如,在图6中,比较部分660确定TPDB 620和表455中存储的EPDB 2相同,从而标识部分670把终止进程615标识为一个终止的子进程,即子进程640。
在图6和7中,流程从步骤760进入步骤770中,在步骤770中位于VxD 600内的删除部分675从现存子进程数据库结构EPDB 0-2的表455中删除TPDB 620。即,在图6中因为EPDB 2和TPDB 620匹配,从表455中删除EPDB 2。在其它的例子中,当表455中存储的一个或多个其它EPDB和TPDB 620匹配时,还从表455删除这样的EPDB。在从表455删除EPDB后,移动指针以指向剩余中的最最近添加到表455中的现存子进程数据库结构。这样,在图2中,在从表455删除EPDB之后,向回接一个条目移动指针460以指向条目“1”即EPDB 1。在另一个例子中,在从该表中删除EPDB 0的情况下,把EPDB 1移动到条目“0”,EPDB 2移动到条目“1”,并且把指针向回移动一个条目以指向条目“1”中的EPDB 2。若指针460是用一个计数器实现的,则该计数器递减“1”或者,在其它例子中,递减从表455删除的条目数量。接着图7的方法从步骤770返回到步骤720以判定执行应用410中何时解除另一个进程。
依据本发明的各示范实施例,若正在执行的应用产生子进程,向被监视进程表455添加和该子进程对应的子进程数据库结构。当该子进程终止时,从表455删除该子进程数据库结构。
这样,本发明的各实施例还在计算机***中对一系列的应用或者进程的执行提供控制。例如,一个软件程序的安装进程通常包括执行其中包含的一系列的安装应用。为了避免计算机***中的破坏,常常要求按顺序地执行这些安装应用,从而不并发地执行二个安装应用。
当执行一系列应用中的一个应用时,示例VxD,例如VxD 400或者600,周期地判定表455是否具有任何条目。这样,如果表455不含有现存子进程数据库结构,该VxD识别出现存子进程并且可能相关的孙进程已经退出而且完成该应用的执行。从而,该VxD可接着信令操作***按顺序执行下一个应用,例如安装进程中的下个步骤。
在别的示范实施例中,启动被监视应用的执行的操作***或者程序调用VxD以判定该表是否空。在用计数器实现表455的例子中,VxD判定该计数器是否为零。操作***可能以这种方式周期性地调用VxD,例如每5秒等。若该计数器不等于零,接着按希望继续周期性调用。反之,则可安全假定已经终止被监视应用以及其子女,并可执行或者安装该系列中的下个程序。
应理解上面说明的具体实施例仅仅解说本发明的原理,而且业内人士可以作出各种修改并不背离本发明的范围和精神。从而,本发明的范围仅由后面的权利要求书的范围限定。
Claims (65)
1.一种用于监视正在计算机***中执行的并由操作***控制的应用内子进程的建立和解除的方法,其中每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该方法包括:
提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表;
判定该应用执行中何时建立新进程;
检索和该新进程对应的新进程数据库结构;
利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;
比较该父进程数据库结构和该应用进程数据库结构;
若该父进程数据库结构和该应用进程数据库结构相同,把该新进程标识为一个现存子进程;以及
若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。
2.权利要求1的方法,还包括:
判定该应用执行中何时终止一进程;
检索和该终止进程对应的终止进程数据库结构;
比较该终止进程数据库结构和该表中的各现存子进程数据库结构;
若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程,以及
若把该终止进程标识为终止子进程,从该现存在进程数据库结构表中删除该终止进程数据库结构。
3.权利要求1的方法,其中在该计算机***的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括:
提供一个指向该表中的一个现存子进程数据库结构的指针;以及
在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构。
4.权利要求2的方法,其中在该计算机***的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括:
提供一个指向该表中的一个现存子进程数据库结构的指针;
在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构;以及
在从该表删除该终止进程数据库结构后,移动该指针以指向现存子进程数据库结构中最最近添加到该表中的一个。
5.权利要求4的方法,其中在该计算机***中的一个计数器里保持该指针,并且其中:
移动指针指向新进程数据库结构包括递增该计数器;以及
移动指针指向最最近添加到该表中的现存子进程包括递减该计数器。
6.权利要求2的方法,其中该正执行应用是该计算机***内存储的供执行的一系列应用中的一个,该方法还包括:
周期性地判定该表是否包含任何子进程数据库结构;以及
若该表不包含现存子进程数据库结构,执行该应用系列中的下个应用。
7.权利要求5的方法,其中该正执行应用是计算机***内存储的供执行的一系列应用中的一个,该方法还包括:
周期性地判定该计数器的值是否为零;以及
若该计数器的值为零,执行该应用系列中的下个应用。
8.权利要求6的方法,其中该应用系列至少是一安装程序的一部分。
9.权利要求1的方法,其中该操作***是具有用来建立该新进程的并且随后提供Create Thread信号的***进程建立子例程的视窗操作***,该操作***还具有Get Current Process Handle子例程以便提供该新进程数据库结构。
10.权利要求9的方法,其中判定何时建立新进程包括接收Create Thread信号。
11.权利要求9的方法,其中检索新进程数据库结构包括调用Get_Current_Process_Handle子例程。
12.权利要求9的方法,其中检索父进程数据库结构包括利用一个新进程数据库结构中的用来标识父进程数据库结构的指针。
13.权利要求2的方法,其中该操作***是视窗操作***,其具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程。
14.权利要求13的方法,其中判定何时终止进程包括接收Terminate_Thread信号。
15.权利要求13的方法,其中检索终止进程数据库结构包括调用Get_Current_Process_Handle子例程。
16.一种用于监视正在计算机中执行的并由视窗操作***控制的应用内子进程的建立和解除的方法,其中每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,视窗操作***具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,该操作***还具有一个调用时提供和该新进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,该方法包括:
提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表;
一旦接收Create_Thread信号判定已经建立新进程;
在判定已建立新进程后,调用Get_Current_Process_Handle子例程以便检索新进程数据库结构;
利用该新进程数据库结构中的一个指针确定和该新进程的父进程对应的父进程数据库结构;
比较该父进程数据库结构和该应用进程数据库结构;
若该父进程数据库结构和该应用进程数据库结构相同,把该新进程标识为一个现存子进程;以及
若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。
17.权利要求16的方法,其中,该操作***还具有用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程,当被调用时Get_Current_Process_Handle子例程还提供和终止进程对应的终止进程数据库结构,该方法还包括:
一旦接收Terminate_Thread信号,判定该进程已结束;
在判定该进程已结束后,调用Get_Current_Process_Handle子例程以检索终止进程数据库结构;
比较该终止进程数据库结构和该表中的各现存子进程数据库结构,
若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程;以及
若把该终止进程标识为终止子进程,从该现存子进程数据库结构表中删除该终止进程数据库结构。
18.一种位于计算机***的存储媒体中的用于监视正在该计算机***执行的并由操作***控制的应用内的子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,并设置一个用于存储和该正执行应用的现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括:
一个判定在该应用的执行中何时建立新进程的判定部分;
一个调用部分,其:
(i)检索和该新进程对应的新进程数据库结构,并且
(ii)利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;
一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;
一个标识部分,若该父进程数据库结构和该应用进程数据库结构相同,其把该新进程标识为一个现存子进程;以及
一个添加部分,若该新进程被标识为现存子进程,它把该新进程数据库结构添加到该现存子进程数据库结构表中。
19.权利要求18的虚拟设备驱动程序还包括:
一个判定该应用执行中何时终止进程的判定部分;
一个检索和该终止进程对应的终止进程数据库结构的调用部分;
一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;
一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程,以及
一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构表中删除该终止进程数据库结构。
20.权利要求18的虚拟设备驱动程序,其中该操作***是具有一个用于建立该新进程并随后提供Create_Thread信号的***进程建立子例程的视窗操作***,该操作***还具有一个用于提供该新进程数据库结构的Get_Current_Process_Handle子例程。
21.权利要求20的虚拟设备驱动程序,其中该判定部分和该***进程建立子例程通信并且通过接收Create_Thread信号判定何时建立新进程。
22.权利要求20的虚拟设备驱动程序,其中该调用部分和该Get_Current_Process_Handle子例程通信并且通过调用该Get_Current_Process_Handle子例程检索该新进程数据库结构。
23.权利要求19的虚拟设备驱动程序,其中该操作***是一个具有一个用建立新进程并随后提供Create_Thread信号的***进程建立子例程、一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程的视窗操作***。
24.权利要求23的虚拟设备驱动程序,其中该判定部分和该***进程终止子例程通信并且通过接收Terminate_Thread信号判定何时终止进程。
25.权利要求23的虚拟设备驱动程序,其中该调用部分和该Get_Current _Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该终止进程数据库结构。
26.一种位于计算机***的存储媒体中的用于监视正在该计算机***中执行的并由视窗操作***控制的应用内子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该视窗操作***具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,该操作***具有一个调用时提供和该进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,并设置一个用于存储和该执行应用内现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括:
一个和该***进程建立子例程通信的判定部分,它一旦接收Create_Thread信号判定已建立新进程;
一个调用部分,其:
(i)调用该Get_Current_Process_Handle子例程以便检索新进程数据库结构,以及
(ii)利用该新进程数据库结构中的一个指针检索和该新进程的父进程对应的父进程数据库结构;
一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;
一个标识部分,若该父进程数据库结构和该应用进程数据库结构相同,其把该新进程标识为一个现存子进程,以及
一个添加部分,若该新进程被标识为现存子进程,它把该新进程数据库结构添加到该现存子进程数据库结构表中。
27.权利要求26的虚拟设备驱动程序,其中该操作***还包括一个用于终止进程并出随后提供Terminate_Thread信号的***进程终止子例程,该Get_Current_Process_Handle子例程在调用时还提供和该终止进程对应的终止进程数据库结构,该虚拟设备驱动程序还包括:
一个判定部分,它一旦接收Terminate_Thread信号判定已终止进程;
一个调用Get_Current _Process_Handle子例程检索终止进程数据库结构的调用部分;
一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;
一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程;以及
一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构表中删除该终止进程数据库结构。
28.一种在其中包含处理器可读代码的处理器可读的存储媒体,该处理器可读代码用于编程处理器以实现一种用于监视正在计算机***中执行的并由操作***控制的应用内子进程的建立和解除的方法,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该方法包括:
提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构表;
判定该应用执行中何时建立新进程;
检索和该新进程对应的新进程数据库结构;
利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;
比较该父进程数据库结构和该应用进程数据库结构;
若该父该程数据库结构和该应用进程数据库结构相同,将该新进程标识为一个现存子进程,以及
若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。
29.权利要求28的处理器可读的存储媒体,该方法还包括:
判定该应用执行中何时终止一进程;
检索和该终止进程对应的终止进程数据库结构;
比较该终止进程数据库结构和该表中的各现存子进程数据库结构;
若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程;以及
若把该终止进程标识为终止子进程,从该现存子进程数据库结构表中删除该终止进程数据库结构。
30.权利要求28的处理器可读的存储媒体,其中在该计算机***的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括:
设置一个指向该表中一个现存子进程数据库结构的指针;以及
在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构。
31.权利要求28的处理器可读的存储媒体,其中在该计算机***的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括:
设置一个指向该表中的一个现存子进程数据库结构的指针;
在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构;以及
在从该表删除该终止进程数据库结构后,移动该指针以指向现存子进程数据库结构中最最近添加到该表中的一个。
32.权利要求28的处理器可读的存储媒体,其中在该计算机***中的一个计数器里保持该指针,并且其中:
移动指针指向新进程数据库结构包括递增该计数器;以及
移动指针指向最最近添加到该表中的现存子进程包括递减该计数器。
33.权利要求28的处理器可读的存储媒体,其中该正执行应用是该计算机***存储的供执行的一系列应用中一个,该方法还包括:
周期性地判定该表是否包含任何子进程数据库结构;以及
若该表不包含现存子进程数据库结构,执行该应用系列中的下个应用。
34.权利要求28的处理器可读的存储媒体,其中该正执行应用是该计算机***内存储的供执行的一系列应用中的一个,该方法还包括:
周期性地判定该计数器的值是否为零;以及
若该计数器的值为零,执行该应用系列中的下个应用。
35.权利要求34的处理器可读的存储媒体,其中该应用系列至少是一安装程序的一部分。
36.权利要求28的处理器可读的存储媒体,其中该操作***是具有用来建立新进程并随后提供Create_Thread信号的***进程建立子例程的视窗操作***,该操作***还具有用于提供新进程数据库结构的Get_Current_Process_Handle子例程。
37.权利要求28的处理器可读的存储媒体,其中判定何时建立新进程包括接收Create_Thread信号。
38.权利要求28的处理器可读的存储媒体,其中检索新进程数据库结构包括调用Get_Current_Process_Handle子例程。
39.权利要求28的处理器可读的存储媒体,其中检索父进程数据库结构包括利用一个新进程数据库结构中的用来标识父进程数据库结构的指针。
40.权利要求30的处理器可读的存储媒体,其中该操作***是视窗操作***,其具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程,和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程。
41.权利要求40的处理器可读的存储媒体,其中判定何时终止进程包括接收Terminate_Thread信号。
42.权利要求40的处理器可读的存储媒体,其中检索终止进程数据库结构包括调用Get_Current_Process_Handle子例程。
43.一种在其中包含处理器可读代码的处理器可读的存储媒体,该处理器可读代码用于编程处理器以实现一种用于监视正在计算机***中执行的并由视窗操作***控制的应用内的子进程的建立和解除的方法,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,视窗操作***具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,该操作***还具有一个调用时提供和该新进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,该方法包括:
提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表;
一旦接收Create_Thread信号判定已经建立新进程;
在判定已建立新进程后,调用Get_Current_Process_Handle子例程以便检索新进程数据库结构;
利用该新进程数据库结构中的一个指针确定和该新进程的父进程对应的父进程数据库结构;
比较该父进程数据库结构和该应用进程数据库结构;
若该父进程数据库结构和该应用进程数据库结构相同,把该新进程标识为一个现存子进程;以及
若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。
44.权利要求43的处理器可读的存储媒体,其中,该操作***还具有用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程,当被调用时Get_Current_Process_Handle子例程还提供和终止进程对应的终止进程数据库结构,该方法还包括:
一旦接收Terminate_Thread信号,判定该进程已结束;
在判定该进程已结束后,调用Get_Current_Process_Handle子例程以检索终止进程数据库结构;
比较该终止进程数据库结构和该表中的各现存子进程数据库结构,
若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程;以及
若把该终止进程标识为终止子进程,从该现存子进程数据库结构表中删除该终止进程数据结构。
45.一种位于计算机***的存储媒体中的用于监视正在该计算机***中执行的并由操作***控制的应用内的子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,并设置一个用于存储和该正执行应用内现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括:
判定装置,用于判定在该应用的执行中何时建立新进程;
调用装置,用于:
(i)检索和该新进程对应的新进程数据库结构,并且
(ii)利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构,
比较装置,用于比较该父进程数据库结构和该应用进程数据库结构;
标识装置,用于若该父进程数据库结构和该应用进程数据库结构相同把该新进程标识为一个现存子进程;以及
添加装置,用于若该新进程被标识为现存子进程把该新进程数据库结构添加到该现存子进程数据库结构表中。
46.权利要求45的虚拟设备驱动程序还包括:
判定装置,用于判定该应用执行中何时终止进程;
调用装置,用于检索和该终止进程对应的终止进程数据库结构;
比较装置,用于比较该终止进程数据库结构和该表中的各现存子进程数据库结构;
标识装置,用于若该终止进程数据库结构和一个现存子进程数据库结构相同把该终止进程标识为一个终止子进程;以及
删除部分,用于若该终止进程被标识为终止子进程从该现存子进程数据库结构表中删除该终止进程数据库结构。
47.权利要求45的虚拟设备驱动程序,其中该操作***是具有一个用于建立该新进程并随后提供Create_Thread信号的***进程建立子例程的视窗操作***,该操作***还具有一个用于提供该新进程数据库结构的Get_Current_Process_Handle子例程。
48.权利要求47的虚拟设备驱动程序,其中该判定装置和该***进程建立子例程通信并且通过接收Create_Thread信号判定何时建立新进程。
49.权利要求47的虚拟设备驱动程序,其中该调用装置和该Get_Current_Process_Handle子例程通信并且通过调用该Get_Current_Process_Handle子例程检索该新进程数据库结构。
50.权利要求46的虚拟设备驱动程序,其中该操作***是一个具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程、一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程的视窗操作***。
51.权利要求50的虚拟设备驱动程序,其中该判定装置和该***进程终止子例程通信并且通过接收Terminate_Thread信号判定何时终止进程。
52.权利要求50的虚拟设备驱动程序,其中该调用装置和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该终止进程数据库结构。
53.一种位于计算机***的存储媒体中的用于监视正在该计算机***中执行的并由视窗操作***控制的应用内子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该视窗操作***具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,该操作***具有一个调用时提供和该新进程对应的新进程数据结构的Get_Current_Process_Handle子例程,并设置一个用于存储和该执行应用内现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括:
一个和该***进程建立子例程通信的判定装置,用于一旦接收Create_Thread信号判定已建立新进程;
调用装置,用于:
(i)调用该Get_Current_Process_Handle子例程以便检索新进程数据库结构,以及
(ii)利用该新进程数据库结构中的一个指针检索和该新进程的父进程对应的父进程数据库结构;
比较装置,用于比较该父进程数据库结构和该应用进程数据库结构;
标识装置,用于若该父进程数据库结构和该应用进程数据库结构相同把该新进程标识为一个现存子进程;以及
添加装置,用于若该新进程被标识为现存子进程把该新进程数据库结构添加到该现存子进程数据库结构表中。
54.权利要求53的虚拟设备驱动程序,其中该操作***还包括一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程,该Get_Current_Process_Handle子例程在调用时还提供和该终止进程对应的终止进程数据库结构,该虚拟设备驱动程序还包括:
判定装置,用于一旦接收Terminate_Thread信号判定已终止进程;
调用装置,用于调用Get_Current_Process_Handle子例程以便检索终止进程数据库结构;
比较装置,用于比较该终止进程数据库结构和该表中的各现存子进程数据库结构;
标识装置,用于若该终止进程数据库结构和一个现存子进程数据库结构相同把该终止进程标识为一个终止子进程;以及
删除装置,用于若该终止进程被标识为终止子进程从该现存子进程数据库结构表中删除该终止进程数据库结构。
55.一种用监视正在计算机***中执行的并由操作***控制的第一应用内子进程的建立和解除的方法,其中,在该计算机***的存储媒体中存储供执行的第二应用,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该方法包括:
设置一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构表;
判定该表是否包含任何现存子进程数据库结构;以及
若该表不包含现存子进程数据库结构执行第二应用。
56.一种其中存储着供执行的并由操作***控制的应用的计算机***,在该计算机***中设置一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表,该***包括:
一个处理器;
一个存储媒体;
一个位于该存储媒体中的用于监视该应用在该计算机***里执行中时子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该虚拟设备驱动程序包括:
一个判定该应用执行中何时建立新进程的判定部分;
一个调用部分,其
(i)检索和该新进程对应的新进程数据库结构,以及
(ii)利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;
一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;
一个标识部分,若该父进程数据库进程和该应用进程数据库结构相同它把该新进程标识为一个现存子进程;以及
一个添加部分,若新进程被标识为现存子进程它把该新进程数据库结构添加到该现存子进程数据库结构中。
57.权利要求56的计算机机***,其中该虚拟设备驱动程序还包括:
一个判定该应用执行中何时终止进程的判定部分;
一个检索和终止进程对应的终止进程数据库结构的调用部分;
一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;
一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程;以及
一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构中删除该终止进程数据库结构。
58.权利要求56的计算机***,其中该操作***是具有一个用来建立新进程并随后提供Create_Thread信号的***进程建立子例程的视窗操作***,该操作***还具有一个用于提供该新进程数据库结构的Get_Current_Process_Handle子例程。
59.权利要求58的计算机***,其中该虚拟设备驱动程序的判定部分和该***进程建立子例程通信并通过接收Create_Thread信号判定何时建立新进程。
60.权利要求58的计算机***,其中该虚拟设备驱动程序的调用部分和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该新进程数据库结构。
61.权利要求57的计算机***,其中该操作***是视窗操作***,其具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程。
62.权利要求61的计算机***,其中该虚拟设备驱动程序的判定部分和该***进程终止子例程通信并通过接收Terminate_Thread信号判定何时终止进程。
63.权利要求61的计算机***,其中该虚拟设备驱动程序的调用部分和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该终止进程数据库结构。
64.一种其中存储着供执行的并由视窗操作***控制的应用的计算机***,该视窗操作***具有一个用于建立新进程并随后提供Create_Thread信号的***进程建立子例程,该操作***还具有一个调用时提供和该新进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,在该计算机***中设置一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表,该***包括:
一个处理器;
一个存储媒体;
一个位于该存储媒体中的用于监视该应用在该计算机***里执行中时子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该虚拟设备驱动程序包括:
一个和该***进程建立子例程通信的判定部分,一旦接收Create_Thread信号它判定已建立新进程;
一个调用部分,其:
(i)调用该Get_Current_Process_Handle子例程以便检索该新进程数据库结构,以及
(ii)利用该新进程数据库结构中的一个指针检索和该新进程的父进程对应的父进程数据库结构;
一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;
一个标识部分,若该父进程数据库结构和该应用进程数据库结构相同,其把该新进程标识为一个现存子进程,以及
一个添加部分,若该新进程被标识为现存子进程,它把该新进程数据库结构添加到该现存子进程数据库结构表中。
65.权利要求64的计算机***,其中,该操作***还包括一个用于终止进程并随后提供Terminate_Thread信号的***进程终止子例程,该Get_Current_Process_Handle子例程在调用时还提供和该终止进程对应的终止进程数据库结构,该虚拟设备驱动程序还包括:
一个判定部分,它一旦接收Terminate_Thread信号判定已终止进程;
一个调用Get_Current_Process_Handle子例程检索终止进程数据库结构的调用部分;
一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;
一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程;以及
一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构表中删除该终止进程数据库结构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/321,006 | 1999-05-27 | ||
US09/321,006 US6704806B1 (en) | 1999-05-27 | 1999-05-27 | Method and device for monitoring the creation and destruction of child processes within an application executing in a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1353831A true CN1353831A (zh) | 2002-06-12 |
CN1252589C CN1252589C (zh) | 2006-04-19 |
Family
ID=23248770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008081573A Expired - Fee Related CN1252589C (zh) | 1999-05-27 | 2000-05-24 | 监视子进程建立和解除的方法、设备驱动器和计算机*** |
Country Status (14)
Country | Link |
---|---|
US (1) | US6704806B1 (zh) |
EP (1) | EP1222529B1 (zh) |
JP (1) | JP2003501720A (zh) |
KR (1) | KR20020022057A (zh) |
CN (1) | CN1252589C (zh) |
AT (1) | ATE394731T1 (zh) |
AU (1) | AU779482B2 (zh) |
BR (1) | BR0010936A (zh) |
CA (1) | CA2373055A1 (zh) |
DE (1) | DE60038808D1 (zh) |
HK (1) | HK1049710A1 (zh) |
IL (2) | IL146702A0 (zh) |
WO (1) | WO2000073895A1 (zh) |
ZA (1) | ZA200109005B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572394A (zh) * | 2013-10-29 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 进程监控方法及装置 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020198811A1 (en) * | 2001-06-12 | 2002-12-26 | Adam Wizon | System and method for monitoring the status of analyses performed on a portfolio of financial instruments |
US7299466B2 (en) * | 2001-12-20 | 2007-11-20 | Cadence Design Systems, Inc. | Mechanism for managing execution environments for aggregated processes |
US7117500B2 (en) * | 2001-12-20 | 2006-10-03 | Cadence Design Systems, Inc. | Mechanism for managing execution of interdependent aggregated processes |
US7159217B2 (en) * | 2001-12-20 | 2007-01-02 | Cadence Design Systems, Inc. | Mechanism for managing parallel execution of processes in a distributed computing environment |
US7093259B2 (en) * | 2001-12-20 | 2006-08-15 | Cadence Design Systems, Inc. | Hierarchically structured logging for computer work processing |
US6964047B2 (en) * | 2001-12-20 | 2005-11-08 | Lucent Technologies Inc. | Method and apparatus for a fast process monitor suitable for a high availability system |
US7925932B1 (en) * | 2004-09-20 | 2011-04-12 | Symantec Operating Corporation | Method and appartus for detecting an application process failure |
US7725501B1 (en) * | 2004-11-12 | 2010-05-25 | Northrop Grumman Corporation | System and method for rapid database application deployment and use |
US8250131B1 (en) | 2004-12-08 | 2012-08-21 | Cadence Design Systems, Inc. | Method and apparatus for managing a distributed computing environment |
US8244854B1 (en) | 2004-12-08 | 2012-08-14 | Cadence Design Systems, Inc. | Method and system for gathering and propagating statistical information in a distributed computing environment |
US8108878B1 (en) | 2004-12-08 | 2012-01-31 | Cadence Design Systems, Inc. | Method and apparatus for detecting indeterminate dependencies in a distributed computing environment |
US7979870B1 (en) | 2004-12-08 | 2011-07-12 | Cadence Design Systems, Inc. | Method and system for locating objects in a distributed computing environment |
US8806490B1 (en) | 2004-12-08 | 2014-08-12 | Cadence Design Systems, Inc. | Method and apparatus for managing workflow failures by retrying child and parent elements |
US10805275B1 (en) * | 2005-08-23 | 2020-10-13 | Trend Micro Incorporated | Multi-process architecture for implementing a secure internet service |
US8065666B2 (en) * | 2006-06-02 | 2011-11-22 | Rockwell Automation Technologies, Inc. | Change management methodologies for industrial automation and information systems |
US20080270974A1 (en) * | 2007-04-30 | 2008-10-30 | Krasimir Topchiyski | Enterprise JavaBeans Metadata Model |
US8473918B2 (en) * | 2008-01-21 | 2013-06-25 | International Business Machines Corporation | Method for singleton process control |
US20100205603A1 (en) * | 2009-02-09 | 2010-08-12 | Unisys Corporation | Scheduling and dispatching tasks in an emulated operating system |
US20150379268A1 (en) * | 2014-06-27 | 2015-12-31 | Prabhat Singh | System and method for the tracing and detection of malware |
US9858159B2 (en) * | 2015-02-20 | 2018-01-02 | International Business Machines Corporation | Fault tolerant distributed computation |
JP6497234B2 (ja) * | 2015-06-19 | 2019-04-10 | 富士通株式会社 | 制御プログラム、制御方法、及び、情報処理装置 |
US10397096B2 (en) | 2017-04-28 | 2019-08-27 | International Business Machines Corporation | Path resolution in InfiniBand and ROCE networks |
US11243899B2 (en) * | 2017-04-28 | 2022-02-08 | International Business Machines Corporation | Forced detaching of applications from DMA-capable PCI mapped devices |
US10778767B2 (en) | 2017-04-28 | 2020-09-15 | International Business Machines Corporation | Persistent memory replication in RDMA-capable networks |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5129084A (en) * | 1989-06-29 | 1992-07-07 | Digital Equipment Corporation | Object container transfer system and method in an object based computer operating system |
US5517655A (en) * | 1991-04-26 | 1996-05-14 | Hewlett-Packard Company | Method for monitoring transactions in an object-oriented environment |
EP0592080A2 (en) | 1992-09-24 | 1994-04-13 | International Business Machines Corporation | Method and apparatus for interprocess communication in a multicomputer system |
US5485626A (en) * | 1992-11-03 | 1996-01-16 | International Business Machines Corporation | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing |
US5404529A (en) | 1993-07-19 | 1995-04-04 | Taligent, Inc. | Object-oriented interprocess communication system interface for a procedural operating system |
US5551037A (en) * | 1993-11-19 | 1996-08-27 | Lucent Technologies Inc. | Apparatus and methods for visualizing operation of a system of processes |
US5835911A (en) | 1994-02-08 | 1998-11-10 | Fujitsu Limited | Software distribution and maintenance system and method |
US5801690A (en) * | 1995-03-24 | 1998-09-01 | Motorola, Inc. | Method for managing termination of a multi-processing software application |
JPH08328880A (ja) | 1995-05-31 | 1996-12-13 | Mitsubishi Electric Corp | 複数のアプリケーションプログラムを同時に実行できるオペレーティングシステムにおける計算機運転管理システム |
US5809303A (en) * | 1995-10-18 | 1998-09-15 | Sun Microsystems, Inc. | Device I/O monitoring mechanism for a computer operating system |
US6275857B1 (en) * | 1996-10-30 | 2001-08-14 | Microsoft Corporation | System and method for freeing shared resources in a computer system |
US5881221A (en) | 1996-12-31 | 1999-03-09 | Compaq Computer Corporation | Driver level diagnostics |
US5784616A (en) | 1997-05-02 | 1998-07-21 | Microsoft Corporation | Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation |
US6480877B1 (en) * | 1998-09-02 | 2002-11-12 | Advanced Micro Devices, Inc. | Orphan computer process identification |
US6223203B1 (en) * | 1998-11-04 | 2001-04-24 | Advanced Micro Devices, Inc. | Method for performing parallel management operations including and deleting computer systems |
-
1999
- 1999-05-27 US US09/321,006 patent/US6704806B1/en not_active Expired - Lifetime
-
2000
- 2000-05-24 CA CA002373055A patent/CA2373055A1/en not_active Abandoned
- 2000-05-24 KR KR1020017015203A patent/KR20020022057A/ko not_active Application Discontinuation
- 2000-05-24 EP EP00932737A patent/EP1222529B1/en not_active Expired - Lifetime
- 2000-05-24 WO PCT/US2000/014219 patent/WO2000073895A1/en not_active Application Discontinuation
- 2000-05-24 AT AT00932737T patent/ATE394731T1/de not_active IP Right Cessation
- 2000-05-24 BR BR0010936-3A patent/BR0010936A/pt not_active IP Right Cessation
- 2000-05-24 JP JP2001500948A patent/JP2003501720A/ja active Pending
- 2000-05-24 DE DE60038808T patent/DE60038808D1/de not_active Expired - Lifetime
- 2000-05-24 CN CNB008081573A patent/CN1252589C/zh not_active Expired - Fee Related
- 2000-05-24 IL IL14670200A patent/IL146702A0/xx active IP Right Grant
- 2000-05-24 AU AU50418/00A patent/AU779482B2/en not_active Ceased
-
2001
- 2001-10-31 ZA ZA200109005A patent/ZA200109005B/en unknown
- 2001-11-22 IL IL146702A patent/IL146702A/en not_active IP Right Cessation
-
2002
- 2002-12-24 HK HK02109341.5A patent/HK1049710A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572394A (zh) * | 2013-10-29 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 进程监控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1222529B1 (en) | 2008-05-07 |
IL146702A (en) | 2006-10-31 |
WO2000073895A1 (en) | 2000-12-07 |
DE60038808D1 (de) | 2008-06-19 |
AU779482B2 (en) | 2005-01-27 |
EP1222529A1 (en) | 2002-07-17 |
BR0010936A (pt) | 2002-04-23 |
AU5041800A (en) | 2000-12-18 |
HK1049710A1 (zh) | 2003-05-23 |
CA2373055A1 (en) | 2000-12-07 |
ZA200109005B (en) | 2002-10-31 |
IL146702A0 (en) | 2002-07-25 |
US6704806B1 (en) | 2004-03-09 |
CN1252589C (zh) | 2006-04-19 |
WO2000073895A8 (en) | 2001-10-04 |
EP1222529A4 (en) | 2004-06-30 |
JP2003501720A (ja) | 2003-01-14 |
KR20020022057A (ko) | 2002-03-23 |
ATE394731T1 (de) | 2008-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1353831A (zh) | 用于监视正在计算机***中执行的应用内的子进程的建立和解除的方法和设备 | |
US7139855B2 (en) | High performance synchronization of resource allocation in a logically-partitioned system | |
US6343338B1 (en) | System and method for synchronizing disparate processing modes and for controlling access to shared resources | |
US7895596B2 (en) | Processor assignment in multi-processor systems | |
CN1118750C (zh) | 初始化和重新启动操作*** | |
US7853928B2 (en) | Creating a physical trace from a virtual trace | |
US20040117534A1 (en) | Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system | |
CN1277387A (zh) | 监视和处理数据处理***中相关线程事件的方法和设备 | |
CN1731368A (zh) | 分析从崩溃得到的数据的方法和数据处理*** | |
CN1749967A (zh) | 数据处理*** | |
CN1993676A (zh) | 发现数据处理***内的硬件的方法和设备 | |
CN1648871A (zh) | 发生中断时按其类型限定性能监视事件收集的方法与装置 | |
CN1831777A (zh) | 用于管理多个热插拔操作的***和方法 | |
CN1308785C (zh) | 确定cpu使用率的与操作***无关的方法和*** | |
CN1940884A (zh) | 计算机***、计算机网络及其方法 | |
US7606973B2 (en) | System and method for pervasive computing with a portable non-volatile memory device | |
US5355488A (en) | Method for adaptively building a library of program threads | |
CN1757021A (zh) | 设备管理方法及设备管理*** | |
CN1959643A (zh) | 用于重新分配客户端的设备、***和方法 | |
CN116414634A (zh) | 设备调试方法、***、装置、调试设备和可读存储介质 | |
CN108376087B (zh) | 一种电子设备的启动控制方法、装置及服务器 | |
CN1851651A (zh) | 嵌入式sram操作***进程优先权调度的实现方法 | |
CN100397351C (zh) | 计算机***的除错装置及方法 | |
CN112068980B (zh) | 采样cpu挂死前信息的方法和装置、设备和存储介质 | |
CN1093661C (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 | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |