CN100375034C - 在计算机***中用于对进程进行休眠的方法和*** - Google Patents

在计算机***中用于对进程进行休眠的方法和*** Download PDF

Info

Publication number
CN100375034C
CN100375034C CNB2005100040298A CN200510004029A CN100375034C CN 100375034 C CN100375034 C CN 100375034C CN B2005100040298 A CNB2005100040298 A CN B2005100040298A CN 200510004029 A CN200510004029 A CN 200510004029A CN 100375034 C CN100375034 C CN 100375034C
Authority
CN
China
Prior art keywords
sleeping
context
hard disk
sleeping process
described 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.)
Expired - Fee Related
Application number
CNB2005100040298A
Other languages
English (en)
Other versions
CN1801096A (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.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte 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 Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to CNB2005100040298A priority Critical patent/CN100375034C/zh
Publication of CN1801096A publication Critical patent/CN1801096A/zh
Application granted granted Critical
Publication of CN100375034C publication Critical patent/CN100375034C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明涉及一种在计算机***中用于单个进程休眠/唤醒的方法和***。进程休眠包括:隐藏所述进程的所有窗口;挂起所述进程的所有线程;记录所述进程的上下文并将所记录的所述进程上下文作为一个休眠进程文件进行转存;以及终止所述进程以对所述进程休眠。唤醒休眠进程包括:构造一个与所述休眠进程的上下文结构相似的包装器;恢复所述休眠进程的上下文;唤醒所述休眠进程的所有线程;以及显示所述休眠进程的所有窗口以继续使用所述进程。根据本发明,降低了打开/关闭应用程序上的操作,优化了***资源。并且还可用于运行时间应用程序上下文备份和恢复,自动保存当前工作环境,以及当计算机发生故障时恢复整个环境。

Description

在计算机***中用于对进程进行休眠的方法和***
技术领域
本发明一般涉及计算机***的数据处理技术,特别地,本发明涉及在计算机***中用于对进程进行休眠的方法和***,以及对已休眠进程进行唤醒的方法和***。
背景技术
随着信息技术的快速发展,人们在个人计算机(PC)上运行各种应用程序时,时常会同时打开多个应用程序,显然,这将占用许多***资源而且会降低***的性能。即使某些应用程序在***中处于挂起状态,但是这些应用程序仍旧占用了相关的文件(句柄)资源、硬件/端口/网络/图象资源,这仍会降低计算机的性能。另外,当人们在重新打开应用程序以继续以前的工作时,需要采取一系列的动作,例如在文字编辑时,除了打开编辑软件,还需要选择并打开被编辑的文件,并通过翻页/滚动拖动条定位到上次的编辑对象上,然后才能继续工作,因此需要提供一种可针对单个进程,例如一个已经打开的应用程序,进行休眠的技术方案来解决上述这些问题。
为解决这些问题,现有技术中提供了一些技术解决方案。其中,就本发明的技术人员所了解的,在一种Palm操作***中,使用一种特定的硬件平台(例如,能够被用作内存和硬盘的公共存储器),能将运行的应用程序冻结。但是,在个人计算机(PC)平台,在当前的硬件条件和操作***下仍旧存在上述问题。
在其他领域曾使用了一些解决方案,其类似于本发明的解决方案。举例来说,以下是一些相关技术和应用程序的示例:
1、进程管理应用,诸如Windows2000/XP中的taskmgr.exe。它能修改进程的工作优先级,但是修改的范围仅限于六个级别:实时(realtime)、高(high)、高于正常(above normal)、正常(normal)、低于正常(below normal)、以及低(low)。这种技术不能完全中止进程、从而回收所有进程占用的资源。
2、一些软件能保存最后工作的场景(scenario),例如winamp3.exe。但是,这种技术需要由软件开发者来实施,并且现在大多数的软件都不能支持这个特性。
3、一些集群(cluster)/并行***支持进程移植技术,例如MOSIX***。但是这种技术需要完全修改***内核并且仅能在多计算机***上实施。
4、备份/恢复应用程序。现在的备份/恢复应用程序只能处理静态的文件镜像。
5、***休眠技术,这种技术能快照(snapshot)整个内存的镜像并将所述镜像保存到硬盘上。但是,***休眠针对的是整个计算机***,它不能对计算机***上运行的单个的进程进行休眠。并且,***休眠技术还依赖于特定的硬件平台,例如计算机的电源管理必须支持ACPI(高级配置和功率管理接口Advanced configuration andPower Interface)等。
由以上对现有技术的描述可知,在现有技术中,在提高***资源利用率、改善计算机性能方面,现有的休眠技术只针对的是整个计算机***,而没有提供管理单个进程的能力,因此特别对于正在运行的***而言,并没有为其提供高的运算性能。
发明内容
为解决现有技术中存在的问题,提出了本发明的用于对进程进行休眠的方法和***。根据本发明,可以简化用户在打开/关闭应用程序时的操作,并且在***高负荷下提高***的性能,而且也提供了一种恢复实时工作环境的方法。
根据本发明的一个方面,提供了一种新型的技术方案来休眠和重新使用(唤醒)进程(运行的应用程序)。
根据本发明的一个方面,提供了一种在计算机***中用于对进程进行休眠的方法,包括以下步骤:隐藏所述进程的所有窗口;挂起所述进程的所有线程;记录所述进程的上下文并将所记录的所述进程上下文作为一个休眠进程文件进行转存;以及终止所述进程以对所述进程休眠。
根据本发明的另一个方面,提供了一种在计算机***中用于对休眠进程进行唤醒的方法,构造一个与所述休眠进程的上下文结构相同的包装器(Wrapper),通过执行以下步骤来唤醒休眠进程,所述步骤包括:恢复所述休眠进程的上下文;唤醒所述休眠进程的所有线程;以及显示所述休眠进程的所有窗口以继续使用所述进程。
根据本发明的另一个方面,提供了一种在计算机***中用于对进程进行休眠的***,包括:一个位于内存中的第一存储器,用于保存所述进程在内存中的进程上下文;一个原始读/写驱动器(RRWD),用于与所述第一存储器进行交互,而对待休眠进程执行以下操作:隐藏所述进程的所有窗口;通过挂起所述进程的所有线程来挂起所述进程;从所述第一存储器中读取记录在其中的所述进程的上下文并将所读取的所述进程上下文作为一个休眠进程文件进行转存;以及终止所述进程以对所述进程休眠;一个第二存储器,位于所述计算机***的硬盘中,用于保存由所述RRWD从第一存储器中读取的所述进程的上下文内容。
根据本发明的另一个方面,提供了一种在计算机***中用于对休眠进程进行唤醒的***,包括:一个休眠进程文件存储器,用于保存休眠进程的进程上下文;以及一个包装器(Wrapper),用于构造与所述休眠进程的上下文结构相同的Wrapper上下文,并用于执行以下操作:恢复所述休眠进程的上下文;唤醒所述休眠进程的所有线程;以及显示所述休眠进程的所有窗口以继续使用所述进程。
本发明还提供一种触发进程休眠/唤醒/备份/恢复的用户接口。
根据本发明的在计算机***中用于对进程进行休眠以及对休眠进程进行唤醒的方法和***,降低了打开/关闭应用程序上的操作,并能通过对运行的应用程序执行休眠来释放***资源从而提供高的性能。并且本发明还可用于运行时间应用程序上下文备份和恢复,本发明可以自动保存当前的工作环境,以及当计算机发生故障时能恢复整个环境。
附图说明
以下结合附图,对本发明的具体实施方式进行详细的说明,由此,本发明的特点、优点、目的和有益效果将会变得更明显,其中:
图1示意性示出了根据现有技术在进程与操作***中的内核之间的结构的图;
图2示意性示出了根据本发明的进程休眠***的结构图;
图3示意性示出了在休眠进程的过程中转存单个进程上下文的过程的示意图;
图4示意性示出了根据本发明的对单个进程执行休眠处理的流程图;
图5示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程的基本信息的步骤中,进程1和Wrapper的上下文的示意图;
图6示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程所占用的***资源的步骤中,进程1和Wrapper的上下文的示意图;
图7示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程的用户空间内容的步骤中,进程1和Wrapper的上下文的示意图;
图8示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程的所有线程上下文的步骤中,进程1和Wrapper的上下文的示意图;
图9示意性地示出了根据本发明的进程休眠过程的流程图;
图10示意性地示出了根据本发明的休眠进程唤醒过程的流程图;
图11示意性地示出了根据本发明的进程备份过程的流程图;以及
图12示意性地示出了根据本发明的进程恢复过程的流程图。
具体实施方式
以下结合附图对本发明的优选实施方式进行描述,应该理解,这里描述的实施例仅是例示的作用,本领域技术人员在本发明的教导下,还可以对本发明进行修改、变换,而这些修改或变换均不会脱离本发明的原理。
图1示意性示出了根据现有技术在进程与操作***中的内核之间的结构的图。现有计算机***中,通常会有多个应用程序被同时运行,运行的应用程序(进程)与计算机***的内核进行交互,从而完成数据的传输、处理等交互操作。
在附图1中,示意性示出了一个单个进程,例如进程1。该进程上下文(Process Context)被分成两个部分,一个是在用户模式中的用户空间,另一个是在内核模式中的进程记录。
在图1中所示出的***中,在用户模式中,例如进程1的用户空间中,包括:进程1的堆栈、代码以及数据等信息;一个或多个动态链接库/函数库(DLL/Lib)110(Dynamic-Link Library);一个与内核相连接的内核接口120,通过该内核接口120,每个进程都可以与操作***中的进程记录部分130进行交互。在附图1中所示的内核模式中,包括:一个进程记录部分130,其中记录了多个进程,例如进程1,进程2......进程n中的每一个的进程记录。在图1中所示出的进程1的进程记录中,包括进程1的资源索引131、进程1的基本信息132,以及进程1的运行时间上下文133。具体来讲,进程1的基本信息132,例如包括进程1的名称、父进程、内存数据库地址等;进程1的资源索引131,例如包括由进程所占用的所有资源,其通过与***资源部分135进行交互来获得所述有关资源占用的资源索引信息;运行时间上下文133中记录了进程1中的每个线程TC 1,TC 2,......,TC m的线程上下文,例如寄存器值、定时器设置,优先级等等。此外,在内核模式中,还包括一个内核部分140和一些驱动程序150,其中在内核部分140中例如进一步可以包括文件***管理141,I/O管理142,内存/虚拟内存管理143...进程/线程管理144等功能部件。以上对涉及本发明的现有技术的相关部分进行了描述,应该知道,为了说明的目的,附图1中示出的***做了一些简化。
根据本发明,提出了一种可对单个进程进行休眠处理的方法和相应的***。参考附图2,其中示意性示出了根据本发明的进程休眠/唤醒***的结构图。
在根据本发明的进程休眠/唤醒***200中,主要包括:原始读/写驱动器(RRWD)230;包装器(Wrapper)240;***界面补丁部件(Shell patch SP)210;优选地,还可以包括备份/恢复部件(BRC)250。此外在进程休眠***中,还包括一个第一外部存储器240(例如,支持普通文件***的硬盘,或硬盘上的存储器),用于保存休眠进程的文件;一个内部存储器260(内存),其中保存了供中央处理器(CPU)调用的进程上下文数据;以及一个外部备份存储器270作为备份数据库(例如,支持普通文件***的硬盘),用于保存备份的休眠进程的文件。
以下具体描述根据本发明的进程休眠/唤醒***200中各个部件的功能及所实现的相应的方法步骤。具体地,以下以进程1为例来描述根据本发明的对单个进程的休眠处理方法和相应的***以及对休眠的进程唤醒以继续使用该进程的方法和相应的***。类似地,根据本发明的方法和***可以实现对多个进程同时、或顺序实现进程休眠处理以及相应的进程唤醒处理。
有三类数据需要进行处理。RRWD将进程上下文从内存转存到硬盘(存为文件),并且,修改进程内容以继续使用休眠的进程。BRC将使用备份数据库来备份/恢复休眠的进程。
I、原始读/写驱动器(Raw Read/Write Driver  RRWD)
根据本发明设计的所述原始读/写驱动器230是一个内核驱动器,用于读取/修改所有用户进程/线程的全部地址空间并挂起/唤醒所有用户进程/线程。所述原始读/写驱动器230与其中存储了进程上下文的内部存储器260交互作用,一方面,在将单个进程进行休眠操作时,将存储器260中所保存的进程上下文数据读出,并作为一个休眠进程的文件转存到硬盘上的存储器240中,另一方面,在对休眠进程执行唤醒操作时,对在存储器260中的Wrapper上下文进行修改以用于休眠进程的唤醒操作,如图2所示。
特别地,在执行根据本发明的对单个进程执行休眠处理时,RRWD 230能将每个进程,例如进程1在内存中的所有上下文通过执行以下步骤而作为一个休眠进程1的文件转存到计算机***的硬盘中。参见附图3,其中示意性示出了在休眠进程的过程中,转存要休眠的进程1的上下文的过程的示意图:
(1)RRWD 230将内存中的进程1用户空间中的所有内容分别转存到计算机的硬盘中。在进程1的用户空间中的所有内容包括:进程1的堆栈、进程1的代码、进程1的数据以及进程1在内存中对应的地址;动态链接库DLL/Lib、内核接口。
(2)RRWD记录由进程1所占用的所有资源并将其转存到硬盘上。其中,由进程1所占用的所有资源包括:进程1的基本信息,例如包括进程1的名称、父进程等,以及关于进程1的资源描述(例如资源索引以及所占用的资源的内容)。
(3)RRWD将进程1的运行时间上下文转存到硬盘。其中,进程1的运行时间上下文中包括了进程1中的每个线程TC 1,TC2,......,TC m的线程上下文,例如寄存器值、定时器设置,优先级等等。
应该知道,对以上三个部分的数据的转存不存在时间上的顺序,可以依次执行,也可以同时执行。
如图3所示,当对单个进程进行休眠的过程中,将内存中进程1的上下文转存到硬盘的步骤以后,会在硬盘中存在一个休眠进程1的文件。该休眠进程1的文件中包括:
(1)关于进程1基本信息和资源描述的数据,其中,进程1的基本信息中记录了进程1的名称、父进程、内存数据库地址等;而进程1的资源描述数据包括了资源索引以及所占用的资源的内容;
(2)关于进程1的运行时间上下文数据,其中,进程1的运行时间上下文数据包括了进程1中的每个线程TC 1,TC 2,......,TC m的线程上下文,例如寄存器值、定时器设置,优先级等等;
(3)关于进程1的用户空间描述的数据,其中,如上所述,记录了进程1在其用户空间的所有内容及相关联的地址。
此外,当根据本发明对休眠的进程进行唤醒的过程中,RRWD能够修改Wrapper的上下文。其通过对内存进行直接修改而将Wrapper的运行时间上下文恢复为休眠进程。详细的过程描述在参照Wrapper部分的描述进行详细说明。
II、Wrapper
Wrapper是一种用于执行对休眠进程的处理的专用应用程序,其被设计用于部分修改其上下文作为目标进程、其中包括进程名称、用户空间,***资源、线程数;以及然后利用RRWD修改剩余的信息,包括线程上下文、父进程、优先级,以及最后从用户空间去除Wrapper代码来实现对休眠进程的唤醒处理。Wrapper将读取休眠进程的转存文件并在Wrapper运行时,将其自身的上下文修改为休眠进程的上下文。
Wrapper是在用户希望恢复使用休眠进程的时候运行的。如图2所示,Wrapper与在硬盘中的存储器240进行交互,通过访问存储器240中所保存的休眠进程文件,而将Wrapper的上下文设置为休眠进程的上下文。其工作过程通过参见附图4进行如下所述的详细描述:
参见附图4,其中示出了当将Wrapper加载到内存时,Wrapper进程在内存中的上下文镜像。此处,为简明起见,将根据本发明构造的Wrapper进程的堆栈、代码和数据在一个单个的方框中示出,并且在这里还假设Wrapper只有一个线程。
类似地,在附图4中示出的Wrapper上下文中,可以看到,在用户模式中,Wrapper的用户空间也包括:Wrapper的堆栈、代码和数据;以及与内核之间的内核接口。而Wrapper在内核模式中,包括了Wrapper所占用的资源、所占用资源的索引、基本信息和运行时间上下文。
(1)恢复休眠进程的基本信息
Wrapper首先根据在对单个进程休眠的过程中转存到硬盘中的休眠进程的文件来恢复出进程1的基本信息。也就是说,根据硬盘中转存的休眠进程文件中的休眠进程1的内容,将Wrapper的基本信息修改为进程1的内容,例如进程名称。
参见附图5,其中示意性示出了根据本发明在体眠进程唤醒过程中,Wrapper恢复休眠进程的基本信息的步骤中,进程1和Wrapper的上下文的示意图。
通过这个步骤,在比较附图4与附图5之后可以看到:通过首先恢复出进程1的基本信息,附图4中所示出的初始Wrapper上下文变成当前附图5中所示出的进程1&Wrapper的上下文。
(2)恢复休眠进程所占用的***资源
Wrapper从在对单个进程休眠的过程中转存到硬盘中的休眠进程的文件中,查询由休眠进程所占用的全部***资源并且重新应用所述休眠进程的***资源。
参见附图6,其中示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程所占用的***资源的步骤中,进程1和Wrapper的上下文的示意图。
通过这个步骤,在比较附图5与附图6之后可以进一步得到:在附图6中所示出的进程1&Wrapper的上下文中,初始Wrapper所占用的***资源变成了休眠进程1所占用的***资源,以及初始Wrapper中的资源索引也变成了休眠进程1的资源索引。
此外,优选地,如果当前***不能满足全部资源应用程序的需求,则提示用户故障并退出对休眠进程的唤醒过程。
(3)恢复休眠进程的用户空间
Wrapper找出休眠进程的用户空间中的空闲地址空间,并且将当前的代码移动到空闲地址空间。
除内核接口模块以外,从在对单个进程休眠的过程中转存到硬盘中的休眠进程的文件中,读取休眠进程的用户空间中的所有内容并覆盖到Wrapper用户空间的对应地址上。
参见附图7,其中示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程的用户空间内容的步骤中,进程1和Wrapper的上下文的示意图。
通过这个步骤,在比较附图6与附图7之后可以进一步得到:在附图7中所示出的进程1&Wrapper的上下文中,休眠进程1在用户模式下的大部分内容,例如进程1的堆栈、代码、数据,以及进程1的DLL/Lib的内容都得到了恢复。
(4)恢复休眠进程的线程上下文
在这个步骤中,Wrapper从对单个进程休眠的过程中转存到硬盘中的休眠进程的文件中,读取休眠进程1的线程数目,并且启动相同的线程数目。
然后,Wrapper向***申请挂起所有线程,包括主要的线程。
在这个步骤之后,Wrapper的上下文被部分恢复成休眠进程的上下文。然后,RRWD把每个线程的上下文修改为休眠线程的上下文,并且恢复一些关键信息,例如父进程等。
最后的步骤是从用户空间去除Wrapper的内容。此时,原来Wrapper的进程上下文已经完全被进程1的上下文所替换,也即,休眠进程上下文被完全恢复。如果RRWD唤醒进程1的所有线程,则休眠进程将得以继续使用。
参见附图8,其中示意性示出了根据本发明在休眠进程唤醒过程中,Wrapper恢复休眠进程的所有线程上下文的步骤中,进程1和Wrapper的上下文的示意图。
通过这个步骤,在比较附图7与附图8之后可以进一步得到:在附图8中所示出的进程1&Wrapper的上下文中,由Wrapper初始只具有一个线程而恢复到实现休眠进程1所有线程得到完全恢复。也就是说,在完成附图8的步骤后,实现了对休眠进程的唤醒以及可以使休眠进程在得到唤醒后得以继续使用。
III 备份/恢复部件(Backup&Restore Component BRC)
在根据本发明的一种优选实施方式中,还可以包括一个备份/恢复部件(BRC),用于以一定的时间周期自动保存所有进程上下文,以便在计算机***出现故障或异常关闭的情况下,能利用所保存的进程的最新上下文来恢复进程或休眠进程的内容。该部件可以通过定时器或用户首选项(preference)来进行触发,例如,它将每隔五分钟自动调用RRWD以保存所有进程上下文。当计算机启动时,如果计算机最后的关闭是异常的,例如计算机崩溃并重启时,则它可以根据用户的设定,恢复最后保存的进程所有上下文。
如图2所示,BRC与存储器240进行交互,以每隔一定时间间隔将在进程休眠处理过程中转存到硬盘中的休眠进程文件自动保存到一个备份数据库270中。
IV.Shell Patch(***界面补丁)(SP)。
SP是用于Linux(例如Gnome)或Windows Explorer(视窗浏览器)中的回调函数(call back)功能的桌面平台的补丁(patch)。它集中在用户接口(UI)设计上:能在用户输入热键(例如“Alt-F5”)时,触发用于当前进程的休眠处理,并且如果用户输入另一个热键(例如“Ctrl-Tab”)则可以列出硬盘中的所有休眠进程。其在Shell中增加一个将触发继续使用指定进程的上下文菜单项。
再次参见附图2,SP是提供进程休眠***与操作***之间交互的接口。通过所述SP,用户可以选择待休眠的进程或者待唤醒的进程;当用户选择某待休假进程时,SP通过调用RRWD对进程进行休眠;当用户选择待唤醒进程时,SP通过选择Wrapper和RRWD对休眠进程进行唤醒以继续使用,当需要备份所有进程上下文时,SP通过选择BRC来备份进程等。
以下通过参考附图2并结合附图9-12的流程图来描述根据本发明的进程休眠/唤醒过程的具体步骤。
附图9示意性地示出了根据本发明的进程休眠过程的流程图。参见附图9,首先当启动对单个进程的进程休眠过程时,在步骤S905中,RRWD将隐藏(最小化)指定要进行休眠的进程的所有窗口。然后,在步骤S910中,RRWD通过挂起该进程的所有线程而将该指定进程挂起。接着在步骤S915中,RRWD将该指定休眠的进程的上下文转存到计算机的硬盘中。具体地,在该步骤中,RRWD将以下指定休眠进程的上下文内容转存到计算机的硬盘中:(1)将内存中指定进程的用户空间中的所有内容转存到计算机的硬盘中,例如,指定进程的用户空间中的所有内容包括:指定进程的堆栈、代码、数据;动态链接库DLL/Lib、内核接口。(2)查询由指定进程所占用的所有资源并将其转存到硬盘上。其中,由指定进程所占用的所有资源包括:指定进程的基本信息,例如包括指定进程的名称、父进程、地址空间入口等,以及关于指定进程的资源描述,例如资源索引以及所占用的资源的内容。(3)将指定进程的进程状态信息,例如运行时间上下文转存到硬盘。其中,所述运行时间上下文中包括了进程中的每个线程TC 1,TC 2,......,TC m的线程上下文,例如寄存器值、定时器设置,优先级等等。最后,在步骤S920中,终止该进程,即进程休眠成功,以及释放该指定进程所占用的所有资源。
附图10示意性地示出了根据本发明的休眠进程唤醒过程的流程图。参见附图10,休眠进程唤醒过程的简单工作过程如下所示。在步骤S1005中,Wrapper将恢复休眠进程上下文。在所述恢复休眠进程上下文的步骤中,进一步包括以下子步骤:(1)恢复休眠进程的基本信息。也就是说,根据硬盘中转存的休眠进程文件中的休眠进程的内容,修改其基本信息,例如进程名称;(2)恢复休眠进程所占用的***资源;(3)恢复休眠进程的用户空间;(4)恢复运行时间上下文,包括每个线程的上下文;(5)恢复其他的基本信息,例如父进程(如果可用的话);以及(6)RRWD通过释放Wrapper所占用的地址区域而从用户空间去除Wrapper代码。然后,在成功实现所述恢复休眠进程上下文的步骤之后,在步骤S1010中,RRWD将唤醒该休眠进程。以及,最后在步骤S1015中,RRWD将显示休眠进程的所有窗口。由此,成功实现了对休眠进程的唤醒。
附图11、12示意性地示出了根据本发明的进程备份/恢复过程的流程图。该进程备份/恢复过程优选地是进程休眠过程的附加和扩展功能,其在进行进程休眠的过程中,自动将在进程休眠过程中转存到硬盘上的内容按一定的时间间隔进行自动备份,以及在计算机***出现故障或异常关闭的情况下,能利用所保存的进程的最新上下文来恢复进程或休眠进程的内容。
参见附图11,进程备份的简单工作过程如下所示:
首先,在步骤S1105中,执行对进程休眠过程的调用。在该步骤中,实际上是对进程执行了进程休眠全部过程(图9描述)。接下来,在步骤S1110中,BRC将在硬盘上保存的进程转存文件和由进程打开的所有文件备份到一个非易失性存储器中。以及,在计算机运行出现故障或异常关闭的情况下,在步骤S1115中,调用进程唤醒过程,即图10描述的过程,由此成功实现备份。
附图12示意性地示出了根据本发明的进程恢复过程的流程图。参见附图12,进程恢复的简单进程过程如下所示:
首先在步骤S1205中,BRC将从备份数据库中复制所有文件到原始位置,其将覆盖现有文件。也就是说,恢复硬盘上的进程转存文件和该进程打开的所有文件。
然后,在步骤S1210中,BRC通过调用进程唤醒过程,即图10描述的过程,来恢复进程。
以上结合附图,对根据本发明针对单个进程的进程休眠/唤醒的方法和***的各个实施例进行了详细描述,但是以上这些实施例仅是示例的,本领域技术人员可以在本发明的精神和范围内作出各种变化和修改。因此,本发明不限于这些实施例,本发明的范围由随附权利要求限定为准。

Claims (23)

1.一种在计算机***中用于对进程进行休眠的方法,包括以下步骤:
隐藏所述进程的所有窗口;
挂起所述进程的所有线程;
记录所述进程的上下文并将所记录的所述进程上下文作为一个休眠进程文件进行转存;以及
终止所述进程以对所述进程休眠。
2.根据权利要求1的用于对进程进行休眠的方法,进一步包括,将所记录的所述进程上下文转存到硬盘的步骤,其中包括以下子步骤:
将内存中记录的所述进程的用户空间中的所有内容转存到计算机的硬盘中;
将内存中记录的所述进程所占用的所有资源转存到硬盘上;
将内存中记录的所述进程的运行时间上下文转存到硬盘中。
3.根据权利要求2的用于对进程进行休眠的方法,其中,所述将内存中记录的所述进程的用户空间中的所有内容转存到计算机的硬盘中的子步骤包括:
将关于所述进程的堆栈、代码和数据,动态链接库DLL/Lib、以及内核接口的内容转存到计算机的硬盘中。
4.根据权利要求2的用于对进程进行休眠的方法,其中,所述将内存中记录的所述进程所占用的所有资源转存到硬盘上的子步骤包括:
将所述进程的基本信息以及关于所述进程的资源描述转存到硬盘上,其中,所述进程的基本信息包括所述进程的名称、父进程、地址空间入口,以及所述进程的资源描述包括资源索引以及所述进程所占用的资源的内容。
5.根据权利要求2的用于对进程进行休眠的方法,其中,所述将内存中记录的所述进程的运行时间上下文转存到硬盘中的子步骤包括:
将所述进程中的每个线程的线程上下文转存到硬盘中,其中所述线程上下文包括:寄存器值、定时器设置,优先级。
6.根据权利要求1的用于对进程进行休眠的方法,进一步包括:
以一定的时间间隔,将所述转存到硬盘中的所述进程的休眠进程文件自动备份到一个数据库中的步骤。
7.根据权利要求1的用于对进程进行休眠的方法,进一步包括:
为用户提供已运行进程的列表,用于由用户选择待休眠的进程。
8.一种在计算机***中用于对休眠进程进行唤醒的方法,构造一个与所述休眠进程的上下文结构相同的包装器,通过执行以下步骤来唤醒休眠进程,所述步骤包括:
恢复所述休眠进程的上下文;
唤醒所述休眠进程的所有线程;以及
显示所述休眠进程的所有窗口以继续使用所述进程。
9.根据权利要求8的用于对休眠进程进行唤醒的方法,进一步包括:
根据在进程休眠过程中转存到硬盘中的休眠进程文件,由所述包装器通过执行以下子步骤来恢复所述休眠进程的上下文,所述子步骤包括:
恢复休眠进程的基本信息;
恢复休眠进程所占用的***资源;以及
恢复休眠进程的用户空间。
10.根据权利要求8的用于对休眠进程进行唤醒的方法,进一步包括:
根据在进程休眠过程中转存到硬盘中的休眠进程文件,由所述包装器通过执行以下子步骤来唤醒所述休眠进程的所有线程,所述子步骤包括:
从转存到硬盘中的休眠进程文件中读取所述休眠进程的线程数;
根据休眠进程的线程数,修改所述包装器的线程数目。
11.根据权利要求8的用于对休眠进程进行唤醒的方法,还包括:
在计算机***出现故障或异常关闭计算机***时,调用存储在一个备份数据库中的所述休眠进程的休眠进程文件的步骤。
12.根据权利要求8的用于对休眠进程进行唤醒的方法,进一步包括:
为用户提供已休眠进程的列表,用于由用户选择待唤醒的进程。
13.一种在计算机***中用于对进程进行休眠的***,包括:
一个位于内存中的第一存储器,用于保存所述进程在内存中的进程上下文;
一个原始读/写驱动器,用于与所述第一存储器进行交互,而对待休眠进程执行以下操作:
隐藏所述进程的所有窗口;
通过挂起所述进程的所有线程来挂起所述进程;
从所述第一存储器中读取记录在其中的所述进程的上下文并将所读取的所述进程上下文作为一个休眠进程文件进行转存;以及
终止所述进程以对所述进程休眠;
一个第二存储器,位于所述计算机***的硬盘中,用于保存由所述原始读/写驱动器从第一存储器中读取的所述进程的上下文内容。
14.根据权利要求13的用于对进程进行休眠的***,其中配置所述原始读/写驱动器以执行以下操作来将所记录的所述进程上下文转存到硬盘上:
将内存中记录的所述进程的用户空间中的所有内容转存到计算机的硬盘中;
将内存中记录的所述进程所占用的所有资源转存到硬盘上;
将内存中记录的所述进程的运行时间上下文转存到硬盘中。
15.根据权利要求13的用于对进程进行休眠的***,其中配置所述原始读/写驱动器以执行以下操作来把内存中记录的所述进程的用户空间中的所有内容转存到计算机的硬盘中:
将关于所述进程的堆栈、代码和数据,动态链接库DLL/Lib、以及内核接口的内容转存到计算机的硬盘中。
16.根据权利要求13的用于对进程进行休眠的***,其中配置所述原始读/写驱动器以执行以下操作来把内存中所述进程所占用的所有资源转存到硬盘上:
将所述进程的基本信息以及关于所述进程的资源描述转存到硬盘上,其中,所述进程的基本信息包括所述进程的名称、父进程、内存空间入口地址,以及所述进程的资源描述包括资源索引以及所述进程所占用的资源的内容。
17.根据权利要求13的用于对进程进行休眠的***,其中配置所述原始读/写驱动器以执行以下操作来将所述进程的运行时间上下文转存到硬盘中:
将所述进程中的每个线程的线程上下文转存到硬盘中,其中所述线程上下文包括:寄存器值、定时器设置,优先级。
18.根据权利要求13的用于对进程进行休眠的***,进一步包括:
一个备份/恢复部件,用于以一定的时间间隔,自动备份转存到硬盘中的所述进程的休眠进程文件;以及
一个备份数据库,用于保存由所述备份/恢复部件所备份的休眠进程文件。
19.根据权利要求13的用于对进程进行休眠的***,进一步包括:
一个与计算机***连接的用户接口,用于提供已运行进程列表供用户选择待休眠进程。
20.一种在计算机***中用于对休眠进程进行唤醒的***,包括:
一个休眠进程文件存储器,用于保存休眠进程的进程上下文;以及
一个包装器,用于构造与所述休眠进程的上下文结构相同的包装器上下文,并用于执行以下操作:
恢复所述休眠进程的上下文;
唤醒所述休眠进程的所有线程;以及
显示所述休眠进程的所有窗口以继续使用所述进程。
21.根据权利要求20的用于对休眠进程进行唤醒的***,进一步包括:
根据在休眠进程文件存储器中所保存的休眠进程文件,由所述包装器通过执行以下操作来恢复所述休眠进程的上下文:
恢复休眠进程的基本信息;
恢复休眠进程所占用的***资源;以及
恢复休眠进程的用户空间。
22.根据权利要求20的用于对休眠进程进行唤醒的***,进一步包括:
一个备份数据库,用于保存所述休眠进程的进程上下文的备份文件;
一个备份/恢复部件,用于在计算机***出现故障或异常关闭计算机***时,调用存储在所述备份数据库中的所述休眠进程的备份休眠进程文件。
23.根据权利要求22的用于对休眠进程进行唤醒的***,进一步包括:
一个与计算机***连接的用户接口,用于提供已休眠进程列表供用户选择待唤醒进程。
CNB2005100040298A 2005-01-05 2005-01-05 在计算机***中用于对进程进行休眠的方法和*** Expired - Fee Related CN100375034C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100040298A CN100375034C (zh) 2005-01-05 2005-01-05 在计算机***中用于对进程进行休眠的方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100040298A CN100375034C (zh) 2005-01-05 2005-01-05 在计算机***中用于对进程进行休眠的方法和***

Publications (2)

Publication Number Publication Date
CN1801096A CN1801096A (zh) 2006-07-12
CN100375034C true CN100375034C (zh) 2008-03-12

Family

ID=36811125

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100040298A Expired - Fee Related CN100375034C (zh) 2005-01-05 2005-01-05 在计算机***中用于对进程进行休眠的方法和***

Country Status (1)

Country Link
CN (1) CN100375034C (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274807B2 (en) * 2006-04-20 2016-03-01 Qualcomm Incorporated Selective hibernation of activities in an electronic device
CN105677407B (zh) * 2008-09-09 2019-01-15 联想(北京)有限公司 应用程序关闭方法和装置
JP5289153B2 (ja) * 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム
CA2764235A1 (en) * 2009-06-19 2010-12-23 Core Technology Ltd Computer process management
US8788863B2 (en) 2011-08-10 2014-07-22 Microsoft Corporation System and method for restoring and/or continuing execution functionality to various processes based on predefined power classifications while transitioning a computing environment from connected standby state to execution state
CN102436405B (zh) * 2011-09-05 2016-03-30 北京星网锐捷网络技术有限公司 一种进程上下文保存、篡改检测方法及装置
US9952897B2 (en) 2011-09-12 2018-04-24 Microsoft Technology Licensing, Llc Managing processes within suspend states and execution states
US8621494B2 (en) * 2011-09-12 2013-12-31 Microsoft Corporation Managing processes within suspend states and execution states
US9588576B2 (en) 2011-09-12 2017-03-07 Microsoft Technology Licensing, Llc Managing processes within suspend states and execution states
CN102467403B (zh) * 2011-10-14 2015-06-10 海尔集团技术研发中心 一种基于进程迁出/迁入的软件快速切换方法及装置
CN102467404A (zh) * 2011-10-14 2012-05-23 海尔集团技术研发中心 一种基于物理内存实现软件快速切换的方法及装置
JP5855131B2 (ja) * 2011-12-13 2016-02-09 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、プログラム及び情報記憶媒体
CN103197962B (zh) * 2012-01-04 2017-02-08 ***通信集团公司 多进程状态切换方法和装置
US20130198760A1 (en) * 2012-01-27 2013-08-01 Philip Alexander Cuadra Automatic dependent task launch
CN103257700B (zh) * 2012-02-20 2016-08-17 联想(北京)有限公司 一种Android***的节能方法及装置
CN103927226B (zh) * 2013-01-15 2018-05-25 晨星软件研发(深圳)有限公司 电子装置休眠回复设定方法以及电子装置
CN103678040A (zh) * 2013-12-06 2014-03-26 北京明朝万达科技有限公司 一种基于计算机***的快照和回退方法及***
CN105302662B (zh) * 2014-07-25 2020-11-06 腾讯科技(深圳)有限公司 一种多机备份的方法和***
CN104331463B (zh) * 2014-10-30 2018-07-17 深圳市锐明技术股份有限公司 一种文件***多线程实现的方法及装置
CN106020976B (zh) * 2016-05-13 2018-06-01 北京百度网讯科技有限公司 将内存耗尽处理流程卸载到用户空间的方法和装置
US10228966B2 (en) 2017-02-03 2019-03-12 Huawei Technologies Co., Ltd. Methods ad systems for hibernation of processes in computing devices
CN109426563B (zh) * 2017-08-31 2021-07-20 华为技术有限公司 一种进程管理方法及装置
CN109491836B (zh) * 2018-10-30 2021-04-27 京信通信***(中国)有限公司 数据恢复方法、装置及基站
CN112486713B (zh) * 2019-09-11 2023-07-18 华为技术有限公司 一种冻屏处理方法及电子设备
CN112732238B (zh) * 2020-12-28 2024-02-20 上海微盟企业发展有限公司 一种基于js的执行上下文获取方法及相关装置
CN115113774B (zh) * 2022-06-28 2023-10-24 上海中汇亿达金融信息技术有限公司 屏幕锁定和解锁的方法及相关装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1282916A (zh) * 1999-08-02 2001-02-07 神达电脑股份有限公司 一种可重复的使***暂时挂起再重新开始的方法
CN1097228C (zh) * 1993-07-26 2002-12-25 国际商业机器公司 信息处理***
JP2003345456A (ja) * 2002-05-28 2003-12-05 Matsushita Electric Ind Co Ltd コンピュータシステムにおける割り込み処理方法
US20040025045A1 (en) * 2002-07-30 2004-02-05 Sentry Technologies Pte, Ltd. Method for switching rapidly between computing modes
CN1500243A (zh) * 2001-04-05 2004-05-26 �Ҵ���˾ 使用可移动存储器收集和恢复用户环境数据
CN1530795A (zh) * 2003-03-12 2004-09-22 联想(北京)有限公司 保存并快速恢复计算机***工作状态的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1097228C (zh) * 1993-07-26 2002-12-25 国际商业机器公司 信息处理***
CN1282916A (zh) * 1999-08-02 2001-02-07 神达电脑股份有限公司 一种可重复的使***暂时挂起再重新开始的方法
CN1500243A (zh) * 2001-04-05 2004-05-26 �Ҵ���˾ 使用可移动存储器收集和恢复用户环境数据
JP2003345456A (ja) * 2002-05-28 2003-12-05 Matsushita Electric Ind Co Ltd コンピュータシステムにおける割り込み処理方法
US20040025045A1 (en) * 2002-07-30 2004-02-05 Sentry Technologies Pte, Ltd. Method for switching rapidly between computing modes
CN1530795A (zh) * 2003-03-12 2004-09-22 联想(北京)有限公司 保存并快速恢复计算机***工作状态的方法

Also Published As

Publication number Publication date
CN1801096A (zh) 2006-07-12

Similar Documents

Publication Publication Date Title
CN100375034C (zh) 在计算机***中用于对进程进行休眠的方法和***
US8533449B2 (en) Multi-phase resume from hibernate
CN102841674B (zh) 基于新型存储器的嵌入式***及其进程的休眠与唤醒方法
KR101702700B1 (ko) 고속 컴퓨터 시동
JP4028820B2 (ja) コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置
TWI617914B (zh) 用以從睡眠狀態加速回復之專用啟動路徑
CN106484472A (zh) 一种内存回收方法及终端
CN102779080B (zh) 生成快照的方法、利用快照进行数据恢复的方法及装置
CN109885343A (zh) 一种控制器低功耗启动方法、装置、计算机设备及存储介质
IL199516A (en) Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US9411607B2 (en) Fast computer startup
JPH077317B2 (ja) システム再起動装置
CN101968755B (zh) 一种自适应应用负载变化的快照生成方法
CN101916201A (zh) 一种基于Android移动终端冷启动的方法和装置
CN101937376A (zh) 一种数据管理方法及数据存储装置
JP2018517202A (ja) イベント処理システムのページング
JPH0744437A (ja) 情報処理システム
CN102779072A (zh) 一种嵌入式***及其应用进程的休眠与唤醒方法
WO2020248511A1 (zh) 一种基于运行时模型实现对终端应用控制的方法
CN1097237C (zh) 信息处理***
CN109313604A (zh) 压缩虚拟存储器的动态配置
CN115481127A (zh) 数据库的数据存储方法、存储介质与设备
CN102736928A (zh) 快速唤醒计算机***方法与计算机***
CN102301307B (zh) 用于控制最优时钟和电压切换的分布式表格驱动电源模式计算
CN1293461C (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
ASS Succession or assignment of patent right

Owner name: LIAN XIANG(SINGAPORE)PRIVATE LTD.

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINE CORP.

Effective date: 20061027

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20061027

Address after: Singapore Changi

Applicant after: Lenovo (Singapore) Pte. Ltd.

Address before: New York, USA

Applicant before: International Business Machines Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080312

Termination date: 20210105