自适应进程重要性的制作方法
【专利摘要】本公开涉及自适应进程重要性。描述了改变守护进程的重要性的方法和设备的装置。在一个示例性的实施方式中,设备从用户进程接收去往守护进程的消息,其中,守护进程独立于用户进程来执行,并且第一守护进程与其它执行进程传送消息。该设备进一步确定第一消息是否指示第一守护进程的重要性能够改变。如果第一消息指示第一守护进程的重要性能够改变,则该设备改变第一守护进程的重要性。该设备另外将第一消息转发给第一守护进程。
【专利说明】自适应进程重要性
【技术领域】
[0001]概括地说,本发明涉及进程管理,更具体地说,涉及基于接收的消息来修改进程重要性。
【背景技术】
[0002]移动设备是具有多个运行进程的设备,所述多个运行进程用于与用户进行交互并且在该移动设备上执行多个服务。例如,移动设备可以具有一个在前台中运行的用户应用进程,其中,用户可以与该进程进行交互。其它运行进程是向用户应用进程或其它运行进程提供服务的守护进程。这些其它进程消耗移动设备的硬件资源,例如,中央处理单元(CPU)、存储器、输入/输出等。这些消耗的资源可能竞争用户应用工作所需的资源,并且可能导致用户接口小故障、设备感觉迟钝、对触摸的响应很慢和/或由于只有非常少的资源正应用于用户应用进程因此设备锁定。
[0003]一种缓解这种问题的方式是使守护和/或其它后台进程以与用户应用进程相比更低的重要性执行。通过使这些其它进程以与用户应用进程相比更低的重要性执行,用户应用进程可能消耗更多的移动设备资源,并且对于用户而言,移动设备看起来具有更多的响应能力。该场景的问题是当用户应用进程向这些守护进程或者其它后台进程中的一个请求服务或信息时,这些守护进程或后台进程将以较低的重要性为该请求提供服务。这可能导致用户应用进程等待服务请求被履行。
【发明内容】
[0004]描述了改变守护进程的重要性的方法和设备的装置。在一个示例性的实施方式中,设备从用户进程接收去往守护进程的消息,其中,守护进程独立于用户进程而执行,并且第一守护进程与其它执行进程传送消息。设备进一步确定第一消息是否指示能够改变第一守护进程的重要性。如果第一消息指示能够改变第一守护进程的重要性,则设备改变第一守护进程的重要性。设备另外将第一消息转发给第一守护进程。
[0005]在另一个实施方式中,设备从重要性施主进程接收去往自适应守护进程的消息,其中,自适应守护进程还未启动。设备进一步确定该消息是否指示能够改变指示自适应守护进程的重要性。如果该消息指示能够改变自适应守护进程的重要性,则设备以与同自适应守护进程相关联的默认重要性不同的重要性来启动自适应守护进程。另外将所述消息转发给所启动的自适应守护进程。
[0006]还描述了其它方法和装置。
【专利附图】
【附图说明】
[0007]在附图的图示中通过举例说明而非限制的方式示出了本发明,其中,相似的标号指示相似的元件。
[0008]图1是移动设备的一个实施方式的框图,其中,用户应用进程与以低重要性执行的守护进程进行通信。
[0009]图2是移动设备的一个实施方式的框图,其中,用户应用进程与以低重要性和高重要性的混合执行的守护进程进行通信。
[0010]图3A-B是移动设备的一个实施方式的框图,其中,用户应用进程与守护进程进程通信,并且提高守护进程的重要性。
[0011]图4是内核的用于发送消息的过程的一个实施方式的流程图,其中,该消息用于基于去往守护进程的消息来提高守护进程的重要性。
[0012]图5是内核的用于接收消息的过程的一个实施方式的流程图,其中,该消息用于基于去往守护进程的消息来提高守护进程的重要性。
[0013]图6是自适应守护进程的用于接收消息的过程的一个实施方式的流程图,其中,该消息用于提高守护进程的重要性。
[0014]图7是内核的用于撤销重要性断言的过程的一个实施方式的流程图。
[0015]图8是用于按需启动服务的过程的一个实施方式的流程图。
[0016]图9是提高和降低自适应守护进程的重要性的系统的一个实施方式的框图。
[0017]图10是用于基于由第一守护进程接收到的消息来提高第二守护进程的重要性的过程的一个实施方式的流程图。
[0018]图11是移动设备的一个实施方式的框图,其中,第一守护进程与第二守护进程进行通信,并且提高第二守护进程的重要性。
[0019]图12是用于促进进程发送和接收消息的消息服务模块。
[0020]图13是用于发送消息的消息发送模块,其中,该消息用于基于由守护进程接收到的消息来提高守护进程的重要性。
[0021]图14是用于接收消息的消息接收模块,其中,该消息用于提高守护进程的守护进程重要性。
[0022]图15是用于接收消息的用户接收模块,其中,该消息用于基于守护进程接收的消息来提高守护进程的重要性。
[0023]图16是用于撤销重要性断言的撤销断言重要性模块。
[0024]图17是用于按需启动服务的启动服务模块。
[0025]图18是用于基于由第一守护进程接收到的消息来提高第二守护进程重要性的消息处理模块。
[0026]图19示出了典型的计算机系统的一个实施例,其中,该计算机系统可以与本文所描述的实施方式联合使用。
[0027]图20示出了数据处理系统的实施例,其中,该数据处理系统可以与本发明的一个实施方式一起使用。
【具体实施方式】
[0028]描述了改变守护进程的重要性的方法和设备的装置。在下面的描述中,给出了大量具体细节,以提供对本发明的实施方式的详尽解释。然而,对于本领域技术人员而言显而易见的是,可以在没有这些具体细节的情况下实践本发明的实施方式。在其它例子中,为了不模糊对该描述的理解,没有详细地示出公知的组件、结构和技术。[0029]在说明书中提及“一个实施方式”或者“实施方式”意味着结合实施方式所描述的特定特征、结构或特性可以包含在本发明的至少一个实施方式中。在说明书的多个位置处出现短语“在一个实施方式中”不一定均是指相同的实施方式。
[0030]在下面的描述和权利要求中,术语“耦合”和“连接”可以与其派生词一起使用。应当理解的是,这些术语并不旨在作为彼此的同义词。“耦合”用于指示两个或更多个元件(其可能或可能没有彼此进行直接的物理或电气接触)彼此协作或交互。“连接”用于指示在彼此耦合的两个或更多个元件之间建立通信。
[0031]在所附的附图中描绘的过程是由处理逻辑来执行的,所述处理逻辑包括硬件(例如,电路、专用逻辑等)、软件(例如,其在通用计算机系统或专用机器上运行)或者这二者的组合。虽然下面围绕一些顺序操作对过程进行了描述,但是应当清楚的是,所描述的操作中的一些可以以不同的顺序来执行。此外,可以并行地而非顺序地执行一些操作。
[0032]术语“服务器”、“客户端”和“设备”旨在一般地指代数据处理系统,而不是专门指代服务器、客户端和/或设备的特定形状因素。
[0033]描述了改变守护进程的重要性的方法和设备的装置。在一个实施方式中,设备可以通过使设备的内核检测到从更高重要性进程向自适应守护进程发送的消息,来改变守护进程的重要性。自适应守护进程是可以根据自适应守护进程运行的环境使重要性上升或降低的守护进程。在该实施方式中,内核检测到该消息,并且使用重要性来标记该消息。此夕卜,如果守护进程正在运行,则内核可以提高自适应守护进程的重要性,或者在自适应进程从内核接收到消息之前,以更高的重要性启动自适应守护进程。通过在自适应守护进程接收到该消息之前提高自适应守护进程的重要性,自适应守护进程可以作为更高重要性的进程来接收和处理该消息。此外,内核对自适应守护进程作出断言。
[0034]在自适应守护进程接收到该消息以后,自适应守护进程处理消息并且向初始消息的发起者发送对消息的答复。此外,自适应守护进程撤销关于自适应守护进程的断言。内核降低关于自适应守护进程的未决断言的数量。如果针对自适应守护进程的未决断言的数量为零,则内核将自适应守护进程的重要性降为自适应守护进程的默认重要性。在一个实施方式中,守护进程的默认重要性是守护进程在未被提高的情况下或者在未以提高的重要性启动的情况下具有的重要性。
[0035]图1是移动设备100的一个实施方式的框图,其中,用户应用进程与以较低重要性执行的守护进程进行通信。在一个实施方式中,移动设备100可以是智能电话、膝上型计算机、个人数字助理、音乐播放设备、游戏设备等。虽然这里将设备描述为移动设备,但是也可以在个人计算机、服务器或者执行多个进程的任何其它设备中使用本文所描述的发明。在图1中,移动设备100包括操作系统102,操作系统102是用于管理计算机硬件资源的一组软件,并且为诸如应用程序等的其它运行的计算机程序提供公共服务。在一个实施方式中,当移动设备100的处理器执行每一个运行的进程时,操作系统102通过时间调度来管理不同的运行进程。在一个实施方式中,进程是正在执行的计算机程序的实例。在该实施方式中,进程可以是由于用户输入而执行的用户应用。进程的另一个实施例是向用户应用、另一个守护进程或者其它进程等提供了一个或多个服务的守护进程。例如,在一个实施方式中,守护进程提供了无线热点服务的状态、安装的应用的列表,促进了搜索、监控和调整设备功率设置等等。在一个实施方式中,守护进程未束缚于移动设备的特定硬件资源。[0036]在一个实施方式中,一些进程可能具有比其它进程更高的或更低的重要性。在一个实施方式中,进程重要性是与任务/进程相关联的特性的集合,以代表当前与设备进行交互的用户指示需要动作。其指示用户正在等待这些动作完成并且该任务/进程应被紧急地处理。进程重要性可以包括针对该进程的中央处理单元调度优先级、输入/输出调度、网络带宽优先级、存储器管理、图形资源使用等,和/或其组合。进程优先级是指示当存在很多需要运行的任务时任务或线程被挑选去运行(或执行)的紧迫性的特性。当要执行进程时,该进程优先级由操作系统使用以进行调度。在一个实施方式中,与其它进程相比具有更高重要性的进程将消耗更大量的移动设备资源(例如,处理器资源等)。在该实施方式中,具有更高重要性的进程将表现为比更低重要性的进程更快速地运行。在一个实施方式中,可以基于从最低重要性到最高重要性的数字范围来指派重要性。例如,在一个实施方式中,重要性范围可以从I变化到10,0-127,低/高,或者另一个数值范围。
[0037]例如,在一个实施方式中,下面的移动设备资源使用可能受到进程重要性的影响。
1、处理器调度。如上所述,可以向更高重要性进程和更低重要性进程指派不同的处理器调度“优先级”,使得更低重要性的进程不会干扰更高重要性的进程。
[0038]2、磁盘调度:在一个实施方式中,当访问系统存储单元(例如,磁性硬盘驱动器和固态硬盘单元)时,与较低重要性的进程相比,向具有更高重要性的进程提供更高的优先级。此外,可以在较低重要性进程(即,与处于后台状态的进程相关联的线程)访问系统存储单元时,对较低重要性进程进行速率限制。
[0039]3、输入网络活动。在一个实施方式中,可以通过丢弃去往较低重要性进程的一些或全部分组,来减轻输入网络流量。此外,可以人为地向远端网络站点报告小缓冲大小,以对输入的TCP (传输控制协议)流量进行节流。本领域普通技术人员将认识到,TCP具有与缓冲大小有关的一组现有的流量流控制机制,使得不会在网络上以比接收方可以处理流量的速度相比更快的速度发送流量。如前所述,在一个实施方式中,可以人为地报告小缓冲大小,使得发送方减缓或者停止输入流量的流。
[0040]4、输出网络活动。在一个实施方式中,通过使用两个(2个)队列来调整网络接入;一个队列针对与更高重要性进程相关联的工作,一个队列针对与更低重要性进程相关联的工作。已经发现,与更低重要性队列相比,给予更高重要性队列优先权是有益的。举例说明,相对于后台队列,可以给予更高重要性队列100%的优先级。在该这设置下,将为更低重要性队列中的工作提供服务的唯一机会是更高重要性队列是空的时。在另一个实施方式中,可以以与更低重要性队列中的工作相比的任何期望的比率来为更高重要性队列中的工作提供服务,例如,90/10、80/20、75/27或50/50。在另一个实施方式中,一旦已经将工作放置在队列(例如,更高重要性队列)中,则如果接下来与该工作相关联的进程被置于不同的操作状态(例如,更低的重要性),工作不会移动。在另一个实施方式中,对工作的队列位置进行更新以反映其相关联的进程的操作状态。
[0041]5、硬件限制。在一个实施方式中,防止较低重要性进程使用某些系统硬件资源。不可用于较低重要性进程的示例性的硬件包括但不限于:照相机、GPU、加速计、陀螺仪、存储器消耗、接近传感器和麦克风。
[0042]在一个实施方式中,用户应用进程104可以在前台运行,而一个或多个守护进程106 A -N以低于用户应用进程104的重要性在后台运行。在前台运行的进程是与用户进行交互的进程,并且运行的、未与用户交互的进程将使这些进程处于后台中。例如,在一个实施方式中,在后台中在移动设备100上运行的用户应用进程104可以是在移动设备100上显示的用户应用。在该实施方式中,移动设备100可以并发地运行未在移动设备上显示而是与其它进程进行通信的一个或多个守护进程。这些守护进程将在后台执行,并且用户不能直接看见。
[0043]在一个实施方式中,前台进程和更低重要性进程可以以不同的优先级执行。因为前台进程将与用户进行交互,因此前台进程将以与作为更低重要性进程的守护进程相比更高的重要性来执行。通过使前台进程以更高的重要性运行,前台进程将得到更多的处理器资源,并且由于前台进程将更快速地运行,因此给前台进程提供更好的用户体验。
[0044]在一个实施方式中,操作系统102包括用户应用进程104和守护进程106A-N。在该实施方式中,用户应用进程104是更高重要性进程108,守护进程106A-N是更低重要性进程110。此外,与以更低重要性运行的各个守护进程106A-N相比,用户应用进程104将得到更高的移动设备100资源份额。通过使用户应用进程104以更高的重要性运行,对于用户而言,用户应用进程104将表现为更快速地运行。
[0045]如上文所讨论的,该布置的一个问题是用户应用进程104有时可能向守护进程106A-B请求一个或多个服务。在该实施方式中,因为守护进程106A-B以更低的重要性运行,因此守护进程可能花费更长的时间来为该请求提供服务。通过用户应用进程104向以更低重要性运行的一个或多个守护进程106A-B请求服务,用户应用进程104表现为在守护进程106A-B为该请求提供服务期间以更低的重要性运行。例如,在一个实施方式中,用户应用进程104向守护进程请求移动热点的状态、调整和报告功率管理、执行搜索等等。
[0046]图2是移动设备200的一个实施方式的框图,其中,用户应用进程与以低重要性和高重要性的混合执行的守护进程进行通信。在图2中,在一个实施方式中,移动设备200的操作系统202具有作为更高重要性进程208中的一个运行的守护进程212。此外,操作系统202包括作为更低重要性进程210运行的其它守护进程206A-N和用户应用进程204。此夕卜,用户应用进程204向低重要性进程守护进程206A-B和高重要性进程守护进程212发出服务请求。
[0047]通过使守护进程212作为更高重要性进程208中的一个运行,用户应用进程204不会由于向守护进程212发出服务请求而经历性能下降。对于该守护进程212,具有守护进程服务请求缓解了用户应用进程204的性能下降。然而,由于该守护进程212也可能处理来自在操作系统202中运行的其它守护进程或其它进程的服务请求,因此出现了另一个问题。通过处理其它服务请求,高重要性守护进程212接收到更多的移动设备200资源,并且减少了可用于用户应用进程204的资源量。随着作为高性能进程208而运行的守护进程的数量的增加,该问题可能恶化。此外,该情形仍然遭受低重要性守护进程以低重要性处理服务请求的问题。
[0048]图1和图2示出了由于向均作为低重要性进程而运行的守护进程或者作为低优先级进程和高优先级进程的混合而运行的守护进程发出服务请求而降低用户应用进程的性能的问题。在一个实施方式中,通过使守护进程重要性针对用户应用进程服务请求提高到高重要性并且针对其它服务请求以低重要性运行,允许用户应用进程具有更好的性能。这是因为当用户应用进程向守护进程发出服务请求时,以更高重要性来处理该服务请求。通过以更高的进程重要性来处理该服务请求,用户应用进程将表现为更快速地运行。对于其它服务请求,守护进程将以更低重要性运行,并且不会针对其它功能降低用户应用进程的性能。
[0049]在一个实施方式中,进程可以包括一个或多个线程,其中,线程是可以由操作系统调度的最小单元处理。多个线程可以存在于相同的进程中,并且共享进程资源(例如,存储器、指令、上下文等)。在一个实施方式中,如果进程的重要性改变,则所有线程将以改变的重要性来执行。在该实施方式中,当重要性响应于消息的接收或者发送消息答复而上升或下降时,该进程的所有当前执行的线程将以新的重要性来执行。在另一个实施方式中,线程中的一些以改变的重要性来执行。
[0050]图3A是移动设备300的一个实施方式的框图,其中,用户应用进程304与守护进程306A进行通信,并且提高守护进程306A的重要性。在图3A中,移动设备300包括操作系统302,操作系统302管理用户应用进程304和守护进程306A-N的执行。此外,用户应用进程304以高重要性运行,而守护进程首先以低重要性执行。当用户应用进程304向守护进程请求服务时,将守护进程提高到更高的重要性以处理该服务请求。在一个实施方式中,该守护进程306A是自适应守护进程,这是因为该进程的重要性可以适应进程在其中操作的环境。例如,在一个实施方式中,用户应用进程304经由消息312向守护进程306A发出服务请求。在一个实施方式中,该消息是进程间通信(IPC)消息。响应于该消息针对该守护进程而被排队,将守护进程的重要性提高为更高重要性的守护进程316。虽然在一个实施方式中,提高的守护进程316的重要性与进行请求的用户应用进程304相同,但是在可替换的实施方式中,提高的守护进程316的重要性可以高于或低于进行请求的用户应用进程304的重要性。
[0051]此外,用户应用进程304在向守护进程306A发送消息之后并在从守护进程306A接收到针对该消息的答复之前继续执行。例如,在一个实施方式中,在用户应用进程304向守护进程306A发送消息之后并且在用户应用进程304接收到针对该消息的答复之前,用户应用进程304可以从用户接收输入、更新针对用户应用进程304的显示(例如滚动、缩放、旋转等)、和/或执行其它功能。举另一个例子,用户应用进程304不会在等待来自守护进程306A/316的答复时暂停。
[0052]在一个实施方式中,守护进程306A在用户应用进程304向守护进程306A发送服务请求消息时运行。在该实施方式中,守护进程306A独立于用户应用进程304而运行,并且处理来自用户应用进程304、其它用户应用进程、其它守护进程、其它进程和/或其组合的服务请求。此外,守护进程306A可能已经在用户应用进程304开始之前或之后开始。例如,在一个实施方式中,守护进程306A在移动设备启动时开始,并且用户应用进程304在移动设备启动之后开始。在该实施例中,守护进程306A独立于用户应用进程304来处理来自在移动设备上运行的一个或多个进程的服务请求消息。
[0053]在另一个实施方式中,守护进程306A未在用户应用进程304发送消息时运行。在该实施方式中,守护进程306A根据需要以与该守护进程306A通常具有的重要性相比更高的重要性启动。下面在图8中进一步描述了按需启动。在一个实施方式中,启动服务326处理守护进程的按需启动328。在该实施方式中,将服务请求消息转发给启动服务326,并且启动服务326将守护进程306A/316作为更高重要性进程316来启动,其中,该守护进程通常作为更低重要性进程306A来启动。
[0054]在图3A中,在一个实施方式中,操作系统内核320处理守护进程重要性提高。在另一个实施方式中,操作系统内核320使用进程管理模块322来处理守护进程重要性提高。在该实施方式中,进程管理模块322处理消息在用户应用进程304与守护进程306A/316之间的发送和接收。例如,在一个实施方式中,当进程管理模块322使针对守护进程306A/316的消息入队时,该进程管理模块322促成守护进程306A/316的提高。通过处理在这两个进程之间的消息传递,进程管理模块322可以管理守护进程提高。此外,守护进程306A/316包括守护进程msg_recv模块324,守护进程msg_recv模块324处理所接收的消息。下面在图6中进一步描述了对所接收的消息的处理。
[0055]在一个实施方式中,在守护进程完成对消息的处理以后,守护进程重要性返回初始守护进程重要性。图3B是移动设备300的一个实施方式的框图,其中,用户应用进程304与提高的守护进程316进行通信,并且降低了守护进程316的重要性。在图3B中,移动设备300包括操作系统302,操作系统302管理用户应用进程304、守护进程306B-N和提高的守护进程316的执行。与在图3A中一样,用户应用进程304以高重要性运行,守护进程306B-N首先以低重要性运行,并且守护进程306A已经被提高为以更高的重要性运行,其被示出为守护进程(提高的)316。在一个实施方式中,提供的守护进程316处理消息,并且向用户应用进程304发送答复。在该实施方式中,响应于消息的发送,提高的守护进程316可以被降低回其初始重要性306A。此外,如果守护进程306A的重要性提高并且以提高的重要性运行或启动,则发生守护进程316降低。下面进一步描述进程降低,其中,提高的守护进程316撤销可能导致该进程316降低的断言。例如,下面在图6中进一步描述进程降低。
[0056]在图3B中,在一个实施方式中,操作系统内核320处理守护进程降低。在另一个实施方式中,操作系统内核320使用进程管理模块322来处理守护进程提高。在该实施方式中,进程管理322处理消息在用户应用进程304与守护进程306A/316之间的发送和接收。通过处理在这两个进程之间的消息传递,进程管理模块322可以管理守护进程降低。此外,守护进程306A/316包括守护进程msg_recv模块324,守护进程msg_recv模块324处理所接收的消息。下面在图6中进一步描述对所接收的消息的处理。
[0057]在一个实施方式中,通过提高的守护进程316撤销断言而发生进程降低。例如,在一个实施方式中,通过守护进程对内核进行系统调用而发生进程断言撤销。该系统调用向内核指示守护进程已经代表用户应用进程完成了工作。在该实施方式中,断言向操作系统通知已经处理了消息并且可以降低该进程。在一个实施方式中,操作系统降低用于提高该守护进程的未决断言的数量。在该实施方式中,如果没有指示要提高守护进程的重要性的其它断言,则将提高的守护进程316的重要性降低为默认重要性。可替换地,如果存在针对该守护进程的其它未决断言,则操作系统降低用于提高该守护进程的未决断言的数量。虽然在一个实施方式中,将守护进程的重要性降低为守护进程的默认重要性,但是在可替换的实施方式中,降低的守护进程的重要性可以低于或高于默认重要性。在一个实施方式中,默认重要性是在重要性未改变的情况下进程的重要性。
[0058]例如,在一个实施方式中,考虑当启动偏好应用并且用户导航以核查移动设备的网络设置时的实施例。在该实施例中,移动互联网共享守护进程将由守护进程306A表示,并且偏好应用将是用户应用进程304。偏好应用向移动互联网共享守护进程(例如,守护进程306A)发送消息以查询与个人热点服务有关的状态信息。在接收到该消息以后,移动互联网共享守护进程确定系留是否可用于该运营商并且是否授权用户使用。移动互联网共享守护进程将信息返回到偏好应用,偏好应用显示个人热点服务的正确状态。
[0059]在一个实施方式中,移动互联网共享守护进程在偏好应用向该守护进程发送消息时运行。在该实施方式中,针对该守护进程的服务端口将伴随移动互联网共享守护进程。当从偏好应用发送消息时,作为将消息排队到该端口的一部分,内核通知消息来自用户应用并且去往自适应守护进程。内核做出断言,并且如果守护进程以更低重要性(例如,后台重要性)运行,则将移动互联网共享守护进程提高到更高的重要性。此外,对该消息进行标记以指示该消息使内核保持断言。当移动互联网共享守护进程接收到该消息时,该守护进程核查特定的消息是否引起内核的断言,如果是,则在处理和答复以后,守护进程告知内核撤销该断言。在断言撤销并且没有其它未决的断言以后,内核将把移动互联网共享守护进程降低回针对该进程的默认的重要性(例如,后台重要性)。
[0060]在另一个实施方式中,移动互联网共享守护进程未运行并且该守护进程按需以不同于守护进程的一个默认重要性的重要性启动。例如,在一个实施方式中,考虑如上所述的移动互联网共享守护进程等的守护进程。如果移动互联网守护进程当前未运行,则针对该移动互联网共享守护进程的服务端口与启动守护进程存储在一起。当启动守护进程得到关于该端口具有消息(例如,事件消息)的通知时,启动守护进程调用产生(spawns)进程以开始移动互联网共享守护进程(其是自适应守护进程)。作为针对该启动的参数之一,启动守护进程向内核提供对所关注的端口的句柄。操作系统的内核确定任何未决的消息是否包括守护进程服务端口来自用户应用进程,并且此外,是否携带用于提高守护进程的断言。如果这种类型的消息存在,则内核开始以提高的重要性启动移动互联网共享守护进程。在一个实施方式中,提高的重要性可以是高于默认移动互联网共享守护进程重要性的重要性,并且可以是与用户应用进程的重要性相比相同、更高或更低的重要性。在该实施方式中,内核在此时保持对进程的断言。如果针对该守护进程的消息不包括断言,则移动互联网共享守护进程以针对该进程的默认重要性启动。例如,在一个实施方式中,移动互联网共享守护进程以后台重要性启动。
[0061]一旦完成了对移动互联网共享守护进程的启动,移动互联网共享守护进程就可以与启动守护进程集合并且获得传送到移动互联网共享守护进程的服务端口。移动互联网共享守护进程读取消息并且核查该消息是否引起断言,其中,断言是由内核来标记的。如果该消息已经引起断言,则当移动互联网共享守护进程完成消息处理并且对消息进行答复时,移动互联网共享守护进程将撤销该断言。一旦撤销了关于该进程的未决的断言,移动互联网共享守护进程就返回到默认进程重要性(例如,后台重要性)。
[0062]举另一个例子,当用户使用移动设备启动时,应用启动器应用向功率守护进程发送消息以保持功率断言从而防止空闲睡眠。在一个实施方式中,功率守护进程保持断言,直到移动设备的背光开启为止。在该实施方式中,一旦用户锁定设备并且没有播放背景音频,应用启动器应用就撤销功率断言。在设备未使用一段时间以后,移动设备背光关闭。应用启动器应用撤销功率断言,并且使内核能够使设备空闲睡眠。
[0063]在该实施例中,功率守护进程是自适应守护进程,这意味着功率守护进程具有可以响应于来自更高重要性进程(例如,应用启动器应用)的消息而提高的默认重要性。这可以减小对前台应用活动的影响。例如,在一个实施方式中,当来自应用启动器应用的消息到达功率守护进程时,功率守护进程上升到更高的重要性并且在功率守护进程完成消息处理以后,功率守护进程将下降回功率守护进程的默认重要性(例如,后台重要性)。该实施例说明了自适应守护进程可以在消息处理时间期间在正常重要性下运行并且不会不必要地影响前台应用的情况。该实施例还说明自适应守护进程如何在不消耗或竞争太多资源(例如,输入/输出、处理单元等)的情况下帮助改善前台应用的响应。此外,另一个守护进程可以在不提高功率守护进程的重要性的情况下向功率守护进程发出请求。将以功率守护进程的默认重要性来处理另一个守护进程的请求。
[0064]在另一个实施例和实施方式中,内核能够在进程之间传递通信信道(端口)的接收端的所有权。例如,在一个实施方式中,该传递在自适应守护进程向启动守护进程请求服务端口的所有权时发生。举另一个例子,在另一个实施方式中,自适应守护进程A具有针对端口 P的接收权。在该实施例中,存在在端口 P上入队的N个重要性施与消息,因此,守护进程具有N个重要性施与/提高偏好。如果自适应守护进程接收到N个消息、对这N个消息进行处理并且然后在每一个消息之后撤销断言,则自适应守护进程将返回正常自适应重要性。但是在该情况下/实例中,不是接收所有N个消息,而是自适应守护进程通过在去往不同端口 Q的消息的内容中发送端口 P的接收端,来向另一个进程B传递该端口的接收端的所有权。在该情况下,自适应守护进程A失去N个提高,并且进程B (如果也是自适应的话)在接收权传递消息入队时获得N个提闻。
[0065]如果自适应守护进程B然后在接收到包含端口 P的接收端的消息之前将端口 Q的接收端传递给其它进程,则自适应守护进程B必须传递针对端口 Q中的其它消息的多个重要性施与断言以及与端口 P相关联的N个重要性断言。通过这种方式,重要性施与计数根据在这些端口中的任意一个上入队的任何消息的接收权内容而循环。
[0066]在另一个实施例和实施方式中,如果自适应守护进程A决定其是空闲的,则自适应守护进程A可以选择退出以节省更多的系统资源。可能那个或这个守护进程刚好已经坏掉。在任一情况下,针对端口 P的接收权(例如,经由操作系统的进程间通信系统中的内置备份机制)被传递回启动守护进程。如果刚好在该退出/坏掉之前重要性施与消息入队,则自适应守护进程A将具有在它停止运行时的重要性施与。在该实施例中,内核不希望永久丢失自适应守护进程的提高。因此,当启动守护进程取回端口 P的接收端时,启动守护进程检测到已经存在入队的消息并且重新启动自适应守护进程A的下一个实例(例如,称作A2)。自适应守护进程A2不仅需要提高在端口返回启动守护进程之后达到的重要性施与消息的量,而且还需要提高已经在先前在该端口上入队的消息。该“通过端口迁移进行重要性更新”机制可能导致这样的事情发生。
[0067]图4是内核的用于发送消息的过程400的一个实施方式的流程图,该消息用于基于守护进程接收到的消息来提高守护进程重要性。过程可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)或其组合。在一个实施方式中,由诸如图3A或图3B的内核320等的内核来执行过程400。
[0068]在图4中,过程400通过在框402处确定发送消息的当前进程是否是重要性施主而开始。在一个实施方式中,重要性施主是作为用户应用进程的进程,并且用户等待动作完成。在另一个实施方式中,重要性施主也是代表用户应用进程执行工作的守护进程或服务。在该实施方式中,守护进程可以具有提高的重要性。在一个实施方式中,重要性施主是在前台运行的用户应用进程。例如,在一个实施方式中,重要性进程是如上面的图3A中所述的用户应用进程304。如果当前的进程不是重要性施主,则执行前进至下面的框414。
[0069]如果当前的进程是重要性施主,则在框404,过程400确定将接收消息的目标进程是否是自适应守护进程。如果目标进程不是自适应守护进程,则执行前进至下面的框412。如果目标进程是重要性接收者,则在框406处,过程400将该消息标记为携带重要性并且增加目标进程上的“重要性断言计数”。在一个实施方式中,通过增加“重要性断言计数”,过程400对目标进程作出断言。该断言计数稍后由内核用于确定是否降低断言重要性。在该实施方式中,稍后目标进程与处理消息相关联地撤销断言。下面在图6中进一步描述撤销断言。例如,在一个实施方式中,当用户希望知道联网状态时,用户偏好应用进程向移动互联网共享守护进程发送关于网络热点服务的状态的消息。如同上文的描述一样,偏好应用是用户应用进程,并且移动互联网共享守护进程是自适应守护进程,其中,去往移动互联网共享守护进程的消息被标记为携带重要性并且增加针对移动互联网共享守护进程的重要性断言计数。
[0070]在框408,过程400确定目标进程是否具有更低的重要性。在一个实施方式中,过程400确定目标进程具有与当前进程相比更低的重要性。例如,在一个实施方式中,过程400将当前进程的重要性与目标进程的重要性进行比较。
[0071 ] 在框410,过程400将目标进程改变到提高的重要性。在一个实施方式中,过程400将目标过程改变到当前进程的重要性。在该实施方式中,过程400在将消息入队到端口队列上之后或之前并且在目标进程使消息出队以进行消息处理之前提高目标进程重要性。通过在目标进程使消息出队之前对目标进程进行提高,目标进程可以以更高的重要性使消息出队并且对消息进行处理。例如,在一个实施方式中,当前进程可以以前台重要性执行,并且过程400将目标进程重要性改变为前台重要性。在另一个实施方式中,过程400将目标进程重要性改变为与当前进程的重要性不同的值。在一个实施方式中,过程400按上文在图3A中所描述的方式改变目标进程的重要性。执行前进至下面的框412。
[0072]如果在上面的框402处确定的当前进程不是重要性施主,则在框414,过程确定消息端口是否是服务端口。在一个实施方式中,如果当前进程不是重要性施主,则当前进程是处理要按需启动的守护进程的消息的启动守护进程。在该实施方式中,服务端口是用于将消息传送到针对该服务的目标进程的端口。如果消息端口是服务端口,则在框416,过程400将消息标记为携带重要性,并且增加服务端口上的“重要性断言计数”。在一个实施方式中,通过增加服务端口上的“重要性断言计数”,过程400标记该端口可能已经由自适应守护进程或另一个重要性施主按需启动。执行前进至下面的框412。如果消息端口不是服务端口,则执行前进至下面的框412。
[0073]在框412,过程400对端口上的消息进行排队。在一个实施方式中,端口是用于目标进程的端口。虽然在一个实施方式中,支持Mach进程间通信(IPC)端口,但是在其它实施方式中,支持任何其它类型的端口(例如,局域套接字、管线等)、任何其它类型的IPC等。
[0074]上面的图4描述了由内核使用以发送可以用于提高守护进程的重要性的消息的过程。图5是内核的用于接收消息的过程500的一个实施方式的流程图,其中,该消息用于基于去往守护进程的消息来提高守护进程重要性。该过程可以由处理逻辑来执行,其中,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)或其组合。在一个实施方式中,过程500由诸如图3A或图3B的内核320等的内核来执行。
[0075]在图5中,过程500通过在框502处确定是否存在针对当前进程而排队的消息而开始。在一个实施方式中,过程500确定是否针对与当前进程(例如,如上文在图3A中所描述的守护进程)相关联的端口对消息进行排队。在一个实施方式中,当前进程是自适应守护进程。如果没有排队的消息,则执行过程500结束。
[0076]如果存在消息,则在框504,过程500使消息从端口出队。在一个实施方式中,过程500从端口队列移除该消息。在框506,过程500确定是否针对重要性标记了该消息。在一个实施方式中,过程500检查消息以确定是否针对重要性标记了该消息。例如,在一个实施方式中,该消息包括重要性比特,并且如果设置了重要性比特,则针对重要性标记了消息。如果未针对重要性标记该消息,则执行前进至下面的框512。
[0077]如果针对重要性标记了消息,则在框508,过程500确定当前的进程是否是自适应守护进程。如果当前的进程不是自适应守护进程,则在框510,过程500移除指示消息携带重要性的标志。在一个实施方式中,过程500去掉消息的重要性比特的设置。此外,在510,过程500降低端口重要性计数。在该实施方式中,端口重要性计数是指示来自重要性施主进程的未解决消息的数量的计数。执行前进至下面的框512。如果当前的进程是自适应进程,则执行前进至下面的框512。
[0078]在框512,过程500将消息复制到用户缓冲器。在一个实施方式中,通过将消息复制到用户缓冲器,当前进程可以处理消息。在一个实施方式中,当前进程执行过程600来处理消息,如在下面的图6中所述的。
[0079]图6是自适应守护进程的用于接收消息的过程600的一个实施方式的流程图,其中,该消息用于基于由守护进程接收的消息来提高守护进程重要性。该过程可以由处理逻辑来执行,所述处理逻辑包括硬件(例如,电路、专用逻辑、可编程在逻辑、微代码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)或者其组合。在一个实施方式中,过程600由自适应守护进程(例如,图3A或图3B的守护进程306/316)执行。在图6中,过程600通过确定是否接收到消息而开始。在一个实施方式中,过程600确定在守护进程使用的用户缓冲器中是否存在消息。如果针对过程600没有要处理的消息,则执行结束。
[0080]如果针对过程600存在要处理的消息,则在框604,过程600确定是否针对重要性标记了消息。在一个实施方式中,过程600核查是否设置了重要性标志,例如,如上所述的重要性比特。如果未针对重要性标记消息,则执行前进至下面的框608。如果针对重要性标记了消息,则在框606,过程600将局部变量设置为非零值,其中,局部变量指示该消息是否是重要性。
[0081]在框608,过程600处理消息。在一个实施方式中,过程600执行动作以收集所请求的信息。例如,在一个实施方式中,过程600可以确定移动互联网共享服务的状态,执行功率管理,执行搜索,返回安装的应用的列表,等等。在框610,过程600使用所请求的信息来向发送方发送答复。在一个实施方式中,过程600向用户应用进程发送答复,如上文在图3B中所描述的。[0082]在框612,过程600确定是否针对重要性标记了消息。在一个实施方式中,过程600核查是否将重要性标志设置为真。如果针对重要性设置了消息,则在框614,过程600调用内核以撤销重要性断言。如果重要性标志不是针对重要性标记的消息,则执行结束。
[0083]在上文的图6中,过程600进行调用以撤销重要性断言。内核使用重要性断言的撤销以确定守护进程的重要性是否应当返回守护进程的默认重要性。图7是内核的用于撤销重要性断言的过程700的一个实施方式的流程图。该过程可以由处理逻辑来执行,其中,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)或其组合。在一个实施方式中,过程700由诸如图3A或图3B的内核320等的内核来执行。在图7中,过程700通过在框702处确定当前进程是否是自适应守护进程而开始。如果当前进程不是自适应守护进程,则执行结束。
[0084]如果该进程是自适应守护进程,则在框704,过程700减小当前进程上的“重要性断言计数”。如上所述,重要性断言计数跟踪已经针对该进程提高的当前断言的数量。在框706,过程700确定重要性断言计数是否为零。重要性断言计数为零意味着针对当前进程没有提高任何当前断言。如果重要性断言计数为零,则在框708,过程700将当前进程降低为默认重要性。如果在框706,重要性计数不为零,则执行结束。
[0085]图8是用于按需启动服务的过程800的一个实施方式的流程图。该过程可以由处理逻辑来执行,其中,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)或其组合。在一个实施方式中,过程800由诸如图3A或图3B的启动服务326等的启动服务来执行。在图8中,过程800通过在框802处确定针对过程800是否存在任何未决的事件而开始。如果不存在未决的事件,则过程800返回框802以等待其它未决的事件。
[0086]如果存在未决的事件,则在框804,过程800确定事件是否指示应当创建消息服务。在一个实施方式中,消息服务是由守护进程和用户应用二者使用以管理以下操作的一组服务(例如,库):建立消息路径/连接、消息传送交换和它们之间的重要性施与特征。其提供了用于在用户应用与守护进程之间交换信息的抽象概念,并且另外无缝地处理重要性施与。例如,在一个实施方式中,消息服务可以是守护进程,例如,搜索守护进程,该进程可以发送和接收消息以处理和履行服务请求。如果事件确实指示要创建消息服务,则在框806,过程800创建针对消息服务的服务端口并且将该服务端口添加到观察列表。在一个实施方式中,通过创建服务端口并且将该端口添加到观察列表,过程800可以确定消息是否针对该服务到达创建的端口。当过程800等待另一个要处理的事件时,执行前进至上面的框802。
[0087]如果事件不是指示要创建消息服务的事件,则在框808,过程800确定在服务端口上是否存在针对要启动的守护进程的消息。如果存在这种消息,则在框810,过程800调用内核以启动守护进程并且将服务端口关联到该守护进程。在一个实施方式中,过程800确定哪一个是针对该服务端口的适合的守护进程,并且调用内核以启动该守护进程。此外,过程800将该消息服务端口关联于启动的守护进程。在该实施方式中,内核检查服务端口并且确定该端口是否具有任何重要性消息。如果内核确定存在重要性消息,则内核将以更高的重要性启动守护进程。如果在服务端口中不存在重要性消息,则内核以该守护进程的默认重要性启动该守护进程。此外,由于内核知道守护进程/服务端口的关联,因此如果守护进程以正常/更低的重要性启动并且如果稍后重要性消息在该服务端口上入队,则内核可以在对重要性消息进行排队时将守护进程提高到更高的重要性。当过程800等待另一个要处理的事件时,执行前进至上面的框802。
[0088]如果在框808,在服务端口上不存在消息,则在框812,过程800确定事件是否是针对在启动守护进程以后的自适应守护进程登记。如果是,则在框814,过程800将服务端口传递到自适应守护进程。在一个实施方式中,这允许自适应守护进程在该端口上发送和接收消息。当过程800等待另一个要处理的事件时,执行前进至上面的框802。如果事件不是自适应守护进程登记,则在框816,过程800处理其它事件。
[0089]如上所述,可以基于来自重要性施主的消息针对运行的守护进程被入队或者基于来自重要性施主的消息触发守护进程以提高的重要性被启动,来为该守护进程提高守护进程重要性。当守护进程重要性被提高时,内核针对该守护进程做出断言。一旦未决的断言下降为零,则该守护进程可以使其重要性下降。响应于守护进程处理使用重要性标记的消息,守护进程撤销断言。图9是提高和降低自适应守护进程重要性的系统900的一个实施方式的框图。在图9中,系统900包括用户应用进程902、自适应守护进程904和内核906。在一个实施方式中,用户应用进程902使用消息服务940来与自适应守护进程904发送和接收消息。在该实施方式中,消息服务940是在用户应用进程902和自适应守护进程906上工作以管理消息在用户应用进程902与自适应守护进程906之间的传送的服务。在一个实施方式中,消息服务940支持同步和异步消息传送。
[0090]在一个实施方式中,用户应用进程904使用消息服务940来向自适应守护进程906发送消息。例如,在一个实施方式中,用户应用进程902可以请求与个人热点服务有关的状态,以保持功率断言从而防止空闲睡眠、执行搜索等。在该实施方式中,用户应用进程902通过使用用户应用连接918创建消息920,来发送消息922。消息920被发送到内核906,其中,内核使用内核msg_send来使消息920入队到针对自适应守护进程904的端口队列912中。在一个实施方式中,端口队列是由内核906使用以对与自适应守护进程904通信的消息进行排队的一组队列。在一个实施方式中,内核906的内核msg_send914功能设置针对该消息的重要性908,并且针对自适应守护进程904做出断言910。例如,在一个实施方式中,内核906执行消息重要性设置和断言,如在上面的图4中所描述的。
[0091]在将消息入队到端口队列912的情况下,内核906执行功能内核msg_recv916以使消息从端口队列912出队,并且将该消息复制到针对自适应守护进行904的用户缓冲器。在一个实施方式中,内核906使消息出队和复制消息,如上文的图5中所描述的。
[0092]自适应守护进程904经由守护进程连接932接收消息928作为消息对象938。在一个实施方式中,自适应守护进程904未对消息908进行答复。在该实施方式中,消息服务940破坏消息对象938。响应于消息对象的破坏934,消息服务940将断言926撤销到内核。通过撤销断言,内核906确定自适应守护进程904是否降低自适应守护进程904的重要性。在一个实施方式中,内核906确定是否降低自适应守护进程904,如上文在图6中所描述的。
[0093]在另一个实施方式中,消息服务准备对接收的消息928的答复。在该实施方式中,消息服务940创建针对消息对象938的答复对象936。在创建答复对象936时,包含在消息对象938中的重要性被传递到答复对象936。消息服务940经由守护进程连接932和消息928并且通过内核906将答复发送到用户应用进程904。此外,通过发送该答复,消息服务940另外破坏答复对象930。因为该答复对象被设置了重要性,因此破坏该答复对象使消息服务940将断言926撤销到内核。通过撤销断言,内核906确定自适应守护进程904是否要降低自适应守护进程904的重要性。在一个实施方式中,内核906确定是否要降低自适应守护进程904,如上文在图6中所描述的。此外,使用消息828经由端口队列912利用消息服务940的msg_recv功能向用户应用进程902发送答复。在该实施方式中,消息服务使用消息920和用户应用连接918来向用户应用进程920传递答复。
[0094]如上所述,可以基于从用户应用进程接收到消息来改变守护进程的重要性。在另一个实施方式中,第二守护进程可以具有响应于另一个守护进程发送来自用户应用进程的消息而改变的重要性。图10是用于基于由第一守护进程接收的消息来提高第二守护进程重要性的过程1000的一个实施方式的流程图。该过程可以由处理逻辑来执行,其中,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)或其组合。在一个实施方式中,诸如图11的内核1132等的内核执行过程1000。在一个实施方式中,可以从用户应用进程接收请求并且向另一个守护进程请求其它信息的守护进程将执行过程1000。例如,在一个实施方式中,过程1000可以由下面的守护进程1106A/1116的消息处理模块1128来执行。在图10中,过程1000可以通过在框1002处接收第一消息而开始。在一个实施方式中,该消息可以是携带重要性的消息,例如,来自用户应用进程的消息。在另一个实施方式中,可以使用重要性标志设置来标记该消息。例如,在一个实施方式中,该消息具有重要性比特设置,如上文在图9中所描述的。在另一个实施方式中,该消息可以由另一个守护进程来发送,其中,内核将该消息标记为携带重要性。在该实施方式中,通过具有来自守护进程并且被标记为携带重要性的消息,可以提高和降低一系列守护进程优先级。在一个实施方式中,由守护进程接收该消息将使该守护进程的进程重要性提高,如上文在图3A、图4中以及下文在图10中所描述的。
[0095]在框1004,过程1000确定针对该消息的答复是否使用来自另一个守护进程的信息。例如,在一个实施方式中,搜索守护进程接收搜索请求。为了履行搜索请求,该搜索守护进程需要确定安装在移动设备上的应用列表。搜索守护进程向安装守护进程发出请求以得到该列表。如果过程1000不使用来自另一个守护进程的信息,则执行前进至下面的框1010。
[0096]如果过程1000确实使用来自另一个守护进程的信息,则在框1006,过程1000向该另一个守护进程发送第二消息,其中,内核将该消息标记为携带重要性。此外,内核提高其它守护进程的重要性,针对该守护进程做出断言,并且针对该其它守护进程对该消息进行排队。在框1008,过程1000接收针对第二消息的答复。在框1010,过程1000准备针对第一消息的答复,并且使用重要性来标记答复消息。此外,过程1000撤销针对在框1002中接收到第一消息的守护进程的断言。在框1012,过程1000将答复发送回发送了第一消息的进程。在一个实施方式中,通过发送该消息,降低执行过程1000的守护进程的提高的重要性。
[0097]图11是移动设备1100的一个实施方式的框图,其中,第一守护进程1106A与第二守护进程1106B进行通信,并且提高了第二守护进程1106B的重要性。在图11中,移动设备1100包括操作系统1102,操作系统1102管理用户应用进程1104和守护进程1106A-N的执行。此外,用户应用进程1104以高重要性运行,守护进程1106A-N首先以更低的重要性运行。当用户应用进程1104向守护进程(例如,守护进程1106A)请求服务时,将该守护进程提高为更高的重要性以处理该服务请求。在一个实施方式中,该守护进程1106A被称作自适应守护进程。例如,在一个实施方式中,用户应用进程1104经由消息1112向守护进程1106A发出服务请求。响应于守护进程1106A接收到该消息,将守护进程的重要性提高为更高的重要性的守护进程1116。虽然在一个实施方式中,提高的守护进程1116的重要性与进行请求的用户应用进程1104相同,但是在可替换的实施方式中,守护进程1116的提高的进程可能大于或小于进行请求的用户应用进程1104的重要性。
[0098]响应于守护进程A进程1116接收到消息并且提高了重要性,守护进程A进程向守护进程B进程1106B发送另一个消息1136。该消息1136可以是发送到守护进程A的相同的消息,或者可以是不同的消息。响应于守护进程1106B接收到消息1136,将守护进程B的重要性提高为更高的重要性的守护进程B1120。虽然在一个实施方式中,提高的守护进程B1120的重要性与初始进行请求的用户应用进程1104相同,但是在可替换的实施方式中,守护进程1120的所提高的进程可能大于或小于进行请求的用户应用进程1104的重要性。
[0099]在该实施方式中,所提高的守护进程B1120处理第二消息,并且向守护进程A1116发送答复1122。此外,将守护进程B的重要性降低为针对守护进程B1106B的默认重要性。在一个实施方式中,守护进程B1120做出断言,并且内核可以降低守护进程B进程1120的重要性。响应于接收到答复1122,守护进程A形成针对初始消息1112的答复,并且将该消息发送到用户应用进程1104。此外,将守护进程A进程1116的重要性降低为该进程的默认重要性。在一个实施方式中,操作系统的内核1132处理守护进程的提高和降低。在另一个实施方式中,操作系统的内核1132使用消息服务1134来处理守护进程的提高和降低。在该实施方式中,进程管理1134处理消息在用户应用进程1104、守护进程1106A/1116与守护进程1106B/1120之间的发送和接收。通过处理在这些进程之间传递的消息,进程管理1132可以管理守护进程的提高和降低。
[0100]例如,在一个实施方式中,考虑使用搜索守护进程来进行搜索的实施例。在该实施例中,该搜索守护进程是自适应守护进程,其可以具有由于从用户应用进程接收到搜索请求而提高的搜索守护进程重要性。响应于接收到搜索请求消息,搜索守护进程向安装守护进程发送第二消息,以获得安装在移动设备上的应用列表。已经获取了其重要性提高的搜索守护进程通过向安装守护进程发送针对安装的应用列表的第二消息来施与该重要性。在该实施例中,安装守护进程将在从搜索守护进程接收到第二消息以后使其重要性提高。此夕卜,在安装守护进程向搜索守护进程发送答复以后,将安装守护进程的重要性降低为安装守护进程的默认重要性。在一个实施方式中,通过消息服务(例如,上述的消息服务1034)来处理消息处理和守护进程提高/降低。
[0101]图12是用于管理消息在进程之间的发送和接收的进程管理模块322。在一个实施方式中,进程管理模块322由内核(例如,图3A-B的内核320和/或图10的内核1032)使用以促进发送和接收消息。在一个实施方式中,进程管理模块322包括消息发送模块1202、消息接收模块1204和撤销断言重要性模块1206。在该实施方式中,消息发送模块1202发送消息,如上文在图4中所述的。消息接收模块1204进行接收,如上文在图5中所述的。撤销断言重要性模块1206如上文在图6中所述的撤销断言。
[0102]图13是用于发送消息的消息发送模块1202,其中,该消息用于基于去往守护进程的消息来提高守护进程的重要性。在一个实施方式中,消息发送模块1202包括进程重要性施主模块1302、进程重要性接收者模块1304、标记消息模块1306、进程降低重要性模块1308、提高进程模块1310和队列消息模块1312。在一个实施方式中,进程重要性施主模块1302确定当前进程是否是重要性施主,如上文在图4的框402中所述的。进程重要性接收者模块1304确定目标进程是否是重要性接收者,如上文在图4的框404中所述的。标记消息模块1306标记消息,并且增加重要性断言计数,如上文在图4的框406中所述的。进程降低重要性模块1308确定目标进程是否具有降低的重要性,如上文在图4的框408中所述的。提高进程模块1310改变目标进程重要性,如上文在图4的框410中所述的。队列消息模块1312在端口上对消息进行排队,如上文在图4的框413中所述的。
[0103]图14是用于接收消息的消息接收模块1204,其中,该消息用于基于去往该守护进程的消息来提高守护进程重要性。在一个实施方式中,消息接收模块1204包括排队消息模块1402、出队消息模块1404、消息标记模块1406、进程重要性接收者模块1408、移除标志模块1410和复制消息模块1412。在一个实施方式中,排队消息模块1402确定是否存在排队消息,如上文在图5的框502中所述的。出队消息模块1404使消息端口出队,如上文在图5的框504中所述的。消息标记模块1406确定是否针对重要性标记了消息,如上文在图5的框506中所述的。进程重要性接收者模块1408确定当前进程是否是自适应守护进程,如上文在图5的框508中所述的。移除标志模块1410移除标志,并且降低重要性计数,如上文在图5的框510中所述的。复制消息模块1412将消息复制到用户缓冲器,如上文在图5的框512中所述的。
[0104]图15是用于接收消息的守护进程msg_reCV模块324,其中,该消息用于提高守护进程重要性。在一个实施方式中,守护进程msg_recv模块324包括消息接收模块1502、消息标记模块1504、设置消息重要性模块1506、处理消息模块1508、消息答复模块、重要性消息模块和撤销重要性模块1514。在该实施方式中,消息接收模块1502确定是否接收到消息,如图6的框602中所述的。消息标记模块1504针对重要性标记消息,如图6的框604中所述的。设置消息重要性模块1506将重要性设置为真,如图6的框606中所述的。处理消息模块1508处理消息并且执行所需的动作,如图6的框608中所述的。消息答复模块1510发送答复,如图6的框610中所述的。重要性消息模块1512确定消息是否被标记为重要的,如图6的框612中所述的。撤销重要性模块1514撤销重要性断言,如图6的框614中所述的。
[0105]图16是用于撤销重要性断言的撤销断言重要性模块1206。在一个实施方式中,撤销断言重要性模块1206包括当前进程模块1602、降低断言计数模块1604、断言计数零模块1606和进程降低模块1608。在该实施方式中,当前进程模块1602确定当前进程是否是重要性进程,如上文在图7的框702中所述的。降低断言计数模块1604降低重要性断言计数,如上文在图7的框704中所述的。断言计数零模块1606确定重要性断言计数,如上文在图7的框706中所述的。进程降低模块1608降低当前进程,如上文在图7的框708中所述的。
[0106]图17是用于按需启动服务的启动服务326。在一个实施方式中,启动服务包括未决事件模块1702、消息服务模块1704、创建服务端口模块1706、消息服务端口模块1708、自适应守护进程模块1710、启动自适应守护进程1712、启动守护进程模块1714、自适应守护进程登记模块1716、传送服务端口模块1718和处理其它事件模块1720。在该实施方式中,未决事件模块1702确定是否存在任何未决的事件,如上文在图8的框802中所述的。消息服务模块1704确定是否存在要创建的消息服务,如上文在图8的框804中所述的。创建服务端口模块1706创建服务端口,并且将该服务端口添加到观察列表,如上文在图8的框806中所述的。消息服务端口模块1708确定在服务端口上是否存在消息,如上文在图8的框808中所述的。自适应守护进程模块1710确定消息是否针对自适应守护进程,如上文在图8的框810中所述的。启动自适应守护进程1712启动自适应守护进程,如上文在图8的框812中所述的。启动守护进程模块1714启动守护进程,如上文在图8的框814中所述的。自适应守护进程登记模块1716确定是否在启动之后登记了自适应守护进程,如上文在图8的框816中所述的。传送服务端口模块1718将服务端口传送到自适应守护进程,如上文在图8的框818中所述的。处理其它事件模块1720处理其它事件,如上文在图8的框820中所述的。
[0107]图18是用于基于由第一守护进程接收到的消息提高第二守护进程重要性的消息处理模块1508。在一个实施方式中,消息处理模块1508包括接收消息模块1802、消息守护进程模块1804、发送消息守护进程模块1806、接收答复守护进程模块1808、准备答复模块1810和发送答复模块1812。在该实施方式中,接收消息模块1802接收第一消息,如上文在图9的框902中所述的。消息守护进程模块1804确定第一消息答复是否需要来自另一个守护进程的信息,如上文在图9的框904中所述的。发送消息守护进程模块1806向其它守护进程发送第二消息,如上文在图9的框906中所述的。接收答复守护进程模块1808接收答复,如上文在图9的框908中所述的。准备答复模块1810准备针对第一消息的答复消息,如上文在图9的框910中所述的。发送答复模块1812发送答复,如上文在图9的框912中所述的。
[0108]图19示出了数据处理系统1900的一个实施例,其中,该数据处理系统1900可以与本发明的一个实施方式一起使用。例如,系统1900可以实现为包括如图3A-B中所示的设备300。注意,虽然图19示出了计算机系统的各个组件,但是并不旨在表示对组件进行互连的任何特定的架构或方式,这是因为这些细节并不与本发明紧密关联。还将清楚的是,网络计算机和其它数据处理系统或者其它消费者电子设备(其具有更少的组件或者可能更多的组件)也可以与本发明一起使用。
[0109]如图19所示,计算机系统1900 (其具有数据处理系统的形式)包括耦合到微处理器1905和ROM (只读存储器)1907和易失性RAM1909和非易失性存储器1911的总线1903。微处理器1905可以从存储器1907、1909、1911取回指令,并且执行指令以执行上文所描述的操作。总线1903对这些各个组件互连在一起,并且还将这些组件1905、1907、1909和1911互连到显示控制器和显示设备1913以及诸如输入/输出(I/O)设备等的外围设备(其可以是鼠标、键盘、调制解调器、网络接口、打印机和本领域公知的其它设备)。通常,输入/输出设备1915通过输入/输出控制器1913耦合到系统。易失性RAM (随机存取存储器)1909通常实现为动态RAM (DRAM),其不断地需要功率以刷新或维持存储器中的数据。
[0110]大容量存储设备1911通常是磁性硬盘驱动器或者磁性光学驱动器或者光学驱动器或者DVD RAM或者闪存或者其它类型的存储系统,其甚至在从系统中移除功率以后维持数据(例如,大量数据)。通常,大容量存储设备1911还将是随机存取存储器,但是这不是必需的。虽然图19示出了大容量存储设备1911是直接耦合到数据处理系统中的剩余组件的本地设备,但是将清楚是,本发明可以使用处于系统远处的非易失性存储器,例如,通过诸如调制解调器、以太网接口或无线网络等的网络接口耦合到数据处理系统的网络存储设备。总线1903可以包括通过本领域公知的各个桥、控制器和/或适配器彼此相连的一个或多个总线。
[0111]图20示出了另一个数据处理系统2000的实施例,其中,另一个数据处理系统2000可以与本发明的一个实施方式一起使用。例如,系统2000可以实现为如图3A-B中所示的设备300。图20中所示的数据处理系统2000包括处理系统2011,处理系统2011可以是一个或多个微处理器,或者可以是片上系统集成电路,并且系统还包括用于存储数据和用于由处理系统执行的程序的存储器2001。系统2000还包括音频输入/输出子系统2005,其可以包括麦克风和扬声器,以用于例如通过扬声器和麦克风回放音乐或者提供电话功能。
[0112]显示控制器和显示设备2009为用户提供可视用户界面;该数字界面可以包括图形用户界面,该图形用户界面类似于在运行OS X操作系统软件时在Macintosh计算机上显示的图形用户界面或者在运行iOS操作系统时在Apple iPhone上显示的图形用户界面。系统2000还包括用于与另一个数据处理系统(例如,图20的系统2000)进行通信的一个或多个无线收发机2003。无线收发机可以是WLAN收发机、红外线收发机、蓝牙收发机和/或无线蜂窝电话收发机。将清楚的是,在某些实施方式中,额外的组件(未示出)还可以是系统2000的一部分,并且在某些实施方式中,还可以在数据处理系统中使用与图20中所示的组件相比更少的组件。系统2000还包括用于与另一个数据处理系统(例如,图15的系统1500)进行通信的一个或多个通信端口 2017。通信端口可以是USB端口、火线端口、蓝牙接口等。
[0113]数据处理系统2000还包括一个或多个输入设备2013,提供输入设备2013以允许用户向系统提供输入。这些输入设备可以是键板或键盘或者触摸板或多点触摸板。数据处理系统2000还包括可选择的输入/输出设备2015,其可以是针对埠的连接器。将清楚的是,一个或多个总线(未示出)可以用于对本领域公知的各个组件进行互连。图20中所示的数据处理系统可以是手持计算机或个人数字助理(PDA)或者具有PDA类似功能的蜂窝电话、或者包括蜂窝电话的手持计算机或者诸如iPod等的媒体播放器、或者将这些设备的各个方面或功能进行组合的设备(例如,与一个设备或嵌入式设备或者其它消费者电子设备中的PDA和蜂窝电话结合的媒体播放器)。在其它实施方式中,数据处理系统2000可以是网络计算机或者另一个设备中的嵌入式处理设备,或者其它类型的数据处理系统,其具有与图20中所示的组件相比更少的组件或者可能更多的组件。
[0114]本发明的至少某些实施方式可以是数字媒体播放器的一部分,例如,便携式音乐和/或视频媒体播放器,其可以包括用于呈现媒体的媒体处理系统、用于存储媒体的存储设备,并且还可以包括与天线系统和媒体处理系统耦合在一起的射频(RF)收发机(例如,用于蜂窝电话的RF收发机)。在某些实施方式中,存储在远程存储设备上的媒体可以通过RF收发机发送到媒体播放器。媒体可以是例如音乐或其它音频、静止图片或运动图片中的一个或多个。
[0115]便携式媒体播放器可以包括媒体选择设备,例如,CA的库比蒂诺的苹果公司的iPod?或iPod Nano?媒体播放器上的棘轮输入设备、触摸屏输入设备、按钮设备、可移动点选输入设备或者其它输入设备。媒体选择设备可以用于选择存储在存储设备和/或远程存储设备上的媒体。在至少某些实施方式中,便携式媒体播放器可以包括显示设备,该显示设备耦合到媒体处理系统,以显示媒体的标题或其它指示符,其中,该媒体是通过输入设备来选择的并且通过扬声器和耳机呈现或者在显示设备上呈现或者在显示设备和扬声器或耳机上呈现。在公开的第7,345,671号美国专利和公开的第2004/0224638号美国专利中描述了便携式媒体播放器的实施例,这两个美国专利通过引用的方式并入本文。
[0116]上文所描述的各个部分可以实现为诸如专用逻辑电路等的逻辑电路或者微控制器或执行程序代码指令的其它形式的处理内核。因此,可以使用诸如机器可执行指令(其使执行这些指令的机器执行某些功能)等的程序代码来执行上文的讨论教导的过程。在该上下文中,“机器”可以是将中间形式(或者“抽象”)的指令转换为特定于处理器的指令(例如,抽象执行环境,例如,“虚拟机”(例如,Java虚拟机)、解释器、公共语言运行时、高级语言虚拟机等)的机器、和/或布置在被设计为执行指令的半导体芯片(例如,使用晶体管实现的“逻辑电路”)上的电子电路,例如,通用处理器和/或专用处理器。还可以由被设计为执行过程(或其一部分)的电子电路来(替换机器或者与机器相结合)在不执行程序代码的情况下执行上面的讨论所教导的过程。
[0117]本发明还涉及用于执行本文所描述的操作的装置。该装置可以专门为了所需的目的而构造,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。该计算机程序可以存储在计算机可读存储介质中,该计算机可读存储介质例如是但不限于:任何类型的磁盘,其包括:软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、RAM、EPROM、EEPR0M、磁卡或光卡,或者适合于存储电子指令的任何类型的介质,并且每一个耦合到计算机系统总线。
[0118]机器可读介质包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制。例如,机器可读介质包括只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。
[0119]制品可以用于存储程序代码。存储程序代码的制品可以体现为但不限于一个或多个存储器(例如,一个或多个闪存、随机存取存储器(静态、动态或其它))、光盘、CD-ROM、DVDROM、EPROM、EEPR0M、磁卡或光卡或者适合于存储电子指令的其它类型的机器可读介质。还可以通过体现在传播介质中的数据信号的形式(例如,经由通信链路(例如,网络连接))从远程计算机(例如,服务器)向进行请求的计算机(例如,客户端)下载程序代码。
[0120]围绕对计算机存储器中的数据比特的操作的算法和符号表示来给出前面的详细描述。这些算法描述和表示是由数据处理领域中的技术人员使用以最有效地向本领域技术人员传达其工作的实质的工具。算法在这里,并且通常被设想为是导致期望的结果的有条理的操作序列。这些操作是需要对物理量进行物理操纵的操作。通常,虽然不一定,但是这些量具有能够存储、传送、组合、比较和以其它方式操纵的电信号或磁信号的形式。已经证明,有时,主要由于习惯用语的原因,将这些信号称作比特、值、要素、符号、字符、项目、号等是便利的。
[0121]然而,应当记住的是,所有这些术语和类似的术语应当与适合的物理量相关联,并且仅仅是应用于这些量的便利的标签。除非另外说明,否则通过上面的讨论显而易见,将清楚的是,在描述中,使用诸如以下各项的术语进行讨论是指计算机系统或类似电子计算设备的动作和过程:“接收”、“做出”、“处理”、“发送”、“提高”、“降低”、“返回”、“计算”、“入队”、“传送”、“启动”、“转发”、“减低”、“维持”等,其中,所述计算机系统或类似的电子计算设备将表示为计算机系统的寄存器和存储器中的物理(电子)量的数据操纵和转化为类似地表示为计算机系统存储器或寄存器或者其它这种信息存储、传输或显示设备中的物理量的其它数据。
[0122]本文给出的过程和显示并不是固有地与任何特定的计算机或其它装置有关。可以将各种通用系统与根据本文的教导的程序一起使用,或者可以证明,构造更专用的装置来执行所描述的操作是便利的。通过下面的描述,针对多种这些系统的所需结构将是显而易见的。此外,未参照任何特定的编程语言来描述本发明。将清楚是,各种编程语言可以用于执行本发明的教导,如本文所描述的。
[0123]前述讨论仅描述了本发明的一些示例性的实施方式。本领域技术人员根据这些讨论、附图和权利要求将容易认识到,可以在不偏离本发明的精神和范围的情况下进行各种修改。
[0124]相关申请
[0125]本申请要求于2012年6月8日提交的第61/657,611号现有的共同未决的临时申请的优先权,其全部内容通过引用的方式并入本文。
【权利要求】
1.一种数据处理系统,包括: 用于从用户进程接收去往所述第一守护进程的第一消息的模块,其中,所述第一守护进程独立于所述用户进程执行,所述第一守护进程与其它执行进程传送消息,并且所述消息是来自所述用户进程的针对所述第一守护进程的服务请求; 用于确定所述第一消息是否指示所述第一守护进程的重要性能够改变的模块; 用于如果所述第一消息指示所述第一守护进程的重要性能够改变,则改变所述第一守护进程的重要性的模块;以及 用于将所述第一消息转发给所述第一守护进程的模块。
2.根据权利要求1所述的系统,其中,所述用户进程以与所述第一守护进程相比更高的重要性运行。
3.根据权利要求1所述的系统,其中,改变所述第一守护进程的重要性将所述第一守护进程的重要性改变为与所述用户进程一样的重要性。
4.根据权利要求1所述的系统,其中,用于确定的模块包括: 用于确定所述消息是否去往第一守护进程,其中所述第一守护进程能够让所述第一守护进程的重要性被改变。
5.根据权利要求1所述的系统,其中,用于转发所述消息的模块包括: 用于将所述消息入队到针对所述第一守护进程的端口队列中的模块。
6.根据权利要求1所述的系统,还包括:` 用于维持针对所述第一守护进程的断言的计数的模块; 用于接收针对所述第一守护进程的撤销断言的模块; 用于减小针对所述第一守护进程的断言的所述计数的模块;以及用于如果针对所述第一守护进程的断言的所述计数为零,则将所述第一守护进程的重要性改变为默认重要性的模块。
7.根据权利要求1所述的系统,还包括: 用于从用户进程接收到去往第二守护进程的第二消息的模块,其中,所述第二守护进程正在执行,所述第二守护进程独立于所述第一守护进程而执行,并且所述第二守护进程与所述其它执行进程传送消息; 用于确定所述第二消息是否指示所述第二守护进程的重要性能够改变的模块; 用于如果所述第二消息指示所述第二守护进程的重要性能够改变,则改变所述第二守护进程的重要性的模块;以及 用于将所述第二消息转发给所述第二守护进程的模块。
8.根据权利要求7所述的系统,其中,改变所述第二守护进程的重要性将被改变的所述第二守护进程的重要性改变为与所述用户进程相同的重要性。
9.根据权利要求1所述的系统,还包括: 用于将所述第一消息标记为携带重要性的模块。
10.根据权利要求1所述的系统,其中,将所述第一消息转发给所述第一守护进程是响应于改变所述第一守护进程的重要性的。
11.根据权利要求1所述的系统,其中,所述用户进程是用于在前台中执行的用户应用的进程。
12.根据权利要求1所述的系统,其中,所述第一守护进程在后台运行。
13.根据权利要求1所述的系统,其中,进程重要性代表用户指示需要动作。
14.一种数据处理系统,包括: 用于从重要性施主进程接收去往自适应守护进程的消息的模块,其中,所述自适应守护进程还未启动; 用于确定所述消息是否指示所述自适应守护进程的重要性能够改变的模块; 用于如果所述消息指示所述自适应守护进程的重要性能够改变,则以与同所述自适应守护进程相关联的默认重要性不同的重要性启动所述自适应守护进程的模块;以及 用于将所述消息转发给所启动的自适应守护进程的模块。
15.根据权利要求14所述的系统,其中,所述自适应守护进程是具有可改变的进程重要性的守护进程。
16.根据权利要求14所述的系统,其中,所述重要性施主进程是能够将重要性施与另一个进程的进程。
17.根据权利要求16所述的系统,其中,重要性施主进程是从由以下各项组成的组中选择的:用户应用进程和其重要性已经提高的另一个自适应守护进程。
18.根据权利要求14所述的系统,其中,所述自适应守护进程重要性被提高为所述重要性施主的重要性。
19.根据权利要求14所述的系统,其中,所述消息是从所述重要性施主进程到所述自适应守护进程的服务请求。
20.一种用于改变第一守护进程的重要性的装置,所述装置包括: 用于确定所述第一消息是否指示所述第一守护进程的重要性能够改变的模块; 用于如果所述第一消息指示所述第一守护进程的重要性能够改变,则改变所述第一守护进程的重要性的模块;以及 用于将所述第一消息转发给所述第一守护进程的模块。
【文档编号】G06F9/46GK103593234SQ201310226970
【公开日】2014年2月19日 申请日期:2013年6月8日 优先权日:2012年6月8日
【发明者】A·拉梅什, 林洋森, D·P·索雷索, J·M·玛吉, K·J·范维奇腾, U·S·瓦伊沙姆帕岩 申请人:苹果公司