用于在动态链接环境下复原应用程序的方法和系统的制作方法

文档序号:6367091阅读:120来源:国知局
专利名称:用于在动态链接环境下复原应用程序的方法和系统的制作方法
技术领域
本公开内容涉及用于在动态链接的环境下复原应用程序的方法和系统。
背景技术
本部分提供与未必是现有技术的本公开内容相关的背景信息。现今,许多设备利用执行核心软件的处理器或微处理器。此外,这些处理器或微处理器的架构对程序员可以是开放的,以开发针对设备的应用程序。例如,第三方开发人员或内部开发人员可以设计针对远程信息处理设备的应用程序。为了促进应用程序的广泛设计在处理器上执行,处理器制造商可以为开发人员开发应用程序接口(API),以在应用程序和处理器之间进行连接。API是开发人员用于访问并利用在处理器上执行的操作系统的服务和资源的一组规则和技术规范。因此,API可以充当第一软件应用程序和第二软件应用程 序之间的接口。例如,API允许程序员开发可以在远程信息处理设备的操作系统上执行的应用程序。应用程序的开发人员不需要知道远程信息处理设备中使用的特定处理器或在其上执行的操作系统的特定系统调用。而是,具有独立于处理器或操作系统的标准化规则和技术规范的API允许程序员使用API的语法和规则,使得API提供来自设备的较低级别软件和/或硬件部件的抽象层。传统上,用于设备的应用程序与API的链接库和文件静态地链接。也就说是,在编译时对应用程序进行链接。由于API设计者现在逐渐地期望扩展并修改链接库,因此设备的操作系统开始将应用程序动态地链接到API的链接库。例如,无线双态运行时环境(BREff)是由Qualcomm开发的API,其允许开发人员开发针对移动设备的应用程序。从历史的观点看,BREW是静态链接的,但最近的BREWAPI需要BREW应用程序的动态链接。为了运行动态链接的BREW应用程序,存在在执行BREW应用程序之前要执行的多个复杂过程。这些复杂过程的执行增加了 BREW应用程序将不执行的风险。因此,相对于静态链接环境下的可能性而言,动态链接环境下出现的问题在于应用程序的动态链接增加了该应用程序将不启动的风险。因此,需要提高动态链接应用程序的可靠性。本公开内容的目的是提供用于在动态链接环境下复原应用程序的方法和系统,从而提高动态链接应用程序的可靠性。从本文提供的描述中,其它领域的适用性将变得显而易见。在本概要中的描述和具体示例仅出于说明的目的,并非旨在限制本公开内容的范围。

发明内容
本部分提供本公开内容的总体概要,并非其完整范围或其全部特征的全面公开内容。在公开内容的一个方面,公开了一种用于执行应用程序的方法。应用程序存储在文件系统中,在设备的处理器上执行,并利用应用程序接口(API)来协助指令从应用程序到处理器。该方法包括从文件系统获取应用程序;在处理器上执行应用程序;针对API调用,监视应用程序和处理器之间的交互;基于针对API调用进行的监视从备份存储空间获取应用程序的备份拷贝;以及,将应用程序的备份拷贝存储在文件系统中。在本公开内容的另一方面,公开了一种用于在设备上执行应用程序的系统。该设备包括具有存储包括所述应用程序在内的多个应用程序的文件系统的非易失性存储器。文件系统还具有存储包括所述应用程序的备份拷贝在内的多个应用程序的备份拷贝的备份存储空间。所述系统还包括配置用于执行应用程序的处理模块;以及,由处理模块利用以协助指令从应用程序到处理模块的应用程序接口(API)。处理模块还被配置用于从文件系统获取应用程序;在处理模块上执行应用程序;针对从应用程序到处理模块的API调用,对应用程序和处理模块之间的交互进行监视;基于针对API调用进行的监视从备份存储空间获取应用程序的备份拷贝;以及,将应用程序的备份拷贝存储在文件系统中。


现在将参考附图对示例性实施例进行更加充分地描述。
图I是示出设备的示例性部件的框图;图2是设备的示例性层次的图;图3是说明可以在动态链接应用程序的运行时执行的示例性方法的流程图;以及图4是说明可以在动态链接应用程序的运行时执行的示例性方法的流程图。
具体实施例方式本文所描述的图是仅是为了说明性目的的选择的实施例并且不是所有可能的实施方式,且并非旨在限制本公开内容的范围。本文针对框架公开了一种用于当运行时错误发生时恢复要在设备上执行的应用程序的系统和方法。该应用程序存储在文件系统中,并且设备的处理器从文件系统中加载该应用程序并在RAM上启动该应用程序。处理器监视由应用程序进行的API调用(应用程序接口调用),以确定该应用程序是否处于错误状态中。当API调用未实现时,处理器将发起恢复动作。例如,从备份位置恢复该应用程序,或重建该文件系统。图I示出了示例性设备100。设备100可以充当远程信息处理设备、蜂窝电话、平板PC、PDA等。设备100包括处理模块102、与处理模块102进行可操作通信的非易失性存储器104、以及可选地用户接口 112和通信模块110。处理模块102被配置用来执行设备100的核心功能。处理模块102可以包括处理器、微处理器、微控制器、或任意其它处理单元。处理模块102还可以包括随机存取存储器(RAM)或其它易失性存储器。处理模块102被配置用于执行设备100的操作系统。此外,处理模块102被配置为从非易失性存储器104读取和/或写入数据。处理模块102从存储器104中存储或获取应用程序,并将应用程序写入到处理模块102的RAM。非易失性存储器104可以是任意适当的存储设备。例如,非易失性存储设备104可以是硬盘驱动器或闪存设备。存储设备104被划分成至少两部分,包括文件系统106和备份存储空间108。文件系统106将由处理模块102使用的数据组织到多个目录和/或文件中。在这多个文件之中,文件系统106存储针对设备100开发的应用程序。应意识到的是,应用程序可以在主题上不同。例如,在远程信息处理设备中,应用程序可以包括CDMA应用程序、GPS应用程序、或互联网无线应用程序。应用程序可以由设备制造商或第三方开放人员进行开发。应用程序由计算机可执行指令组成。在一些实施例中,可以对应用程序进行编译并存储在文件系统中,但直到加载时间或运行时间才进行链接。备份存储空间108存储数据的备份拷贝。例如,备份存储空间存储应用程序的备份拷贝。因此,当在文件系统106中存储的应用程序被损坏时,文件系统106能够从备份存储空间108中获取该应用程序的备份拷贝,并在文件系统106上复原该应用程序。设备100还可以包括用户接口 112和/或通信模块110。用户接口 112被配置为接收来自用户的输入数据以及将数据输出到用户。例如,在远程信息处理设备中,用户接口112可以允许用户通过触摸屏输入命令,并且可以向用户显示屏幕以指示远程信息处理设备的状态。通信模块110被配置用于发送和/或接收来自外部数据源的数据。例如,如果设备是远程信息处理设备或移动电话,则通信模块Iio可以被配置成与蜂窝电话塔或GPS卫星进行通信。在远程信息处理设备的示例中,如果设备100正执行CDMA电话应用程序,则通信模块110可以被配置成与通信节点(诸如蜂窝电话塔)进行通信。通信模块110将向 该通信节点发送数据并接收来自该通信节点的数据。应意识到的是,设备100可以包括另外的部件。上述配置是示例性的,并且仅提供用于示例。图2示出了设备100的运行时间环境的示例性层次。在第一级200处,操作系统执行与设备100的核心功能相关的任务。操作系统包括应用程序接口(API) 202,其允许应用程序与操作系统级200连接。API 202定义了开发人员可以在不知道操作系统的优选的系统调用和功能的情况下使用的一组规则和指令。此外,API 202包括定义了用于支持应用程序的函数和子例程的一组库。在运行时,操作系统将该库与应用程序的可执行代码动态地链接。当开发人员开发应用程序时,开发人员可以利用由API 202所定义的指令,而不必编程专门针对设备100的应用程序。因此,API允许应用程序跨各种平台执行。在一些实施例中,API是由Qualcomm开发的无线双态运行时环境(BREW)。在第二级210处,文件系统106位于操作系统级200的顶部。文件系统106存储多个应用程序,其包括第一应用程序212和第二应用程序214。应意识到的是,当第一应用程序212被调用来执行时,应用程序212和API202的链接库将由操作系统进行编译和链接,并存储在RAM 214上。在第二层210之上,备份存储空间108驻留在第三层220。备份存储空间108存储多个应用程序的备份拷贝,其包括第一应用程序备份222和第二应用程序备份224。备份存储空间驻留在第二层210的顶部,使得如果文件系统106失败,则文件系统106将访问备份存储空间以获取第一和第二应用程序的拷贝并将其存储回文件系统106中。此外,如果文件系统本身已失败,则文件系统106可以被配置以进行重分区和重配置。应意识到的是,上述层次本质上仅是示例性的,并且应想到的是,可以在设备100中实现其它层次。图3示出了可以由处理模块102执行的示例性方法。可以在每当由用户或操作系统的任务请求应用程序的实例时执行图3中示出的方法。该方法还可以在设备100加电之后执行。例如,如果用户希望使用可由远程信息处理设备执行的CDMA应用程序发起电话呼口4,则可以执行图3中示出的方法。当设备100加电时,处理模块102初始化设备100的核心软件。在一些实施例中,核心软件是设备100的操作系统。一旦核心软件已被初始化,则设备100可以接收指令来启动应用程序。如步骤314处所示,在从文件系统106加载应用程序之前,处理模块102将确定是否需要应用程序恢复。如下面将进行讨论的,可以维护指示是否需要应用程序恢复的标志或类似的标记。因此,处理模块102将检查应用程序恢复标志的值,以确定是否需要应用程序恢复。如步骤316处所示,如果需要应用程序恢复,则处理模块102将初始化并重建文件系统106。应意识到的是,可以利用用于初始化和重建文件系统的任何适当的手段。通常,使用指令的预定集合来对处理器或微处理器进行预编程,以便在接收到重建指令时执行文件系统重建过程。一旦文件系统106被重建,则备份存储空间108将从文件系统106接收指令,以获得来自备份存储空间108的应用程序的备份拷贝。如步骤318处所示,文件系统106将接收应用程序的备份拷贝并将其复制到文件系统106。应意识到的是,文件系统可以请求多个 应用程序的备份拷贝。例如,如果设备包括GPS应用程序和CDMA应用程序,则文件系统106将请求备份GPS应用程序和备份CDMA应用程序。文件系统106接收并随后将应用程序的备份拷贝存储在文件系统中。如果应用程序不需要恢复,或者在已执行重建和恢复操作之后,则处理模块102将应用程序从文件系统加载到RAM,如步骤320处所示。为此,处理模块102从文件系统106请求应用程序。文件系统106将应用程序的可执行代码返回给处理模块102。一旦处理模块102已接收应用程序,则可以将该应用程序存储在处理模块102的RAM上。然后,处理模块102将应用程序链接到包含在API中的任何链接文件或链接库文件,如步骤322处所示。在一些实施例中,处理模块102会在加载时将应用程序的可执行代码与包含在API中的链接库或链接文件的可执行代码链接。在其它实施例中,处理模块102会在运行时将应用程序的可执行代码与包含在API中的链接库或链接文件的可执行代码链接。一旦已将应用程序链接到链接文件或链接库,则处理模块102可以开始执行该应用程序。一旦应用程序已开始执行,则处理模块102可以确定来自应用程序的API调用是否是由该应用程序发出的,如步骤324处所示。应意识到的是,当在执行时,应用程序必将进行API调用。如果应用程序处于错误状态中,例如,应用程序未成功地链接到链接文件,则应用程序将不进行API调用。如果操作系统接收到API调用,则处理模块102将推断该应用程序被正确地执行。如果应用程序在正确地运行,则处理模块102会将重试计数设为0,如步骤326处所示。在下面对重试计数做进一步描述。处理模块102还会将应用程序恢复标志设为等于0FF,如步骤328处所示,并将继续执行该应用程序,如步骤330处所示。如果API调用未被处理模块102接收,则处理模块102将确定从应用程序开始执行时起所经过的时间量。将该时间量与时间阈值进行比较,如步骤332处所示。时间阈值指示在应当由应用程序发出API调用之前可以经过的最大时间量。因此,处理模块102将继续检查API调用是否被接收直到API调用被接收或超过时间阈值为止,如由步骤332和324之间形成的循环所示。当超过时间阈值时,处理模块102可以认为应用程序处于错误状态,例如,应用程序未正确地链接到API的链接文件或库。
一旦超过时间阈值,则处理模块102将递增重试计数,如步骤334处所示。重试计数指示应用程序已被确定为处于错误状态的连续次数。将重试计数与重试阈值相比较,如步骤336处所示。如果重试计数超过重试阈值,则采取纠正动作。例如,可以关闭设备,如步骤338处所示。如果重试计数低于重试阈值,则将应用程序恢复标志设为0N,如步骤340处所示。然后,处理模块可以在步骤312重新初始化核心软件,使得当处理模块102检查应用程序恢复标志时,处理模块102将最终获取应用程序的备份拷贝。可替换地,处理模块102可以跳过初始化核心软件步骤。应意识到的是,可以实现该方法的变型并且该方法的变型在本公开内容的范围之内。此外,应注意的是,关于图4所示出的一些步骤可以合并到单个步骤中,而其它步骤可以在多个步骤中被执行。
图4示出了关于图3所讨论的方法的替代实施例。如关于图3所讨论的,在加电之后,核心软件将由处理模块102初始化,如步骤412处所示。在初始化核心软件之后,处理模块102将确定是否执行文件系统复原操作,如步骤414处所示。在一些实施例中,处理模块102将检查文件复原标志的值。如果需要文件系统复原,则处理模块102将初始化并重建文件系统,如步骤416处所示。然后,处理模块102将从备份存储空间中获取一个或多个应用程序的备份拷贝,并将备份应用程序复制到文件系统106,如步骤418处所示。如果不需要文件系统重建操作,则处理模块102将确定是否需要执行应用程序恢复操作,如步骤420处所示。例如,在一些实施例中,处理模块102将维护指示是否需要执行应用程序恢复操作的应用程序恢复标志。在这些实施例中,操作系统可以检查应用程序恢复标志,以确定是否请求应用程序恢复。如果应用程序恢复标志被设为0N,则将应用程序从备份存储空间108复制到文件系统106,如步骤418处所示。在已检查应用程序恢复标志和文件系统复原标志之后,处理模块102会将应用程序从文件系统106加载到RAM,如步骤422处所示。然后,处理模块102会将来自API的文件链接到应用程序,并将开始执行该应用程序,如步骤424处所示。在一些实施例中,处理模块102会在加载时将应用程序的可执行代码与包含在API中的链接库或链接文件的可执行代码相链接。在其它实施例中,处理模块102会在运行时将应用程序的可执行代码与包含在API中的链接库或链接文件的可执行代码相链接。一旦已将应用程序链接到链接库或链接文件,则处理模块102可以开始执行该应用程序。一旦应用程序已开始执行,则操作系统将检查是否已从操作系统进行API调用,如步骤426处所示。如果已从API进行调用,则将重试计数设为0,将应用程序恢复和文件系统复原标志设为0FF,并且处理模块102继续正常执行,如在步骤428到432处所示。然而,如果未接收到API调用,则处理模块102将从应用程序开始执行时起所经过的时间量与时间阈值相比较,如步骤334处所示。一旦从应用程序被调用而API调用未被接收时起的时间量超过时间阈值,则递增重试计数,如步骤436处所示。如上所述,重试计数指示应用程序已被确定处于错误状态的次数。在当前实施例中,处理模块102将首先尝试在不重建文件系统106的情况下恢复应用程序。如果在预定量的应用程序恢复尝试之后,处理模块102将重建文件系统106并尝试恢复应用程序。如果在预定量的文件系统复原尝试之后未解决错误,则采取纠正动作,例如关闭设备。因此,处理模块102会将重试计数与第一重试计数阈值(例如,4)相比较,如步骤438处所示。如果重试计数未超过第一重试计数阈值,则将应用程序恢复标志设置为0N,如步骤440处所示,并且该方法返回至步骤412。如果重试计数超过第一重试计数阈值,则将重试计数与第二重试计数阈值(例如,2)相比较,如步骤442处所示。如果重试计数未超过第二重试计数阈值,则将文件系统恢复标志设为0N,如步骤444处所示。然后,该方法将返回至步骤412。如果重试计数超过第二重试计数阈值,则处理模块102进行纠正动作,例如,关闭设备,如步骤442处所示。应意识到的是,可以实现该方法的变型并且该方法的变型在本公开内容的范围之内。此外,应注意的是,关于图4所示出的一些步骤可以合并到单个步骤中,而其它步骤可以在多个步骤中被执行。如本文中所使用的术语“模块”可以指代、作为下列各项的一部分、或包括下列各 项专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享的、专用的器、或组);提供所描述的功能的其它适当部件;或上述各项中的一些或全部的组合(诸如片上系统)。术语“模块”可以包括存储由处理器执行的代码的存储器(共享的、专用的、或组)。如上面所使用的术语“代码”可以包括软件、固件和/或微码,并且可以指程序、例程、函数、类和/或对象。如上面所使用的“共享的”意味着来自多个模块的一些或全部代码可以使用单个(共享)处理器来执行。另外,来自多个模块的一些或全部代码可以由单个(共享)存储器进行存储。如上面所使用的术语“组”意味着来自单个模块的一些或所有代码可以使用一组处理器来执行。另外,来自单个模块的一些或所有代码可以使用一组存储器进行存储。本文所描述的装置和方法可以通过由一个或多个处理器执行的一个或多个计算机程序来实现。计算机程序包括存储在非暂时性有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括所存储的数据。非暂时性有形计算机可读介质的非限制性示例为非易失性存储器、磁存储器、以及光存储器。可以以各种形式实现本公开内容的广泛教导。因此,虽然本公开内容包括特定的示例,但是不应当如此限制本公开内容的真实范围,因为在研究附图、说明书、以及所附权利要求之后,其它修改对于技术从业者将变得显而易见。
权利要求
1.一种用于执行存储在文件系统(106)中、在设备(100)的处理器(102)上执行的应用程序,并且利用应用程序接口(202)来协助指令从所述应用程序到所述处理器(102)的方法,所述方法包括 从所述文件系统(106)获取(320、422)所述应用程序; 在所述处理器(102)上执行(322、424)所述应用程序; 针对应用程序接口调用对所述应用程序和所述处理器(102)之间的交互进行监视(324、332、426、434); 基于针对所述应用程序接口调用进行的所述监视从备份存储空间(108)获取(318、418)所述应用程序的备份拷贝;以及 将所述应用程序的所述备份拷贝存储(320、422)在所述文件系统(106)中。
2.根据权利要求I所述的方法,其中,对所述应用程序和所述处理器(102)之间的所述交互进行的所述监视(324、332、426、434)还包括确定(332、434)在没有观测到应用程序接口调用的情况下所经过的时间量并将所述时间量与时间阈值相比较(332、434),其中,在所述时间量超过所述时间阈值时获取所述备份拷贝。
3.根据权利要求1、2所述的方法,还包括基于所述应用程序接口调用的所述监视来重建(316、416)所述文件系统(106)。
4.根据权利要求1、2所述的方法,还包括维护(334、436)指示所述处理器(102)和所述应用程序之间的所述交互指示所述应用程序处于错误状态的次数的计数,其中,当预定的时间量过去而没有观测到应用程序接口调用时错误状态发生。
5.根据权利要求4所述的方法,还包括在所述计数超过第一阈值时重建(416)所述文件系统(106),其中,在重建所述文件系统(106)之后获取所述应用程序的所述备份拷贝。
6.根据权利要求4所述的方法,还包括当所述计数超过第二阈值时关闭(446)所述设备(100),其中当所述计数超过所述第二阈值时不获取所述应用程序的所述备份拷贝。
7.根据权利要求1、2所述的方法,还包括在所述应用程序的所述获取或所述应用程序的所述执行期间将所述应用程序链接(322、424)到所述应用程序接口。
8.根据权利要求1、2所述的方法,还包括将所述应用程序动态地链接(322、424)到所述应用程序接口。
9.根据权利要求1、2所述的方法,其中,当在预定时间段内观测到应用程序接口调用时不执行所述获取步骤。
10.根据权利要求1、2所述的方法,其中,所述设备(100)是远程信息处理设备和移动电话中的一个。
11.一种用于在设备(100)上执行应用程序的系统,所述应用程序体现为计算机可执行指令,所述设备(100)包括 非易失性存储器(104),其包括存储包括所述应用程序的多个应用程序(214、212)的文件系统(106),并且还包括存储包括所述应用程序的备份拷贝的所述多个应用程序的多个备份拷贝(224、222)的备份存储空间(108); 被配置用于执行所述应用程序的处理模块(102); 由所述处理模块(102)利用来协助指令从所述应用程序到所述处理模块(102)的应用程序接(202),所述处理模块(102)还被配置为 从所述文件系统(106)获取(320、422)所述应用程序; 在所述处理模块(102)上执行(322、424)所述应用程序; 针对从所述应用程序到所述处理模块(102)的应用程序接口调用,对所述应用程序和所述处理模块(102)之间的交互进行监视(324、332、426、434); 基于针对所述应用程序接口调用进行的所述监视从所述备份存储空间(108)获取(318,418)所述应用程序的备份拷贝;以及 将所述应用程序的所述备份拷贝存储(320、422)在所述文件系统(106)中。
12.根据权利要求11所述的系统,其中,所述处理模块(102)还被配置用于确定(332、 434)在没有观测到应用程序接口调用的情况下所经过的时间量并将所述时间量与时间阈值相比较(332、434),其中,所述备份拷贝是在所述时间量超过所述时间阈值时获取的。
13.根据权利要求11、12所述的系统,其中,所述处理模块(102)还被配置为基于所述应用程序接口调用的所述监视来重建(316、416)所述文件系统(106)。
14.根据权利要求11、12所述的系统,其中,所述处理模块(102)还被配置为维护(334,436)指示所述处理模块(102)和所述应用程序之间的所述交互指示所述应用程序处于错误状态的次数的计数,其中,当预定的时间量过去而所述处理模块(102)没有观测到应用程序接口调用时错误状态发生。
15.根据权利要求14所述的系统,其中,所述处理模块(102)还被配置为在所述计数超过第一阈值时重建(416)所述文件系统(106),其中,在重建所述文件系统(106)之后从所述备份存储空间(108)获取所述应用程序的所述备份拷贝。
16.根据权利要求14所述的系统,其中,所述处理模块(102)还被配置为当所述计数超过第二阈值时关闭(446)所述设备(100),其中当所述计数超过所述第二阈值时不获取所述应用程序的所述备份拷贝。
17.根据权利要求11、12所述的系统,其中,所述处理模块(102)还被配置为在获取所述应用程序时或所述应用程序的执行开始时将所述应用程序链接(322、424)到所述应用程序接口。
18.根据权利要求11、12所述的系统,其中,所述处理模块(102)将所述应用程序动态地链接(322、424)到所述应用程序接口。
19.根据权利要求11、12所述的系统,其中,当在预定时间段内观测到应用程序接口调用时所述处理模块(102)不获取所述应用程序的所述备份拷贝。
20.根据权利要求11、12所述的系统,其中,所述设备(100)是远程信息处理设备和移动电话中的一个。
全文摘要
文件系统(106)存储应用程序。备份存储空间(108)存储应用程序的备份拷贝。处理模块(102)从文件系统(106)获取应用程序,利用用于协助指令从应用程序到处理模块(102)的程序接口(202)执行应用程序,针对从应用程序到处理模块(102)的应用程序接口调用来监视应用程序和处理模块(102)之间的交互,以及基于针对应用程序接口调用进行的监视从备份存储空间(108)获取应用程序的备份拷贝。
文档编号G06F9/46GK102750200SQ20121008547
公开日2012年10月24日 申请日期2012年3月28日 优先权日2011年3月29日
发明者W·杨, 柴田广明, 筱田浩司 申请人:株式会社电装, 电装国际美国公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1