CN108345496B - 一种运行应用程序的方法及装置 - Google Patents
一种运行应用程序的方法及装置 Download PDFInfo
- Publication number
- CN108345496B CN108345496B CN201710058876.5A CN201710058876A CN108345496B CN 108345496 B CN108345496 B CN 108345496B CN 201710058876 A CN201710058876 A CN 201710058876A CN 108345496 B CN108345496 B CN 108345496B
- Authority
- CN
- China
- Prior art keywords
- application program
- running
- process virtual
- terminal device
- application
- 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
Images
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种运行应用程序的方法及装置,涉及计算机领域,能在沙箱层级实现运行多进程的应用程序所需的所有资源由该应用程序维护。该方法包括:获取待运行的应用程序的配置文件;根据该配置文件,创建第一进程虚拟机,在第一进程虚拟机中加载并运行第一程序代码(基于外核操作***实现的维护应用程序的至少两个功能单元交互的应用程序的数据的进程管理单元),以在操作***中形成沙箱,运行第一程序代码的第一进程虚拟机运行在沙箱中;根据该配置文件,在沙箱中创建至少两个第二进程虚拟机,在每个第二进程虚拟机中加载并运行一个第二程序代码(基于外核操作***实现的应用程序的一个功能单元),以在沙箱中运行该应用程序。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种运行应用程序的方法及装置。
背景技术
传统的软件***中,终端设备运行应用程序所需的所有资源由终端设备的操作***(Operating System,OS)维护,终端设备运行应用程序时可以通过***调用访问这些资源。当这些资源由应用程序维护时,支持应用程序运行的可以提供类操作***功能的与应用程序链接在一起的运行库可以称为外核操作***或库操作***(library operationsystem,LibOS)。
当前的LibOS项目中,Graphene LibOS可以支持多进程的应用程序。该多进程的应用程序中,运行在终端设备的一个OS进程中的一个进程可以称为一个微进程,即该多进程的应用程序包括运行在终端设备的多个OS进程中的多个微进程。通常,每个微进程是通过终端设备的OS中的一个后台进程来启动的,且多个微进程启动后会在终端设备的OS进程的一个沙箱(Sandbox)中运行,以及该沙箱中每个微进程的状态信息和资源管理均由终端设备的OS维护。
然而,当Graphene LibOS支持的多进程的应用程序运行在沙箱中时,由于沙箱中每个微进程的状态信息和资源管理均由终端设备的OS维护,即沙箱中每个微进程的状态信息和资源管理无法由应用程序维护,因此Graphene LibOS无法在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。
发明内容
本申请提供一种运行应用程序的方法及装置,能够在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种运行应用程序的方法,该方法可以包括:获取待运行的应用程序的配置文件,该配置文件用于指示创建进程虚拟机(包括第一进程虚拟机和第二进程虚拟机)所需的资源,然后根据该配置文件,创建第一进程虚拟机,并在第一进程虚拟机中加载并运行第一程序代码(即基于外核操作***实现的用于维护该应用程序的至少两个功能单元之间交互的该应用程序的数据的进程管理单元),以在操作***中形成沙箱,运行有第一程序代码的第一进程虚拟机运行在该沙箱中,以及根据该配置文件,在该沙箱中创建至少两个第二进程虚拟机,并在至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码(即基于外核操作***实现的应用程序的一个功能单元),以在该沙箱中运行该应用程序。
本申请提供的运行应用程序的方法中,一方面,由于第一程序代码为基于外核操作***实现的进程管理单元,且第一程序代码运行于第一进程虚拟机中,而外核操作***可以实现运行应用程序所需的资源均由该应用程序自己维护,因此当本发明实施例中的进程管理单元基于外核操作***实现时,在第一进程虚拟机中运行该进程管理单元所需的资源可以由该进程管理单元维护,即运行该进程管理单元所需的资源无需由操作***维护。另一方面,由于第二程序代码为基于外核操作***实现的应用程序的一个功能单元,且一个第二程序代码运行于一个第二进程虚拟机中,而外核操作***可以实现运行应用程序所需的资源均由该应用程序自己维护,因此当本发明实施例中应用程序的各个功能单元基于外核操作***实现时,在各个第二进程虚拟机中运行该应用程序的一个功能单元所需的资源可以由该应用程序的该功能单元维护,即运行该应用程序的各个功能单元所需的资源无需由操作***维护。并且,由于进程管理单元和应用程序的至少两个功能单元均运行于沙箱中,且进程管理单元用于维护至少两个功能单元之间交互的应用程序的数据,因此,该沙箱中应用程序的至少两个功能单元之间交互的应用程序的数据也无需由操作***维护。从而本申请提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。
进一步的,由于本申请中提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护,因此,在将该应用程序从一个设备(例如当前运行该应用程序的设备)迁移到另外一个设备(例如目标设备)时,可以将当前运行该应用程序的设备的操作***中运行的沙箱中的数据也全部迁移到目标设备的操作***中运行的沙箱中,从而可以不中断该应用程序提供的服务(例如该应用程序为使用该应用程序的用户提供的服务)。
在第一方面的第一种可能的实现方式中,本申请提供的运行应用程序的方法还可以包括:确定上述应用程序待迁移的目标设备,并将上述应用程序从当前运行上述应用程序的设备迁移到目标设备。
本申请提供的运行应用程序的方法中,由于可以确定上述应用程序待迁移的目标设备,并将上述应用程序从当前运行上述应用程序的设备迁移到目标设备,因此在当前运行上述应用程序的设备的内存不足(即当前运行上述应用程序的设备的剩余内存不足以运行该应用程序)时,可以将上述应用程序从当前运行上述应用程序的设备迁移到内存比较充足的目标设备(即目标设备的剩余内存足以运行该应用程序),以保证上述应用程序的正常运行。
在第一方面的第二种可能的实现方式中,将上述应用程序从当前运行上述应用程序的设备迁移到目标设备的方法可以包括:将上述应用程序的配置文件、第一程序代码(即基于外核操作***实现的用于管理该应用程序的至少两个功能单元的进程管理单元)和至少两个第二程序代码(即基于外核操作***实现的该应用程序的一个功能单元),从当前运行上述应用程序的设备拷贝到目标设备;然后在目标设备上运行上述应用程序,其中,在目标设备上运行上述应用程序的方法与在源设备上运行上述应用程序的方法相同。
本申请中,由于在目标设备上运行上述应用程序的方法与在当前运行上述应用程序的设备上运行上述应用程序的方法相同,因此使用本申请提供的运行应用程序的方法在目标设备上运行上述应用程序时,同样可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。
在第一方面的第二种可能的实现方式中,本申请提供的运行应用程序的方法还可以包括:将当前运行上述应用程序的设备上第一进程虚拟机中的进程管理单元的数据同步到目标设备上的该第一进程虚拟机;对当前运行上述应用程序的设备上至少两个第二进程虚拟机中的每个第二进程虚拟机,执行下述步骤:将当前运行上述应用程序的设备上至少两个第二进程虚拟机中一个第二进程虚拟机中的上述应用程序的数据同步到目标设备上的该一个第二进程虚拟机。
由于本申请提供的运行应用程序的方法,可以在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护,且由于本申请中可以将当前运行上述应用程序的设备上第一进程虚拟机中的进程管理单元的数据同步到目标设备上的该第一进程虚拟机;并且可以对当前运行上述应用程序的设备上至少两个第二进程虚拟机中的每个第二进程虚拟机,执行下述步骤:将当前运行上述应用程序的设备上至少两个第二进程虚拟机中一个第二进程虚拟机中的上述应用程序的数据同步到目标设备上的该一个第二进程虚拟机,因此,可以将当前运行上述应用程序的设备的操作***中运行的沙箱中的数据全部迁移到目标设备的操作***中运行的沙箱中。此时,如果再中断当前运行上述应用程序的设备的操作***中运行的该应用程序,则能够在当前运行上述应用程序的设备将该应用程序从当前运行上述应用程序的设备迁移到目标设备时,不中断该应用程序为使用该应用程序的用户提供的服务。
第二方面,提供一种运行应用程序的装置,该装置可以包括:获取模块和运行模块。其中,获取模块用于获取待运行的应用程序的用于指示创建进程虚拟机(包括第一进程虚拟机和至少两个第二进程虚拟机)所需的资源的配置文件;运行模块用于根据获取模块获取的该配置文件,创建第一进程虚拟机,并在第一进程虚拟机中加载并运行第一程序代码(即基于外核操作***实现的用于维护该应用程序的至少两个功能单元之间交互的该应用程序的数据的进程管理单元),以在该操作***中形成沙箱,运行有第一程序代码的第一进程虚拟机运行在该沙箱中;运行模块还用于根据获取模块获取的该配置文件,在沙箱中创建至少两个第二进程虚拟机,并在至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码(即基于外核操作***实现的该应用程序的一个功能单元),以在该沙箱中运行该应用程序。
在第二方面的第一种可能的实现方式中,该装置还可以包括:确定模块和迁移模块。其中,确定模块用于确定运行模块运行的上述应用程序待迁移的目标设备;迁移模块用于将上述应用程序从当前运行上述应用程序的设备迁移到确定模块确定的目标设备。
在第二方面的第二种可能的实现方式中,迁移模块具体用于将获取模块获取的上述应用程序的配置文件、运行模块加载并运行的第一程序代码和(即基于外核操作***实现的用于管理该应用程序的至少两个功能单元的进程管理单元)至少两个第二程序代码(即基于外核操作***实现的该应用程序的一个功能单元),从当前运行上述应用程序的设备拷贝到确定模块确定的目标设备,以使得目标设备在目标设备上运行上述应用程序,其中,迁移模块在目标设备上运行上述应用程序的方法与该装置在当前运行上述应用程序的设备上运行上述应用程序的方法相同。
在第二方面的第三种可能的实现方式中,该装置还可以包括同步模块。同步模块用于将当前运行上述应用程序的设备上运行模块创建的第一进程虚拟机中的进程管理单元的数据同步到目标设备上的该第一进程虚拟机;对当前运行上述应用程序的设备上至少两个第二进程虚拟机中的每个第二进程虚拟机:同步模块还用于将当前运行上述应用程序的设备上运行模块创建的至少两个第二进程虚拟机中一个第二进程虚拟机中的上述应用程序的数据同步到目标设备上的该一个第二进程虚拟机。
对于第二方面或其任意一种可能的实现方式的技术效果的描述具体可以参见上述对第一方面或其任意一种可能的实现方式的技术效果的相关描述,此处不再赘述。
第三方面,提供一种运行应用程序的装置,该装置可以包括处理器和存储器。其中,存储器用于存储计算机执行指令,当运行应用程序的装置运行时,处理器执行存储器存储的计算机执行指令,以使运行应用程序的装置执行上述第一方面或其可选的实现方式所述的运行应用程序的方法。
第四方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有一个或多个程序,该一个或多个程序包括计算机执行指令,当上述运行应用程序的装置的处理器执行该指令时,该运行应用程序的装置执行上述第一方面或其可选的实现方式所述的运行应用程序的方法。
对于上述第三方面和第四方面的技术效果的描述具体可以参见上述对第一方面或其任意一种可能的实现方式的技术效果的描述,此处不再赘述。
第五方面,提供一种设备,该设备的操作***中运行有沙箱,该沙箱中运行有一个第一进程虚拟机和至少两个第二进程虚拟机;该第一进程虚拟机,用于加载并运行第一程序代码(即基于外核操作***实现的用于维护应用程序的至少两个功能单元之间交互的该应用程序的数据的进程管理单元);至少两个第二进程虚拟机中的每个第二进程虚拟机,用于加载并运行一个第二程序代码(即基于外核操作***实现的应用程序的一个功能单元)。
对于第五方面的技术效果的描述具体可以参见上述对第一方面的技术效果的相关描述,此处不再赘述。
附图说明
图1为本发明实施例提供的一种计算机的硬件结构示意图;
图2为本发明实施例提供的一种终端设备的操作***的架构示意图;
图3为本发明实施例提供的一种运行应用程序的方法示意图一;
图4为本发明实施例提供的一种运行应用程序的方法示意图二;
图5为本发明实施例提供的一种运行应用程序的方法示意图三;
图6为本发明实施例提供的一种运行应用程序的方法示意图四;
图7为本发明实施例提供的一种运行应用程序的装置的结构示意图一;
图8为本发明实施例提供的一种运行应用程序的装置的结构示意图二;
图9为本发明实施例提供的一种运行应用程序的装置的结构示意图三。
具体实施方式
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本发明实施例中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。例如,第一进程虚拟机和第二进程虚拟机是用于区别不同进程虚拟机,而不是用于描述进程虚拟机的特定顺序。
在本发明的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个终端设备是指两个或两个以上终端设备。
通常,在当前的LibOS项目中,Graphene LibOS可以支持多进程的应用程序。该多进程的应用程序包括运行在终端设备的多个OS进程中的多个微进程。其中,每个微进程是通过终端设备的OS中的一个后台进程来启动的,且多个微进程启动后会在终端设备的OS进程的一个沙箱中运行,以及该沙箱中每个微进程的状态信息和资源管理均由终端设备的OS维护。然而,当Graphene LibOS支持的多进程的应用程序运行在沙箱中时,由于沙箱中每个微进程的状态信息和资源管理均由终端设备的OS维护,即沙箱中每个微进程的状态信息和资源管理无法由应用程序维护,因此Graphene LibOS无法在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。
为了解决上述问题,本发明实施例提供一种运行应用程序的方法及装置,能够在沙箱层级实现运行多进程的应用程序所需的所有资源均由该应用程序维护。
具体的,本发明实施例提供的运行应用程序的方法及装置将在下述实施例中进行详细的说明。
本发明实施例提供一种运行应用程序的方法及装置,该方法及装置可以应用于设备。该设备可以为终端设备或者其他设备。例如,本发明实施例的下述描述中当前运行该应用程序的设备可以为终端设备。在迁移该应用程序的过程中,该应用程序待迁移的设备可以为目标设备。具体的,在将该应用程序从当前运行该应用程序的设备迁移到目标设备的过程中,当前运行该应用程序的设备也可以称为源终端设备,该应用程序待迁移的设备也可以称为目标终端设备。
可选的,上述终端设备可以为具有操作***的智能终端设备。示例性的,该智能终端设备可以为:计算机、智能手机、服务器、平板电脑、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)、智能手表、智能手环等,或者该智能终端设备还可以为其他类型的智能终端设备,本发明实施例不作具体限制。
上述智能终端设备均具有独立的操作***,例如智能终端设备可以具有Android操作***、iOS操作***、Windows操作***、Unix操作***、Linux操作***、Mac操作***或者其他的操作***,本发明实施例不作具体限制。
示例性的,以本发明实施例提供的终端设备为计算机为例进行说明。下面将结合图1对该计算机的各个构成部件进行具体的介绍。如图1所示,该计算机包括:处理器01、存储器02、输入单元03和输出单元04等。本领域技术人员可以理解,图1中示出的计算机的结构并不构成对计算机的限定,其可以包括比如图1所示的部件更多或更少的部件,或者可以组合如图1所示的部件中的某些部件,或者可以与如图1所示的部件布置不同。
处理器01是计算机的控制中心,利用各种接口和线路连接整个计算机的各个部分,通过运行或执行存储在存储器02内的软件程序和/或模块,以及调用存储在存储器02内的数据,执行计算机的各种功能和处理数据,从而对计算机进行整体监控。其中,上述处理器01可以为中央处理器(central processing unit,CPU)。上述处理器01还可以为其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器02可用于存储软件程序以及模块,处理器01通过运行存储在存储器02的软件程序以及模块,从而执行计算机的各种功能应用以及数据处理。存储器02可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机的使用所创建的数据(比如音频数据、图像数据等)。此外,存储器02可以包括易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM);所述存储器02也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,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的相关描述。
可选的,该运行应用程序的装置还可以包括总线,该总线可以包括数据总线、电源总线、控制总线和信号状态总线等。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有一个或多个程序,该一个或多个程序包括计算机执行指令,当上述运行应用程序的装置的处理器执行该指令时,该运行应用程序的装置执行上述方法实施例所示的方法流程中终端设备(包括上述源终端设备)执行的各个步骤。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种运行应用程序的方法,其特征在于,所述方法包括:
获取待运行的应用程序的配置文件,所述配置文件用于指示创建进程虚拟机所需的资源,所述进程虚拟机包括第一进程虚拟机和至少两个第二进程虚拟机;
根据所述配置文件,创建所述第一进程虚拟机,并在所述第一进程虚拟机中加载并运行第一程序代码,以在操作***中形成沙箱,运行有所述第一程序代码的所述第一进程虚拟机运行在所述沙箱中,所述第一程序代码为基于外核操作***实现的进程管理单元;
根据所述配置文件,在所述沙箱中创建所述至少两个第二进程虚拟机,并在所述至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码,以在所述沙箱中运行所述应用程序,所述一个第二程序代码为基于所述外核操作***实现的所述应用程序的一个功能单元;
其中,所述进程管理单元用于维护所述应用程序的至少两个功能单元之间交互的所述应用程序的数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述应用程序待迁移的目标设备;
将所述应用程序从当前运行所述应用程序的设备迁移到所述目标设备。
3.根据权利要求2所述的方法,其特征在于,所述将所述应用程序从所述当前运行所述应用程序的设备迁移到所述目标设备,包括:
将所述配置文件、所述第一程序代码和至少两个所述第二程序代码,从所述当前运行所述应用程序的设备拷贝到所述目标设备;
在所述目标设备上运行所述应用程序,其中,在所述目标设备上运行所述应用程序的方法与在所述当前运行所述应用程序的设备上运行所述应用程序的方法相同。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述当前运行所述应用程序的设备上所述第一进程虚拟机中的所述进程管理单元的数据同步到所述目标设备上的所述第一进程虚拟机;
对所述当前运行所述应用程序的设备上所述至少两个第二进程虚拟机中的每个第二进程虚拟机,执行下述步骤:
将所述当前运行所述应用程序的设备上所述至少两个第二进程虚拟机中一个第二进程虚拟机中的所述应用程序的数据同步到所述目标设备上的所述一个第二进程虚拟机。
5.一种运行应用程序的装置,其特征在于,该装置包括:获取模块和运行模块;
所述获取模块,用于获取待运行的应用程序的配置文件,所述配置文件用于指示创建进程虚拟机所需的资源,所述进程虚拟机包括第一进程虚拟机和至少两个第二进程虚拟机;
所述运行模块,用于根据所述获取模块获取的所述配置文件,创建所述第一进程虚拟机,并在所述第一进程虚拟机中加载并运行第一程序代码,以在操作***中形成沙箱,运行有所述第一程序代码的所述第一进程虚拟机运行在所述沙箱中,所述第一程序代码为基于外核操作***实现的进程管理单元;
所述运行模块,还用于根据所述获取模块获取的所述配置文件,在所述沙箱中创建所述至少两个第二进程虚拟机,并在所述至少两个第二进程虚拟机中的每个第二进程虚拟机中加载并运行一个第二程序代码,以在所述沙箱中运行所述应用程序,所述一个第二程序代码为基于所述外核操作***实现的所述应用程序的一个功能单元;
其中,所述进程管理单元用于维护所述应用程序的至少两个功能单元之间交互的所述应用程序的数据。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:确定模块和迁移模块;
所述确定模块,用于确定所述运行模块运行的所述应用程序待迁移的目标设备;
所述迁移模块,用于将所述应用程序从当前运行所述应用程序的设备迁移到所述确定模块确定的所述目标设备。
7.根据权利要求6所述的装置,其特征在于,
所述迁移模块,具体用于将所述获取模块获取的所述配置文件、所述运行模块加载并运行的所述第一程序代码和至少两个所述第二程序代码,从所述当前运行所述应用程序的设备拷贝到所述确定模块确定的所述目标设备,以使得所述目标设备在所述目标设备上运行所述应用程序,其中,所述迁移模块在所述目标设备上运行所述应用程序的方法与所述装置在所述当前运行所述应用程序的设备上运行所述应用程序的方法相同。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:同步模块;
所述同步模块,用于将所述当前运行所述应用程序的设备上所述运行模块创建的所述第一进程虚拟机中的所述进程管理单元的数据同步到所述目标设备上的所述第一进程虚拟机;
对所述当前运行所述应用程序的设备上所述至少两个第二进程虚拟机中的每个第二进程虚拟机:
所述同步模块,还用于将所述当前运行所述应用程序的设备上所述运行模块创建的所述至少两个第二进程虚拟机中一个第二进程虚拟机中的所述应用程序的数据同步到所述目标设备上的所述一个第二进程虚拟机。
9.一种运行应用程序的装置,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机执行指令,当所述运行应用程序的装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述运行应用程序的装置执行如权利要求1至4任意一项所述的运行应用程序的方法。
10.一种终端设备,其特征在于,所述终端设备的操作***中运行有沙箱,所述沙箱中运行有一个第一进程虚拟机和至少两个第二进程虚拟机;
所述第一进程虚拟机,用于加载并运行第一程序代码,所述第一程序代码为基于外核操作***实现的进程管理单元;
所述至少两个第二进程虚拟机中的每个第二进程虚拟机,用于加载并运行一个第二程序代码,所述一个第二程序代码为基于所述外核操作***实现的应用程序的一个功能单元;
其中,所述进程管理单元用于维护所述应用程序的至少两个功能单元之间交互的所述应用程序的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710058876.5A CN108345496B (zh) | 2017-01-23 | 2017-01-23 | 一种运行应用程序的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710058876.5A CN108345496B (zh) | 2017-01-23 | 2017-01-23 | 一种运行应用程序的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345496A CN108345496A (zh) | 2018-07-31 |
CN108345496B true CN108345496B (zh) | 2020-12-15 |
Family
ID=62962157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710058876.5A Active CN108345496B (zh) | 2017-01-23 | 2017-01-23 | 一种运行应用程序的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345496B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491725B (zh) * | 2018-11-12 | 2022-12-27 | 火烈鸟网络(广州)股份有限公司 | 应用程序可交互多开方法和***、存储介质、电子设备 |
CN113297566B (zh) * | 2020-05-15 | 2024-04-02 | 阿里巴巴集团控股有限公司 | 沙箱实现方法、装置、设备和存储介质 |
CN114077519B (zh) * | 2020-08-21 | 2022-11-18 | 荣耀终端有限公司 | 一种***服务恢复方法、装置和电子设备 |
CN113010178B (zh) * | 2021-02-20 | 2024-05-14 | 北京字节跳动网络技术有限公司 | 应用程序运行控制方法、装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100459008B1 (ko) * | 2004-03-19 | 2004-12-03 | 유정선 | 도서관 운영시스템을 통한 도서신청 및 도서데이터 자동처리 방법 |
CN103309690A (zh) * | 2012-03-12 | 2013-09-18 | 联想(北京)有限公司 | 处理数据的方法和电子设备 |
CN103414589A (zh) * | 2013-08-13 | 2013-11-27 | 华为技术有限公司 | 一种管理资源信息的方法及装置 |
CN103493011A (zh) * | 2011-03-03 | 2014-01-01 | 微软公司 | 与库操作***的应用兼容性 |
CN103500104A (zh) * | 2013-09-09 | 2014-01-08 | 北京奇虎科技有限公司 | 一种沙箱界面的实现方法和装置 |
CN105427096A (zh) * | 2015-12-25 | 2016-03-23 | 北京奇虎科技有限公司 | 支付安全沙箱实现方法及***与应用程序监控方法及*** |
-
2017
- 2017-01-23 CN CN201710058876.5A patent/CN108345496B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100459008B1 (ko) * | 2004-03-19 | 2004-12-03 | 유정선 | 도서관 운영시스템을 통한 도서신청 및 도서데이터 자동처리 방법 |
CN103493011A (zh) * | 2011-03-03 | 2014-01-01 | 微软公司 | 与库操作***的应用兼容性 |
CN103309690A (zh) * | 2012-03-12 | 2013-09-18 | 联想(北京)有限公司 | 处理数据的方法和电子设备 |
CN103414589A (zh) * | 2013-08-13 | 2013-11-27 | 华为技术有限公司 | 一种管理资源信息的方法及装置 |
CN103500104A (zh) * | 2013-09-09 | 2014-01-08 | 北京奇虎科技有限公司 | 一种沙箱界面的实现方法和装置 |
CN105427096A (zh) * | 2015-12-25 | 2016-03-23 | 北京奇虎科技有限公司 | 支付安全沙箱实现方法及***与应用程序监控方法及*** |
Non-Patent Citations (1)
Title |
---|
不可信内核环境下的***安全技术研究;邓良;《中国博士学位论文全文数据库 信息科技辑》;20160815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108345496A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740943B2 (en) | Techniques for managing long-running tasks with a declarative provisioner | |
US10742694B2 (en) | Method for migrating data and terminal | |
CN108345496B (zh) | 一种运行应用程序的方法及装置 | |
US9791908B2 (en) | Systems and methods for protecting virtualized assets | |
EP3223151A1 (en) | Hot-handover method and device for operating systems, and mobile terminal | |
EP3014856B1 (en) | Coerced encryption on connected devices | |
CN109471626B (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
US20150154042A1 (en) | Computer system and control method for virtual machine | |
JP6123626B2 (ja) | 処理再開方法、処理再開プログラムおよび情報処理システム | |
US11799839B2 (en) | Cross-regional replication of keys | |
CN115686346A (zh) | 一种数据存储方法、设备及计算机可读存储介质 | |
CN107682389B (zh) | 一种执行网络请求的方法、终端及计算机可读存储介质 | |
EP3213198B1 (en) | Monitoring a mobile device application | |
US10540193B2 (en) | Software-defined microservices | |
AU2017232694B2 (en) | Method, apparatus, server and storage medium of erasing cloud host in cloud-computing environment | |
US10884818B2 (en) | Increasing processing capacity of virtual machines | |
CN110879701A (zh) | 工作流可视化配置方法、服务器、***及介质 | |
CN116414798A (zh) | 基于集群文件***的分布式一致性实现方法、装置及介质 | |
US20230126997A1 (en) | Database group management | |
CN113467656B (zh) | 一种屏幕触摸事件的通知方法和车机 | |
CN113760325B (zh) | 容器环境更新方法及装置 | |
CN108804258A (zh) | 数据恢复方法、装置、移动终端和存储介质 | |
CN112306373B (zh) | 一种集群扩容方法、***及电子设备和存储介质 | |
WO2021082893A1 (zh) | 桌面显示控制的方法、装置、终端及存储介质 | |
EP3871087B1 (en) | Managing power request during cluster operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |