一种运行应用程序的方法及装置与流程

文档序号:15076531发布日期:2018-08-01 01:51阅读:139来源:国知局

本发明涉及计算机领域,尤其涉及一种运行应用程序的方法及装置。



背景技术:

传统的软件系统中,终端设备运行应用程序所需的所有资源由终端设备的操作系统(operatingsystem,os)维护,终端设备运行应用程序时可以通过系统调用访问这些资源。当这些资源由应用程序维护时,支持应用程序运行的可以提供类操作系统功能的与应用程序链接在一起的运行库可以称为外核操作系统或库操作系统(libraryoperationsystem,libos)。

当前的libos项目中,graphenelibos可以支持多进程的应用程序。该多进程的应用程序中,运行在终端设备的一个os进程中的一个进程可以称为一个微进程,即该多进程的应用程序包括运行在终端设备的多个os进程中的多个微进程。通常,每个微进程是通过终端设备的os中的一个后台进程来启动的,且多个微进程启动后会在终端设备的os进程的一个沙箱(sandbox)中运行,以及该沙箱中每个微进程的状态信息和资源管理均由终端设备的os维护。

然而,当graphenelibos支持的多进程的应用程序运行在沙箱中时,由于沙箱中每个微进程的状态信息和资源管理均由终端设备的os维护,即沙箱中每个微进程的状态信息和资源管理无法由应用程序维护,因此graphenelibos无法在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。



技术实现要素:

本申请提供一种运行应用程序的方法及装置,能够在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。

为达到上述目的,本申请采用如下技术方案:

第一方面,提供一种运行应用程序的方法,该方法可以包括:获取待运行的应用程序的配置文件,该配置文件用于指示创建进程虚拟机(包括第一进程虚拟机和第二进程虚拟机)所需的资源,然后根据该配置文件,创建第一进程虚拟机,并在第一进程虚拟机中加载并运行第一程序代码(即基于外核操作系统实现的用于维护该应用程序的至少两个功能单元之间交互的该应用程序的数据的进程管理单元),以在操作系统中形成沙箱,运行有第一程序代码的第一进程虚拟机运行在该沙箱中,以及根据该配置文件,在该沙箱中创建至少两个第二进程虚拟机,并在至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码(即基于外核操作系统实现的应用程序的一个功能单元),以在该沙箱中运行该应用程序。

本申请提供的运行应用程序的方法中,一方面,由于第一程序代码为基于外核操作系统实现的进程管理单元,且第一程序代码运行于第一进程虚拟机中,而外核操作系统可以实现运行应用程序所需的资源均由该应用程序自己维护,因此当本发明实施例中的进程管理单元基于外核操作系统实现时,在第一进程虚拟机中运行该进程管理单元所需的资源可以由该进程管理单元维护,即运行该进程管理单元所需的资源无需由操作系统维护。另一方面,由于第二程序代码为基于外核操作系统实现的应用程序的一个功能单元,且一个第二程序代码运行于一个第二进程虚拟机中,而外核操作系统可以实现运行应用程序所需的资源均由该应用程序自己维护,因此当本发明实施例中应用程序的各个功能单元基于外核操作系统实现时,在各个第二进程虚拟机中运行该应用程序的一个功能单元所需的资源可以由该应用程序的该功能单元维护,即运行该应用程序的各个功能单元所需的资源无需由操作系统维护。并且,由于进程管理单元和应用程序的至少两个功能单元均运行于沙箱中,且进程管理单元用于维护至少两个功能单元之间交互的应用程序的数据,因此,该沙箱中应用程序的至少两个功能单元之间交互的应用程序的数据也无需由操作系统维护。从而本申请提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。

进一步的,由于本申请中提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护,因此,在将该应用程序从一个设备(例如当前运行该应用程序的设备)迁移到另外一个设备(例如目标设备)时,可以将当前运行该应用程序的设备的操作系统中运行的沙箱中的数据也全部迁移到目标设备的操作系统中运行的沙箱中,从而可以不中断该应用程序提供的服务(例如该应用程序为使用该应用程序的用户提供的服务)。

在第一方面的第一种可能的实现方式中,本申请提供的运行应用程序的方法还可以包括:确定上述应用程序待迁移的目标设备,并将上述应用程序从当前运行上述应用程序的设备迁移到目标设备。

本申请提供的运行应用程序的方法中,由于可以确定上述应用程序待迁移的目标设备,并将上述应用程序从当前运行上述应用程序的设备迁移到目标设备,因此在当前运行上述应用程序的设备的内存不足(即当前运行上述应用程序的设备的剩余内存不足以运行该应用程序)时,可以将上述应用程序从当前运行上述应用程序的设备迁移到内存比较充足的目标设备(即目标设备的剩余内存足以运行该应用程序),以保证上述应用程序的正常运行。

在第一方面的第二种可能的实现方式中,将上述应用程序从当前运行上述应用程序的设备迁移到目标设备的方法可以包括:将上述应用程序的配置文件、第一程序代码(即基于外核操作系统实现的用于管理该应用程序的至少两个功能单元的进程管理单元)和至少两个第二程序代码(即基于外核操作系统实现的该应用程序的一个功能单元),从当前运行上述应用程序的设备拷贝到目标设备;然后在目标设备上运行上述应用程序,其中,在目标设备上运行上述应用程序的方法与在源设备上运行上述应用程序的方法相同。

本申请中,由于在目标设备上运行上述应用程序的方法与在当前运行上述应用程序的设备上运行上述应用程序的方法相同,因此使用本申请提供的运行应用程序的方法在目标设备上运行上述应用程序时,同样可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。

在第一方面的第二种可能的实现方式中,本申请提供的运行应用程序的方法还可以包括:将当前运行上述应用程序的设备上第一进程虚拟机中的进程管理单元的数据同步到目标设备上的该第一进程虚拟机;对当前运行上述应用程序的设备上至少两个第二进程虚拟机中的每个第二进程虚拟机,执行下述步骤:将当前运行上述应用程序的设备上至少两个第二进程虚拟机中一个第二进程虚拟机中的上述应用程序的数据同步到目标设备上的该一个第二进程虚拟机。

由于本申请提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护,且由于本申请中可以将当前运行上述应用程序的设备上第一进程虚拟机中的进程管理单元的数据同步到目标设备上的该第一进程虚拟机;并且可以对当前运行上述应用程序的设备上至少两个第二进程虚拟机中的每个第二进程虚拟机,执行下述步骤:将当前运行上述应用程序的设备上至少两个第二进程虚拟机中一个第二进程虚拟机中的上述应用程序的数据同步到目标设备上的该一个第二进程虚拟机,因此,可以将当前运行上述应用程序的设备的操作系统中运行的沙箱中的数据全部迁移到目标设备的操作系统中运行的沙箱中。此时,如果再中断当前运行上述应用程序的设备的操作系统中运行的该应用程序,则能够在当前运行上述应用程序的设备将该应用程序从当前运行上述应用程序的设备迁移到目标设备时,不中断该应用程序为使用该应用程序的用户提供的服务。

第二方面,提供一种运行应用程序的装置,该装置可以包括:获取模块和运行模块。其中,获取模块用于获取待运行的应用程序的用于指示创建进程虚拟机(包括第一进程虚拟机和至少两个第二进程虚拟机)所需的资源的配置文件;运行模块用于根据获取模块获取的该配置文件,创建第一进程虚拟机,并在第一进程虚拟机中加载并运行第一程序代码(即基于外核操作系统实现的用于维护该应用程序的至少两个功能单元之间交互的该应用程序的数据的进程管理单元),以在该操作系统中形成沙箱,运行有第一程序代码的第一进程虚拟机运行在该沙箱中;运行模块还用于根据获取模块获取的该配置文件,在沙箱中创建至少两个第二进程虚拟机,并在至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码(即基于外核操作系统实现的该应用程序的一个功能单元),以在该沙箱中运行该应用程序。

在第二方面的第一种可能的实现方式中,该装置还可以包括:确定模块和迁移模块。其中,确定模块用于确定运行模块运行的上述应用程序待迁移的目标设备;迁移模块用于将上述应用程序从当前运行上述应用程序的设备迁移到确定模块确定的目标设备。

在第二方面的第二种可能的实现方式中,迁移模块具体用于将获取模块获取的上述应用程序的配置文件、运行模块加载并运行的第一程序代码和(即基于外核操作系统实现的用于管理该应用程序的至少两个功能单元的进程管理单元)至少两个第二程序代码(即基于外核操作系统实现的该应用程序的一个功能单元),从当前运行上述应用程序的设备拷贝到确定模块确定的目标设备,以使得目标设备在目标设备上运行上述应用程序,其中,迁移模块在目标设备上运行上述应用程序的方法与该装置在当前运行上述应用程序的设备上运行上述应用程序的方法相同。

在第二方面的第三种可能的实现方式中,该装置还可以包括同步模块。同步模块用于将当前运行上述应用程序的设备上运行模块创建的第一进程虚拟机中的进程管理单元的数据同步到目标设备上的该第一进程虚拟机;对当前运行上述应用程序的设备上至少两个第二进程虚拟机中的每个第二进程虚拟机:同步模块还用于将当前运行上述应用程序的设备上运行模块创建的至少两个第二进程虚拟机中一个第二进程虚拟机中的上述应用程序的数据同步到目标设备上的该一个第二进程虚拟机。

对于第二方面或其任意一种可能的实现方式的技术效果的描述具体可以参见上述对第一方面或其任意一种可能的实现方式的技术效果的相关描述,此处不再赘述。

第三方面,提供一种运行应用程序的装置,该装置可以包括处理器和存储器。其中,存储器用于存储计算机执行指令,当运行应用程序的装置运行时,处理器执行存储器存储的计算机执行指令,以使运行应用程序的装置执行上述第一方面或其可选的实现方式所述的运行应用程序的方法。

第四方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有一个或多个程序,该一个或多个程序包括计算机执行指令,当上述运行应用程序的装置的处理器执行该指令时,该运行应用程序的装置执行上述第一方面或其可选的实现方式所述的运行应用程序的方法。

对于上述第三方面和第四方面的技术效果的描述具体可以参见上述对第一方面或其任意一种可能的实现方式的技术效果的描述,此处不再赘述。

第五方面,提供一种设备,该设备的操作系统中运行有沙箱,该沙箱中运行有一个第一进程虚拟机和至少两个第二进程虚拟机;该第一进程虚拟机,用于加载并运行第一程序代码(即基于外核操作系统实现的用于维护应用程序的至少两个功能单元之间交互的该应用程序的数据的进程管理单元);至少两个第二进程虚拟机中的每个第二进程虚拟机,用于加载并运行一个第二程序代码(即基于外核操作系统实现的应用程序的一个功能单元)。

对于第五方面的技术效果的描述具体可以参见上述对第一方面的技术效果的相关描述,此处不再赘述。

附图说明

图1为本发明实施例提供的一种计算机的硬件结构示意图;

图2为本发明实施例提供的一种终端设备的操作系统的架构示意图;

图3为本发明实施例提供的一种运行应用程序的方法示意图一;

图4为本发明实施例提供的一种运行应用程序的方法示意图二;

图5为本发明实施例提供的一种运行应用程序的方法示意图三;

图6为本发明实施例提供的一种运行应用程序的方法示意图四;

图7为本发明实施例提供的一种运行应用程序的装置的结构示意图一;

图8为本发明实施例提供的一种运行应用程序的装置的结构示意图二;

图9为本发明实施例提供的一种运行应用程序的装置的结构示意图三。

具体实施方式

在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

本发明实施例中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。例如,第一进程虚拟机和第二进程虚拟机是用于区别不同进程虚拟机,而不是用于描述进程虚拟机的特定顺序。

在本发明的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个终端设备是指两个或两个以上终端设备。

通常,在当前的libos项目中,graphenelibos可以支持多进程的应用程序。该多进程的应用程序包括运行在终端设备的多个os进程中的多个微进程。其中,每个微进程是通过终端设备的os中的一个后台进程来启动的,且多个微进程启动后会在终端设备的os进程的一个沙箱中运行,以及该沙箱中每个微进程的状态信息和资源管理均由终端设备的os维护。然而,当graphenelibos支持的多进程的应用程序运行在沙箱中时,由于沙箱中每个微进程的状态信息和资源管理均由终端设备的os维护,即沙箱中每个微进程的状态信息和资源管理无法由应用程序维护,因此graphenelibos无法在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。

为了解决上述问题,本发明实施例提供一种运行应用程序的方法及装置,能够在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。

具体的,本发明实施例提供的运行应用程序的方法及装置将在下述实施例中进行详细的说明。

本发明实施例提供一种运行应用程序的方法及装置,该方法及装置可以应用于设备。该设备可以为终端设备或者其他设备。例如,本发明实施例的下述描述中当前运行该应用程序的设备可以为终端设备。在迁移该应用程序的过程中,该应用程序待迁移的设备可以为目标设备。具体的,在将该应用程序从当前运行该应用程序的设备迁移到目标设备的过程中,当前运行该应用程序的设备也可以称为源终端设备,该应用程序待迁移的设备也可以称为目标终端设备。

可选的,上述终端设备可以为具有操作系统的智能终端设备。示例性的,该智能终端设备可以为:计算机、智能手机、服务器、平板电脑、笔记本电脑、上网本、个人数字助理(personaldigitalassistant,pda)、智能手表、智能手环等,或者该智能终端设备还可以为其他类型的智能终端设备,本发明实施例不作具体限制。

上述智能终端设备均具有独立的操作系统,例如智能终端设备可以具有android操作系统、ios操作系统、windows操作系统、unix操作系统、linux操作系统、mac操作系统或者其他的操作系统,本发明实施例不作具体限制。

示例性的,以本发明实施例提供的终端设备为计算机为例进行说明。下面将结合图1对该计算机的各个构成部件进行具体的介绍。如图1所示,该计算机包括:处理器01、存储器02、输入单元03和输出单元04等。本领域技术人员可以理解,图1中示出的计算机的结构并不构成对计算机的限定,其可以包括比如图1所示的部件更多或更少的部件,或者可以组合如图1所示的部件中的某些部件,或者可以与如图1所示的部件布置不同。

处理器01是计算机的控制中心,利用各种接口和线路连接整个计算机的各个部分,通过运行或执行存储在存储器02内的软件程序和/或模块,以及调用存储在存储器02内的数据,执行计算机的各种功能和处理数据,从而对计算机进行整体监控。其中,上述处理器01可以为中央处理器(centralprocessingunit,cpu)。上述处理器01还可以为其他通用处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

上述存储器02可用于存储软件程序以及模块,处理器01通过运行存储在存储器02的软件程序以及模块,从而执行计算机的各种功能应用以及数据处理。存储器02可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机的使用所创建的数据(比如音频数据、图像数据等)。此外,存储器02可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);所述存储器02也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom),快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);所述存储器32还可以包括上述种类的存储器的组合。

输入单元03可用于接收输入的数字或字符信息,输入单元可以包括键盘、鼠标、触控板、轨迹球、数码化输入板及输入笔/指向器、触控莹幕、游戏控制器、游戏控制杆、麦克风、扫描器、条码阅读机以及网络摄影机等输入设备。

输出单元04可以包括打印机、扬声器以及显示器等输出设备。

如图1所示的计算机还可以包括总线、显卡、各种传感器等,在此不再赘述。

需要说明的是,以设备为终端设备为例,本发明实施例提供的运行应用程序的方法及装置所运行的应用程序可以为安装在该终端设备上的多进程的应用程序。通常多进程的应用程序包括至少两个功能单元以实现多进程应用程序的至少两个功能(其中,每个功能单元实现多进程应用程序的一个功能)。例如,本发明实施例中应用程序可以为安装在终端设备上的邮箱,邮箱的发送邮件的功能和邮箱的接收邮件的功能可以为该应用程序的两个功能单元。

本发明实施例提供的终端设备的操作系统中运行有沙箱,该沙箱中运行有一个第一进程虚拟机和至少两个第二进程虚拟机。第一进程虚拟机用于加载并运行第一程序代码,第一程序代码为基于外核操作系统实现的进程管理单元;每个第二进程虚拟机用于加载并运行一个第二程序代码,该第二程序代码为基于外核操作系统实现的应用程序的一个功能单元。其中,该进程管理单元可以用于维护该应用程序的至少两个功能单元之间交互的该应用程序的数据。示例性的,图2所示的终端设备的操作系统是以该应用程序包括四个功能单元为例进行说明的。如图2所示,在本发明实施例提供的终端设备的操作系统中运行有沙箱,沙箱中运行有一个第一进程虚拟机和四个第二进程虚拟机,第一进程虚拟机中运行有基于外核操作系统实现的进程管理单元(第一程序代码),每个第二进程虚拟机中分别运行有基于外核操作系统实现的应用程序的一个功能单元(一个第二程序代码)。图2中为了区分四个第二进程虚拟机中分别运行的基于外核操作系统实现的应用程序的四个功能单元,将该四个功能单元分别表示为功能单元1、功能单元2、功能单元3和功能单元4。

如图2所示,该沙箱中还可以包括一个通信通道,该通信通道可以用于传输该应用程序的四个功能单元之间交互的该应用程序的数据;例如,该通信通道可以用于传输功能单元1和功能单元2之间交互的该应用程序的数据。

由于图2中是以应用程序包括四个功能单元为例说明的,因此图2所示的沙箱中创建了四个第二进程虚拟机以加载并运行该应用程序的四个功能单元的程序代码。

示例性的,图2中的上述进程管理单元可以为实现监视器(moniter)功能的一个功能单元,该进程管理单元可以用于维护应用程序的四个功能单元之间交互的该应用程序的数据。

本发明实施例中,基于外核操作系统实现的进程管理单元可以理解为实现该进程管理单元的第一程序代码为基于外核操作系统的系统架构编程实现的。相应的,本发明实施例中,基于外核操作系统实现的应用程序的一个功能单元可以理解为实现该应用程序的一个功能单元的第一程序代码为基于外核操作系统的系统架构编程实现的。

进程是运行中的程序代码。本发明实施例中,当第一程序代码运行时可以称为一个第一进程,当一个第二程序代码运行时可以称为一个第二进程。

本发明实施例提供的运行应用程序的方法的执行主体可以为运行应用程序的装置。示例性的,该运行应用程序的装置可以为设备(例如,可以为上述的终端设备或者其他设备)、设备的操作系统,或者集成在设备中用于运行应用程序的功能模块。下面以该运行应用程序的方法的执行主体装置为终端设备为例,对本发明实施例提供的运行应用程序的方法进行示例性的说明。

如图3所示,本发明实施例提供一种运行应用程序的方法,该方法包括:

s101、终端设备获取待运行的应用程序的配置文件。

本发明实施例中,当使用终端设备的用户(例如系统管理员)需要在该终端设备中运行应用程序时,可以通过在该终端设备上的输入操作(例如双击该应用程序的图标)触发该终端设备运行该应用程序,当该终端设备接收到用户的输入操作时,该终端设备可以执行s101,即该终端设备可以获取待运行的应用程序的配置文件,以根据该配置文件运行该应用程序。

其中,该配置文件可以用于指示创建进程虚拟机所需的资源。该进程虚拟机可以包括第一进程虚拟机和至少两个第二进程虚拟机。

可选的,本发明实施例中,创建进程虚拟机所需的资源可以包括创建进程虚拟机所需的内存和创建进程虚拟机采用的驱动等。

可选的,该配置文件可以存储在终端设备的硬盘中。具体的,终端设备可以从该终端设备的硬盘中获取该配置文件。

s102、终端设备根据该配置文件创建第一进程虚拟机。

本发明实施例中,该配置文件可以指示创建第一进程虚拟机所需的资源(例如:创建第一进程虚拟机所需的内存和创建第一进程虚拟机采用的驱动等)。可选的,终端设备可以根据该配置文件创建第一进程虚拟机,例如该终端设备可以根据配置文件中指示的内存和驱动创建第一进程虚拟机。

s103、终端设备在第一进程虚拟机中加载并运行第一程序代码,以在终端设备的操作系统中形成沙箱。

其中,第一程序代码为基于外核操作系统实现的进程管理单元,运行有第一程序代码的第一进程虚拟机运行在沙箱中。

需要说明的是,本发明实施例中,上述基于外核操作系统实现的进程管理单元可以理解为实现该进程管理单元的第一程序代码为基于外核操作系统的系统架构编程实现的。由于第一进程虚拟机运行在沙箱中,且基于外核操作系统实现的进程管理单元运行在第一进程虚拟机中,因此可以理解进程管理单元运行在沙箱中。

本发明实施例中,上述进程管理单元可以为实现监视器功能的一个功能单元。

可选的,该第一程序代码可以以镜像文件的形式或者系统快照的形式保存在终端设备的硬盘中。

终端设备在第一进程虚拟机中加载并运行该第一程序代码的方法可以为:终端设备从终端设备的硬盘中加载以镜像文件的形式或者系统快照的形式保存的第一程序代码到第一进程虚拟机中,然后终端设备再在第一进程虚拟机中运行该第一程序代码。

沙箱是一个虚拟系统程序,是按照安全策略限制程序行为的运行环境。本发明实施例中的沙箱可以提供一个隔离的环境,以使得该沙箱中运行的应用程序或者进程虚拟机等不受其他沙箱的影响(具体可以为不受其他沙箱中运行的应用程序或者进程虚拟机等的影响)。示例性的,该沙箱可以为运行在该沙箱中的第一进程虚拟机和至少两个第二进程虚拟机提供一个隔离的环境,以使得该第一进程虚拟机和至少两个第二进程虚拟机可以不受其他沙箱中运行的进程虚拟机的影响。

s104、终端设备根据该配置文件在沙箱中创建至少两个第二进程虚拟机。

本发明实施例中,该配置文件还可以指示创建至少两个第二进程虚拟机中的每个第二进程虚拟机所需资源(例如,创建每个第二进程虚拟机所需的内存和创建每个第二进程虚拟机采用的驱动等)。其中,终端设备根据该配置文件创建每个第二进程虚拟机的方法与上述实施例中终端设备根据该配置文件创建第一进程虚拟机的方法类似,具体可以参见上述实施例中终端设备根据该配置文件创建第一进程虚拟机的方法,此处不再赘述。

s105、终端设备在至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码,以在所述沙箱中运行该应用程序。

其中,该一个第二程序代码为基于外核操作系统实现的该应用程序的一个功能单元。

示例性的,假设该应用程序为终端设备上安装的邮箱,邮箱的发送邮件的功能和邮箱的接收邮件的功能可以为该应用程序的两个功能单元。

由于本发明实施例中的应用程序为多进程应用程序,因此本发明实施例中,应用程序中至少可以包括两个功能单元,如此,终端设备需要创建至少两个第二进程虚拟机以加载并运行实现该应用程序的至少两个功能单元的程序代码,即上述的第二程序代码。

本发明实施例中,由于一个第二程序代码运行时可以称为一个第二进程,并且该第二程序代码为基于外核操作系统实现的该应用程序的一个功能单元,因此该第二进程可以实现该功能单元。

本发明实施例中,上述的进程管理单元可以用于维护应用程序的至少两个功能单元之间交互的应用程序的数据,具体的,该至少两个功能单元之间交互的应用程序的数据可以为实现该至少两个功能单元的至少两个第二进程之间的状态信息(例如,可以为该至少两个第二进程之间的关系)和该至少两个第二进程之间的资源管理信息(例如,可以为对该至少两个第二进程中的每个第二进程的名字管理的信息)。其中,上述至少两个第二进程之间的关系可以理解为:上述至少两个第二进程之间为父进程和子进程的关系;具体的,例如一个第二进程(可以称为进程a)由另一个第二进程(可以称为进程b)创建,那么进程a和进程b之间为父进程和子进程的关系,即进程b可以称为父进程,进程a可以称为子进程。

至此,终端设备可以在终端设备中运行该应用程序。

本发明实施例提供的运行应用程序的方法中,一方面,由于第一程序代码为基于外核操作系统实现的进程管理单元,且第一程序代码运行于第一进程虚拟机中,而外核操作系统可以实现运行应用程序所需的资源均由该应用程序自己维护,因此当本发明实施例中的进程管理单元基于外核操作系统实现时,在第一进程虚拟机中运行该进程管理单元所需的资源可以由该进程管理单元维护,即运行该进程管理单元所需的资源无需由该终端设备的操作系统维护。另一方面,由于第二程序代码为基于外核操作系统实现的应用程序的一个功能单元,且一个第二程序代码运行于一个第二进程虚拟机中,而外核操作系统可以实现运行应用程序所需的资源均由该应用程序自己维护,因此当本发明实施例中应用程序的各个功能单元基于外核操作系统实现时,在各个第二进程虚拟机中运行该应用程序的一个功能单元所需的资源可以由该应用程序的该功能单元维护,即运行该应用程序的各个功能单元所需的资源无需由该终端设备的操作系统维护。并且,由于进程管理单元和应用程序的至少两个功能单元均运行于沙箱中,且进程管理单元用于维护至少两个功能单元之间交互的应用程序的数据,因此,该沙箱中应用程序的至少两个功能单元之间交互的应用程序的数据也无需由终端设备的操作系统维护。从而本发明实施例提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。

进一步的,由于本申请提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护,因此,在将该应用程序从一个终端设备(例如源终端设备)迁移到另外一个终端设备(例如目标终端设备)时,可以将源终端设备的操作系统中运行的沙箱中的数据全部迁移到目标终端设备的操作系统中运行的沙箱中,从而可以不中断该应用程序提供的服务(例如该应用程序为使用该应用程序的用户提供的服务)。

本发明实施例中,上述s101-s105中所述的终端设备(即上述当前运行应用程序的设备)可以为多个终端设备组成的终端设备集群中的一个终端设备,当该终端设备的内存不足(即该终端设备的剩余内存不足以运行该应用程序)时,该终端设备可以将该终端设备上运行的应用程序迁移到终端设备集群中除该终端设备以外的内存比较充足(即该终端设备的剩余内存足以运行该应用程序)的其他终端设备(即上述的目标设备)上。在该终端设备将该终端设备上运行的应用程序迁移到终端设备集群中除该终端设备以外的内存比较充足的其他终端设备时,可以将该终端设备称为源终端设备,将该应用程序待迁移的内存比较充足的其他终端设备称为目标终端设备。当上述图3所示终端设备执行的s101-s105由源终端设备执行时,可以表示为如图4所示的s101'-s105'。

s101'、源终端设备获取待运行的应用程序的配置文件。

s102'、源终端设备根据该配置文件创建第一进程虚拟机。

s103'、源终端设备在第一进程虚拟机中加载并运行第一程序代码,以在源终端设备的操作系统中形成沙箱。

s104'、源终端设备根据该配置文件在沙箱中创建至少两个第二进程虚拟机。

s105'、源终端设备在至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码,以在所述沙箱中运行该应用程序。

需要说明的是,由于上述s101'-s105'所示的源终端设备运行应用程序的方法与上述s101-s105所示的终端设备运行应用程序的方法相同,因此对于s101'-s105'的描述,具体可以参见上述对s101-s105的描述,此处不再赘述。

可选的,如图4所示,在s105'之后,本发明实施例提供的运行应用程序的方法还可以包括下述的s106和s107:

s106、源终端设备确定该应用程序待迁移的目标终端设备。

可选的,源终端设备可以在终端设备集群中确定目标终端设备。源终端设备在终端设备集群中确定目标终端设备的方法可以为以下三种可能的实现方式中的一种。

第一种可能的实现方式是:系统管理员在终端设备集群中确定目标终端设备,并通知源终端设备该目标终端设备为终端设备集群中的哪一个终端设备。具体可以是:系统管理员可以获取该终端设备集群中的每个终端设备的内存使用信息,从而根据终端设备集群中的每个终端设备的内存使用信息,在终端设备集群中选择内存比较充足的一个终端设备作为目标终端设备,然后系统管理员可以通过操作管理软件或者在终端设备的命令行窗口中输入命令通知源终端设备该应用程序待迁移的目标终端设备的ip地址,如此源终端设备可以根据该目标终端设备的ip地址确定该应用程序待迁移的目标终端设备为终端设备集群中的哪一个终端设备。

第二种可能的实现方式是:源终端设备在终端设备集群中确定目标终端设备。具体可以是:源终端设备可以向终端设备集群中除源终端设备之外的其他终端设备(以下简称为其他终端设备)发送第一请求消息,以请求获取其他终端设备的内存使用信息。在其他终端设备接收到源终端设备发送的第一请求消息之后,可以将其内存使用信息发送给源终端设备,以使得源终端设备可以在接收到其他终端设备发送的内存使用信息之后,源终端设备可以根据其他终端设备的内存使用信息,在终端设备集群中确定内存比较充足的一个终端设备,并向该终端设备发送第二请求消息,以请求将源终端设备上运行的应用程序迁移到该终端设备,在该终端设备接收到第二请求消息之后,该终端设备可以向源终端设备发送用于表征同意源终端设备将源终端设备上运行的应用程序迁移到该终端设备的响应消息。如此在源终端设备接收到该响应消息之后,源终端设备可以将该终端设备作为目标终端设备。

第三种可能的实现方式是:终端设备集群的管理节点在终端设备集群中确定目标终端设备,并通知源终端设备该目标终端设备为终端设备集群中的哪一个终端设备。具体可以是:终端设备集群的管理节点获取该终端设备集群中除源终端设备之外的其他终端设备(以下简称为其他终端设备)的内存使用信息,然后根据其他终端设备的内存使用信息,在其他终端设备中选择内存比较充足的一个终端设备作为目标终端设备,并将该目标终端设备的ip地址发送给源终端设备,如此源终端设备可以根据该目标终端设备的ip地址确定该应用程序待迁移的目标终端设备为终端设备集群中的哪一个终端设备。

s107、源终端设备将该应用程序从源终端设备迁移到目标终端设备。

本发明实施例中,源终端设备在终端设备集群中确定出该应用程序待迁移的目标终端设备之后,源终端设备可以将该应用程序从该源终端设备迁移到该目标终端设备。

可选的,本发明实施例中图4所示的s107具体可以通过源终端设备与目标终端设备的交互实现,如图5所示,图4所示的s107可以通过s107a-s107c实现。

本发明实施例中,源终端设备为了将该应用程序从源终端设备迁移到目标终端设备,源终端设备首先会将该应用程序的配置文件、第一程序代码(第一程序代码为基于外核操作系统实现的用于管理该应用程序的至少两个功能单元的进程管理单元)和至少两个第二程序代码(第二程序代码为基于外核操作系统实现的该应用程序的一个功能单元)从源终端设备拷贝到目标终端设备。示例性的,源终端设备将该应用程序的配置文件、第一进程代码和至少两个第二程序代码,从源终端设备拷贝到目标终端设备可以通过下述s107a和s107b实现。

s107a、源终端设备向目标终端设备发送该应用程序的配置文件、第一程序代码和至少两个第二程序代码。

s107b、目标终端设备接收源终端设备发送的该应用程序的配置文件、第一程序代码和至少两个第二程序代码。

示例性的,源终端设备可以将该应用程序的配置文件、第一程序代码和至少两个第二程序代码发送至终端设备集群中的管理节点,然后通过该管理节点将该应用程序的配置文件、第一程序代码和至少两个第二程序代码转发给目标终端设备。

本发明实施例中,当目标终端设备执行s107b之后,目标终端设备还可以执行下述s107c。

s107c、目标终端设备在目标终端设备上运行该应用程序。

目标终端设备接收到源终端设备发送的该应用程序的配置文件、第一程序代码和至少两个第二程序代码之后,目标终端设备可以基于该应用程序的配置文件、该第一程序代码和该至少两个第二程序代码,在目标终端设备上运行该应用程序。

本发明实施例中,由于目标终端设备在目标终端设备上运行该应用程序的方法与源终端设备在源终端设备上运行该应用程序的方法相同,因此对于目标终端设备在目标终端设备上运行该应用程序的方法,可以参照上述方法实施例中s101'-s105'所示的源终端设备在源终端设备上运行该应用程序的方法,此处不再赘述。

进一步的,本发明实施例中,目标终端设备在目标终端设备上运行该应用程序之后,目标终端设备也创建了第一进程虚拟机和至少两个第二进程虚拟机,并且目标终端设备在第一进程虚拟机中加载并运行了第一程序代码,在至少两个第二进程虚拟机中的每一个第二进程虚拟机中加载并运行了一个第二程序代码。

本发明实施例中,为了使源终端设备将该应用程序从源终端设备迁移到目标终端设备时,不中断该应用程序提供的服务(例如该应用程序为使用该应用程序的用户提供的服务),可选的,如图6所示,在图4所示的s107之后,本发明实施例提供的运行应用程序的方法还可以包括下述的s108和s109。

s108、源终端设备将源终端设备上第一进程虚拟机中的进程管理单元的数据同步到目标终端设备上的第一进程虚拟机。

由于源终端设备上的第一进程虚拟机中的进程管理单元的数据为维护应用程序的至少两个功能单元之间交互的数据,因此,当源终端设备将该应用程序从源终端设备迁移到目标终端设备之后,为了保证不影响该应用程序的至少两个功能单元之间的交互,可以将源终端设备上的第一进程虚拟机中的进程管理单元的数据同步到目标终端设备上的第一进程虚拟机。

本发明实施例中,目标终端设备还可以对源终端设备上的至少两个第二进程虚拟机中的每个第二进程虚拟机,执行下述s109。

s109、源终端设备将源终端设备上至少两个第二进程虚拟机中一个第二进程虚拟机中的应用程序的数据同步到目标终端设备上的该一个第二进程虚拟机。

需要说明的是,本发明实施例中,上述s108还可以在目标终端设备在目标终端设备上运行该应用程序(s107c)的过程中,目标终端设备在目标终端设备上加载并运行第一程序代码之后执行。

可选的,本发明实施例中,上述s108具体可以通过下述s108a实现。

s108a、源终端设备在源终端设备上的第一进程虚拟机与目标终端设备上的第一进程虚拟机之间建立通信连接,并将源终端设备上第一进程虚拟机中的进程管理单元的数据同步到目标终端设备上的第一进程虚拟机。

可选的,本发明实施例中,上述s109具体可以通过下述s109a实现。

s109a、源终端设备在源终端设备上的至少两个第二进程虚拟机中一个第二进程虚拟机与目标终端设备上的该一个第二进程虚拟机之间建立通信连接,并将源终端设备上的该一个第二进程虚拟机中的应用程序的数据同步到目标终端设备上的该一个第二进程虚拟机。

本发明实施例中,将源终端设备上第一进程虚拟机中的进程管理单元的数据同步到目标终端设备上的第一进程虚拟机,可以理解为将源终端设备上第一进程虚拟机中的进程管理单元的数据实时拷贝到目标终端设备上的第一进程虚拟机,如此,可以使得源终端设备上第一进程虚拟机中的数据与目标终端设备上的第一进程虚拟机中的数据可以保持一致(例如,源终端设备上第一进程虚拟机中的数据与目标终端设备上的第一进程虚拟机中的数据可以在任意时刻保持一致)。

本发明实施例中,将源终端设备上的该一个第二进程虚拟机中的应用程序的数据同步到目标终端设备上的该一个第二进程虚拟机,可以理解为将源终端设备上的该一个第二进程虚拟机中的应用程序的数据实时拷贝到目标终端设备上的该一个第二进程虚拟机,如此,可以使得源终端设备上的该一个第二进程虚拟机中的数据与目标终端设备上的该一个第二进程虚拟机中的数据可以在任意时刻保持一致。

由于本发明实施例提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护,因此,在执行s108和s109之后,可以将源终端设备的操作系统中运行的沙箱中的数据全部迁移到目标终端设备的操作系统中运行的沙箱中,此时如果再中断源终端设备的操作系统中运行的该应用程序,则能够在源终端设备将该应用程序从源终端设备迁移到目标终端设备时,不中断该应用程序提供的服务(例如该应用程序为使用该应用程序的用户提供的服务)。

上述主要从运行应用程序的装置(例如,上述的终端设备或者源终端设备)的角度对本发明实施例提供的方案进行了介绍。可以理解的是终端设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本发明实施例可以根据上述方法实施例对运行应用程序的装置(例如上述的终端设备或者源终端设备)进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

示例性的,在采用对应各个功能划分各个功能模块的情况下,本发明实施例提供的运行应用程序的装置的结构示意图如图7所示。在图7中,该运行应用程序的装置可以包括:获取模块11和运行模块12。

其中,上述获取模块11,可以用于支持运行应用程序的装置执行上述方法实施例中终端设备执行的s101,或者可以用于支持运行应用程序的装置执行上述方法实施例中源终端设备执行的s101'。

上述运行模块12,可以用于支持运行应用程序的装置执行上述方法实施例中终端设备执行的s102、s103、s104和s105,或者可以用于支持运行应用程序的装置执行上述方法实施例中源终端设备执行的s102'、s103'、s104'和s105'。

可选的,结合图7,如图8所示,该运行应用程序的装置还可以包括:确定模块13和迁移模块14。

上述确定模块13,可以用于支持运行应用程序的装置执行上述方法实施例中源终端设备执行的s106。

上述迁移模块14,用于支持运行应用程序的装置执行上述方法实施例中源终端设备执行的s107(包括s107a)。

可选的,结合图8,如图9所示,该运行应用程序的装置还可以包括:同步模块15。

上述同步模块15,可以用于支持运行应用程序的装置执行上述方法实施例中源终端设备执行的s108(包括s108a)和s109(包括s109a)。

上述获取模块11、运行模块12、确定模块13、迁移模块14和同步模块15还可以用于执行本文所描述的技术的其它过程。

需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

示例性的,上述获取模块11、运行模块12、确定模块13、迁移模块14和同步模块15的功能,可以通过运行应用程序的装置中的处理器或控制器实现。可选的,该处理器或控制器的描述可以参见上述实施例中对如图1所示的计算机中的处理器01的相关描述。

上述运行应用程序的装置还可以包括存储器。可选的,该存储器的描述可以参见上述实施例中对图1所示的计算机中的存储器02的相关描述。

可选的,该运行应用程序的装置还可以包括总线,该总线可以包括数据总线、电源总线、控制总线和信号状态总线等。

本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有一个或多个程序,该一个或多个程序包括计算机执行指令,当上述运行应用程序的装置的处理器执行该指令时,该运行应用程序的装置执行上述方法实施例所示的方法流程中终端设备(包括上述源终端设备)执行的各个步骤。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1