CN109284166A - 执行程序的方法及装置、存储介质、工作站、终端 - Google Patents
执行程序的方法及装置、存储介质、工作站、终端 Download PDFInfo
- Publication number
- CN109284166A CN109284166A CN201710597919.7A CN201710597919A CN109284166A CN 109284166 A CN109284166 A CN 109284166A CN 201710597919 A CN201710597919 A CN 201710597919A CN 109284166 A CN109284166 A CN 109284166A
- Authority
- CN
- China
- Prior art keywords
- program
- shipped
- external
- line program
- system snapshot
- 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.)
- Pending
Links
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/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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
一种执行程序的方法及装置、存储介质、工作站、终端,所述方法包括以下步骤:模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。本发明方案可以提高终端执行程序的效率,减少终端需要执行的程序体积。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种执行程序的方法及装置、存储介质、工作站、终端。
背景技术
当运行大型程序或者大型的游戏项目时,在程序初始阶段往往包括大量初始化代码,初始化代码可以兼容性适用于不同类型的终端。
在现有技术中,每个终端都需要先执行程序中的初始化代码,进而执行程序中的剩余部分,效率有待提高。
发明内容
本发明解决的技术问题是提供一种执行程序的方法及装置、存储介质、工作站、终端,可以提高终端执行程序的效率,减少终端需要执行的程序体积。
为解决上述技术问题,本发明实施例提供一种执行程序的方法,包括以下步骤:模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
可选的,通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。
可选的,所述模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置包括:模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令,所述API调用指令用于调用外部资源;将所述首个API调用指令的位置作为所述待运行程序的外部调用位置。
可选的,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
可选的,所述***快照包括内存映像以及执行现场。
为解决上述技术问题,本发明实施例提供一种执行程序的方法,包括以下步骤:从工作站接收***快照和程序片段;恢复所述***快照,并且执行所述程序片段;其中,所述***快照是待运行程序被模拟运行至外部调用位置时生成的,所述外部调用位置是所述待运行程序首次调用外部资源的位置;所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
可选的,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
可选的,所述***快照包括内存映像以及执行现场。
为解决上述技术问题,本发明实施例提供一种执行程序的装置,包括:模拟运行模块,适于模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;发送模块,适于向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
可选的,所述模拟运行模块通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。
可选的,所述模拟运行模块包括:指令确定子模块,适于模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令,所述API调用指令用于调用外部资源;位置确定子模块,适于将所述首个API调用指令的位置作为所述待运行程序的外部调用位置。
可选的,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
可选的,所述***快照包括内存映像以及执行现场。
为解决上述技术问题,本发明实施例提供一种执行程序的装置,包括:接收模块,适于从工作站接收***快照和程序片段;恢复模块,适于恢复所述***快照,并且执行所述程序片段;其中,所述***快照是待运行程序被模拟运行至外部调用位置时生成的,所述外部调用位置是所述待运行程序首次调用外部资源的位置;所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
可选的,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
可选的,所述***快照包括内存映像以及执行现场。
为解决上述技术问题,本发明实施例提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述执行程序的方法的步骤。
为解决上述技术问题,本发明实施例提供一种工作站,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述执行程序的方法的步骤。
为解决上述技术问题,本发明实施例提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行上述执行程序的方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在本发明实施例中,模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。采用本发明实施例的方案,可以通过模拟运行待运行程序,在首次发生外部调用的位置生成***快照,并向终端发送程序片段,以使终端在恢复***快照后,获得相同的内存映像和执行现场,从而可以仅执行待运行程序在所述外部调用位置之后的剩余部分,相比于执行完整的待运行程序,可以提高终端执行的速度和效率,减少终端需要执行的程序体积。
进一步地,所述外部资源可以为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中可能发生改变的外部资源。在本发明实施例中,由于在模拟运行的过程中外部静态数据的内容为可知的并且是不发生改变的,因此可以对该外部静态数据进行模拟,而无需将首次调用所述外部静态数据的外部调用位置之后的程序留到终端进行运行,可以更好地提高终端执行的速度和效率,减少终端需要执行的程序体积。
进一步,所述待运行程序的外部调用位置可以是根据首个API调用指令的位置确定的,相比于人工预设外部调用位置,更加准确,对于用户经验的依赖度较低。
进一步,通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照,可以通过虚拟机运行在隔离环境中的特性,自动在调用外部资源的指令处停止执行,相比于人工预设或人工确认外部调用位置,更加准确并且效率更高。
附图说明
图1是本发明实施例中一种执行程序的方法的流程图;
图2是图1中步骤S11的一种具体实施方式的流程图;
图3是本发明实施例中一种执行程序的方法的数据流图;
图4是本发明实施例中另一种执行程序的方法的流程图;
图5是本发明实施例中另一种执行程序的方法的数据流图;
图6是本发明实施例中一种执行程序的装置的结构示意图;
图7是图6中模拟运行模块61的一种具体实施方式的结构示意图;
图8是本发明实施例中另一种执行程序的装置的结构示意图。
具体实施方式
在现有技术中,每个终端都需要先执行程序中大量的初始化代码,进而执行程序中的剩余部分,效率有待提高。
本发明的发明人经过研究发现,初始化代码执行后的结果对于不同的终端往往都是确定的,并且具有可预见性,由各个终端分别执行导致了计算力的浪费。如果将初始化代码执行后的结果作为初始状态,继续执行程序中的剩余部分,实际执行结果等价于执行原始的包含初始化代码的完整程序。
在本发明实施例中,模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。采用本发明实施例的方案,可以通过模拟运行待运行程序,在首次发生外部调用的位置生成***快照,并向终端发送程序片段,以使终端在恢复***快照后,获得相同的内存映像和执行现场,从而可以仅执行待运行程序在所述外部调用位置之后的剩余部分,相比于执行完整的待运行程序,可以提高终端执行的速度和效率,减少终端需要执行的程序体积。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
参照图1,图1是本发明实施例中一种执行程序的方法的流程图。所述执行程序的方法可以适用于工作站侧,可以包括步骤S11至步骤S12:
步骤S11:模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;
步骤S12:向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
在步骤S11的具体实施中,工作站端可以通过模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,从而确定仅模拟运行了初始化代码。具体而言,对于所述外部调用位置之前的程序,也即初始化代码,无论在工作站端还是各个终端进行运行,得到的结果都是一致的;对于所述外部调用位置之后的程序,由于需要对外部资源进行调用,得到的结果受到运行环境的影响,有可能不同。因此,模拟运行所述外部调用位置之前的程序,更有助于提高终端的执行效率。
具体地,所述外部资源可以包括外部静态数据和外部动态数据。其中,所述外部静态数据为在模拟运行所述待运行程序的过程中不可能发生改变的外部资源,例如为资源文件,由于在模拟运行的过程中外部静态数据的内容为可知的并且是不发生改变的,因此可以对该外部静态数据进行模拟。所述外部动态数据为在模拟运行所述待运行程序的过程中可能发生改变的外部资源,例如为硬件***的当前时间、调用摄像头、输入/输出(Input/Output,I/O)控制等,由于在模拟运行的过程中外部动态数据的内容可能发生改变,也即可视为不可知的,因此难以对该外部动态数据进行模拟。
进一步地,所述外部资源可以为外部动态数据,从而模拟运行待运行程序至所述待运行程序首次调用外部动态数据的外部调用位置,并在所述外部动态数据的外部调用位置生成***快照。
具体地,模拟运行首次调用所述外部动态数据的外部调用位置之前的程序,更有助于提高终端的执行效率。由于在模拟运行的过程中外部静态数据的内容为可知的并且是不发生改变的,因此可以对该外部静态数据进行模拟,而无需将首次调用所述外部静态数据的外部调用位置之后的程序留到终端进行运行,可以更好地提高终端执行的速度和效率,减少终端需要执行的程序体积。
更进一步地,所述外部动态数据可以为在模拟待运行程序中,发生无法预知的改变的外部资源。具体而言,如果所述改变是可以预知的,则仍然可以通过对改变后的结果进行模拟,得到所述预知的结果,从而避免将首次调用所述外部动态数据的外部调用位置之后的程序留到终端进行运行,可以更好地提高终端执行的速度和效率。
具体地,工作站端可以在所述外部调用位置生成***快照。
其中,所述***快照的内容可以包括内存映像以及执行现场(context)。进一步地,所述内存映像用于指示内存状态的数据集合;所述执行现场又称为上下文,用于指示一个线程在某个时刻运行状态的数据集合,可以包括堆栈以及寄存器状态等信息。
参照图2示出的步骤S11的一种具体实施方式,所述模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置可以包括步骤S21至步骤S22:
步骤S21:模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令,所述API调用指令用于调用外部资源;
步骤S22:将所述首个API调用指令的位置作为所述待运行程序的外部调用位置。
在具体实施中,通过调用应用程序编程接口(Application ProgrammingInterface,API),可以使应用程序与硬件之间实现交互,从而调用外部资源。
具体而言,对于首个API调用指令之前的程序,也即初始化代码,无论在工作站端还是各个终端进行运行,得到的结果都往往是一致的;对于首个API调用指令之后的程序,由于执行该API调用指令时需要与硬件之间实现交互,在工作站端或者各个终端得到的结果受到运行环境的影响,有可能不同。因此,可以将首个API调用指令的位置作为所述待运行程序的外部调用位置。
继续参照图1,在步骤S11的具体实施中,可以通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。所述虚拟机可以外接于工作站,或者运行在工作站端。
可以理解的是,由于虚拟机(Virtual Machine,VM)为通过软件模拟的具有完整硬件***功能的、运行在隔离环境中的计算机***,所以虚拟机无法执行调用外部资源的指令,例如API调用指令。当通过虚拟机模拟运行待运行程序,并且待运行程序中包含有调用外部资源的指令时,虚拟机将在该指令处自动停止执行。相比于人工预设或人工确认外部调用位置,更加准确并且效率更高。
在步骤S12的具体实施中,工作站根据所述外部调用位置创建程序片段,并且将所述***快照和程序片段发送至终端。其中,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。程序片段可以单独发送至终端,也可以在整个待运行程序中发送至终端。例如,在一个变化例中,可以将整个待运行程序发送至终端,由终端确定从何处开始执行,如果***快照恢复成功则从外部调用位置开始执行,如果***快照恢复不成功则从待运行程序的开头开始执行。
具体而言,当通过人工预设外部调用位置,从而预先确定初始化代码时,还可以采用人工更改程序代码,将初始化代码全部归纳进单个特殊函数中,进而在工作站侧运行该特殊函数以执行初始化代码。
例如将该特殊函数命名为static_initialize,则在现有技术中,每个终端都需要先执行程序中的初始化代码,再运行初始化代码之后的代码,相当于运行以下程序:
在本发明实施例中,由于工作站侧在首次发生外部调用的位置生成***快照,因此终端可以尝试恢复***快照,如果恢复成功,则利用***快照初始化内存状态,如果未找到***快照或者未能恢复成功,则执行程序中的初始化代码,即执行static_intialize完成初始化,相当于运行以下程序:
可以理解的是,采用虚拟机模拟运行待运行程序,并且在调用外部资源的指令处自动停止执行,可以免除人工更改程序代码以及将初始化代码全部归纳进单个特殊函数中的操作,提高效率。
具体地,所述程序片段可以是由工作站中的即时编译器(Just-In-TimeCompiler,JIT Compiler)创建的。
其中,JIT编译器可以根据目标平台特性,将待转换代码转换成对于目标平台来说执行效率最高的代码形式。其中,目标平台特性例如可以包括浏览器的JavaScript语言版本,是否支持网页的汇编语言(Web Assembly)等。
进一步地,终端可以根据工作站发送的***快照和程序片段,通过恢复所述***快照以及执行程序片段,实现从所述外部调用位置开始执行所述待运行程序。
在本发明实施例中,工作站可以通过模拟运行待运行程序,在首次发生外部调用的位置生成***快照,并向终端发送程序片段,以使终端在恢复***快照后,获得相同的内存映像和执行现场,从而可以仅执行待运行程序在所述外部调用位置之后的剩余部分,相比于执行完整的待运行程序,可以提高终端执行的速度,减少终端需要执行的程序体积。
图3是本发明实施例中一种执行程序的方法的数据流图,所述执行程序的方法可以包括步骤S31至步骤S34:
步骤S31:工作站31模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令;
步骤S32:工作站31将所述首个API调用指令的位置作为所述待运行程序的外部调用位置;
步骤S33:工作站31在所述外部调用位置生成***快照;
步骤S34:工作站31向终端32发送所述***快照和程序片段。
关于图3示出的执行程序的方法的更多详细内容请参照前文及图1至图2示出的关于执行程序的方法的相关描述,此处不再赘述。
参照图4,图4是本发明实施例中另一种执行程序的方法的流程图。所述另一种执行程序的方法可以用于终端侧,可以包括步骤S41至步骤S42,以下对各个步骤进行说明。
在步骤S41中,从工作站接收***快照和程序片段。
具体地,所述***快照可以是待运行程序被模拟运行至外部调用位置时生成的,所述外部调用位置是所述待运行程序首次调用外部资源的位置。进一步地,所述***快照可以是待运行程序被虚拟机模拟运行至外部调用位置时生成的。
所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。可以是由工作站中的JIT编译器创建的.
在步骤S42中,恢复所述***快照,并且执行所述程序片段。
具体地,所述***快照可以包括内存映像以及执行现场。终端可以通过载入内存映像以及恢复执行现场的操作恢复***快照,从而获得执行初始化代码之后的内存状态以及执行现场状态。
进一步地,终端可以执行程序片段。相比于执行完整的待运行程序,终端可以仅执行待运行程序在所述外部调用位置之后的剩余部分,可以提高终端执行的速度,减少终端需要执行的程序体积。
图5是本发明实施例中另一种执行程序的方法的数据流图,所述另一种执行程序的方法可以包括步骤S51至步骤S53:
步骤S51:终端52从工作站51接收***快照和程序片段;
步骤S52:终端52恢复所述***快照;
步骤S53:终端52执行所述程序片段。
关于图4至图5示出的另一种执行程序的方法的更多详细内容请参照前文及图1至图3示出的关于执行程序的方法的相关描述,此处不再赘述。
参照图6,图6是本发明实施例中一种执行程序的装置的结构示意图。所述执行程序的装置可以包括模拟运行模块61以及发送模块62。
其中,所述模拟运行模块61,适于模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。
所述发送模块62,适于向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
进一步地,所述模拟运行模块通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。
图7是图6中模拟运行模块61的一种具体实施方式的结构示意图,所述模拟运行模块61可以包括指令确定子模块611以及位置确定子模块612。
其中,所述指令确定子模块611,适于模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令,所述API调用指令用于调用外部资源。
所述位置确定子模块612,适于将所述首个API调用指令的位置作为所述待运行程序的外部调用位置。
进一步地,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
进一步地,所述***快照包括内存映像以及执行现场。
本发明实施例还提供了另一种执行程序的装置,其结构示意图参照图8。所述另一种执行程序的装置可以包括接收模块81以及恢复模块82。
其中,所述接收模块81,适于从工作站接收***快照和程序片段。
所述恢复模块82,适于恢复所述***快照,并且执行所述程序片段。
其中,所述***快照是待运行程序被模拟运行至外部调用位置时生成的,所述外部调用位置是所述待运行程序首次调用外部资源的位置;所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
进一步地,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
进一步地,所述***快照包括内存映像以及执行现场。
关于该执行程序的装置的更多详细内容请参照前文及图1至图5示出的关于执行程序的方法的相关描述,此处不再赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述执行程序的方法的步骤。所述计算机可读存储介质可以是光盘、机械硬盘、固态硬盘等。所述计算机可读存储介质可以用于工作站侧。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述执行程序的方法的步骤。所述计算机可读存储介质可以是光盘、机械硬盘、固态硬盘等。所述计算机可读存储介质可以用于终端侧。
本发明实施例还提供了一种工作站,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述执行程序的方法的步骤。
所述工作站可以包括具有信息和图像处理功能的计算机、连接到服务器的终端机或者服务器,例如用于软件开发的工作站,以及部署在互联网云端的服务器。
本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述执行程序的方法的步骤。
所述终端可以包括浏览器、计算机、智能手机、平板电脑等各种终端设备。
需要说明的是,本发明实施例中的待运行程序可以是各种适当的程序,优选地,可以是游戏程序。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (20)
1.一种执行程序的方法,其特征在于,包括以下步骤:
模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;
向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
2.根据权利要求1所述的执行程序的方法,其特征在于,通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。
3.根据权利要求1所述的执行程序的方法,其特征在于,所述模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置包括:
模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令,所述API调用指令用于调用外部资源;
将所述首个API调用指令的位置作为所述待运行程序的外部调用位置。
4.根据权利要求1所述的执行程序的方法,其特征在于,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
5.根据权利要求1所述的执行程序的方法,其特征在于,所述***快照包括内存映像以及执行现场。
6.一种执行程序的方法,其特征在于,包括以下步骤:
从工作站接收***快照和程序片段;
恢复所述***快照,并且执行所述程序片段;
其中,所述***快照是待运行程序被模拟运行至外部调用位置时生成的,所述外部调用位置是所述待运行程序首次调用外部资源的位置;
所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
7.根据权利要求6所述的执行程序的方法,其特征在于,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
8.根据权利要求6所述的执行程序的方法,其特征在于,所述***快照包括内存映像以及执行现场。
9.一种执行程序的装置,其特征在于,包括:
模拟运行模块,适于模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照;
发送模块,适于向终端发送所述***快照和程序片段,以使终端恢复所述***快照,并从所述外部调用位置开始执行所述待运行程序,所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
10.根据权利要求9所述的执行程序的装置,其特征在于,所述模拟运行模块通过虚拟机模拟运行待运行程序,直至所述待运行程序首次调用外部资源的外部调用位置,并在所述外部调用位置生成***快照。
11.根据权利要求9所述的执行程序的装置,其特征在于,所述模拟运行模块包括:
指令确定子模块,适于模拟运行待运行程序,直至确定在待运行程序中的首个API调用指令,所述API调用指令用于调用外部资源;
位置确定子模块,适于将所述首个API调用指令的位置作为所述待运行程序的外部调用位置。
12.根据权利要求9所述的执行程序的装置,其特征在于,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
13.根据权利要求9所述的执行程序的装置,其特征在于,所述***快照包括内存映像以及执行现场。
14.一种执行程序的装置,其特征在于,包括:
接收模块,适于从工作站接收***快照和程序片段;
恢复模块,适于恢复所述***快照,并且执行所述程序片段;
其中,所述***快照是待运行程序被模拟运行至外部调用位置时生成的,所述外部调用位置是所述待运行程序首次调用外部资源的位置;
所述程序片段包括所述待运行程序在所述外部调用位置之后的部分。
15.根据权利要求14所述的执行程序的装置,其特征在于,所述外部资源为外部动态数据,所述外部动态数据为在模拟运行所述待运行程序的过程中有可能改变的外部资源。
16.根据权利要求14所述的执行程序的装置,其特征在于,所述***快照包括内存映像以及执行现场。
17.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1至5任一项所述执行程序的方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求6至8任一项所述执行程序的方法的步骤。
19.一种工作站,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1至5任一项所述执行程序的方法的步骤。
20.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求6至8任一项所述执行程序的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710597919.7A CN109284166A (zh) | 2017-07-20 | 2017-07-20 | 执行程序的方法及装置、存储介质、工作站、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710597919.7A CN109284166A (zh) | 2017-07-20 | 2017-07-20 | 执行程序的方法及装置、存储介质、工作站、终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109284166A true CN109284166A (zh) | 2019-01-29 |
Family
ID=65184998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710597919.7A Pending CN109284166A (zh) | 2017-07-20 | 2017-07-20 | 执行程序的方法及装置、存储介质、工作站、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109284166A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675977A (zh) * | 2022-05-30 | 2022-06-28 | 山东科华电力技术有限公司 | 基于电力物联网的分布式监控运管*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0119066D0 (en) * | 2001-08-06 | 2001-09-26 | Ibm | Method and apparatus for suspending a software virtual machine |
CN101271409A (zh) * | 2007-03-23 | 2008-09-24 | 国际商业机器公司 | 用于迁移逻辑分区的装置和方法以及产品 |
CN102200920A (zh) * | 2010-03-23 | 2011-09-28 | 三星电子株式会社 | 程序编译器、程序安装器和程序安装方法 |
CN103092674A (zh) * | 2012-12-14 | 2013-05-08 | 北京伸得纬科技有限公司 | 一种虚拟机*** |
CN105739930A (zh) * | 2016-02-02 | 2016-07-06 | 华为技术有限公司 | 一种存储架构及其初始化方法和数据存储方法及管理装置 |
CN106648827A (zh) * | 2016-09-20 | 2017-05-10 | 国云科技股份有限公司 | 一种在线添加虚拟机资源的方法 |
-
2017
- 2017-07-20 CN CN201710597919.7A patent/CN109284166A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0119066D0 (en) * | 2001-08-06 | 2001-09-26 | Ibm | Method and apparatus for suspending a software virtual machine |
CN101271409A (zh) * | 2007-03-23 | 2008-09-24 | 国际商业机器公司 | 用于迁移逻辑分区的装置和方法以及产品 |
CN102200920A (zh) * | 2010-03-23 | 2011-09-28 | 三星电子株式会社 | 程序编译器、程序安装器和程序安装方法 |
CN103092674A (zh) * | 2012-12-14 | 2013-05-08 | 北京伸得纬科技有限公司 | 一种虚拟机*** |
CN105739930A (zh) * | 2016-02-02 | 2016-07-06 | 华为技术有限公司 | 一种存储架构及其初始化方法和数据存储方法及管理装置 |
CN106648827A (zh) * | 2016-09-20 | 2017-05-10 | 国云科技股份有限公司 | 一种在线添加虚拟机资源的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675977A (zh) * | 2022-05-30 | 2022-06-28 | 山东科华电力技术有限公司 | 基于电力物联网的分布式监控运管*** |
CN114675977B (zh) * | 2022-05-30 | 2022-08-23 | 山东科华电力技术有限公司 | 基于电力物联网的分布式监控运管*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113312037B (zh) | 应用于微服务的数据处理方法、装置、设备和存储介质 | |
US11036857B2 (en) | Protecting a machine learning model | |
CN107636612B (zh) | 应用迁移装置、方法与存储介质 | |
CN110659246B (zh) | 基于容器的文件挂载方法、装置及电子设备 | |
CN110852449B (zh) | 模型迁移方法和电子设备 | |
US11886302B1 (en) | System and method for execution of applications in a container | |
WO2017219526A1 (zh) | 一种图形文件格式的使用方法及存储设备 | |
CN109697121B (zh) | 用于向应用分配处理资源的方法、设备和计算机可读介质 | |
US10417023B2 (en) | GPU simulation method | |
CN105159760A (zh) | 云资源迁移方法和统一的跨平台云资源迁移能力开放接口 | |
CN106462542A (zh) | 通过向云计算基础设施的细粒度卸载进行的移动应用加速 | |
EP4209894A1 (en) | Cloud code development system, method, and apparatus, device, and storage medium | |
Jeong et al. | Seamless offloading of web app computations from mobile device to edge clouds via html5 web worker migration | |
CN109933350A (zh) | 在应用中嵌入代码的方法、装置及电子设备 | |
US11294651B2 (en) | Code execution method, device, and rendering apparatus | |
CN109284166A (zh) | 执行程序的方法及装置、存储介质、工作站、终端 | |
CN110795162A (zh) | 生成容器镜像文件的方法和装置 | |
US11379201B2 (en) | Wrapping method, registration method, device, and rendering apparatus | |
CN111767059B (zh) | 深度学习模型的部署方法、装置、电子设备和存储介质 | |
CN112925586A (zh) | 一种小程序路由方法、装置、计算机设备及存储介质 | |
CN112416533A (zh) | 在浏览器上运行应用程序的方法、装置及电子设备 | |
CN114706622B (zh) | 启动模型服务的方法、装置、设备、介质及产品 | |
KR20200135138A (ko) | 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체 | |
CN111352360A (zh) | 机器人的控制方法、装置、机器人及计算机存储介质 | |
Bahtovski et al. | Multilingual cloudlet-based dictionary |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190129 |