CN106293870A - 计算机系统及其策略导向压缩方法 - Google Patents
计算机系统及其策略导向压缩方法 Download PDFInfo
- Publication number
- CN106293870A CN106293870A CN201610171954.8A CN201610171954A CN106293870A CN 106293870 A CN106293870 A CN 106293870A CN 201610171954 A CN201610171954 A CN 201610171954A CN 106293870 A CN106293870 A CN 106293870A
- Authority
- CN
- China
- Prior art keywords
- machine code
- code file
- computer system
- file
- compression
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
-
- 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/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Abstract
本发明提供一种计算机系统及其策略导向压缩方法,其中一种策略导向压缩方法,适用于机器码文件的压缩,所述策略导向压缩方法包含:通过位于计算机系统中的虚拟机从字节码中产生所述机器码文件;根据第一策略所定义的第一组条件,确定是否压缩所述机器码文件,其中所述第一组条件包含一个或多个条件;以及当确定满足所述第一组条件时,将所述机器码文件压缩为所述计算机系统中的压缩机器码文件。本发明的优点之一在于可节省存储空间,缩短下载时间或其他操作的时间。
Description
技术领域
本发明是有关于具有(hosts)虚拟机(Virtual Machine,VM)的计算机系统中的软件管理,更具体地,是有关于计算机系统及其策略导向(policy-based)压缩方法。
背景技术
VM是一种用于执行高阶程序(high level programs)的机器(例如,计算机)的软件仿真实施。VM提供平台独立的编程环境,抽象化底层硬件或操作系统(Operating System,OS)的细节,并允许高阶程序以与在其它平台上相同的方式来执行。VM的一种类型,有时称为管理运行时环境(Managed Runtime Environment,MRE),在主机OS上运行,以为单一进程提供仿真环境。对于VM仿真,高阶程序(例如,JAVA)编译为特定的字节码(bytecode)格式。为了在真正的硬件机器(例如,ARM处理器,x86处理器,等等)上执行,字节码可通过VM进行编译或解译,以生成可执行的机器码(machine code)。
安卓(Android)是基于Linux内核的通用移动框架。安卓运行时(AndroidRuntime,ART)是Android中一些应用(applications)和系统服务所使用的VM。当运行时,ART执行其处于达尔维克可执行(Dalvik Executable,DEX)格式下的字节码,以产生用于目标装置的机器码。DEX文件(后缀为.dex)包含一组类(class)定义及其有关数据。
ART的前身,Dalvik,耗费数年从运行时解译器(runtime interpreter)演变为即时(Just-in-Time,JIT)编译器(complier)。在应用运行时期间,JIT编译器产生并缓存执行最频繁的可执行机器码的一个子集(subset)。最新版本的Dalvik通过将DEX文件转换为优化的DEX文件(后缀为.odex)来执行运行时校验和优化。相对地,ART引入了提前(Ahead-Of-Time,AOT)编译的使用,通过统计地将应用(Application,APP)在首次安装(installation)、首次启动(booting)或首次开启(launching)时预编译(pre-compiling)为原始(native)机器码。与Dalvik相比,ART改进了总体执行效率并降低了功耗,因而改善了移动装置的电池连续使用时间(battery autonomy)。与此同时,ART带来了更快的应用执行,改善的存储器分配和碎片收集(garbage collection,GC)机制,新的应用调试(debugging)功能,以及更加准确的高阶的应用性能分析。
ART通过使用称为dex2oat的设备内置工具(on-device utility)将应用预编译为原始机器码。该工具接受应用软件包,以DEX文件作为输入,并产生目标装置可执行的编译机器码文件。该机器码文件为用于特定硬件处理器的原始二进制码,且格式为可执行可链接格式(Executable and Linkable Format,ELF)。对于ART,其文件名以.oat为后缀。
然而,工具dex2oat的计算时间是不可忽略的,特别是当系统首次启动或当应用首次安装时。此外,最后的机器码(ELF文件)相较于DEX字节码文件明显占用更多的存储空间(例如,每个应用会多出2-3倍)。因此,在具有较小存储器的低成本装置(例如,典型的移动装置)上提供ART对于硬件和软件开发者而言仍然面临挑战。
发明内容
有鉴于此,本发明提供一种计算机系统及其策略导向压缩方法。
根据本发明一实施例的策略导向压缩方法,适用于机器码文件的压缩,所述策略导向压缩方法包含:通过位于计算机系统中的虚拟机从字节码中产生所述机器码文件;根据第一策略所定义的第一组条件,确定是否压缩所述机器码文件,其中所述第一组条件包含一个或多个条件;以及当确定满足所述第一组条件时,将所述机器码文件压缩为所述计算机系统中的压缩机器码文件。
根据本发明一实施例的计算机系统,用于机器码文件的策略导向压缩,所述计算机系统包含:存储器;一个或多个处理器;以及互联器,耦接于所述存储器和所述一个或多个处理器;其中,所述一个或多个处理器适用于通过位于所述计算机系统中的虚拟机从字节码中产生所述机器码文件,根据第一策略所定义的第一组条件,确定是否压缩所述机器码文件,其中所述第一组条件包含一个或多个条件,以及当确定满足所述第一组条件时,将所述机器码文件压缩为所述计算机系统中的压缩机器码文件。
本发明所提供的计算机系统及其策略导向压缩方法,其优点之一在于可节省存储空间,缩短下载时间或其他操作的时间。
附图说明
图1为根据一实施例的Android软件架构100的示意图。
图2为根据一实施方式的执行策略导向压缩的计算机系统200的示意图。
图3为根据另一实施方式的执行策略导向压缩的计算机系统300的示意图。
图4为根据一实施方式的机器码的策略导向压缩方法400的整体流程图。
图5为根据一实施方式的在系统启动或软件包安装期间的机器码的策略导向压缩方法500的流程图。
图6为根据一实施例的执行方法500的系统启动进程600的示意图。
图7为根据一实施例的执行方法500的软件包安装进程700的示意图。
图8为根据一实施方式的当开启应用时的策略导向机器码文件压缩方法800的流程图。
图9为根据一实施方式的执行方法800的进程900的示意图。
图10为根据一实施方式的当应用进程终止时的机器码的策略导向压缩方法1000的流程图。
图11为根据一实施方式的执行方法400的系统图像创建进程1100以在主机上创建系统图像的示意图。
图12为根据一实施方式的策略导向的机器码文件压缩方法1200的流程图。
具体实施方式
在说明书及权利要求当中使用了某些词汇来指称特定的组件。本领域技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求当中所提及的“包含”及“包括”为一开放式的用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电性连接于该第二装置,或通过其它装置或连接手段间接地电性连接至该第二装置。“连接”一词在此包含任何直接及间接、有线及无线的连接手段。以下所述为实施本发明的较佳方式,目的在于说明本发明的精神而非用以限定本发明的保护范围,本发明的保护范围当视后附的权利要求所界定者为准。
本发明提供一种对VM所产生的机器码进行策略导向压缩的方法及系统。在一种实施方式中,当启动系统,安装软件包,开启应用,停止应用或发生其它系统事件时,移动装置系统执行该方法,以节省其存储空间并加速系统性能。该方法也可由主机系统来执行,例如,当创建系统图像时,以减小系统图像的尺寸来实现更快地下载,例如,由闪存(flash)工具或无线(Over-The-Air,OTA)下载来执行的下载。系统基于包含一组条件的策略来确定是否压缩编译机器码文件,其中该组条件包含一个或多个条件。若满足这组条件,则压缩该机器码文件。在一些实施方式中,当机器码文件压缩并储存于存储器空间后,可删除原机器码文件(在压缩之前从字节码编译而来)以节省存储器空间。当开启应用时,若存在压缩机器码文件,则将压缩的机器码文件解压缩为待执行的机器码文件。当应用进程终止(例如,由用户停止或由系统关闭)时,解压缩的机器码文件可从系统中删除以节省存储器空间。请注意,以上存储器可以是易失性存储器及/或非易失性存储器,本发明并不以此为限。
在一些实施方式中,压缩和解压缩可根据并行(parallel)压缩算法由多核处理器的多个核心或专用压缩/解压缩硬件来执行,以减少系统启动,软件包安装,应用开启,系统图像创建及其它系统事件所需的时间。
在以下说明中,策略导向的压缩是以Android软件环境进行说明的。然而应当理解,策略导向压缩可以在提供VM将字节码翻译或编译至机器码的任意软件环境下实施。此外,尽管在以下说明中提到了特定的字节码和机器码文件格式,编程语言和工具,应当理解,策略导向压缩可应用于任意字节码和机器码文件格式,编程语言和工具。在以下说明的一些部分中,使用了Java应用程序语言及其相关的软件框架作为举例。然而,请理解,策略导向压缩可以应用于基于不同于Java的另一编程语言的VM产生的机器码。
图1为根据一实施例的Android软件架构100的示意图。架构100包含五层:(1)内核(Kernel)110(例如,Linux内核),负责基本的系统功能,例如进程管理,存储器管理,电源管理,资源接入及装置驱动等;(2)库(Libraries)120,提供使用C或C++编程语言书写的一组原始库,包括libc,SQLite,WebKit等;在一实施例中,库120包含可用于机器码文件压缩和解压缩的压缩模块180;(3)Android运行时(Runtime)130,这是用于执行应用程序(例如,Java代码)的具有核心库的VM;另外,Android运行时也可提供增强的dex2oat工具650,以用于从其DEX字节码中产生机器码文件;(4)Android框架(framework)140,使用Java类和接口(interfaces)为应用提供较高阶的服务;这些服务的例子包括但不仅限于,软件包管理服务(Package Manager Service,PMS)141和活动管理服务(Activity Manger Service,AMS)142;具体地,PMS 141负责管理,安装和卸载应用软件包,以及AMS 142负责管理与用户进行交互的所有活动;(5)应用(Applications)150,使用高阶编程语言(例如,Java)来编程。
对于应用150而言,通常应用150作为具有软件包文件格式.apk的Android应用软件包而被分配和安装。软件包包含(例如,以zip格式)压缩的Java程序和必要文件。通常,软件包(.apk文件)包含classes.dex,AndroidManifest.xml,resources.arsc,目录Res\以及目录META-INF\,其中classes.dex是包含编译后的.class文件的Dalvik字节码,AndroidManifest.xml是包含软件包信息的二进制文件,resources.arsc包含编译后的资源文件,目录Res\包含未编译的资源文件,以及目录META-INF\用于证明应用的.apk完整性和安全性。
在一实施例中,对于机器码的策略导向压缩,Android软件架构100包含使用库120中的压缩模块180和Android运行时130中的策略导向压缩的增强的dex2pat工具650。压缩模块180可用于压缩和解压缩机器码文件。尽管压缩模块180如图1所示作为库120的一部分,在另一实施例中,压缩模块180可以位于架构100的不同层。对于机器码的策略导向压缩,当满足一组条件时,可以调用压缩模块180,其中,这组条件可包含一个或多个条件,且这组条件由增强的dex2oat 650中的策略所定义。这些条件的例子包含但不仅限于:机器码文件不是来自特定的系统软件包,机器码文件不是来自使用频繁(即,超过预定的频率阈值)的应用软件包,软件包文件名与特定名称列表中的名称相匹配,软件包文件名与特定关键字列表中的关键字相匹配,软件包文件名未包含于白名单,软件包文件名包含于黑名单,该应用软件包是否预计在安装后不会立即使用(即,在预定时段内不会使用),等。例如,根据一策略,若机器码文件的软件包文件名包含于黑名单中,且不是来自于频繁使用的应用软件包,则压缩该机器码文件;根据另一策略,若软件包文件名包含关键字“android”(指示常用度),则不压缩机器码。策略可定义任意数量的上述条件的组合。
在一实施方式中,具有同一组条件的相同策略可用于不同的系统事件,例如系统启动,软件包安装,应用开启,应用进程终止和系统图像创建。在另一实施方式中,具有不同条件组的策略可用于这些不同的事件。在另一实施方式中,这些事件中的一些可使用具有相同条件组的相同策略,而这些事件中的另一些可使用具有不同条件组的策略。
在一实施方式中,压缩模块180可被增强的字节码编译工具所调用,该工具用于ART运行时130以不仅执行字节码至机器码编译,而且执行机器码文件的策略导向压缩。Android中的增强的编译工具的一种实施例为增强的dex2oat工具650,以下将进一步详细说明。
图2为根据一实施方式的执行策略导向压缩的计算机系统200的示意图。计算机系统200包含一个或多个处理器210(也称为中央处理单元CPU),且每个处理器包含一个或多个核心212。计算机系统200可以是移动装置或者主机的一部分。每个核心212执行机器码。在一实施方式中,每个核心212具有用于在软件仿真环境(例如图1所示的Android架构100)中执行应用的一个或多个VM。计算机系统200进一步包含用于储存代码和数据的存储器260,存储器260可包括易失性存储器230和非易失性存储器250。易失性存储器(memory/volatilememory)230(例如,动态随机存取存储器DRAM)可在代码执行期间被快速存取,非易失性存储器(storage/nonvolatile storage)250(例如,闪存,磁性数据存储装置,光磁数据存储装置等)可用于储存系统图像,应用软件包(例如,.apk文件),数据缓存文件等。计算机系统200也包含互联器240(在一些系统中也称为“总线”),以将处理器210,易失性存储器230和非易失性存储器250相互连接。在一些实施方式中,计算机系统200也包含外围装置,例如显示器,相机,调制解调器,网络接口等。在一实施方式中,计算机系统200的一个或多个核心212执行机器码的策略导向压缩,以下将结合图4-12进行详细说明。
图3为根据另一实施方式的执行策略导向压缩的计算机系统300的示意图。除图2所示的一个或多个处理器210、存储器260(包括易失性存储器230和非易失性存储器250)及互联器240之外,计算机系统300也包含用于压缩和解压缩的专用压缩电路310。在一实施例中,压缩电路310可以是一个或多个协同处理器(co-processors),例如单指令多数据(Single-Instruction-Multiple-Data,SIMD)处理器,如NEON,图形处理单元(Graphic Processing Unit,GPU)或专用集成电路(Application-Specific Integrated Circuit,ASIC)等。在一实施方式中,压缩电路310可用于执行策略导向的机器码文件压缩,以下将结合图4-12进行详细说明。
在一实施方式中,计算机系统200和300中的每个可以是移动计算机装置及/或移动通信装置(例如,智能电话,平板电脑,膝上型电脑等)中的一部分。在一实施方式中,计算机系统200和300中的每个可以是主机或云服务器系统的一部分。
在一实施方式中,图1的压缩模块180以及图3的压缩电路310可根据文件压缩算法执行机器码压缩和解压缩。不同的文件压缩算法具有不同的压缩速率(即,压缩文件尺寸与原始文件尺寸的比率),压缩速度及解压缩速度。一般的压缩算法的例子包括但不仅限于:GZIP,ZIP,BZIP2,LZMA,LZH等。这些一般的算法通常在解压缩和压缩速度上通常很慢。另一方面,用于多核处理器的并行算法可例如PIGZ(多个核心并行实施gzip),LBZIP2,PBZIP2,PLZIP,P7ZIP等。这些压缩和解压缩的并行算法在多核处理器环境(例如,图2的计算机系统200和图3的计算机系统300)中通常具有比一般算法更快的速度。
图4为根据一实施方式的机器码的策略导向压缩方法400的整体流程图。方法400可由计算机系统(例如,图2的计算机系统200或图3的计算机系统300)来执行。方法400从步骤401开始,在步骤401中,计算机系统从应用软件包中获取字节码。在步骤402中,计算机系统将字节码编译(即,翻译)为机器码。在一实施方式中,字节码编译由计算机系统所具有的VM来执行。在步骤403中,计算机系统将机器码写入存储器中的ELF文件。简而言之,从步骤401至步骤403,计算机系统的VM从字节码来产生机器码的ELF文件。以ART为例,现有技术的这些步骤是使用原始的dex2oat工具来执行的。在步骤404中,计算机系统确定是否满足策略所定义的一组条件,其中这组条件包含一个或多个条件。若满足,则在步骤405中,将机器码的ELF文件压缩为压缩文件,且方法400结束。若不满足这组条件,则方法400在无压缩的情况下结束。请注意,以上存储器可以是易失性存储器及/或非易失性存储器,本发明并不以此为限。
当机器码文件的压缩结束后,若方法400因为某些事件被调用,则原始(即未压缩的)机器码文件可删除。因此,可删除原始机器码文件以节省存储空间,以及压缩的机器码文件可被储存以备后续使用。请注意,在已知或预计机器码需要立即(例如,在预定时段内)执行或频繁(即,高于预定的频率阈值)执行的特定情形下,原始机器码文件也可保留在存储器中不删除,例如当应用刚刚被安装以开启时。请理解,此处未提及的其它事件也可导致原始机器码文件的删除或在存储器中的保留。请注意,以上存储器可以是易失性存储器及/或非易失性存储器,本发明并不以此为限。
图5为根据一实施方式的在系统启动或软件包安装期间的机器码的策略导向压缩方法500的流程图。方法500可由计算机系统(例如,图2的计算机系统200或图3的计算机系统300)来执行。方法500包含分别与图4的方法400的步骤401-405相同的步骤501-505。在步骤504中,确定是否满足策略所定义的一组条件(一个或多个条件)。若不满足,则方法500结束。若在步骤504中满足策略所定义的该一个或多个条件,则方法500在步骤505之后另外包含步骤506,即在压缩之后删除机器码的ELF文件。
图6为根据一实施例的执行方法500的系统启动进程600的示意图。在Android中的系统启动期间,进程600使用增强的dex2oat工具650来执行字节码至机器码的编译以及机器码的策略导向压缩。当启动系统时,系统服务器610向PMS 141(图1)发出StartBootstrapServices命令611。然后,PMS 141调用PackageManagerService()函数621,轮流调用一系列函数,例如scanDirLI()622,scanPackageLI()623和performDexOptLI()624。对于performDexOptLI()624,在步骤625中,PMS 141检查是否需要优化字节码文件,例如IsDexOptNeeded()。若没有需要,则不执行优化。若有需要执行优化,则PMS 141对安装程序(Installer)630调用dexopt()626。接着,安装程序630执行do_dexopt()631至Installd 640(运行在后台的后台程序)。然后,若运行时环境为ART,则Installd640调用dex2oat 641至增强的dex2oat 650。最后,增强的dex2oat 650执行图5所述的方法500。
图7为根据一实施例的执行方法500的软件包安装进程700的示意图。在Android中的软件包安装期间,进程700也使用增强的dex2oat工具650来执行字节码至机器码编译和策略导向的机器码文件压缩。当安装软件包安装程序时,PMS 141(图1)调用一系列函数,例如installPackage()711,scanPackageLI()712和performDexOptLI()713。对于performDexOptLI()713,在步骤714中,PMS 141检查是否有需要优化字节码文件(例如,IsDexOptNeeded())。若没有需要,则不执行优化。若有需要执行优化,则PMS 141调用dexopt()715至Installer 630。接着,Installer 630执行do_dexopt()731至Installd 640。然后,若运行时环境为ART,则Installd 640调用dex2oat 741至增强的dex2oat 650。然后,通过调用dex2oat 741将字节码文件翻译为机器码文件。最后,增强的dex2oat 650执行图5所述的方法500。
图8为根据一实施方式的当开启应用时的策略导向机器码文件压缩方法800的流程图。方法800可由计算机系统来执行,例如图2的计算机系统200或图3的计算机系统300。方法800以步骤811开始,在步骤811中,计算机系统检查其存储器中的用于应用的压缩ELF文件是否可用。若可用,则在步骤812中对压缩ELF文件进行解压缩。若不可用,则计算机系统执行图4的方法400。在一实施方式中,当应用在一段时间之前(例如,N分钟之前,其中N为预定数字)被安装时,执行方法800。对于最近安装的应用(例如,在最近N分钟之内),该应用可在不执行方法800的情况下直接开启。请注意,以上存储器可以是易失性存储器及/或非易失性存储器,本发明并不以此为限。
更具体地,若应用的压缩ELF文件不可用,则在步骤801中,计算机系统从应用软件包中获取字节码。在步骤802中,计算机系统将该字节码编译(即翻译)为机器码。在一实施方式中,字节码编译是由计算机系统中具有的VM来执行的。在步骤803中,计算机系统将机器码写入存储器中的ELF文件。在步骤804中,计算机系统确定是否满足策略所定义的一组条件,其中该组条件包含一个或多个条件。若满足,则在步骤805中,将机器码的ELF文件压缩为压缩文件,且方法800结束。若不满足策略所定义的该组条件,则在没有压缩的情况下,方法800结束。请注意,以上存储器可以是易失性存储器及/或非易失性存储器,本发明并不以此为限。
图9为根据一实施方式的执行方法800的进程900的示意图。当在Android中开启应用时,进程900也使用增强的dex2oat工具650来执行字节码至机器码编译和机器码的策略导向压缩。当开启应用时,启动器910发起startActivity()911至活动(Activity)920。活动920调用startActivity()函数921。接着,AMS 142(图1)调用一系列函数,例如startActivity()931,startProcessLocked()932和attachApplication()933。AMS 142也调用ensurePackageDexOpt()934,导致PMS141调用performDexOptLI()941。然后,在步骤811中,PMS 141检查其存储器中用于应用的压缩ELF文件是否可用。若可用,则在步骤812中,对压缩ELF文件进行解压缩以用于开启。若不可用,则计算机系统执行步骤942。请注意,以上存储器可以是易失性存储器及/或非易失性存储器,本发明并不以此为限。
在步骤942中,PMS 141进一步检查是否有必要优化字节码文件(例如IsDexOptNeeded())。若不必要,则不执行优化。若有必要执行优化,则PMS 141调用dexopt()943至Installer 630。接着,Installer 630执行do_dexopt()951至Installd 640。然后,若运行时环境为ART,则Installd 640调用dex2oat 961至增强的dex2oat 650。最后,增强的dex2oat 650执行图4所述的方法400,方法400包含与图8中的方法800的步骤801-805相同的步骤。
图10为根据一实施方式的当应用进程终止时的机器码的策略导向压缩方法1000的流程图。方法1000可由计算机系统来执行,例如图2的计算机系统200或图3的计算机系统300。用于应用进程终止的方法1000是在根据图8的方法800开启应用后执行的。
在一实施方式中,从当在步骤1001中应用进程终止时(例如,当应用被用户停止或者被系统关闭时),方法1000开始。在步骤1002中,进程资源(例如,易失性存储器,I/O等)释放。在步骤1003中,计算机系统确定是否满足预定策略的一组条件,其中该组条件包含一个或多个条件。若满足,则在步骤1004中删除解压缩的机器码文件,且方法1000结束。若不满足这组条件,方法1000在不删除解压缩的机器码文件的情况下结束。在一实施方式中,方法1000中所使用的策略可包含上述条件的任意组合,并可另外包含解压缩的机器码是否将再次立即(即,在预定时段内)被使用的预计。
图5-10的方法和进程说明机器码的策略导向压缩通常在移动装置上执行。机器码的策略导向压缩也可在主机(例如,服务器电脑)上实施,例如,用于创建系统图像。在一实施方式中,主机可使用图4中所说明的方法400来压缩所选择的一组机器码文件,以形成用于下载至装置(例如,移动装置)的系统图像。通过提前压缩系统图像中已选择的机器码文件,可减小系统图像的总体尺寸。该压缩改善了使用闪存工具或使用OTA技术的下载时间。对于OTA,该压缩进一步节省了无线电资源的下载带宽。
图11为根据一实施方式的执行方法400的系统图像创建进程1100以在主机上创建系统图像的示意图。当在Android中创建系统图像时,进程1100使用增强的dex2oat工具来执行字节码至机器码编译及策略导向的机器码文件压缩。
当调用Package_internal.mk 1110来执行dexpreopt-one-file 1111时,进程1100开始。对于ART,这使得dex_preopt.mk 1120来执行dex2oat-one-file 1121。接着,这使得dex_preopt_libART.mk 1130来调用dex2oat()1131。最后,增强的dex2oat 650执行图4所述的方法400。
图12为根据一实施方式的策略导向的机器码文件压缩方法1200的流程图。方法1200可由计算机系统来执行,例如图2中的计算机系统200或图3中的计算机系统300。当在步骤1201中计算机系统中具有的VM从字节码产生机器码文件时,方法1200开始。然后,在步骤1202中,计算机系统确定是否根据策略定义的一组条件压缩机器码文件。在步骤1203中,当确定满足该组条件时,将机器码文件压缩为计算机系统中的压缩机器码文件。
在一些实施方式中,对于系统启动和软件包安装,可删除机器码文件以节省存储空间。当开启应用时,压缩的机器码文件被解压缩以用于执行。当应用进程终止时,可删除解压缩的机器码文件。机器码文件的压缩和删除可在移动装置上执行以节省其存储空间,或者在主机上执行以缩小系统图像尺寸而减少下载时间。并行文件压缩和解压缩算法可用于对多核计算机系统中的机器码文件进行压缩和解压缩以加速系统启动,应用安装及应用开启。另一方面,压缩和解压缩算法可由另外的压缩电路来执行。
请理解,上述说明的目的仅在于举例,本发明并不以此为限。本领域技术人员在阅读及理解上述说明的基础上能够轻易了解许多其他实施方式。尽管本发明已结合具体较佳实施方式进行了说明,但应了解本发明并不仅限于上述实施方式,在本发明后附的权利要求所述的精神及范围内可进行修改和变形。相应地,说明书和附图应视为说明举例而非限制。本发明的保护范围当视后附的权利要求所界定者为准。
Claims (23)
1.一种策略导向压缩方法,适用于机器码文件的压缩,所述策略导向压缩方法包含:
通过位于计算机系统中的虚拟机从字节码中产生所述机器码文件;
根据第一策略所定义的第一组条件,确定是否压缩所述机器码文件,其中所述第一组条件包含一个或多个条件;以及
当确定满足所述第一组条件时,将所述机器码文件压缩为所述计算机系统中的压缩机器码文件。
2.根据权利要求1所述的策略导向压缩方法,其特征在于,将所述机器码文件压缩为所述计算机系统中的所述压缩机器码文件的步骤进一步包含:
当启动所述计算机系统时,从所述计算机系统中删除所述机器码文件。
3.根据权利要求1所述的策略导向压缩方法,其特征在于,将所述机器码文件压缩为所述计算机系统中的所述压缩机器码文件的步骤进一步包含:
当安装应用软件包时,从所述计算机系统中删除所述机器码文件。
4.根据权利要求1所述的策略导向压缩方法,其特征在于进一步包含:
当开启应用时,确定所述压缩机器码文件是否储存于所述计算机系统中;以及
当确定所述压缩机器码文件储存于所述计算机系统中时,将所述压缩机器码文件解压缩为待执行的所述机器码。
5.根据权利要求4所述的策略导向压缩方法,其特征在于进一步包含:
当确定所述计算机系统中未储存所述压缩机器码文件时,在产生所述机器码的步骤之前,从应用软件包中获取所述应用的所述字节码。
6.根据权利要求4所述的策略导向压缩方法,其特征在于,将所述压缩机器码文件解压缩为待执行的所述机器码的步骤进一步包含:
根据并行解压缩算法,使用所述计算机系统的多个核心并行解压缩所述压缩机器码文件。
7.根据权利要求1所述的策略导向压缩方法,其特征在于进一步包含:
检测应用的进程何时终止;
根据第二策略所定义的第二组条件,确定是否删除所述应用的解压缩机器码文件,其中所述第二组条件包含一个或多个条件;以及
当确定满足所述第二组条件时,删除所述计算机系统中的所述解压缩机器码文件。
8.根据权利要求1所述的策略导向压缩方法,其特征在于,所述计算机系统为主机,以及所述策略导向压缩方法进一步包含:
选择所述压缩机器码文件作为下载至移动装置的系统图像的一部分。
9.根据权利要求1所述的策略导向压缩方法,其特征在于,所述第一策略所定义的第一组条件包含以下条件中的一个或多个:
所述机器码文件不是来自特定的软件包;
所述机器码文件不是来自频繁使用的软件包;
软件包文件名与特定名称列表中的名称不匹配;
所述软件包文件名与特定关键字列表中的关键字不匹配;
所述软件包文件名未包含于白名单中;
所述软件包文件名包含于黑名单中;
所述应用软件包预计在安装后不会立即使用。
10.根据权利要求1所述的策略导向压缩方法,其特征在于,将所述机器码文件压缩为所述计算机系统中的所述压缩机器码文件的步骤进一步包含:
根据并行压缩算法,使用所述计算机系统的多个核心并行地压缩所述机器码文件;以及
根据所述并行压缩算法,使用所述计算机系统的所述多个核心并行解压缩所述压缩机器码文件。
11.根据权利要求1所述的策略导向压缩方法,其特征在于,所述计算机系统位于移动装置中,以及确定是否压缩所述机器码文件的步骤是在以下事件中的一个或多个期间执行:
系统启动,软件包安装及应用开启。
12.一种计算机系统,用于机器码文件的策略导向压缩,所述计算机系统包含:
存储器;
一个或多个处理器;以及
互联器,耦接于所述存储器和所述一个或多个处理器;
其中,所述一个或多个处理器适用于通过位于所述计算机系统中的虚拟机从字节码中产生所述机器码文件,根据第一策略所定义的第一组条件,确定是否压缩所述机器码文件,其中所述第一组条件包含一个或多个条件,以及当确定满足所述第一组条件时,将所述机器码文件压缩为所述计算机系统中的压缩机器码文件。
13.根据权利要求12所述的计算机系统,其特征在于,所述一个或多个处理器进一步适用于:
当启动所述计算机系统时,在将所述机器码文件压缩之后,从所述计算机系统中删除所述机器码文件。
14.根据权利要求12所述的计算机系统,其特征在于,所述一个或多个处理器进一步适用于:
当安装获取所述字节码的应用软件包时,在将所述机器码文件压缩之后,从所述计算机系统中删除所述机器码文件。
15.根据权利要求12所述的计算机系统,其特征在于,所述一个或多个处理器进一步适用于:
当开启应用时,确定所述压缩机器码文件是否储存于所述计算机系统中;以及
当确定所述压缩机器码文件储存于所述计算机系统中时,将所述压缩文件码文件解压缩为待执行的所述机器码。
16.根据权利要求15所述的计算机系统,其特征在于,所述一个或多个处理器进一步适用于:
根据并行解压缩算法,使用所述计算机系统的多个核心解压缩所述压缩机器码文件。
17.根据权利要求15所述的计算机系统,其特征在于,所述一个或多个处理器进一步适用于:
当确定所述压缩机器码文件未储存于所述计算机系统中时,在产生所述机器码文件之前,从应用软件包中获取所述应用的所述字节。
18.根据权利要求12所述的计算机系统,其特征在于,所述一个或多个处理器进一步适用于:
检测何时应用的进程终止;
根据第二策略所定义的第二组条件,确定是否删除所述应用的解压缩机器码文件,其中第二组条件包含一个或多个条件;以及
当确定满足所述第二组条件时,删除所述计算机系统中的所述解压缩机器码文件。
19.根据权利要求12所述的计算机系统,其特征在于,所述计算机系统为主机,以及所述一个或多个处理器进一步适用于:
选择所述压缩机器码文件作为下载至移动装置的系统图像的一部分。
20.根据权利要求12所述的计算机系统,其特征在于,所述第一策略所定义的所述第一组条件包含以下条件中的一个或多个:
所述机器码文件不是来自特定的软件包;
所述机器码文件不是来自频繁使用的软件包;
软件包文件名与特定名称列表中的名称不匹配;
所述软件包文件名与特定关键字列表中的关键字不匹配;
所述软件包文件名并不包含于白名单中;
所述软件包文件名包含于黑名单中;
所述应用软件包预计在安装后不会立即使用。
21.根据权利要求12所述的计算机系统,其特征在于,所述一个或多个处理器中包含多个核心,所述多个核心适用于:
根据并行压缩算法,并行地压缩所述机器码文件;以及
根据所述并行压缩算法,并行地解压缩所述压缩机器码文件。
22.根据权利要求12所述的计算机系统,其特征在于,所述计算机系统位于移动装置中,以及所述移动装置确定是否压缩所述机器码文件的步骤是在以下事件中的一个或多个期间执行:
系统启动,软件包安装及应用开启。
23.根据权利要求12所述的计算机系统,其特征在于进一步包含:
专用压缩电路,耦接于所述互联器,用于压缩或解压缩所述机器码文件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562186144P | 2015-06-29 | 2015-06-29 | |
US62/186,144 | 2015-06-29 | ||
US14/960,644 | 2015-12-07 | ||
US14/960,644 US20160378452A1 (en) | 2015-06-29 | 2015-12-07 | Policy-Based Compression of Machine Code Generated by a Virtual Machine |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106293870A true CN106293870A (zh) | 2017-01-04 |
Family
ID=55527839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610171954.8A Withdrawn CN106293870A (zh) | 2015-06-29 | 2016-03-24 | 计算机系统及其策略导向压缩方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160378452A1 (zh) |
EP (1) | EP3113019A1 (zh) |
CN (1) | CN106293870A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106970824A (zh) * | 2017-03-07 | 2017-07-21 | 华中科技大学 | 一种基于带宽感知的虚拟机迁移压缩方法及系统 |
CN112612518A (zh) * | 2020-12-08 | 2021-04-06 | 麒麟软件有限公司 | 一种基于飞腾平台的网络checksum算法优化方法 |
CN112835975A (zh) * | 2020-06-05 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中部署、更新、调用智能合约的方法 |
CN114924845A (zh) * | 2022-07-21 | 2022-08-19 | 合肥中科类脑智能技术有限公司 | 适用于边缘ai场景的镜像延迟加载方法及系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3404538B1 (en) * | 2016-01-26 | 2022-09-28 | Huawei Technologies Co., Ltd. | Data processing method, and data processing apparatus |
CN108279941B (zh) | 2016-12-31 | 2021-06-15 | 阿里巴巴集团控股有限公司 | 一种应用程序的压缩方法和装置 |
CN107357656B (zh) * | 2017-06-27 | 2020-10-27 | 海南飞特同创科技有限公司 | 一种内存分配方法、移动终端以及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360073B1 (en) * | 2003-05-15 | 2008-04-15 | Pointsec Mobile Technologies, Llc | Method and apparatus for providing a secure boot for a computer system |
CN102479098A (zh) * | 2010-11-23 | 2012-05-30 | 三星电子株式会社 | 使用快照图像的引导设备和方法 |
CN103607571A (zh) * | 2013-11-22 | 2014-02-26 | 吉林大学 | 采用Android手机实现远程视频监视与云台控制方法 |
CN103841424A (zh) * | 2012-11-27 | 2014-06-04 | 豪威科技股份有限公司 | 随机存取存储器中压缩数据的系统及方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US6324685B1 (en) * | 1998-03-18 | 2001-11-27 | Becomm Corporation | Applet server that provides applets in various forms |
US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US7185081B1 (en) * | 1999-04-30 | 2007-02-27 | Pmc-Sierra, Inc. | Method and apparatus for programmable lexical packet classifier |
GB0513432D0 (en) * | 2005-06-30 | 2005-08-10 | Nokia Corp | Signal message compression |
US7561081B2 (en) * | 2006-07-12 | 2009-07-14 | Qualcomm Incorporated | Method and apparatus for optimization of SigComp UDVM performance |
US8533687B1 (en) * | 2009-11-30 | 2013-09-10 | dynaTrade Software GmbH | Methods and system for global real-time transaction tracing |
US7796592B2 (en) * | 2006-11-13 | 2010-09-14 | At&T Mobility Ii Llc | Optimizing static dictionary usage for signal, hypertext transfer protocol and bytecode compression in a wireless network |
US20080115125A1 (en) * | 2006-11-13 | 2008-05-15 | Cingular Wireless Ii, Llc | Optimizing static dictionary usage for signal compression and for hypertext transfer protocol compression in a wireless network |
US9025898B2 (en) * | 2009-04-06 | 2015-05-05 | Red Hat Israel, Ltd. | Dynamically selecting compression method for graphics remoting |
US8682862B2 (en) * | 2009-04-10 | 2014-03-25 | Phd Virtual Technologies Inc. | Virtual machine file-level restoration |
US8694685B2 (en) * | 2011-02-25 | 2014-04-08 | International Business Machines Corporation | Migrating virtual machines with adaptive compression |
US9183205B1 (en) * | 2012-10-05 | 2015-11-10 | Symantec Corporation | User-based backup |
US9916320B2 (en) * | 2015-04-26 | 2018-03-13 | International Business Machines Corporation | Compression-based filtering for deduplication |
-
2015
- 2015-12-07 US US14/960,644 patent/US20160378452A1/en not_active Abandoned
-
2016
- 2016-03-10 EP EP16159751.3A patent/EP3113019A1/en not_active Withdrawn
- 2016-03-24 CN CN201610171954.8A patent/CN106293870A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360073B1 (en) * | 2003-05-15 | 2008-04-15 | Pointsec Mobile Technologies, Llc | Method and apparatus for providing a secure boot for a computer system |
CN102479098A (zh) * | 2010-11-23 | 2012-05-30 | 三星电子株式会社 | 使用快照图像的引导设备和方法 |
CN103841424A (zh) * | 2012-11-27 | 2014-06-04 | 豪威科技股份有限公司 | 随机存取存储器中压缩数据的系统及方法 |
CN103607571A (zh) * | 2013-11-22 | 2014-02-26 | 吉林大学 | 采用Android手机实现远程视频监视与云台控制方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106970824A (zh) * | 2017-03-07 | 2017-07-21 | 华中科技大学 | 一种基于带宽感知的虚拟机迁移压缩方法及系统 |
CN106970824B (zh) * | 2017-03-07 | 2019-12-17 | 华中科技大学 | 一种基于带宽感知的虚拟机迁移压缩方法及系统 |
CN112835975A (zh) * | 2020-06-05 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中部署、更新、调用智能合约的方法 |
CN112835975B (zh) * | 2020-06-05 | 2023-09-29 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中部署、更新、调用智能合约的方法 |
CN112612518A (zh) * | 2020-12-08 | 2021-04-06 | 麒麟软件有限公司 | 一种基于飞腾平台的网络checksum算法优化方法 |
CN112612518B (zh) * | 2020-12-08 | 2022-04-01 | 麒麟软件有限公司 | 一种基于飞腾平台的网络checksum算法优化方法 |
CN114924845A (zh) * | 2022-07-21 | 2022-08-19 | 合肥中科类脑智能技术有限公司 | 适用于边缘ai场景的镜像延迟加载方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20160378452A1 (en) | 2016-12-29 |
EP3113019A1 (en) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293870A (zh) | 计算机系统及其策略导向压缩方法 | |
EP3377968B1 (en) | Dynamic update of an application in compilation and deployment | |
CN107041158B (zh) | 用于模块化反射的限制性访问控制 | |
US10146522B1 (en) | Live code updates | |
US8924922B2 (en) | Pre-compiling hosted managed code | |
US9766867B2 (en) | Systems and methods for improving performance of mobile applications | |
EP4099153A1 (en) | Extending a virtual machine instruction set architecture | |
US10140119B2 (en) | Modular serialization | |
US11392357B2 (en) | Delegating bytecode runtime compilation to serverless environment | |
US11294791B2 (en) | Code optimization for connected managed runtime environments | |
Carreira et al. | From warm to hot starts: Leveraging runtimes for the serverless era | |
CN112463417A (zh) | 基于国产信创软硬件平台的迁移适配方法、装置和设备 | |
TW201810106A (zh) | 選擇性執行應用內計算方法之本地機器代碼之方法及相關設備 | |
US10846417B2 (en) | Identifying permitted illegal access operations in a module system | |
US8578352B1 (en) | Optimizing object oriented programs using limited customization | |
Wagner et al. | “Slimming” a Java virtual machine by way of cold code removal and optimistic partial program loading | |
US10552135B1 (en) | Reducing a size of an application package | |
Courbot et al. | Efficient off-board deployment and customization of virtual machine-based embedded systems | |
Cech Previtali et al. | Aspect-based dynamic software updating: a model and its empirical evaluation | |
CN111880804A (zh) | 应用程序代码的处理方法及装置 | |
US20170083298A1 (en) | Resilient format for distribution of ahead-of-time compiled code components | |
Wen et al. | Wasmslim: Optimizing webassembly binary distribution via automatic module splitting | |
KR101562282B1 (ko) | 오덱스 무결성 검증 시스템 및 방법 | |
You et al. | A static region‐based compiler for the Dalvik virtual machine | |
CN117873584A (zh) | 基于speed-profile的Android应用启动优化方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170104 |
|
WW01 | Invention patent application withdrawn after publication |