CN102200920A - 程序编译器、程序安装器和程序安装方法 - Google Patents

程序编译器、程序安装器和程序安装方法 Download PDF

Info

Publication number
CN102200920A
CN102200920A CN2011100674829A CN201110067482A CN102200920A CN 102200920 A CN102200920 A CN 102200920A CN 2011100674829 A CN2011100674829 A CN 2011100674829A CN 201110067482 A CN201110067482 A CN 201110067482A CN 102200920 A CN102200920 A CN 102200920A
Authority
CN
China
Prior art keywords
program
execution
function
snapshot
snapshot point
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
Application number
CN2011100674829A
Other languages
English (en)
Inventor
金旻澯
郑载勋
黄珠荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN102200920A publication Critical patent/CN102200920A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

提供了一种程序编译器、程序安装器和程序安装方法。程序安装设备可使用快照图像以立即可执行的形式来安装程序。快照图像可存储程序的部分执行的结果。可通过分析程序对系统执行环境的依赖性来确定创建快照图像的快照点。程序安装设备可预先执行对系统执行环境不具有依赖性的一部分程序以创建快照图像,并且随后基于快照图像执行程序的剩余部分,减少程序的启动时间。

Description

程序编译器、程序安装器和程序安装方法
本申请要求于2010年3月23日在韩国知识产权局提交的10-2010-0025914号韩国专利申请的权益,该申请全部公开于此以资任何目的的参考。
技术领域
以下描述涉及一种提高程序执行速度的程序安装技术。
背景技术
程序的执行导致处理开销。与程序执行有关的处理开销包括:将程序从硬盘驱动器(HDD)加载到随机存取存储器(RAM)的开销、加载与程序关联的库的开销、重定位与程序关联的共享库的开销、在程序的主函数出现之前执行初始化函数的开销等。
最近,根据人工智能的发展,程序的量、复杂度和用于程序执行的开销大幅增加,因此注意力集中在了降低这样的程序执行开销上。
降低用于程序执行的开销的代表方法是使用具有良好输入/输出性能的存储器。例如,具有比HDD更好的输入/输出性能的固态驱动器(SSD)提高了将程序加载到RAM的速度。具体地,对于移动产品,相对于处理性能,快速响应是重要因素以即时处理用户的请求。
现有技术包括预链接,用于在程序的执行之前完全地重定位程序。预链接预测与程序关联的共享库的加载地址以改变必须预先重定位的函数的地址。当共享库被加载到预测的加载地址失败时执行重定位。然而,预链接不能消除对每当执行程序都重复调用的初始化函数进行调用的开销。检查点/恢复转移程序以处理服务器加载分布或分离失败,这是针对暂停/恢复每个应用程序。然而,检查点/恢复具有有限的用于暂停的环境。
智能应用程序越多,它们的启动延迟时间就越长。这是因为程序的量的增加加深了结构模块化,加深了结构模块化增加了用于启动程序的重定位开销、用于读取页的I/O开销、用于重复调用每个程序执行的初始化函数的调用开销等。开销当中的重定位开销是由于共享库,所述共享库被用于减少通用操作系统(GPOS)中的存储器占用,所述存储器占用具有不同的、独立的地址空间并使用虚拟地址。
将非易失性存储器作为主存储器来使用的系统可将应用程序或共享库存储在主存储器中。由于与辅助存储器(诸如HDD、SSD、闪存等)相比,非易失性存储器具有优秀的I/O性能,因此所述系统具有较少的I/O开销。然而,所述系统仍然不能减少用于重定位的开销和重复调用每个程序执行的初始化函数的开销。
发明内容
在一个总体方面,提供了一种程序安装和执行设备,包括:快照点设置单元,配置以将程序的执行序列上的特定位置设置为快照点;第一执行单元,配置以执行程序直到快照点;快照图像存储单元,配置以存储执行到快照点为止的程序的执行结果。
程序安装和执行设备还可包括:快照图像加载单元,配置以加载程序的执行结果;第二执行单元,配置以基于快照图像执行在程序的快照点之后的程序的剩余部分。
在程序安装和执行设备中,快照点设置单元还被配置以从程序的执行序列中检测对系统执行环境具有实质依赖性的部分,并且基于检测的部分确定快照点的设置位置。
在程序安装和执行设备中,快照点设置单元还被配置以考虑使用系统调用的初始化函数的执行顺序来确定快照点的设置位置。
在程序安装和执行设备中,初始化函数包括全局类创建器和共享库的初始化函数,在主函数被执行之前执行或调用所述全局类创建器。
在程序安装和执行设备中,快照点设置单元包括:依赖性分析单元,配置以根据程序的部分是否使用系统调用来从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;重排单元,配置以调整对系统执行环境具有实质依赖性的部分的执行顺序。
在程序安装和执行设备中,所述程序包括对系统执行环境不具有依赖性的独立函数和对系统执行环境具有依赖性的依赖函数,所述重排单元还被配置以调整独立函数和依赖函数的执行顺序,以使独立函数在依赖函数之前被执行或调用。
在程序安装和执行设备中,所述程序包括安装的程序或更新的程序。
在程序安装和执行设备中,所述程序的执行结果包括执行直到快照点的程序的注册表信息和存储器信息中的至少一个。
在程序安装和执行设备中,所述程序的执行结果被存储在非易失性存储器中。
在另一总体方面,提供了一种程序编译器,包括:依赖性分析单元,配置以根据程序的部分是否使用系统调用来从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;重排单元,配置以调整对系统执行环境具有实质依赖的部分的执行顺序。
在另一总体方面,提供了一种程序安装和执行方法,包括:将程序的执行序列上的特定位置设置为快照点,执行程序直到快照点,以及存储执行到快照点为止的程序的执行结果。
在程序安装和执行方法中,加载程序的执行结果,并且基于加载的程序的执行结果执行在程序的快照点之后的程序的剩余部分。
在程序安装和执行方法中,设置快照点的步骤包括:从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;基于检测的部分确定快照点的设置位置。
在程序安装和执行方法中,设置快照点的步骤包括考虑使用系统调用的初始化函数的执行顺序来确定快照点的设置位置。
在程序安装和执行方法中,初始化函数包括:全局类创建器和共享库的初始化函数,在主函数被执行之前执行或调用所述全局类创建器。
在程序安装和执行方法中,所述程序包括:对系统执行环境不具有依赖性的独立函数和对系统执行环境具有依赖性的依赖函数,并且设置快照点的步骤包括:在调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用之后,确定快照点的设置位置。
在程序安装和执行方法中,所述程序包括安装的程序或已安装、被更新的程序。
在程序安装和执行方法中,所述程序的执行结果包括程序执行直到快照点为止的注册表信息和存储器信息。
在程序安装和执行方法中,所述程序的执行结果被存储在非易失性存储器中。
在程序安装和执行方法中,在所述程序的安装之后执行所述程序,以在所述程序的重定位之后的任意时间创建快照图像。
在程序安装和执行方法中,响应于正在更新的程序,现有快照图像被更新并且重建。
在程序安装和执行方法中,响应于正在更新的程序,现有快照图像被无效。
在程序安装和执行方法中,基于所述程序的系统调用来确定快照时间。
在程序安装和执行方法中,允许程序员校正源并且提供提示以通知系统调用的发生时间。
在程序安装和执行方法中,使用源/二进制码静态分析工具来通知系统调用的发生位置。
在程序安装和执行方法中,通过操作系统的系统调用接口来检查系统调用的发生。
在程序安装和执行方法中,初始化函数被重定位以推迟快照时间。
在程序安装和执行方法中,允许程序员校正并且新建源以对初始化函数进行重定位。
在程序安装和执行方法中,使用静态分析工具新建自动化工具以对初始化函数进行重定位。
在程序安装和执行方法中,校正程序二进制码以对初始化函数进行重定位。
在程序安装和执行方法中,响应于已被无效的快照图像,在重新启动之后重建快照图像。
在另一总体方面,提供了一种用于使计算机实现程序安装和执行方法的计算机可读信息存储介质,包括:将程序的执行序列上的特定位置设置为快照点;执行程序直到快照点并且存储执行到快照点为止的程序的执行结果。
计算机可读信息存储介质还可包括:加载程序的执行结果;基于加载的程序的执行结果执行在程序的快照点之后的程序的剩余部分。
在计算机可读信息存储介质中,设置快照点的步骤包括:从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;基于检测的部分确定快照点的设置位置。
在计算机可读信息存储介质中,设置快照点的步骤包括:考虑使用系统调用的初始化函数的执行顺序来确定快照点的设置位置。
在计算机可读信息存储介质中,初始化函数包括全局类创建器和共享库的初始化函数,在主函数被执行之前执行或调用所述全局类创建器。
在计算机可读信息存储介质中,所述程序包括:对系统执行环境不具有依赖性的独立函数和对系统执行环境具有依赖性的依赖函数,并且设置快照点的步骤包括:在调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用之后,确定快照点的设置位置。
在计算机可读信息存储介质中,所述程序包括安装的程序或安装的、更新的程序。
在计算机可读信息存储介质中,所述程序的执行结果包括程序执行直到快照点为止的注册表信息和存储器信息。
在另一总体方面,提供了一种程序执行设备,包括:快照点设置单元,配置以将程序的执行序列上的特定位置设置为快照点;第一执行单元,配置以执行程序直到快照点;第二执行单元,配置以执行在程序的快照点之后的程序的剩余部分。
在程序执行设备中,所述程序包括:对系统执行环境不具有依赖性的独立函数和对系统执行环境具有依赖的依赖函数,并且程序执行设备还包括:重排单元,配置以调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用。
在程序执行设备中,所述程序包括安装的程序或更新的程序。
在程序执行设备中,所述程序的执行结果包括程序执行直到快照点为止的注册表信息和存储器信息中的至少一个。
在程序执行设备中,所述程序的执行结果被存储在非易失性存储器中。
在另一总体方面,提供了一种程序执行方法,包括:将程序的执行序列上的特定位置设置为快照点;执行程序直到快照点;执行程序的快照点之后的程序的其余位置。
在程序执行方法中,所述程序包括对系统执行环境不具有依赖性的独立函数和对系统执行环境具有依赖性的依赖函数,并且调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用。
在程序执行方法中,所述程序包括安装的程序或更新的程序。
在程序执行方法中,所述程序的执行结果包括程序执行直到快照点为止的注册表信息和存储器信息中的至少一个。
从以下的详细说明、附图和权利要求中,其它特征和方面会变得清楚。
附图说明
图1是示出程序安装和执行设备的示例的示图;
图2是示出快照点设置单元的示例的示图;
图3是用于解释程序执行序列的示例的示图;
图4A和图4B是用于解释程序执行序列的其它示例的示图;
图5是示出程序安装方法的示例的流程图;
图6是示出程序执行方法的示例的流程图;
图7是示出计算设备的示例的示图;
图8是示出程序编译器的示例的示图。
在整个附图和详细说明中,除非有所描述,否则相同的附图标号将被理解为表示相同的部件、特征和结构。为了简洁、说明和方便,可夸大这些部件的相对尺寸和描述。
具体实施方式
提供以下描述以帮助读者获得对描述于此的方法、设备和/或系统的全面的理解。因此,将对本领域普通技术人员提出描述于此的方法、设备和/或系统的各种改变、修改和等同物。描述的处理步骤和/或操作的进程是示例;然而,步骤和/或操作的顺序并不限于这里阐述的顺序,并且除了必须以特定顺序发生的步骤和/或操作以外,所述步骤和/或操作的顺序可被改变为本领域公知的顺序。此外,为了更加简洁和方便,可省略对公知的功能和构造的描述。
图1是示出程序安装和执行设备100的示例的示图。
参照图1,程序安装和执行设备100可包括:快照点设置单元101、执行单元102、快照图像存储单元103和加载单元104。
快照点设置单元101可将程序执行序列的特定位置设置为快照点。
快照点与程序被执行到的位置相应。例如,响应于执行单元102执行包括一系列函数(或代码)的程序,执行单元102可执行程序直到已经根据来自快照点设置单元101的控制指令设置的快照点。
快照点设置单元101可从程序执行序列中检测依赖于系统执行环境的部分。快照点设置单元101可根据检测的依赖于系统执行环境的部分来确定快照点的设置位置。
系统执行环境可以是操作系统或输入到程序的初始值,并且依赖于系统执行环境的部分可以是被初始输入值影响的函数或代码等。例如,当假设以A函数、B函数、C函数和D函数这样的顺序来执行特定程序,并且C函数依赖于系统执行环境时,快照点设置单元101可将B函数的执行完成的位置或C函数的执行开始的位置确定为快照点的设置位置。
快照点设置单元101可根据构造程序的哪个函数使用系统调用来检测依赖于系统执行环境的部分。例如,快照点设置单元101可分析构造程序的函数以检测使用系统调用的函数,并可将使用系统调用的函数被执行的部分确定为依赖于系统执行环境的部分。
第一执行单元112可执行程序直到由快照点设置单元101设置的快照点。例如,响应于以A函数、B函数、C函数和D函数这样的顺序来执行的特定程序并且B函数的执行完成的位置或C函数的执行开始的位置被设置为快照点,第一执行单元112可只执行程序的A函数和B函数。
快照图像存储单元103可创建快照图像,所述快照图像是由第一执行单元112执行的程序的部分执行结果,并且可存储所述快照图像。快照图像可包括与程序的部分执行结果相应的值、注册表信息、存储器信息等。快照图像可被存储在非易失性存储器(诸如相变随机存取存储器(PRAM)、磁随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)等)中。这些是非限制性的示例。
加载单元104可从快照图像存储单元103加载快照图像。响应于从用户接收执行请求或执行指令,加载单元104可加载快照图像。
第二执行单元122可执行程序的剩余部分。也就是说,第二执行单元122可基于由加载单元104加载的快照图像来执行快照点之后的程序部分。例如,响应于以A函数、B函数、C函数和D函数这样的顺序来执行的特定程序并且B函数的执行完成的位置或C函数的执行开始的位置被设置为快照点,第一执行单元112响应于正在安装的程序,可执行程序的A函数和B函数,随后,第二执行单元122响应于程序被安装之后来自用户的执行指令,可执行剩余的C函数和D函数。
这样,程序安装和执行设备100可以以立即可执行的形式来安装程序。也就是说,由于可考虑系统执行环境来确定快照点的位置,所以程序一被安装就可预先执行相应的程序直到快照点,并且随后响应于执行请求,可基于快照图像来执行快照点之后的剩余程序部分。因此,可减少安装的程序或更新的、重装的程序的启动时间。
图2是示出快照点设置单元101的示例的示图。
参照图2,快照点设置单元101可包括:依赖性分析单元201、重排单元202和位置确定单元203。
依赖性分析单元201可分析构造程序的函数或代码对系统执行环境的依赖性。
在当前的示例中,对系统执行环境具有依赖性的函数或代码被称为“依赖函数”,并且对系统执行环境不具有依赖性的函数或代码被称为“独立函数”。响应于包括主函数和在主函数出现之前出现的初始化函数的特定程序,可根据对系统执行环境的依赖性将初始化函数划分为独立函数和依赖函数。初始化函数可以是在主函数被执行之前将被执行或调用的全局类创建器、共享库的初始化函数等。可根据初始化函数是否使用系统调用来确定特定初始化函数是独立函数还是依赖函数。例如,如果特定函数的路径依赖于系统存储器的容量被确定,则该函数可以是被系统执行环境影响的依赖函数。
依赖性分析单元201可根据程序执行序列的哪个部分使用系统调用来从程序执行序列中检测依赖于系统执行环境的部分。
重排单元202可基于初始化函数对系统执行环境的依赖性(可由依赖性分析单元201分析)来改变初始化函数的执行序列,从而对系统执行环境具有依赖性的初始化函数可最后被执行。
例如,如果假设在主函数出现之前存在初始化函数A、B、C和D,并且B函数是对系统执行环境具有依赖性的依赖函数,则重排单元202可将B函数的执行调用或执行顺序定位在A函数、C函数和D函数的执行调用或执行顺序之后。
位置确定单元203可基于初始化函数对系统执行环境的依赖性和由重排单元202调整的初始化函数的执行序列来确定快照点的设置位置。
位置确定单元203可将依赖函数开始执行的位置确定为快照点的设置位置。例如,如果初始化函数的执行序列被重排单元202调整为A函数→C函数→D函数→B函数,则位置确定单元203可将D函数完成执行的位置或B函数开始执行的位置设置为快照点的设置位置。
图3是用于解释程序执行序列的示例的示图。
参照图3,所述程序可包括初始化函数301和主函数302。
主函数302可以是执行程序的主要功能的部分,并且初始化函数301可以是可在主函数302被执行之前被执行或调用的全局类创建器或共享库的初始化函数。
响应于正在安装的程序,快照点设置单元101可从程序的执行序列中检测对系统执行环境具有依赖性的部分。例如,快照点设置单元101可分析包括A函数、B函数、C函数和D函数的初始化函数。也就是说,快照点设置单元101可分析A函数、B函数、C函数和D函数中的哪一个使用系统调用。如果C函数使用系统调用,则快照点设置单元101可将C函数检测为对系统执行环境具有依赖性的依赖函数。
在检测到对系统执行环境具有依赖性的部分之后,快照点设置单元101可根据对系统执行环境具有依赖性的部分来设置作为程序被部分执行的位置的快照点303。例如,快照点设置单元101可将被检测为依赖函数的C函数的执行启动位置设置为快照点303。
响应于正在设置的快照点303,第一执行单元112可执行程序直到快照点303。例如,第一执行单元112可执行初始化函数303中的A函数和B函数。
在程序被执行直到快照点303之后,程序被部分执行的结果可被创建为快照图像并被存储。例如,快照图像存储单元103可将A函数和B函数的执行结果、注册表信息和存储器信息创建为快照图像,并且可将该快照图像存储在非易失性存储器中。
随后,响应于从用户接收的程序执行请求或指令,加载单元104可加载存储的快照图像,并且第二执行单元122可基于快照图像来执行C函数和D函数以及主函数。
图4A图4B是用于解释程序执行序列的其它示例的示图。
参照图4A,所述程序可包括初始化函数301和主函数302。以上已经参照图3描述了初始化函数301和主函数302。
参照图2和图4A,响应于正在安装的程序,依赖性分析单元201从程序的执行序列中检测对系统执行环境具有依赖性的部分。例如,快照点设置单元101可分析包括A函数、B函数、C函数和D函数的初始化函数。也就是说,快照点设置单元101可分析A函数、B函数、C函数和D函数中的哪一个使用系统。响应于使用系统调用的C函数,快照点设置单元101可将C函数检测为对系统执行环境具有依赖性的依赖函数。
在检测出依赖函数C之后,重排单元202可调整初始化函数301的执行序列。例如,如图4B中所示,重排单元202可改变C函数的执行顺序以使C函数在D函数之后被执行。
在图4B中,在初始化函数301的执行序列被调整之后,位置确定单元203可根据由依赖性分析单元201检测的依赖函数C来确定快照点303的设置位置。例如,位置确定单元203可将C函数的执行启动时间设置为快照点303。
这样,程序安装和执行设备100可预先执行和安装特定程序的对系统执行环境不具有依赖性的部分,随后可响应于接收执行请求,立即执行程序的剩余部分,减少程序的初始启动时间。另外,程序安装和执行设备100可调整初始化函数的执行序列,进一步减少程序的启动时间。
图5是示出程序安装方法500的示例的流程图。
参照图5,程序安装方法500可被应用于特定程序被新安装和程序被更新或重装这两种情况。
程序安装方法500可响应于根据程序安装指令或程序更新指令正在被安装的程序而开始。为了更容易理解,将程序的各种代码存储在系统中的通用安装被称为“第一安装处理”。也就是说,,程序安装方法500可响应于正在完成的第一安装处理而开始。
在操作501中,在第一安装处理完成之后,第二安装处理可开始。根据第二安装处理,程序安装方法500可设置快照点。快照点可以是通过第一安装处理安装的程序的部分执行点。例如,快照点设置单元101可分析哪个初始化函数使用系统调用,并且可将依赖于系统执行环境的部分的开始位置设置为快照点。
在操作502中,程序安装方法500可执行程序直到快照点。例如,第一执行单元112可预先执行通过第一安装处理安装的程序的一部分,所述一部分对系统执行环境不具有依赖性。
在操作503中,程序安装方法500可将直到快照点的程序的部分执行结果创建并存储为快照图像。例如,快照图像存储单元103可将与程序的部分执行结果相应的值、注册表信息和存储器信息存储在非易失性存储器中。
由于可基于依赖于系统执行环境的部分来设置快照点,所以可通过第二安装处理预先执行对系统执行环境不具有依赖性的部分,并且随后可以以立即可执行的形式来安装程序。
图6是示出程序执行方法600的示例的流程图。
参照图6,在通过以上参照图5描述的处理而已经安装程序之后,程序执行方法600可响应于用户的执行请求或指令而开始。或者,可在程序的安装之后执行程序执行方法600,以在程序的重定位之后的任意时间或预定时间创建快照图像。
参照图1和图6,在操作601中,程序执行方法600可响应于用户的执行请求或指令而加载快照图像。例如,加载单元104可从快照图像存储单元103加载快照图像。
在操作602中,程序执行方法600可确定快照图像是否处于立即可执行的形式。在操作603中,响应于确定快照图像处于立即可执行的形式,可使用快照图像来执行程序。例如,第二执行单元122可基于快照图像执行快照点之后的其余程序部分。在操作604中,响应于确定快照图像不处于立即可执行的形式,可重新创建快照图像。快照图像的重新创建可基于以上参照图5描述的处理。
响应于正在更新的程序,可更新和/或重新创建的现有快照图像。响应于正在更新的程序,现有快照图像可被无效。响应于已被无效的快照图像,可在重启时重建快照图像。可基于程序的系统调用来确定快照时间。
可允许程序员校正源(例如,源代码)并且提供提示以提供关于系统调用的发生时间的信息。可使用源/二进制码静态分析工具来通知系统调用的发生位置。可通过操作系统的系统调用接口来检查系统调用的发生。初始化函数可被重定位以推迟快照时间。可允许程序员校正和/或新建源以对初始化函数进行重定位。可使用静态分析工具新建自动化工具以对初始化函数进行重定位。可校正程序二进制码以对初始化函数进行重定位。
在已经预先提供了应用程序的源代码的假设下,源(例如,源代码)静态分析工具可以是通过解析程序源来搜索调用系统调用的函数或间接调用系统调用的库函数的处理。二进制码静态分析工具可以是通过检测应用程序的执行文件格式(例如,ELF、COFF)的代码部分以分析汇编语言来搜索调用系统调用的函数或间接调用系统调用的库函数的处理。
自动化工具可操作如下:
(1)每当函数调用发生时,以调用特定函数的模式来重新编译源代码(例如,GCC中的-finstrument-function)。
GCC是GNU编译器集合。GNU编译器集合包括C、C++、0biective-C、Fortran、Java和Ada的前端以及这些语言的库(libstdc++,libgcj等)。GCC最初被编写为GNU操作系统的编译器。GNU系统被开发为100%自由软件,其尊重用户的自由,所以是自由软件。
-finstrument是可将工具代码(instrument code)插入每个函数入口的GCC选项。
(2)(例如)每当特定函数被调用时,执行程序并且记录调用的函数;
(3)当程序的启动完成时,终止程序;
(4)基于源代码分析调用的函数,并且当虽然函数的调用序列改变但在执行函数中没有发生问题时(例如,当函数不是母函数和子函数,但是是类的构造函数时),将相应的函数的列表传输到链接器。
(5)链接器可重新排列相应的函数的调用序列以使函数稍后被调用。
开发者可预先知道他或她使用的函数是否是其行为根据系统的状态而改变的函数。因此,在函数正要被调用之前,可通过将特定函数插入相应函数的源代码或通过允许程序员将函数声明为源代码上的特定属性并且通知编译器函数被调用的事实,来将这样的函数的调用通知给实施例的系统,并且编译器可通过当编译函数时插入特定函数,来通知系统所述函数是不是其行为根据系统的状态而改变的函数。
图7是示出计算设备的示例的示图。
参照图7,计算设备可包括:CPU 701、输入/输出单元702和存储器703。
响应于程序被安装,CPU 701可初步存储或安装所述程序的各种代码,可执行初步安装的程序的一部分以创建快照图像,可存储所述快照图像,并且可安装所述程序。
存储器703可包括主存储器和硬盘。在一个示例中,存储器703的主存储器可以是非易失性存储器。因此,即使在快照图像已经存储在存储器703之后,响应于不再对存储器703提供供应电压,快照图像也可保留。
此外,CPU 701可使用存储在存储器703中的快照图像来执行程序,并且可通过输入/输出单元702向用户提供程序的执行结果。
图8是示出程序编译器800的示例的示图。
参照图8,程序编译器800可包括:依赖性分析单元801、重排单元802和执行文件创建器803。
依赖性分析单元801可分析构成程序的函数或代码对系统执行环境的依赖性。例如,依赖性分析单元801可根据构成程序的哪个函数使用了系统调用来检测依赖于系统执行环境的依赖函数。
重排单元802可调整函数的执行序列或调用序列以使依赖于系统执行环境的依赖函数最后被执行或调用。
执行文件创建器803可基于函数的调整的执行序列或调用序列来创建程序的执行文件。
传统的挂起到RAM/休眠技术在系统正要终止之前维持现有系统的整个状态以用于快速启动。然而,使用以上技术的实施例可减少安装系统的启动延迟。
上述的处理、函数、方法和/或软件可被记录、存储或固定在一个或多个计算机可读存储介质中,所述计算机可读存储介质包括程序指令,所述程序指令由计算机执行以使处理器执行所述程序指令。所述介质还可包括程序指令、数据文件、数据结构等的一个或组合。所述介质和程序指令可以是专门设计和构造的介质和程序指令,或可以是由计算机软件领域的技术人员所公知的和可用的介质和程序指令。计算机可读介质的示例包括:磁介质(如硬盘、软盘和磁带)、光学介质(如CD-ROM盘和DVD)、磁光介质(如光盘)和专门配置以存储和执行程序指令的硬件装置(如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括机器代码(如由编译器所产生的)和包含可由计算机使用翻译器执行的高级代码的文件。上述的硬件装置可被配置以用作执行上述操作和方法的一个或多个软件模块,反之亦然。另外,计算机可读记录介质可分布于联网的计算机系统上,并且可以以分散的方式存储和执行计算机可读代码或程序指令。
仅作为非详尽的说明,描述于此的装置可以是移动装置(如移动电话、个人数字助理(PDA)、数码相机、便携式游戏机、MP3播放器、便携式/个人多媒体播放器(PMP)、手持电子书、便携式平板计算机和/或膝上型PC、全球定位系统(GPS)导航),以及与公开于此的说明一致的装置(如桌上型PC、高清晰度电视机(HDTV)、光盘播放器、机顶盒等)。
计算系统或计算机可包括与总线、用户接口和存储控制器电连接的微处理器。所述计算系统或计算机还可包括闪存装置。闪存装置可通过存储控制器存储N比特数据。N比特数据可被微处理器处理或将被微处理器处理,并且N可以是1或大于1的整数。当计算系统或计算机是移动设备时,可附加提供电池以向计算系统或计算机供应操作电压。
本领域普通技术人员可容易知道,所述计算系统或计算机还可包括:应用芯片集、相机图像处理器(CIS)、移动动态随机存取存储器(DRAM)等。存储控制器和闪存装置可组成使用非易失性存储器存储数据的固态驱动器/盘(SSD)。
以上已经描述了一些示例。然而,应该理解可进行各种修改。例如,如果以不同的顺序执行所述的技术,和/或如果以不同的方式组合在所述的系统、机构、装置或电路中的组件和/或用其它组件或其等同物来代替或补充在所述的系统、机构、装置或电路中的组件,则可同样得到适当的结果。因此,其它实现仍在权利要求的范围内。

Claims (49)

1.一种程序安装和执行设备,包括:
快照点设置单元,配置以将程序的执行序列上的特定位置设置为快照点;
第一执行单元,配置以执行程序直到快照点;
快照图像存储单元,配置以存储执行到快照点为止的程序的执行结果。
2.如权利要求1所述的程序安装和执行设备,还包括:
快照图像加载单元,配置以加载程序的执行结果;
第二执行单元,配置以基于快照图像执行在程序的快照点之后的程序的剩余部分。
3.如权利要求1所述的程序安装和执行设备,其中,快照点设置单元还可被配置以:
从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;
基于检测的部分确定快照点的设置位置。
4.如权利要求1所述的程序安装和执行设备,其中,快照点设置单元还被配置以考虑使用系统调用的初始化函数的执行顺序来确定快照点的设置位置。
5.如权利要求4所述的程序安装和执行设备,其中,初始化函数包括:
全局类创建器,在主函数被执行之前被执行或调用;
共享库的初始化函数。
6.如权利要求1所述的程序安装和执行设备,其中,快照点设置单元包括:
依赖性分析单元,配置以根据程序的部分是否使用系统调用来从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;
重排单元,配置以调整对系统执行环境具有实质依赖性的部分的执行顺序。
7.如权利要求6所述的程序安装和执行设备,其中,所述程序包括:
独立函数,对系统执行环境不具有依赖性;和
依赖函数,对系统执行环境具有依赖性;并且
重排单元还被配置以调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用。
8.如权利要求1所述的程序安装和执行设备,其中,所述程序包括安装的程序或更新的程序。
9.如权利要求1所述的程序安装和执行设备,其中,程序的执行结果包括执行直到快照点的程序的注册表信息和存储器信息中的至少一个。
10.如权利要求1所述的程序安装和执行设备,其中,程序的执行结果被存储在非易失性存储器中。
11.一种程序编译器,包括:
依赖性分析单元,配置以根据程序的部分是否使用系统调用来从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;
重排单元,配置以调整对系统执行环境具有实质依赖性的部分的执行顺序。
12.一种程序安装和执行方法,包括:
将程序的执行序列上的特定位置设置为快照点;
执行程序直到快照点;
存储执行到快照点为止的程序的执行结果。
13.如权利要求12所述的程序安装和执行方法,还包括:
加载程序的执行结果;
基于加载的程序的执行结果,执行在程序的快照点之后的程序的剩余部分。
14.如权利要求12所述的程序安装和执行方法,其中,设置快照点的步骤包括:
从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;和
基于检测的部分确定快照点的设置位置。
15.如权利要求12所述的程序安装和执行方法,其中,设置快照点的步骤包括:考虑使用系统调用的初始化函数的执行顺序来确定快照点的设置位置。
16.如权利要求15所述的程序安装和执行方法,其中,初始化函数包括:
全局类创建器,在主函数被执行之前被执行或调用;
共享库的初始化函数。
17.如权利要求12所述的程序安装和执行方法,其中,所述程序包括:
独立函数,对系统执行环境不具有依赖性;和
依赖函数,对系统执行环境具有依赖性;并且
设置快照点的步骤包括在调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用之后,确定快照点的设置位置。
18.如权利要求12所述的程序安装和执行方法,其中,所述程序包括安装的程序或已安装、被更新的程序。
19.如权利要求12所述的程序安装和执行方法,其中,程序的执行结果包括程序执行直到快照点的注册表信息和存储器信息。
20.如权利要求12所述的程序安装和执行方法,其中,程序的执行结果被存储在非易失性存储器中。
21.如权利要求12所述的程序安装和执行方法,其中,在程序的安装之后执行所述程序以在所述程序的重定位之后在任意时刻创建所述快照图像。
22.如权利要求18所述的程序安装和执行方法,其中,响应于正在更新的程序,现有快照图像被更新并被重建。
23.如权利要求18所述的程序安装和执行方法,其中,响应于正在更新的程序,现有快照图像被无效。
24.如权利要求12所述的程序安装和执行方法,其中,基于程序的系统调用来确定快照的时间。
25.如权利要求24所述的程序安装和执行方法,其中,允许程序员校正源并且提供提示以通知系统调用的发生时间。
26.如权利要求24所述的程序安装和执行方法,其中,使用源/二进制码静态分析工具通知系统调用的发生位置。
27.如权利要求24所述的程序安装和执行方法,其中,通过操作系统的系统调用接口来检查系统调用的发生。
28.如权利要求12所述的程序安装和执行方法,其中,将初始化函数重定位以推迟快照时间。
29.如权利要求28所述的程序安装和执行方法,其中,允许程序员校正并新建源以对初始化函数进行重定位。
30.如权利要求28所述的程序安装和执行方法,其中,使用静态分析工具来新建自动化工具以对初始化函数进行重定位。
31.如权利要求28所述的程序安装和执行方法,其中,校正程序二进制码以对初始化函数进行重定位。
32.如权利要求12所述的程序安装和执行方法,其中,响应于已经被无效的快照图像,在重启时重建快照图像。
33.一种使计算机实现程序安装和执行方法的计算机可读信息存储介质,所述方法包括:
将程序的执行序列上的特定位置设置为快照点;
执行程序直到快照点;
存储执行到快照点为止的程序的执行结果。
34.如权利要求33所述的计算机可读信息存储介质,所述方法还包括:
加载程序的执行结果;
基于加载的程序的执行结果,执行在程序的快照点之后的程序的剩余部分。
35.如权利要求33所述的计算机可读信息存储介质,其中,设置快照点的步骤包括:
从程序的执行序列中检测对系统执行环境具有实质依赖性的部分;
基于检测的部分确定快照点的设置位置。
36.如权利要求33所述的计算机可读信息存储介质,其中,设置快照点的步骤包括:考虑使用系统调用的初始化函数的执行顺序来确定快照点的设置位置。
37.如权利要求33所述的计算机可读信息存储介质,其中,初始化函数包括:
全局类创建器,在主函数被执行之前被执行或调用;
共享库的初始化函数。
38.如权利要求33所述的计算机可读信息存储介质,其中,所述程序包括:
独立函数,对系统执行环境不具有依赖性;和
依赖函数,对系统执行环境具有依赖性;并且
设置快照点的步骤包括在调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用之后,确定快照点的设置位置。
39.如权利要求33所述的计算机可读信息存储介质,其中,所述程序包括安装的程序或已安装、被更新的程序。
40.如权利要求33所述的计算机可读信息存储介质,其中,所述程序的执行结果包括:程序执行直到快照点为止的注册表信息和存储器信息。
41.一种程序执行设备,包括:
快照点设置单元,配置以将程序的执行序列上的特定位置设置为快照点;
第一执行单元,配置以执行程序直到快照点;
第二执行单元,配置以执行在程序的快照点之后的程序的剩余部分。
42.如权利要求41所述的程序执行设备,其中,所述程序包括:
独立函数,对系统执行环境不具有依赖性;和
依赖函数,对系统执行环境具有依赖性;并且
程序执行设备还包括:重排单元,配置以调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用。
43.如权利要求41所述的程序执行设备,其中,所述程序包括安装的程序或更新的程序。
44.如权利要求41所述的程序执行设备,其中,所述程序的执行结果包括:程序执行直到快照点的注册表信息和存储器信息中的至少一个。
45.如权利要求41所述的程序执行设备,其中,所述程序的执行结果被存储在非易失性存储器中。
46.一种程序执行方法,包括:
将程序的执行序列上的特定位置设置为快照点;
执行程序直到快照点;
执行在程序的快照点之后的程序的剩余部分。
47.如权利要求46所述的程序执行方法,其中,所述程序包括:
独立函数,对系统执行环境不具有依赖性;和
依赖函数,对系统执行环境具有依赖性;并且
调整独立函数和依赖函数的执行顺序以使独立函数在依赖函数之前被执行或调用。
48.如权利要求46所述的程序执行方法,其中,所述程序包括安装的程序或更新的程序。
49.如权利要求46所述的程序执行方法,其中,所述程序的执行结果包括:程序执行直到快照点为止的注册表信息和存储器信息中的至少一个。
CN2011100674829A 2010-03-23 2011-03-21 程序编译器、程序安装器和程序安装方法 Pending CN102200920A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020100025914A KR20110106716A (ko) 2010-03-23 2010-03-23 프로그램 컴파일러, 설치 장치, 및 설치 방법
KR10-2010-0025914 2010-03-23

Publications (1)

Publication Number Publication Date
CN102200920A true CN102200920A (zh) 2011-09-28

Family

ID=44310246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100674829A Pending CN102200920A (zh) 2010-03-23 2011-03-21 程序编译器、程序安装器和程序安装方法

Country Status (5)

Country Link
US (1) US8762967B2 (zh)
EP (1) EP2372540A1 (zh)
JP (1) JP2011198363A (zh)
KR (1) KR20110106716A (zh)
CN (1) CN102200920A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI479418B (zh) * 2012-01-19 2015-04-01 Novatek Microelectronics Corp 多媒體裝置的啟動方法及多媒體裝置
CN109144599A (zh) * 2017-06-27 2019-01-04 上海木鸡网络科技有限公司 函数加载方法及装置、计算机可读存储介质、终端
CN109284166A (zh) * 2017-07-20 2019-01-29 上海木鸡网络科技有限公司 执行程序的方法及装置、存储介质、工作站、终端
CN110109673A (zh) * 2019-04-25 2019-08-09 武汉大学 一种基于北斗亚纳秒级高精度授时的编译器检测装置及方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9218373B2 (en) * 2012-10-10 2015-12-22 Business Objects Software Ltd. In-memory data profiling
US9183120B1 (en) * 2013-06-04 2015-11-10 The Mathworks, Inc. Functional dependency analysis
US9665386B2 (en) 2013-06-14 2017-05-30 Nutanix, Inc. Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment
US9740514B1 (en) * 2013-06-26 2017-08-22 Nutanix, Inc. Method and system to share data with snapshots in a virtualization environment
US11243707B2 (en) 2014-03-12 2022-02-08 Nutanix, Inc. Method and system for implementing virtual machine images
US10613947B2 (en) 2016-06-09 2020-04-07 Nutanix, Inc. Saving and restoring storage devices using application-consistent snapshots
US10824522B2 (en) 2017-11-27 2020-11-03 Nutanix, Inc. Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014741A1 (en) * 2001-07-12 2003-01-16 International Business Machines Corporation Restructuring of executable computer code and large data sets
US20050114871A1 (en) * 2003-11-24 2005-05-26 Wolff Adam G. System for optimizing application start-up
CN1655146A (zh) * 2004-02-12 2005-08-17 国际商业机器公司 用于文件系统快照持久性的方法和装置
CN1977246A (zh) * 2004-05-26 2007-06-06 高通股份有限公司 用于在重启应用程序时使用应用程序状态历史信息的方法、软件和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2886961B2 (ja) * 1990-09-19 1999-04-26 株式会社日立製作所 プログラム入替方法
EP1513348A1 (en) 1996-09-11 2005-03-09 Matsushita Electric Industrial Co., Ltd. Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
US7062645B2 (en) * 1998-06-04 2006-06-13 Gateway Inc. Build to order personal computer manufacturing fast boot method
US20050003810A1 (en) * 2003-05-28 2005-01-06 Sun Microsystems, Inc. Method and system for optimizing software program start-up time
US7181646B2 (en) 2003-09-16 2007-02-20 Hitachi, Ltd. Mapping apparatus for backup and restoration of multi-generation recovered snapshots
JP2005284491A (ja) * 2004-03-29 2005-10-13 Mitsubishi Electric Corp 計算機の起動時間短縮方式
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
JP5014871B2 (ja) * 2006-05-16 2012-08-29 パナソニック株式会社 プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路
JP4725798B2 (ja) 2006-06-21 2011-07-13 日本電気株式会社 コンピュータシステム、ネットワークブートシステム、osイメージ切替方法、osイメージ切替プログラム
JP2009151386A (ja) 2007-12-18 2009-07-09 Ricoh Co Ltd 画像処理装置
KR101496325B1 (ko) * 2008-01-16 2015-03-04 삼성전자주식회사 가상 머신의 상태를 저장, 복원하는 방법 및 장치
US8949801B2 (en) * 2009-05-13 2015-02-03 International Business Machines Corporation Failure recovery for stream processing applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014741A1 (en) * 2001-07-12 2003-01-16 International Business Machines Corporation Restructuring of executable computer code and large data sets
US20050114871A1 (en) * 2003-11-24 2005-05-26 Wolff Adam G. System for optimizing application start-up
CN1655146A (zh) * 2004-02-12 2005-08-17 国际商业机器公司 用于文件系统快照持久性的方法和装置
CN1977246A (zh) * 2004-05-26 2007-06-06 高通股份有限公司 用于在重启应用程序时使用应用程序状态历史信息的方法、软件和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI479418B (zh) * 2012-01-19 2015-04-01 Novatek Microelectronics Corp 多媒體裝置的啟動方法及多媒體裝置
CN109144599A (zh) * 2017-06-27 2019-01-04 上海木鸡网络科技有限公司 函数加载方法及装置、计算机可读存储介质、终端
CN109144599B (zh) * 2017-06-27 2021-09-24 上海木鸡网络科技有限公司 函数加载方法及装置、计算机可读存储介质、终端
CN109284166A (zh) * 2017-07-20 2019-01-29 上海木鸡网络科技有限公司 执行程序的方法及装置、存储介质、工作站、终端
CN110109673A (zh) * 2019-04-25 2019-08-09 武汉大学 一种基于北斗亚纳秒级高精度授时的编译器检测装置及方法

Also Published As

Publication number Publication date
JP2011198363A (ja) 2011-10-06
EP2372540A1 (en) 2011-10-05
KR20110106716A (ko) 2011-09-29
US20110239199A1 (en) 2011-09-29
US8762967B2 (en) 2014-06-24

Similar Documents

Publication Publication Date Title
CN102200920A (zh) 程序编译器、程序安装器和程序安装方法
US8935683B2 (en) Inline function linking
US9235433B2 (en) Speculative object representation
US7596781B2 (en) Register-based instruction optimization for facilitating efficient emulation of an instruction stream
KR101903805B1 (ko) 프로그램 상태를 체크포인팅하며 복원하기 위한 방법
JP5906325B2 (ja) トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス
US8843920B2 (en) Systems and methods for deferring software implementation decisions until load time
CN104115120A (zh) 将程序执行从编译代码变换到解释代码
US20120030653A1 (en) Assumption-based compilation
KR20140046402A (ko) 라이브러리 운영체제들과의 애플리케이션 호환성
KR102156371B1 (ko) 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치
WO2017070040A1 (en) Missing include suggestions for external files
EP2706459B1 (en) Apparatus and method for validating a compiler for a reconfigurable processor
CN102364433B (zh) 在ARM处理器上实现Wine构建工具移植的方法
CN112130926B (zh) 应用程序运行的方法、装置、终端设备及存储介质
JP5401561B2 (ja) クラスファイル内にネイティブコードを埋め込むことによる仮想メカニズム内でのプラットフォーム依存ルーチンの適用
TWI515656B (zh) 程式安裝方法及裝置
Richthofer JyNI-using native CPython-extensions in Jython
CN113260976A (zh) 用于在编译源代码中调度指令技术
KR20140139465A (ko) 주석기반의 의사코드를 이용한 프로그램 변환 방법 및 그 방법을 구현하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
Van Dung et al. Function profiling for embedded software by utilizing QEMU and analyzer tool
Ramos Horta Java Optimizations Using Bytecode Templates
CN113031956A (zh) 程序编译方法和装置以及程序运行方法和装置
KR20100051574A (ko) 이동형 소프트웨어의 생성 방법 및 장치
D'Amato et al. The UNB-RISC16 Object File Format

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110928