CN102999384B - 在挂起状态和执行状态下管理进程 - Google Patents
在挂起状态和执行状态下管理进程 Download PDFInfo
- Publication number
- CN102999384B CN102999384B CN201210335883.2A CN201210335883A CN102999384B CN 102999384 B CN102999384 B CN 102999384B CN 201210335883 A CN201210335883 A CN 201210335883A CN 102999384 B CN102999384 B CN 102999384B
- Authority
- CN
- China
- Prior art keywords
- application
- system message
- message
- state
- timer
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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
-
- 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/461—Saving or restoring of program or task context
-
- 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
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
提供了一种或多种技术和/或系统以用于挂起与应用相关联的逻辑相关进程,基于一个或多个唤醒策略确定是否恢复挂起的进程,和/或管理应用的应用状态,例如定时器和/或系统消息数据。也就是说,可基于进程之间的逻辑关系来识别和挂起与应用相关联的诸如子进程的逻辑相关进程(例如,可以遍历逻辑容器层次结构以识别逻辑相关进程)。可基于一组唤醒策略来恢复挂起的进程。例如,可基于可以由试图与挂起的进程进行通信的应用触发的进程间通信调用策略而恢复挂起的进程。可在应用被挂起时管理应用数据,以使得可以以当前和/或相关状态恢复应用。
Description
背景技术
围绕着节约能耗、改善设备和应用启动延时和改善整体响应能力而发展了许多计算设备(例如桌上型、膝上型、智能电话和平板电脑)。例如,当有诸如10分钟之类的一段时间没有使用设备,该设备可以被置入可以显著减少应用活动的睡眠状态,从而可以导致改善的功耗。当随后用户试图使用该设备时,该设备从睡眠状态被唤醒从而为用户提供该设备的全部性能。
发明内容
本发明内容是为了以简化形式介绍精选概念而被提供的,在以下的具体实施方式部分中将对其进行进一步描述。本发明内容的目的既不是确定所要求保护主题的关键因素或必要特征,也不是用来限制所要求保护的主题的范围。
除了其他方面之外,此处还公开了一种或多种系统和/或技术,用于挂起(suspend)一个或多个与应用相关联的进程,基于一个或多个唤醒策略确定是否恢复挂起的进程和/或管理应用的应用状态。
一种计算环境可以托管(host)与进程相关联的应用,这些进程可以作为线程(threads)由一个或多个处理器执行。可以理解的是,此处所描述的一种或多种系统和/或方法可适用于应用、进程和/或线程(因为进程是由在一个或多个处理器上运行代码的线程所组成,所以此处提及的技术和/或系统同样适用于线程)。因为计算环境可以托管多个应用和/或进程,可以实现逻辑容器层次结构(logical container hierarchy)来管理这些应用和/或进程。具体而言,应用可被分配到逻辑容器层次结构内的诸如根逻辑容器(rootlogical container)之类的逻辑容器。同样的,进程也可被分配到逻辑容器。逻辑容器层次结构可允许相关的应用、进程和/或逻辑容器的分层嵌套。例如,文本编辑器应用(例如父应用/进程)可被分配到根逻辑容器。该文本编辑器应用可与一个或多个诸如文本编辑器打印进程、文本编辑器保存进程和/或拼写检查器进程之类的子进程相关联。因此,例如文本编辑器打印进程、文本编辑器保存进程和/或拼写检查器进程可被分配到与分配给文本编辑器应用的根逻辑容器相关联(例如嵌套在其中)的逻辑容器。通过这样的方式,文本编辑器应用和/或子进程之间的关联(例如关系)是可识别的。
在此处提供的一个挂起与应用相关联的一个或多个进程的例子中,可接收应用不活动(inactive)的通知(例如,应用对于用户不可见,在预定时间内用户没有与应用交互,应用可能处于后台状态等)。可以识别与该应用相关联的一个或多个进程。在一个例子中,可以查询逻辑容器层次结构以识别一个或多个进程。例如,可以识别分配给该应用的根逻辑容器。可以识别分配给与根逻辑容器相关联(例如嵌套在其中)的第一逻辑容器的第一进程。可以识别分配给与根逻辑容器相关联(例如嵌套在其中)的第一逻辑容器的第二进程。可以识别分配给与第一逻辑容器相关联(例如嵌套在其中)的第二逻辑容器的第三进程。通过这样的方式,第一、第二和第三进程可被识别为与该应用相关联。可以理解的是多种进程和/或应用可被识别为与该应用相关联。可通过使得挂起的进程没有资格进入处理器执行调度而将与该应用相关联的一个或多个进程放置到挂起状态以节省功耗。一旦挂起了,与挂起的应用相关联的新创建的线程和/或进程(例如分配到嵌套在根逻辑容器内的逻辑容器的新创建的进程)可以被挂起以维持与挂起的应用相关联的进程之间的挂起一致性。通过这样的方式,当前与应用相关联的进程和/或新创建的进程可被识别为与应用相关联,因而也可以被挂起。可以理解的是,此处提供的一个或多个进程的挂起可发生在设备处于或不处于睡眠模式,但是一个或多个应用是不活动的或没有被使用时。因此,甚至在使用设备的时候,也可节约功率和/或延长电池寿命。
在此处提供的一个确定是否恢复挂起的进程的例子中,可以维持与挂起的进程相关联的一组唤醒策略。唤醒策略可以是恢复挂起的进程到执行状态的原因的指示。在一个例子中,唤醒策略可相应于请求应用发送进程间通信调用到挂起的进程的情况。在另一个例子中,唤醒策略可相应于与挂起的进程相关联的挂起的应用被转换到前台状态的情况。在另一个例子中,唤醒策略可相应于检测到与挂起的应用相关联的用户输入的情况。可以理解的是唤醒策略可相应于唤醒挂起的进程的多种情况和/或原因。唤醒策略可与指示对于挂起的进程来说当前未决的关联于该唤醒策略的唤醒通知(例如,发生了与唤醒策略相关联的事件的通知,例如请求应用发送进程间通信到挂起的进程)的数目的计数器相关联。计数器可以递增(例如与唤醒通知相关联的事件未决)和/或递减(例如与唤醒通知相关联的事件已完成)。例如,一旦接收到电子数据表应用发送进程间通信调用到挂起的文本编辑器的第一唤醒通知,用于进程间通信唤醒策略的计数器可以递增到1。一旦接收到浏览器应用发送进程间通信调用到挂起的文本编辑器的第二唤醒通知,用于进程间通信唤醒策略的计数器可以递增到2。
可以评估一组唤醒策略以确定是将挂起的进程放置到执行状态还是将挂起的进程保持在挂起状态。在一个例子中,可以基于确定与唤醒策略相关联的至少一个计数器包括大于阈值的值(例如,至少一个计数器具有大于2的值)而将挂起的进程放置到执行状态。在另一个例子中,一个或多个计数器的值可累加在一起以创建累加值(例如,与多种唤醒策略相关联的三个计数器可以具有值1,因此可以确定累加值3)。可基于与唤醒策略相关联的加权来调整累加值(例如,与用户输入相关联的唤醒策略具有加权值2,而与远程第三方请求相关联的唤醒策略具有加权值0.5,因为积极响应用户而不是远程第三方可能是更有利的)。同样的,可以无条件地观察特定计数器(例如用户计数器),但是可以有条件地观察另一个计数器(例如基于频率、噪度、源等)。如果挂起的进程被放置到执行状态作为执行应用,那么接着可以评估唤醒策略的当前状态和/或唤醒通知完成后逝去的时间以确定是否和/或何时将执行进行放置回挂起状态。例如,如果执行了附加的进程间通信调用,那么可以将执行进程保持在执行状态一段时间。作为优化,可在用于特定计数器的“边缘”转换(0->1,1->0)而传递通知。在第一种情况下,评估用于执行的策略,在第二种情况下,评估用于挂起的策略。
可以理解的是在一个例子中,一组唤醒策略可与逻辑容器层次结构内分配给挂起的进程的逻辑容器相关联。因此,如果挂起的进程被放置到执行状态,那么一个或多个与挂起的进程相关联的进程和/或应用(例如,分配给与分配给挂起的进程的逻辑容器相关联的逻辑容器的进程)可被放置到执行状态。
在此处提供的管理应用状态的一个例子中,可以维持与应用相关联的定时器列表。例如,可以维持绝对定时器(例如11年8月31日下午2:00的超时设置)、相对定时器(例如10分钟的超时设置)和/或其他类型的定时器。一旦接收到将挂起应用的通知,可以创建包含从定时器列表中导出的定时器基础重建数据(timer rebasing data)的应用状态。可以创建应用状态是因为在应用被挂起时,即使作用于定时器的根本原因没有发生,诸如相对定时器之类的特定定时器也可能超时。例如,文本编辑器应用可以为拼写检查器进程设置10分钟的相对定时器,因为拼写检查器进程一般不会花费超过10分钟来完成除非发生了错误。然而,可以在相对定时器创建之后的2分钟就挂起拼写检查器进程,并且可以被挂起15分钟。在不调整相对定时器的情况下,相对定时器可以超时(例如,超时可能是错误的,因为超时无关于拼写检查器的错误,而仅仅关于拼写检查器的挂起)。因为拼写检查器没有错误,而仅仅被挂起了,可使用应用状态内的诸如至到期时间值(time till expirationvalue)之类的相对定时器基础重建数据对相对定时器重建基础(rebase)(例如,应用状态可包括包含指示从何时挂起相对定时器到相对定时器的原始到期时间(expiration time)的时间跨度的至到期时间值的相对定时器基础重建数据)。另外,可以调整相对定时器,以使得在恢复挂起的应用后,不会发生大量的定时器到期,否则可能造成不必要的CPU消耗和/或可能损害用户体验。与此相反,绝对定时器可与绝对时间(例如原始到期时间)相关联,这样的话,在该绝对时间出现时应用可期望得到通知,而不管是否挂起了与该定时器相关联的应用。因此,可使用应用状态内的诸如原始到期时间之类的绝对定时器基础重建数据来对绝对定时器重建基础(例如,应用状态可包含包括原始到期时间的绝对定时器基础重建数据)。通过这样的方式,一旦应用从挂起状态恢复到执行状态,包含定时器基础重建数据的应用状态可被用来对定时器重建基础。
在此处提供的管理应用状态的另一个例子中,在应用处于挂起状态时可以维持与应用相关联的应用消息队列。应用消息队列可被配置为存储用于应用的系统消息(例如与控制面板内的设置相关联的系统消息)。例如,平板设备的操作系统可建立用于文本编辑器的系统消息的队列,例如用户界面颜色=绿色系统消息、语言=英文系统消息、平板浏览方位=纵向系统消息等。应用消息队列可在应用被挂起时接收和/或存储系统消息。因为可能随时间接收到使得当前在队列中的消息不相关(irrelevant)的重叠的消息(例如,当挂起时,可以接收到平板浏览方位被设置为纵向的第一消息,接着稍后可以接收到平板浏览方位已被设置为横向的第二消息,这可以使第一消息不相关的),可能是有利的是,管理应用消息队列以使得可在当前最新的应用状态中将应用放置到执行状态。因此,可以接收到当应用处于挂起状态时针对应用队列的第一系统消息。可以做出第一系统消息是否相应于应用消息队列内的第二系统消息的确定。一旦确定了第一系统消息相应于第二系统消息,可以修改和/或删除第一系统消息和/或第二系统消息(例如,新收到的用户界面颜色=绿色的第一系统消息可被放置到应用消息队列中,而可以将已在队列中的用户界面颜色=红色的第二系统消息删除)。通过这样的方式,一旦应用恢复为执行状态,应用可以与“过时”和/或不相关系统消息相反地处理来自应用消息队列中的相关系统消息。管理应用消息队列可以具有其他积极性能影响,也就是当目标进程不再可运行/可执行时,冗余消息不必消耗系统资源(例如,可以丢弃/删除新消息,当保留新消息时可以丢弃/删除相应的较旧消息,可以智能合并消息等)。
为了完成以上和相关的目的,以下描述和附图阐述了特定的示例性方面和实施方式。这些仅仅指示了一个或多个方面可以采用的多种方式中的几种方式。当结合附图考虑时,本公开的其他方面、优点和新颖特征将从以下的详细描述中变得清楚明显。
附图说明
图1是示出了挂起与应用相关联的一个或多个进程的示例性方法的流程图。
图2是示出了挂起与应用相关联的一个或多个进程的示例性方法的流程图。
图3是示出了用于挂起与应用相关联的一个或多个进程的示例性系统的组件方框图。
图4是示出了基于一组唤醒策略确定是否恢复挂起的进程的示例性方法的流程图。
图5是示出了基于一组唤醒策略确定是否恢复挂起的进程的示例性方法的流程图。
图6是示出了基于唤醒策略确定是否恢复挂起的进程的示例性系统的组件方框图。
图7是示出了管理应用的应用状态的示例性方法的流程图。
图8是示出了管理应用的应用状态的示例性方法的流程图。
图9是示出了用于管理应用的应用状态的示例性系统的组件方框图。
图10是示出了用于管理应用的应用状态的示例性系统的组件方框图。
图11是一种示例性计算机可读媒介的示意图,其中可以包括被配置为实施此处阐述的一个或多个方案的处理器可执行指令。
图12示出了一种示例性计算环境,其中可实现此处阐述的一个或多个方案。
具体实施方式
现在参照附图来描述所要求保护的主题,其中自始至终相同的参考数字一般被用来指代相同的元件。在以下描述中,出于解释的目的,阐述了众多具体细节以提供对所要求保护的主题的透彻理解。然而,明显的是,无需这些具体细节也可实施所要求保护的主题。在其他实例中,以方框图的形式示出了结构和设备,以便于描述所要求保护的主题。
此处提供了一种或多种用于挂起与应用相关联的一个或多个进程,用于基于一个或多个唤醒策略确定是否恢复挂起的进程,以及用于管理应用的应用状态的系统和/或技术。具体而言,可以挂起与应用相关联的一个或多个进程(例如,可基于逻辑容器层次结构识别与应用相关联的进程,并可以将其作为一组而挂起)。可基于维持指示将挂起的进程恢复为执行状态的原因的一组唤醒策略而恢复挂起的进程(例如,如果接收到阈值数量的从请求应用到挂起的进程的进程间通信调用,那么可将挂起的进程放置到执行状态以处理该进程间通信调用)。在应用挂起期间,可从与挂起的应用相关联的定时器导出应用状态,使得一旦将挂起的应用恢复到执行状态,可使用应用状态对定时器重建基础。另外,在应用被挂起时可以管理应用消息队列,这样的话可以修改和/或从应用队列中移除不相关和/或过时的消息。通过这样的方式,一旦进入执行状态,应用可处理相关系统消息,这样的话应用可被放置到当前应用状态。
图1通过示例性方法100示出了挂起与应用相关联的一个或多个进程的一个实施方式。该方法开始于步骤102。在步骤104,可以接收到应用不活动的通知(例如,应用可被转换到后台状态,应用可以对于用户不可见(例如,处于已被放置在监视器的前景的不同应用后面),用户有一段时间没有与应用交互等)。在步骤106,可识别与应用相关联的一个或多个进程。在一个例子中,可以查询逻辑容器层次结构(例如图3中的逻辑容器层次结构308)以确定哪些进程与应用相关联。例如,应用可被分配到逻辑容器层次结构内的根逻辑容器,而与该应用相关联的进程可以被分配到与根逻辑容器相关联(例如嵌套在其中)的逻辑容器。
在识别一个或多个进程的一个例子中,可以基于第一进程被分配到与根逻辑容器相关联(例如嵌套在其中)的第一逻辑容器的确定(例如第一进程可以是应用的直接子进程)而确定第一进程与应用相关联。在另一个例子中,可以基于第二进程被分配到与根逻辑容器相关联的第一逻辑容器的确定(例如第二进程可以是应用的直接子进程)而确定第二进程与应用相关联。在另一个例子中,可以基于第二进程被分配到与第一逻辑容器相关联的第二逻辑容器的判断(例如第二进程可以是第一进程的直接子进程和/或应用的非直接子进程)而确定第二进程与应用相关联。通过这样的方式,可以确定与应用相关联的一个或多个进程。
在步骤108,可将一个或多个进程放置到挂起状态。例如,挂起的进程可被标记为无资格由处理器执行,使得线程调度器不可考虑包含挂起的进程的线程为用于执行的候选。在一个例子中,与一个或多个进程相关联的应用和/或其他应用可被通知该挂起,这可以为这些应用提供机会以保存状态信息(例如,社交网络应用可保存与用户浏览的当前简档相关联的状态信息,以使得一旦恢复,社交网络应用可呈现当前简档给用户)。与挂起的进程相关联的存储器内容可作为保存的存储器内容被保存到存储器设备。通过这样的方式,保存的存储器内容可返回到存储器中,这可以允许挂起的进程快速恢复执行。
可以理解的是,可基于新创建的进程与一个或多个挂起的进程和/或不活动的应用相关联的确定而将新创建的进程(例如在挂起了一个或多个进程之后创建的进程)放置到挂起状态。例如,可基于新创建的进程被分配到与不活动的应用的根逻辑容器相关联的逻辑容器的确定而确定新创建的进程与不活动的应用相关联。通过这样的方式,新创建的进程可以被放置到挂起状态。该方法结束于步骤110。
图2中通过示例性方法200示出了挂起与应用相关联的一个或多个进程的一个实施方式。该方法开始于把步骤202。在步骤204,可以接收到应用不活动的通知。在步骤206,可迭代地遍历逻辑容器层次结构以识别与应用相关联的一个或多个进程。在一个例子中,可在逻辑容器层次结构内识别分配给应用的根逻辑容器。可基于第一进程被分配给与根逻辑容器相关联(例如嵌套在其中)的第一逻辑容器的确定而确定第一进程与应用相关联。在另一个例子中,可基于第二进程被分配给与根逻辑容器相关联的第一逻辑容器的确定而确定第二进程与应用相关联(例如第二进程可以是应用的直接子进程)。在另一个例子中,可基于第二进程被分配给与第一逻辑容器相关联的第二逻辑容器的确定而确定第二进程与应用相关联(例如第二进程可以是第一进程的直接子进程和/或应用的非直接子进程)。通过这样的方式,可识别与应用相关联的一个或多个进程。在步骤208,可以将一个或多个进程放置到挂起状态。通过这样的方式,可以挂起与不活动的应用相关联的进程和/或新创建的进程。该方法结束于步骤210。
图3示出了被配置为挂起与应用相关联的一个或多个进程的系统300的一个例子。系统300可以包括挂起组件322。挂起组件322可被配置为接收应用不活动的通知。例如,可在计算环境内托管文本编辑器应用302和电子数据表应用304。用户可从文本编辑器应用302切换到电子数据表应用304,这可以导致文本编辑器应用302被转换到后台状态。通过这样的方式,挂起组件322可接收文本编辑器不活动通知306。
挂起组件322可被配置为迭代地遍历逻辑容器层次结构308以识别与应用相关联的一个或多个进程。在一个例子中,文本编辑器应用302可与分配给文本编辑器根逻辑容器310的文本编辑器进程312相关联。当执行时,文本编辑器应用302可以已经创建可以已经分配给文本编辑器根逻辑容器310的一个或多个子进程,例如为本编辑器打印进程314和/或文本编辑器保存进程316。另外,文本编辑器应用302可以已经调用了与分配到拼写检查器逻辑容器318的拼写检查器进程320相关联的拼写检查功能。拼写检查器逻辑容器318可以嵌套在文本编辑器根逻辑容器310中,因为拼写检查器进程320可以与文本编辑器应用302相关联。因此,挂起组件322可基于遍历逻辑容器层次结构308而确定文本编辑器打印进程314、文本编辑器保存进程316和/或拼写检查器进程320可以与文本编辑器应用302相关联。通过这样的方式,挂起组件322可基于文本编辑器应用302不活动而挂起324与文本编辑器应用320相关联的文本编辑器进程312、文本编辑器打印进程314、文本编辑器保存进程316、拼写检查器进程320和/或新创建的进程,这可以导致改善的能耗,因为这些进程和/或应用可能没有资格消耗处理器执行资源和/或其他能量消耗资源。
图4中通过示例性方法400示出了基于一组唤醒策略确定是否恢复挂起的进程的一个实施例。该方法开始于步骤402。在步骤404,可以维持与挂起的进程相关联的一组唤醒策略。唤醒策略可以指示将挂起的进程恢复到执行状态的原因。在一个例子中,唤醒策略可相应于从请求应用到挂起的进程的进程间通信调用(例如,电子数据表应用可尝试请求“剪切”来自文本编辑器应用的文本以满足“粘贴”操作;呈现应用可包括其功能和/或数据是由文本编辑器应用提供的“粘贴的”文本对象等)。在另一个例子中,唤醒策略可相应于与挂起的应用相关联的用户输入(例如用户可以试图与挂起的文本编辑器应用交互)。在另一个例子中,组件(例如硬件组件、软件组件、远程第三方组件、网络组件等)可请求访问挂起的进程。在另一个例子中,唤醒策略可相应于与挂起的进程相关联的挂起的应用从后台状态到前台状态的转换。通过这样的方式,一组唤醒策略可包括与用于恢复挂起的进程的多种事件/原因相关联的多种唤醒策略。
计数器可与唤醒策略相关联。计数器可以指示对于挂起的进程当前未决(pending)的与唤醒策略相关联的唤醒通知(例如,由唤醒策略指定的事件/原因的实例)的数目。唤醒通知可以是由唤醒策略指定的事件/原因的通知,例如进程间通信调用的通知。计数器可以递增(例如,与唤醒通知相关联的事件可能是未决的)和/或递减(例如,与唤醒通知相关联的事件已完成)。可以意识到的是可在一组唤醒策略内维持多种唤醒策略和相应的计数器。例如,在接收到用户试图与挂起的文本编辑器交互的第一唤醒通知时,用于用户输入唤醒策略的第一计数器可递增到1。在接收到用户第二次试图与挂起的文本编辑器交互的第二唤醒通知时,用于用户输入唤醒策略的第一计数器可递增到2。在接收到电子数据表应用试图与挂起的文本编辑器通信的第三唤醒通知时,用于进程间通信唤醒策略的第二计数器可以递增到1。一旦接收到电子数据表应用不再希望与挂起的文本编辑器通信的通知(例如用户关闭了电子数据表应用),第二计数器可以递减到0。通过这样的方式,可以维持与一组唤醒策略内的唤醒策略相关联的计数器。
在一个例子中,可基于如何根据进程的执行/挂起状态转换计数器来过滤唤醒通知(例如,忽略、删除和/或制止发布)。在一个例子中,一旦确定进程处于执行状态,那么可以过滤将计数器从值0转换到值1的唤醒通知(例如,可过滤可触发将已在执行的进程放置到执行状态的唤醒策略的唤醒通知,因为执行进程已在执行)。在另一个例子中,一旦确定进程处于挂起状态,可以过滤将计数器从值1转换到值0的唤醒通知(例如,可过滤可触发将已挂起的进程放置到挂起状态的唤醒策略的唤醒通知,因为挂起的进程已被挂起)。
在步骤406,可评估与挂起的进程相关联的一组唤醒策略以确定是将挂起的进程放置到执行状态还是保持挂起的进程处于挂起状态。在一个例子中,可基于确定与唤醒策略相关联的至少一个计数器包含大于阈值的值(例如,至少一个计数器具有大于0的值)而将挂起的进程放置到执行状态。如果没有计数器包括大于阈值的值,那么挂起的进程可被保持在挂起状态。在另一个例子中,一个或多个计数器的值可被累加到一起以创建累加值。例如,可基于具有值2的与用户输入唤醒策略相关联的第一计数器和具有值2的与远程第三方进程间通信调用唤醒策略相关联的第二计数器而确定累加值4。可基于与唤醒策略相关联的加权来调整累加值4。例如,用户输入唤醒策略可以具有加权后的值4(例如,基于应用2x加权修改器到值2),这是因为可能希望响应于用户输入而恢复/唤醒挂起的进程,以使得与挂起的进程相关联的应用高速响应于用户。远程第三方进程间通信策略可以具有加权后的值1(例如,基于应用0.5x加权修改器到值2),因为可能其希望抑制对可能因不重要和/或不期望的原因而试图吵闹地(noisily)与挂起的进程的通信的远程第三方的响应力。可以基于确定累加值是否大于阈值(例如累加值5可以大于阈值3)而将挂起的进程放置到执行状态。
可以意识到的是,在一个例子中,该组唤醒策略可与逻辑容器层次结构内被分配给挂起的进程的逻辑容器相关联。因此,如果挂起的进程被放置到执行状态,那么与挂起的进程相关联的一个或多个进程和/或应用也可以被放置到执行状态。例如,文本编辑器进程可被放置到执行状态。文本编辑器进程可被分配到文本编辑器根逻辑容器。可以基于确定拼写检查器进程被分配给与文本编辑器根逻辑容器相关联(例如嵌套在其中)的逻辑容器而将拼写检查器进程也放置到执行状态。通过这样的方式,一个或多个相关的进程可以被恢复到执行状态。在一个例子中,与恢复的进程相关联的保存的存储器内容可被再存储到存储器中,这样的话这些进程可以以响应迅速的方式快速恢复执行,同时仍节省功耗。
一旦被放置到执行状态作为执行进程,将作出是否和/或何时将执行进程返回到挂起状态的确定。在一个例子中,可以评估该组唤醒策略的当前状态(例如,如果计数器值和/或计数器值的累加值不大于阈值,那么执行进程可以被放置回挂起状态)。在另一个例子中,可以评估从使得执行进程被放置到执行状态的唤醒通知完成后逝去的时间。例如,呈现应用可包括其功能和/或数据可以由挂起的文本编辑器应用提供的“粘贴的”文本对象。可进行从呈现应用到挂起的文本编辑器应用关于“粘贴的”文本对象的进程间通信调用。可以接收到通信调用的唤醒通知,并且挂起的文本编辑器应用将被放置到执行状态以满足进程间通信调用。允许文本编辑器应用保持在执行状态一段时间(例如,与将文本编辑器应用立刻放置回挂起状态相反)可能是有利的,这是因为呈现应用可能做出关于“粘贴的”文本对象的随后的到文本编辑器应用的进程间通信调用。该方法结束于步骤408。
图5中通过示例性方法500示出了基于一组唤醒策略确定是否恢复挂起的进程的一个实施方式。该方法开始于步骤502。在步骤504,可维持与逻辑容器层次结构内被分配给挂起的进程的逻辑容器相关联的唤醒策略。该唤醒策略可以指示将挂起的进程恢复到执行状态的原因。该唤醒策略可包括指示与该唤醒策略相关联的对于挂起的进程当前未决的唤醒通知的数目的计数器。唤醒通知可以是由唤醒策略指定的用于恢复挂起的进程的事件/原因的通知,例如进程间通信调用的通知。可基于接收到与该唤醒策略相关联的唤醒通知而递增计数器(例如,可基于接收到指示用户试图与关联于挂起的进程的挂起的应用进行交互的唤醒通知而递增与用户输入唤醒策略相关联的计数器)。可基于接收到唤醒通知当前未决的通知而递减计数器(例如,可基于用户从托管挂起的应用的计算设备登出的通知而递减计数器)。
在一个例子中,在步骤506,一旦确定计数器的值大于阈值,可将挂起的进程放置到执行状态。在一个例子中,可遍历逻辑容器层次结构,以便基于确定一个或多个附加的挂起的进程被分配到与挂起的进程的逻辑容器相关联(例如嵌套在其中)的逻辑容器而识别与挂起的进程相关联的一个或多个附加的挂起的进程。通过这样的方式,可将一个或多个附加的挂起的进程放置到执行状态。在另一个例子中,在步骤508,一旦确定计数器的值低于阈值,可以将挂起的进程保持在挂起状态。通过这样的方式,可基于唤醒策略将挂起的进程放置到执行状态或保持在挂起状态。该方法结束于步骤510。
图6示出了被配置为基于唤醒策略确定是否恢复挂起的进程的系统600的一个例子。系统600可包括唤醒组件624。唤醒组件624可被配置为维持唤醒策略(例如,诸如进程间通信唤醒策略628、用户输入唤醒策略630、后台到前台唤醒策略632和/或其他唤醒策略之类的一组唤醒策略626)。唤醒策略可与逻辑容器层次结构610内被分配给挂起的进程的逻辑容器相关联。例如,一组唤醒策略626可与文本编辑器逻辑容器612相关联,文本编辑器逻辑容器612与挂起的文本编辑器应用602的挂起的文本编辑器进程614相关联。在一个例子中,可基于文本编辑器进程614的挂起而挂起挂起的文本编辑器打印进程616、挂起的文本编辑器保存进程618和/或挂起的拼写检查器进程622,这是因为这些进程可能是相关的(例如,挂起的拼写检查器进程622可以被分配给嵌套在文本编辑器逻辑容器612内的拼写检查器逻辑容器620)。
诸如进程间通信唤醒策略628的唤醒策略可与指示与该唤醒策略关联的对于挂起的进程当前未决的唤醒通知的数目的计数器相关联。唤醒组件624可被配置为基于接收到与唤醒策略相关联的唤醒通知而递增计数器和/或基于接收到唤醒通知当前并非未决的通知而递减计数器。例如可接收唤醒通知608。唤醒通知608可指示电子数据表应用604已经发送了关于粘贴的文本对象606的进程间通信调用到挂起的文本编辑器应用602(例如,粘贴的文本对象606是从挂起的文本编辑器应用602导出的功能和/或数据,并且因此电子数据表应用604请求来自挂起的文本编辑器应用602的这些功能和/或数据)。唤醒组件624可基于唤醒通知608将与进程间通信唤醒策略628相关联的计数器递增到1。
唤醒组件624可被配置为基于确定计数器的值大于阈值而将挂起的进程放置到执行状态,否则,唤醒组件624可以保持挂起的进程处于挂起状态。例如,唤醒组件624可基于包含大于0的值1的进程间通信唤醒策略628的计数器将挂起的文本编辑器进程614放置到执行状态。唤醒组件624可遍历逻辑容器层次结构610以识别与将要被恢复为执行状态的挂起的文本编辑器进程614相关联的一个或多个附加的挂起的进程。例如,可基于确定这些进程被分配给文本编辑器逻辑容器612和/或与文本编辑器逻辑容器612相关联(例如嵌套在其中)的逻辑容器(例如拼写检查器逻辑容器620)而识别挂起的文本编辑器打印进程616、挂起的文本编辑器保存进程618和/或挂起的拼写检查器进程622。通过这样的方式,唤醒组件624可将挂起的文本编辑器进程614、挂起的文本编辑器打印进程616、挂起的文本编辑器保存进程618和/或挂起的拼写检查器进程622放置到634执行状态,以使得文本编辑器应用602可响应来自电子数据表应用604的进程间通信调用。在一个例子中,唤醒组件624可将与恢复的进程相关联的保存的存储器内容放置到存储器中以提高文本编辑器应用602的响应力。
图7中通过示例性方法700示出了管理应用的应用状态的一个实施方式。该方法开始于步骤702。在步骤704,可维持与应用相关联的定时器列表(例如可维持与应用相关联的进程的一个或多个定时器)。也就是说,与应用相关联的进程可与一个或多个定时器相关联,例如相对定时器(例如,由文本编辑器应用为文本编辑器保存进程设置为20秒的超时)、绝对定时器(例如,由日历应用设置在11年9月15日上午5点的超时)和/或其他类型的定时器。在定时器的一个例子中,文本编辑器应用可为文本编辑器保存进程设置20秒的相对定时器,这是因为文本编辑器保存进程一般不需要花费超过20秒来完成,除非发生了错误。在定时器的另一个例子中,日历应用可设置11年9月15日上午5点的绝对定时器作为提醒以在11年9月15日上午6点向用户提供叫醒通知。
在一个例子中,一个或多个定时器可与分配给应用的根逻辑容器和/或逻辑容器层次结构内分配给与应用相关联的进程的一个或多个逻辑容器相关联。例如,可基于确定第一进程被分配给与逻辑容器层次结构内的根逻辑容器相关联(例如嵌套在其中)的第一逻辑容器而维持与应用的第一进程相关联的第一定时器。可基于确定第二进程被分配给与根逻辑容器和/或第一逻辑容器相关联的第二逻辑容器而维持与应用的第二进程相关联的第二定时器。通过这样的方式,可以维持与应用的进程相关联的定时器列表。
在步骤706,一旦接收到应用将被放置到挂起状态的通知,可创建包含从定时器列表中导出的定时器基础重建数据的应用状态。在一个例子中,可在应用状态内存储与绝对定时器相关联的绝对定时器基础重建数据。绝对定时器基础重建数据可包含绝对定时器的原始到期时间(例如日历应用可能期望在11年9月15日上午5点有一个通知,而不管时间是否已经过去,因为进程和/或应用已被放置到挂起状态)。在另一个例子中,可在应用状态内存储与相对定时器相关联的相对定时器基础重建数据(例如,如果在执行状态下文本编辑器保存进程未能在20秒内完成,文本编辑器应用可能期望有一个超时通知)。相对定时器基础重建数据可包括至到期时间值(例如,从挂起相对定时器的时候到相对定时器的原始到期时间的时间跨度)。例如,相对定时器基础重建数据可包括不同于原始到期时间的至到期时间值,这是因为文本编辑器应用可能关注在执行状态文本编辑器保存进程是否花费超过20秒来完成(例如,花费超过20秒可指示发生了严重错误),这样的话文本编辑器保存进程的挂起可以为相对定时器鸣钟(toll),这是因为由于文本编辑器保存进程被挂起的相对定时器的到期可能不能代表文本编辑器应用可能关注的严重超时。通过这样的方式,可以创建应用状态。
一旦接收到将应用从挂起状态放置到执行状态的通知,在应用状态内的定时器基础重建数据可以被应用到与定时器列表相关联的一个或多个定时器。在一个例子中,绝对定时器基础重建数据可被应用到绝对定时器以创建重建基础后的绝对定时器。重建基础后的绝对定时器可包括绝对定时器的原始到期时间。如果原始到期时间已经到期,那么可向应用提供到期的通知。在另一个例子中,相对定时器基础重建数据可被应用到相对定时器以创建重建基础后的相对定时器。重建基础后的相对定时器可包括通过应用至超期时间值到当前时间而导出的重建基础后的到期定时器。通过这样的方式,可将应用和/或与应用相关联的进程放置到关于定时器的当前应用状态。该方法结束于步骤708。
图8中通过示例性方法800示出了管理应用的应用状态的一个实施方式。该方法开始于步骤802。应用可与应用消息队列相关联。应用消息队列可被配置为存储用于应用的系统消息。通过这样的方式,应用可通过应用消息队列接收系统消息(例如,在处于执行状态时,应用可从队列中取出(dequeue)系统消息)。系统消息可相应于关于应用状态的多种信息(例如系统设置中的改变)。在一个例子中,用户可旋转平板设备,这可能使浏览方向从横向浏览模式改变到纵向浏览模式。平板设备的操作系统可将指示当前浏览模式已被设置为纵向的系统消息排列到应用消息队列中。通过这样的方式,应用可从队列中取出系统消息,并可以以纵向模式呈现自己以匹配平板设备的当前状态。可以意识到的是,系统消息可包括多种其他信息,例如用户界面颜色、语言设置、输入设备信息等。
在步骤804,当应用处于挂起状态时,可维持与应用相关联的应用消息队列。也就是说,应用消息队列一般可接收系统消息而不管应用是否处于挂起状态和/或执行状态(例如,当文本编辑器应用被挂起时,用户可多次旋转平板设备,因此操作系统可在队列中排列相应于当前浏览模式的多个系统消息)。不幸的是,在应用处于挂起状态时多个相应的系统消息被排列到应用消息队列内,其中一个或多个消息变得不相关和/或过时。例如,当文本编辑器应用被挂起时,随着时间的过去,4个系统消息可以被排列到应用消息队列中。用户可将平板设备的系统语言设置改变为德文,因此语言=德文系统消息可以被排列到应用系统队列中。接下来,用户可旋转平板设备到横向模式,因此浏览模式=横向可以被排列到应用系统队列中。接着用户可以将平板设备的系统语言设置改变为英文,因此语言=英文系统消息可以被排列到应用系统队列中。最后,用户可以旋转平板设备到纵向模式,因此浏览模式=纵向可以被排列到应用系统队列中。通过这样的方式,应用消息队列可包括诸如语言=德文和浏览模式=横向系统消息之类的不相关的和/或过时的系统消息,这是因为语言和浏览模式已被改变为其他值。因此,可维持应用消息队列以删除和/或修改不相关的和/或过时的消息。
在一个例子中,可在应用处于挂起状态时接收针对应用消息队列的第一系统消息。可作出第一系统消息是否相应于应用消息队列内的第二系统消息的确定(例如,如果第一系统消息相应于语言系统消息,那么可以遍历应用消息队列以识别相应于语言系统消息的一个或多个系统消息)。一旦确定第一系统消息相应于第二系统消息,可以删除和/或修改第一系统消息和/或第二系统消息(例如,可以保留更新的和/或更相关的第一系统消息而删除第二系统消息)。例如,可分配相关性等级给第一和第二系统消息以确定修改和/或删除哪个系统消息。该方法结束于步骤806。
图9示出了被配置为管理应用的应用状态(例如定时器数据和/或系统消息数据)的系统900的一个例子。系统900可包括应用状态管理器910。应用状态管理器910可被配置为维持与应用相关联的定时器列表904。例如,定时器列表904可包括被设置为10分钟后超时的拼写检查器相对定时器906、被设置为在2011年8月12日下午3点超时的文本编辑器绝对定时器908和/或其他定时器。应用状态管理器910可接收应用将被放置到挂起状态的通知902。例如,通知902可以指示文本编辑器应用和/或拼写检查器应用将被放置到挂起状态。
一旦接收到通知902,应用状态管理器910可创建包含从定时器列表904导出的定时器基础重建数据的应用状态912。例如,可以创建用于拼写检查器相对定时器906的相对定时器基础重建数据914。相对定时器基础重建数据914可包括8分钟的至到期时间值,这是因为在拼写检查器应用被挂起的时间之前10分钟已经过去了2分钟,因此仅留下10分钟相对定时器的8分钟至到期时间。可以创建用于文本编辑器绝对定时器908的绝对定时器基础重建数据916。绝对定时器基础重建数据916可包括2011年8月12日下午3点的原始到期时间。通过这样的方式,可以创建应用状态912。
一旦接收到文本编辑器应用和/或拼写检查器应用将被放置到执行状态的通知,应用状态912内的相对定时器基础重建数据914和/或绝对定时器基础重建数据916可被应用到拼写检查器相对定时器906和/或文本编辑器绝对定时器908。通过这样的方式,可以创建8分钟的重建基础后的相对定时器,并且可以创建2011年8月12日下午3点的重建基础后的绝对定时器。
图10示出了被配置为管理应用的应用状态(例如系统消息)的系统1000的一个例子。系统1000可包括消息管理组件1006。消息管理组件1006可被配置为在应用处于挂起状态时维持与应用相关联的应用消息队列1004。应用消息队列1004可被配置为存储用于应用的系统消息。在一个例子中,文本编辑器应用可与应用消息队列1004相关联。文本编辑器应用可被放置到挂起状态。可以意识到的是,在文本编辑器应用被挂起时可将新系统消息排列到应用消息队列1004中。应用消息队列1004的当前状态可包括浏览模式=横向系统消息、用户界面=绿色系统消息、语言=英文系统消息、新输入设备=鼠标和/或其他系统消息。
当应用被挂起时,可接收新系统消息1002(例如浏览模式=纵向的新系统消息、用户界面=红色的新系统消息、新输入设备=键盘的新系统消息和/或其他新系统消息)。消息管理组件1006可被配置为根据新系统消息1002来维持应用消息队列1004,这样的话可从应用消息队列1004中删除和/或修改不相关的和/或过时的系统消息。在一个例子中,浏览模式=纵向的新系统消息可被确定为相应于应用消息队列1004内的浏览模式=横向系统消息。因为浏览模式=纵向的新系统消息可使得浏览模式=横向系统消息不相关和/或过时,因此可删除1012浏览模式=横向系统消息,并且将浏览模式=纵向的新系统消息可以被增加1008到应用消息队列1004。
在另一个例子中,用户界面=红色的新系统消息可被确定为相应于应用消息队列1004内的用户界面=绿色系统消息。因为用户界面=红色的新系统消息使得用户界面=绿色系统消息不相关和/或过时,因此可以删除1014用户界面=绿色系统消息,并且将用户界面=红色的新系统消息增加1010到应用消息队列1004。在另一个例子中,新用户输入设备=键盘的新系统消息可被确定为相应于新用户输入设备=鼠标系统消息。因为新输入设备=键盘的新系统消息可以补充到新输入设备=鼠标系统消息,因此新输入设备=鼠标系统消息可被修改1016为新输入设备=鼠标和键盘系统消息。通过这样的方式,在应用被挂起时消息管理组件可以维持应用消息队列1004,这样的话一旦恢复,应用可以仅仅从队列取出相关的系统消息。
再另一个实施方式涉及包含被配置为实现此处提出的一种或多种技术的处理器可执行指令的计算机可读媒介。图11中示出了可通过这样的方式设计的示例性计算机可读媒介,其中实现1100包括在其上编码了计算机可读数据1114的计算机可读媒介1116(例如CD-R、DVD-R或硬盘驱动盘)。这些计算机可读数据1114进而又包括一组被配置为根据此处阐述的一个或多个原理而操作的计算机指令1112。在一个这样的实施方式1110中,处理器可执行计算机指令1112可被配置为执行方法1110,例如图1的示例性方法100的至少一部分、图2的示例性方法200的至少一部分、图4的示例性方法400的至少一部分、图5的示例性方法500的至少一部分、图7的示例性方法700的至少一部分和/或图8的示例性方法800的至少一部分。在另一个这样的实施方式中,处理器可执行指令1112可被配置为实现一种系统,例如图3的示例性系统300的至少一部分、图6的示例性系统600的至少一部分、图9的示例性系统900的至少一部分和/或图10的示例性系统1000的至少一部分。可由本领域技术人员来设计可被配置为依据此处提出的技术来操作的许多这样的计算机可读媒介。
尽管已使用特定于结构性特征和/或方法动作的语言描述了主题,但是可以理解的是在所附的权利要求中所定义的主题并非必须局限于以上所描述的具体特征或动作。反之,以上所描述的具体特征和动作仅作为实现权利要求的形式的例子而公开的。
在本申请中所使用的术语“组件”、“模块”、“系统”、“界面”等一般试图指代计算机相关实体,即硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件(executable)、执行的线程、程序和/或计算机。作为示例,在控制器上运行的应用和控制器这两者都可以是组件。一个或多个组件可驻留在执行的进程和/或线程内,并且组件可在一个计算机本地和/或分布在两个或多个计算机之间。
此外,所要求保护的主题可被实现为方法、设备或使用标准编程和/或工程技术制造软件的制品、固件、硬件或以上这些的组合,从而控制计算机实现公开的主题。此处所使用的术语“制品”试图包括可从任何计算机可读设备、载体或媒体访问的计算机程序。当然,本领域技术人员将认识到可对该配置做出许多修改而不脱离所要求保护的主题的范围或精神。
图12和以下讨论提供了实现此处阐述的一个或多个方案的实施方式的合适的计算环境的简要的、一般性描述。图12的操作环境仅是合适的操作环境的一个例子,其并未试图隐含任何对操作环境的使用或功能的范围的限制。示例的计算设备包括但不限于个人计算机、服务器计算机、手持或膝上设备、移动设备(例如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子设备、微型计算机、大型计算机、包括以上这些系统或设备的任何一种的分布式计算环境等。
尽管不是必须的,以由一个或多个计算设备执行的“计算机可读指令”的一般上下文来描述实施方式。可通过计算机可读媒体来分发计算机可读指令(以下将讨论)。计算机可读指令可被实现为执行特定任务或实现特定抽象数据类型的程序模块(例如函数、对象、应用编程接口(API)、数据结构等)。一般来说,可以按照期望在多种环境中组合或分布计算机可读指令的功能。
图12示出了包括被配置为实现此处提供的一个或多个实施方式的计算设备1212的系统1210的一个例子。在一种配置中,计算设备1212包括至少一个处理单元1216和存储器1218。根据计算设备的确切配置和类型,存储器1218可以是易失性(例如RAM)、非易失性的(例如ROM、闪存等)或这两者的一些组合。在图12中通过虚线1214示出了该配置。
在其他实施方式中,设备1212可包括附加的特征和/或功能。例如,设备1212还可包括附加的存储装置(例如可移除的和/或不可移除的),所述存储装置包括但不限于磁存储装置、光存储装置等。在图12中通过存储装置1220示出了这些附加的存储装置。在一个实施方式中,实现此处提供给的一个或多个实施方式的计算机可读指令可存储在存储装置1220中。存储装置1220还可存储其他计算机可读指令以实现操作系统、应用程序等。计算机可读指令可被加载到存储器1218中以用于例如由处理单元1216执行。
此处所使用的术语“计算机可读媒体”包括计算机存储媒体。计算机存储媒体包括以任何方法或技术实现的用来存储诸如计算机可读指令或其他数据之类的信息的易失性和非易失性、可移除和不可移除媒体。存储器1218和存储装置1220是计算机存储媒体的例子。计算机存储媒体包括但不限于:RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多用盘(DVD)、或其他光存储装置、磁盒、磁带、磁盘存储装置或其他磁存储设备、或可被用来存储期望信息并可被设备1212访问的任何其他媒介。任何这样的计算机存储媒体可以是设备1212的一部分。
设备1212还可包括通信连接1226,其允许设备1212与其他设备进行通信。通信连接1226可包括但不限于:调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或其他用于连接计算设备1212到其他计算设备的接口。通信连接1226可包括有线连接或无线连接。通信连接1226可传输和/或接收通信媒体。
术语“计算机可读媒体”可包括通信媒体。通信媒体一般体现为“调制的数据信号”(例如载波或其他传输机制)中的计算机可读指令或其他数据,其包括任何信息传递媒体。术语“调制的数据信号”可包括其一个或多个特性被以将信息编码到信号中这样一种方式而被设置或改变。
设备1212可包括诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外照相机、视频输入设备和/或任何其他输入设备之类的输入设备1224,设备1212还可以包括诸如一个或多个显示器、扬声器、打印机和/或任何其他输出设备之类的输出设备1222。输入设备1224和输出设备1222可通过有线连接、无线连接或这两者的组合与设备1212连接。在一个实施方式中,来自另一个计算设备的输入设备或输出设备可被用作计算设备1212的输入设备1224或输出设备1222。
可通过诸如总线之类的多种互连方式来连接计算设备1212的组件。这样的互连方式包括周边组件互连(PCI)(例如PCI Express)、通用串行总线(USB)、火线(IEEE 1394)、光总线结构等。在另一个实施方式中,可通过网络互连计算设备1212的组件。例如,存储器1218可包括位于由网络互连的不同物理位置的多个物理存储器单元。
本领域技术人员将意识到用来存储计算机可读指令的存储设备可分布在网络中。例如,可通过网络1228访问的计算设备1230可存储计算机可读指令以实现此处提供的一个或多个实施方式。计算设备1212可访问计算设备1230,并且下载部分或全部计算机可读指令以用于执行。可替换的是,计算设备1212可按照需求下载部分计算机可读指令,或者一些指令可以在计算设备1212上执行,另一些在计算设备1230上执行。
此处提供了实施方式的多种操作。在一个实施方式中,所描述的一个或多个操作可以构成存储在一个或多个计算机可读媒体上的计算机可读指令,如果计算设备执行这些指令,这些指令将导致计算设备执行所描述的操作。描述部分或全部操作的顺序不应当被解释成暗示这些操作必须依赖于这样的顺序。受益于本说明书的本领域技术人员将会意识到可替换的顺序。此外,将理解的是并非所有操作在此处提供的每个实施方式中都是必须存在的。
此外,此处所使用的文字“示例性”意味着用作例子、实例或示例。此处被描述为“示例性”的任何方面或设计都不是必须被解释成相对其他方面或设计的优点。相反,使用文字示例性试图以具体的方式表示概念。在本申请中使用的术语“或”试图意指包括性的“或”而非排他式的“或”。也就是说,除非以其他方式指明或者从上下文可以明白,“X采用A或B”试图意指任何自然包含性排列组合。也就是说,如果X采用A;X采用B;或者X采用A和B两者,那么“X采用A或B”满足以上例子的任一种。另外,本申请和所附的权利要求中所使用的冠词“一”和“一个”一般可以被解释为意指“一个或多个”,除非以其它方式指明或者从上下文可以清楚针对的是单数形式。同样的,A和B中的至少一个等一般意指A或B或者A和B这两者。
同样的,尽管本公开已关于一个或多个实现进行了显示和描述,但是本领域技术人员基于对本说明和附图的阅读和理解可作出等同改变和修改。本公开包括所有这样的修改和改变,并且仅由以下权利要求的范围来限定。特别地,关于由以上所描述的组件(例如元件、资源等)所执行的多种功能,用来描述这些组件的术语试图相应于(除非以其他方式指明)执行所描述的组件的指定功能的任何组件(也就是功能等同),即使并非结构上等同于执行本公开在此处所示出的示例性实现的功能的所公开的结构。另外,尽管本公开的特定特征可能已经关于若干种实现中的一种所公开,但是,根据需求,这样的特征可与其他实现的一个或多个其他特征相组合,并且这对于任何给定的或特定的应用是有利的。此外,在具体实施方式中或权利要求书中使用的术语“包括”、“具有”、“含有”、“带有”或其他变型的意义上,这些术语试图以与术语“包含”类似的方式是包含性的。
Claims (15)
1.一种用于管理应用的应用状态的方法,包括:
在应用处于挂起状态时维持与应用相关联的应用消息队列,在该应用处于挂起状态时该应用消息队列被配置来存储用于该应用的系统消息;
确定在该应用处于挂起状态时引导到该应用消息队列的第一系统消息是否可以补充到该应用消息队列中的第二系统消息;
一旦确定第一系统消息可以补充到第二系统消息,通过合并第一系统消息和第二系统消息来修改第一系统消息或第二系统消息中的至少一个;
基于与第一系统消息和第二系统消息相关联的相关性排序,删除第一系统消息和第二系统消息中的至少一个;以及
至少处理修改的消息。
2.根据权利要求1所述的方法,包括:
维持与该应用相关联的定时器列表。
3.根据权利要求2所述的方法,包括:
创建从该定时器列表中导出的定时器基础重建数据。
4.根据权利要求3所述的方法,该定时器基础重建数据包括绝对定时器的原始到期时间或相对定时器的至到期时间值中的至少一个。
5.根据权利要求2所述的方法,维持定时器列表包括:
维持与逻辑容器层次结构内分配给该应用的根逻辑容器相关联的一个或多个定时器,包括:
基于确定第一进程被分配给与逻辑容器层次结构内的根逻辑容器相关联的第一逻辑容器而维持与应用的第一进程相关联的第一定时器。
6.根据权利要求3所述的方法,包括:
一旦接收到该应用将要从该挂起状态被转换出并被放置到执行状态的通知,将该定时器基础重建数据应用到与该定时器列表相关联的一个或多个定时器。
7.一种用于管理应用的应用状态的系统,包括:
一个或多个处理单元;以及
包含指令的存储器,该指令在被一个或多个处理单元中的至少一个执行时实现下述中的至少一些,
应用状态管理器,被配置来:
在应用处于挂起状态时维持与应用相关联的应用消息队列,在该应用处于挂起状态时该应用消息队列被配置来存储用于该应用的系统消息;以及
确定在该应用处于挂起状态时引导到该应用消息队列的第一系统消息是否可以补充到该应用消息队列中的第二系统消息;
一旦确定第一系统消息可以补充到第二系统消息,通过合并第一系统消息和第二系统消息来修改第一系统消息或第二系统消息中的至少一个;
基于与第一系统消息和第二系统消息相关联的相关性排序,删除第一系统消息和第二系统消息中的至少一个;以及
至少处理修改的消息。
8.根据权利要求7所述的系统,该应用状态管理器被配置来:
一旦接收到该应用将要从该挂起状态被转换出并被放置到执行状态的通知,将定时器基础重建数据应用到与该应用相关联的一个或多个定时器,其中定时器基础重建数据包括其间应用被确定为在转换出挂起状态之前已经保持在挂起状态的持续时间。
9.根据权利要求7所述的系统,包括:
被配置来维持与该应用相关联的定时器列表的组件。
10.一种用于管理应用的应用状态的设备,包括:
用于在应用处于挂起状态时维持与应用相关联的应用消息队列的装置,在该应用处于挂起状态时该应用消息队列被配置来存储用于该应用的系统消息;
用于确定在该应用处于挂起状态时引导到该应用消息队列的第一系统消息是否可以补充到该应用消息队列中的第二系统消息的装置;
用于一旦确定第一系统消息可以补充到第二系统消息,通过合并第一系统消息和第二系统消息来修改第一系统消息或第二系统消息中的至少一个的装置;
用于基于与第一系统消息和第二系统消息相关联的相关性排序,删除第一系统消息和第二系统消息中的至少一个的装置;以及
用于至少处理修改的消息的装置。
11.根据权利要求10所述的设备,包括:
用于维持与该应用相关联的定时器列表的装置。
12.根据权利要求11所述的设备,包括:
用于创建从该定时器列表中导出的定时器基础重建数据的装置。
13.根据权利要求12所述的设备,该定时器基础重建数据包括绝对定时器的原始到期时间或相对定时器的至到期时间值中的至少一个。
14.根据权利要求11所述的设备,用于维持定时器列表的装置包括:
用于维持与逻辑容器层次结构内分配给该应用的根逻辑容器相关联的一个或多个定时器的装置,包括:
用于基于确定第一进程被分配给与逻辑容器层次结构内的根逻辑容器相关联的第一逻辑容器而维持与应用的第一进程相关联的第一定时器的装置。
15.根据权利要求12所述的设备,包括:
用于一旦接收到该应用将要从该挂起状态被转换出并被放置到执行状态的通知,将该定时器基础重建数据应用到与该定时器列表相关联的一个或多个定时器的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/230,698 US9588576B2 (en) | 2011-09-12 | 2011-09-12 | Managing processes within suspend states and execution states |
US13/230698 | 2011-09-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999384A CN102999384A (zh) | 2013-03-27 |
CN102999384B true CN102999384B (zh) | 2017-05-17 |
Family
ID=47831061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210335883.2A Active CN102999384B (zh) | 2011-09-12 | 2012-09-12 | 在挂起状态和执行状态下管理进程 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9588576B2 (zh) |
EP (1) | EP2756386B1 (zh) |
JP (1) | JP5985644B2 (zh) |
KR (1) | KR101943133B1 (zh) |
CN (1) | CN102999384B (zh) |
WO (1) | WO2013039526A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014138010A1 (en) * | 2013-03-04 | 2014-09-12 | Yagi Corporation | Activity interruption management |
CN103984743B (zh) * | 2014-05-23 | 2018-03-09 | 北京猎豹网络科技有限公司 | 一种管理内存资源的方法及装置 |
CN104951282A (zh) * | 2015-05-21 | 2015-09-30 | 中国人民解放军理工大学 | 一种定时器管理系统及方法 |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
CN108121572B (zh) * | 2016-11-28 | 2021-02-12 | 华为技术有限公司 | 一种web应用启动方法及装置 |
US11487514B2 (en) | 2017-09-28 | 2022-11-01 | Oracle International Corporation | State management persistence |
CN109032777B (zh) * | 2018-06-29 | 2021-02-05 | 北京鸿享技术服务有限公司 | 进程重启方法、装置、计算设备及计算机存储介质 |
CN112988375B (zh) * | 2019-12-17 | 2024-04-09 | 华为技术有限公司 | 进程管理方法和装置、电子设备 |
US11762525B2 (en) * | 2020-01-15 | 2023-09-19 | Vmware, Inc. | Enterprise branding configuration provisioning |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801096A (zh) * | 2005-01-05 | 2006-07-12 | 国际商业机器公司 | 在计算机系统中用于对进程进行休眠的方法和系统 |
CN101281480A (zh) * | 2008-05-21 | 2008-10-08 | 中兴通讯股份有限公司 | 一种嵌入式系统中实现睡眠功能的方法 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5944829A (en) | 1996-09-30 | 1999-08-31 | Intel Corporation | Adjusting software characteristics by user interface based upon battery level and the amount of time the user wants the battery to last |
US6260150B1 (en) | 1998-03-10 | 2001-07-10 | Agere Systems Guardian Corp. | Foreground and background context controller setting processor to power saving mode when all contexts are inactive |
US6834386B1 (en) | 1999-07-16 | 2004-12-21 | Microsoft Corporation | Method and system for regulating background tasks using performance measurements |
JP2001256066A (ja) | 2000-02-29 | 2001-09-21 | Internatl Business Mach Corp <Ibm> | コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置 |
JP2001318807A (ja) | 2000-05-11 | 2001-11-16 | Nec Microsystems Ltd | タスク切り替え制御方法及び装置 |
US6883170B1 (en) * | 2000-08-30 | 2005-04-19 | Aspect Communication Corporation | Method and system to maintain a hierarchy of instantiated application objects and to enable recovery from an applications failure |
US20020059357A1 (en) | 2000-10-27 | 2002-05-16 | Pac Interactive Technology, Inc | System, method and apparatus of simplifying interpretation of suspend and wake-up functions in operating system for information appliance (IA) |
TW564652B (en) | 2002-09-05 | 2003-12-01 | Ind Tech Res Inst | A mobility management method and system for wireless data networks |
US7506273B2 (en) | 2003-03-19 | 2009-03-17 | International Business Machines Corporation | Method and system for modifying properties of graphical user interface components |
JP2005107757A (ja) | 2003-09-30 | 2005-04-21 | Matsushita Electric Ind Co Ltd | プログラムの暴走検出方法およびプログラムの暴走検出装置 |
US7290193B2 (en) | 2003-09-30 | 2007-10-30 | Sudhir Dattaram Kadkade | System verification using one or more automata |
US7472389B2 (en) * | 2003-10-29 | 2008-12-30 | Honeywell International Inc. | Stochastically based thread budget overrun handling system and method |
US20050155011A1 (en) | 2004-01-12 | 2005-07-14 | Stephan Heik | Method and system for restricting access in a distributed job environment |
GB0411682D0 (en) * | 2004-05-25 | 2004-06-30 | Chello Broadband N V | Display of enhanced content |
US7827558B2 (en) | 2004-06-30 | 2010-11-02 | Devicevm, Inc. | Mechanism for enabling a program to be executed while the execution of an operating system is suspended |
JP4380530B2 (ja) | 2004-12-24 | 2009-12-09 | 株式会社デンソー | マイクロコンピュータおよび時間計測方法 |
US20060236390A1 (en) * | 2005-04-18 | 2006-10-19 | Research In Motion Limited | Method and system for detecting malicious wireless applications |
US20060248471A1 (en) | 2005-04-29 | 2006-11-02 | Microsoft Corporation | System and method for providing a window management mode |
US7373537B2 (en) | 2005-06-28 | 2008-05-13 | Intel Corporation | Response to wake event while a system is in reduced power consumption state |
US20070028052A1 (en) | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for maintaining cached state data for one or more shared devices in a logically partitioned computer system |
US7895309B2 (en) * | 2006-01-11 | 2011-02-22 | Microsoft Corporation | Network event notification and delivery |
US20070245163A1 (en) | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
JP4356800B2 (ja) | 2006-03-03 | 2009-11-04 | 日本電気株式会社 | 携帯電話機および携帯電話機の制御方法 |
US7769028B2 (en) * | 2006-06-21 | 2010-08-03 | Harris Corporation | Systems and methods for adaptive throughput management for event-driven message-based data |
JP4342576B2 (ja) | 2006-07-25 | 2009-10-14 | 株式会社エヌ・ティ・ティ・ドコモ | 複数オペレーティングシステム切替制御装置及びコンピュータシステム |
US7584376B2 (en) | 2006-08-23 | 2009-09-01 | Palm, Inc. | Method and apparatus for power management |
US7962911B2 (en) | 2007-02-02 | 2011-06-14 | International Business Machines Corporation | Method and apparatus for preventing undesired termination of a process in an information handling system |
US7853812B2 (en) | 2007-02-07 | 2010-12-14 | International Business Machines Corporation | Reducing power usage in a software application |
KR20080086757A (ko) | 2007-03-23 | 2008-09-26 | 주식회사 엘지텔레콤 | 이동통신단말기에서의 어플리케이션 구동방법 |
US8627327B2 (en) | 2007-10-24 | 2014-01-07 | International Business Machines Corporation | Thread classification suspension |
US20090295746A1 (en) * | 2008-04-29 | 2009-12-03 | Davidson Philip L | Event registration and dispatch system and method for multi-point controls |
GB0808576D0 (en) | 2008-05-12 | 2008-06-18 | Xmos Ltd | Compiling and linking |
US8776078B2 (en) | 2008-05-20 | 2014-07-08 | International Business Machines Corporation | Method for dynamically freeing computer resources |
US9027027B2 (en) | 2008-06-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Thread management based on device power state |
US8510577B2 (en) | 2008-07-28 | 2013-08-13 | Microsoft Corporation | Reducing power consumption by offloading applications |
US7861024B2 (en) | 2008-09-30 | 2010-12-28 | Intel Corporation | Providing a set aside mechanism for posted interrupt transactions |
US20100088495A1 (en) | 2008-10-04 | 2010-04-08 | Microsoft Corporation | Mode-specific container runtime attachment |
JP4729611B2 (ja) | 2008-10-30 | 2011-07-20 | 株式会社エヌ・ティ・ティ・ドコモ | イベントキュー管理装置及びイベントキュー管理方法 |
US8239667B2 (en) | 2008-11-13 | 2012-08-07 | Intel Corporation | Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory |
US8543803B2 (en) | 2009-02-20 | 2013-09-24 | Lenovo (Singapore) Pte Ltd | Apparatus, system, and method for accurate automated scheduling of computer suspend and resume |
US7853817B2 (en) | 2009-02-26 | 2010-12-14 | Apple Inc. | Power management independent of CPU hardware support |
US8352933B2 (en) | 2009-03-26 | 2013-01-08 | International Business Machines Corporation | Concurrent patching of operating systems |
US8239867B2 (en) | 2009-06-03 | 2012-08-07 | Apple Inc. | Method and apparatus for implementing atomic FIFO |
US8490075B2 (en) | 2009-11-23 | 2013-07-16 | Nokia Corporation | Method and apparatus for optimizing an exchange of service updates |
CN102087651A (zh) | 2009-12-02 | 2011-06-08 | 石庆生 | 一种酒店客房服务控制装置 |
US9361165B2 (en) | 2009-12-03 | 2016-06-07 | International Business Machines Corporation | Automated merger of logically associated messages in a message queue |
US8286011B2 (en) | 2010-02-28 | 2012-10-09 | Freescale Semiconductor, Inc. | Method of waking processor from sleep mode |
US8688966B2 (en) * | 2010-08-31 | 2014-04-01 | Apple Inc. | Systems, methods, and computer-readable media for presenting visual content with a consistent orientation |
US8726063B2 (en) * | 2011-07-26 | 2014-05-13 | Raytheon Company | Systems and methods providing output sample frequency determinism by calculating a delay with a wall clock and using a timer to compensate for the delay |
-
2011
- 2011-09-12 US US13/230,698 patent/US9588576B2/en active Active
- 2011-10-11 KR KR1020147006503A patent/KR101943133B1/ko active IP Right Grant
- 2011-10-11 WO PCT/US2011/055696 patent/WO2013039526A1/en active Application Filing
- 2011-10-11 EP EP11872386.5A patent/EP2756386B1/en active Active
- 2011-10-11 JP JP2014529682A patent/JP5985644B2/ja active Active
-
2012
- 2012-09-12 CN CN201210335883.2A patent/CN102999384B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801096A (zh) * | 2005-01-05 | 2006-07-12 | 国际商业机器公司 | 在计算机系统中用于对进程进行休眠的方法和系统 |
CN101281480A (zh) * | 2008-05-21 | 2008-10-08 | 中兴通讯股份有限公司 | 一种嵌入式系统中实现睡眠功能的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2756386B1 (en) | 2021-11-24 |
JP2014526733A (ja) | 2014-10-06 |
CN102999384A (zh) | 2013-03-27 |
EP2756386A4 (en) | 2016-06-15 |
KR20140067040A (ko) | 2014-06-03 |
US20130067490A1 (en) | 2013-03-14 |
WO2013039526A1 (en) | 2013-03-21 |
EP2756386A1 (en) | 2014-07-23 |
KR101943133B1 (ko) | 2019-01-28 |
JP5985644B2 (ja) | 2016-09-06 |
US9588576B2 (en) | 2017-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999384B (zh) | 在挂起状态和执行状态下管理进程 | |
CN102902583B (zh) | 在挂起状态和执行状态下管理进程 | |
CN103765342B (zh) | 用于连接待机的进程的挂起和/或节制 | |
CN102789305B (zh) | 推迟挂起 | |
CN102902582B (zh) | 挂起状态和执行状态中的管理进程 | |
CN103765343B (zh) | 用于连接待机的进程的挂起和/或节制 | |
US7587718B1 (en) | Method and apparatus for enforcing a resource-usage policy in a compute farm | |
CN106850260A (zh) | 一种虚拟化资源管理平台的部署方法和装置 | |
CN107810488A (zh) | 一种虚拟机的状态管理方法、装置和智能终端 | |
CN107220102A (zh) | 虚拟机的休眠与唤醒方法及系统 | |
CN102970355B (zh) | 通过挂起承租人来管理数据中心的容量的方法和设备 | |
CN107850931A (zh) | 后台任务管理 | |
CN107563166A (zh) | 一种指纹模块休眠唤醒方法及装置 | |
CN110069174A (zh) | 一种消息处理的方法及装置 | |
CN114675976B (zh) | 基于kubernetes的GPU共享方法、装置、设备及介质 | |
CN113448647B (zh) | 资源同步方法、实现设备及电子设备 | |
CN110209497A (zh) | 一种主机资源动态扩缩容的方法及系统 | |
CN114546625A (zh) | 一种跨平台的异步消息处理方法、装置、设备、存储介质 | |
CN110018911A (zh) | 进程管理及进程间通信方法、装置、计算设备及存储介质 | |
CN110688165A (zh) | 应用唤醒锁管理方法及装置、终端、存储介质及电子装置 | |
CN104572240A (zh) | 控制方法和电子设备 | |
CN109669839A (zh) | 一种基于端口实现业务高可用的方法及装置 | |
CN109471669A (zh) | 一种云平台资源处理的方法及装置 | |
CN116594764A (zh) | 一种应用程序的更新方法、装置、电子设备和存储介质 | |
CN110233885A (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: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150702 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150702 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |