用于NAND存储设备的抢占式解压调度的制作方法

文档序号:16807073发布日期:2019-02-10 13:08阅读:155来源:国知局
用于NAND存储设备的抢占式解压调度的制作方法

非易失性存储器(诸如闪速存储)被并入各种类型的计算设备中,包括便携式计算设备(例如,蜂窝电话、智能电话、平板计算机、便携式数字助理(pda)、便携式游戏控制台、可穿戴设备以及其它电池供电的设备)。为了解决用户需求,在便携式计算设备中的nand闪速存储的容量不断增加。然而,较大的nand闪速存储显著增加了便携式计算设备的成本。对成本压力的通常解决方案是实现文件系统压缩,这使得用户数据尽可能的紧凑。虽然压缩解决方案可以临时扩展nand闪速存储的有限容量,但压缩/解压缩应用数据和/或代码的过程会对便携式计算设备的性能产生负面影响并增加功耗,这会不期望地降低电池寿命。

例如,压缩在nand中的数据和/或代码,延长了随机读取延时。用于执行随机读取的较长的延时,使得nand不适合用于直接代码执行。需要将代码从nand下载到易失性存储器(例如,动态随机存取存储器(dram)),然后从dram来执行。此外,nand存储以块的形式读取和写入。在写入nand之前,可以对代码/数据进行编码,这需要实现快速编码算法。在读取nand之后,需要对经压缩的代码/数据进行解码,这可能显著地限制了设备的性能。

因此,需要用于调度对在nand存储中的经压缩的对象的解压缩的改进的系统和方法,以增加存储容量而不会不利地影响设备性能和用户体验。



技术实现要素:

公开了用于抢占式调度对在闪速存储中的经压缩的对象的解压缩的系统、方法和计算机程序。系统的一个实施例包括闪存设备和抢占式解压缩调度器组件。抢占式解压缩调度器组件包括被配置为进行以下操作的逻辑:响应于应用安装器组件将经压缩的应用安装到闪存设备上,生成并存储定义与经压缩的应用相关联的一个或多个依赖对象的元数据。响应于由应用启动器组件对经压缩的应用的启动,抢占式解压缩调度器组件从所存储的元数据确定与要启动的经压缩的应用相关联的一个或多个依赖对象。基于所存储的元数据,抢占式解压缩调度器组件抢占式调度对一个或多个依赖对象的解压缩。

一种方法的实施例包括:为安装在闪存设备上的经压缩的应用生成元数据。所述元数据定义与经压缩的应用相关联的一个或多个依赖对象。将所述元数据存储在存储器中。响应于对所述经压缩的应用的启动,从所存储的元数据确定与要启动的经压缩的应用相关联的一个或多个依赖对象。所述方法还包括:基于所存储的元数据,抢占式调度对一个或多个依赖对象的解压缩。

附图说明

在附图中,除非另外指出,否则类似的附图标记在各个视图中指代类似的部分。对于具有字母字符标记的附图标记,例如“102a”或“102b”,字母字符标记可以区分存在于同一附图中的两个类似部分或元素。当希望附图标记涵盖在所有附图中具有相同附图标记的所有部分时,可以省略针对附图标记的字母符号标记。

图1是用于提供对在闪速存储中的经压缩的对象的抢占式解压缩的系统的实施例的方块图。

图2是示出图1的抢占式nand解压缩调度器的实施例的操作的组合方块图/流程图。

图3是示出用于在图1的系统中对经压缩的对象抢占式解压缩的方法的实施例的流程图。

图4是示出图1的元数据表的示例性实施例的数据图。

图5是示出用于动态更新图4的元数据表的方法的实施例的流程图。

图6是用于并入图1的系统的便携式计算设备的实施例的方块图。

具体实施方式

本文中所使用的“示例性的”一词意指“用作示例、实例或说明”。在本文中被描述为“示例性的”的任何方面不一定被解释为优选的或者比其它方面更有优势。

在本描述中,术语“应用”还可以包括具有可执行内容的文件,诸如:对象代码、脚本、字节代码、标记语言文件和补丁。此外,涉及本文的“应用”还可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要访问的其它数据文件。

术语“内容”还可以包括具有可执行内容的文件,诸如:对象代码、脚本、字节代码、标记语言文件和补丁。此外,涉及本文的“内容”还可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要访问的其它数据文件。

如在本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等意指涉及计算机相关的实体,或者是硬件、固件、硬件和软件的组合、软件、或者是在执行中的软件。例如,组件可以是但不限于是运行在处理器上的过程、处理器、对象、可执行程序、执行线程、程序、和/或计算机。通过说明的方式,在计算设备上运行的应用和计算设备两者都可以是组件。一个或多个组件可以存在于过程和/或执行线程之内,以及组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。组件可以通过本地和/或远程过程进行通信,诸如根据具有一个或多个数据分组的信号(例如,来自与在本地系统、分布式系统中的另一组件、和/或跨越诸如互联网的网络通过信号与另一系统交互的一个组件的数据)。

在本描述中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手持设备”可互换使用。随着第三代(“3g”)无线技术和第四代(“4g”)的出现,更大的带宽可用性已使更多的便携式计算设备具有更加多种多样的无线能力。因此,便携式计算设备可以包括蜂窝电话、寻呼机、pda、智能电话、导航设备,或具有无线连接或链路的手持计算机。

图1示出了用于在闪速存储中对经压缩的对象进行抢占式解压缩的系统100。系统100包括片上系统(soc)102,其电耦合到闪存设备(例如,nand闪速存储104)和易失性随机存取存储器(vram),诸如动态随机存取存储器(dram)106。soc102可以经由控制总线128和数据总线130来电耦合到nand闪速存储104。soc102可以经由总线132来电耦合到dram106。系统100可以在任何计算设备中实现,包括个人计算机、工作站、服务器和便携式计算设备(pcd)(诸如蜂窝电话、智能电话、便携式数字助理(pda)、便携式游戏控制台、导航设备、平板计算机)、可穿戴设备(诸如运动手表,健身跟踪设备等)、或其它电池供电的、支持web的设备。

soc102包括各种片上组件,包括经由soc总线120互连的执行操作系统(o/s)122的中央处理单元(cpu)110、dram控制器112、静态随机存取存储器(sram)116、只读存储器(rom)114、压缩/解压缩模块118和闪存控制器108。soc102可以包括从dram106和nand闪速存储104请求存储器资源的一个或多个存储器客户端。存储器客户端可以包括一个或多个处理单元(例如,中央处理单元(cpu)110、图形处理单元(gpu)、数字信号处理器(dsp)等)、视频编码器,或请求对nand闪速存储104和dram106进行读/写访问的其它客户端。

在图1所示出的实施例中,nand闪速存储104与soc102分离,但是在其它实施例中,nand闪速存储104可以物理地附着或堆叠在soc管芯上,以及存在于与soc管芯相同的物理封装中。如在本领域中已知的,nand闪速存储104可以包括用于存储物理页面的控制器和主阵列。存在于soc102上的cpu110经由闪存控制器108以逻辑页面为单位读取和/或写入数据到nand闪速存储104。从主阵列的物理页面存储并取回数据,连同由纠错码(ecc)模块136所生成/检查的纠错比特。

压缩/解压缩模块118包括用于压缩应用代码/数据并将经压缩的代码/数据存储在nand闪速存储104中的逻辑。当请求经压缩的代码/数据时,压缩/解压缩模块118未压缩存储在nand闪速存储104中的应用代码/数据,然后执行未经压缩的代码/数据。应当了解的是,压缩/解压缩模块118可以包括由cpu110所执行的软件模块。在其它实施例中,压缩/解压缩模块118可以包括具有用于加速压缩/解压缩的专用ram的分离的硬件设备、协处理器等。

如在图1中所示出的,系统100还包括一个或多个模块(例如,抢占式nand解压缩调度器126),用于在启动应用134并且从nand闪速存储104读取应用代码/数据时,提前抢占式调度对依赖经压缩的对象136的解码/解压缩。应当了解的是,应用134可以包括各种类型的应用。

在实施例中,应用134可以包括移动应用。如在本领域中已知的,用于便携式计算设备(诸如智能电话)的典型的应用可以包括多个共享的本地可执行库文件和用于平台运行时(例如,用于android的dalvik/art、用于ios的objective-c运行时)的库文件的聚合。数据文件可以包括各种格式,包括例如xml、html、文本文件和/或其它格式的文件,所有数据文件都封装在一起。应当了解的是,创建应用的各种类型的所有各种组件文件被称为“对象”。在经压缩的形式的应用中,形成应用的所有对象也可以是经压缩的形式。由于应用依赖于这些对象,所以在经压缩的应用中的经压缩的形式的对象被称作为“依赖”经压缩的对象。

应进一步了解的是,在本申请中的对象中的一些对象可以进一步依赖于可以在平台中直接可用的其它对象。例如,针对浏览器应用的共享的可执行对象文件库(libwebcore.so)可能依赖于平台可执行对象库(libbionic.so和libicu.so)。在该情况下,平台共享的可执行对象文件(libbionic.so和libicu.so)可以包括依赖对象,以及如果它们以经压缩的形式存在,则可以包括“依赖”经压缩的对象。

如在本领域中已知的,当应用首次访问经压缩的对象时,可以对经压缩的对象进行解压缩。因此,对于动态加载的以经压缩的形式存在的共享的可执行对象库,可以在平台的动态链接加载器(dll)加载它们时进行解压缩。类似地,对于由应用所使用并作为经压缩的文件来维护的各种数据文件和数据高速缓存,可以在应用需要访问在这些文件中的任何数据时进行解压缩。应当了解的是,这些活动可能发生在启动应用后的某段时间内,在这种情况下,解压缩可能在需要他们时为其访问引入另外的延迟。本领域普通技术人员将了解的是,术语“抢占式解压缩”意指在应用启动时间期间,预先解压缩这些类型的经压缩的对象中的任何对象,这在它们实际被访问或由应用需要之前发生。术语“抢占式调度”指的是在应用启动时间期间,预先调度对这些经压缩的对象的解压缩,而不是仅在由执行应用需要或访问经压缩的对象之前懒惰调度解压缩活动。

在这方面,系统100在应用启动期间提供预先抢占式调度和抢占式解压缩的机制,这使得在由执行应用实际需要或访问它们之前,依赖经压缩的对象能够“提前”被解压缩。应该了解的是,该机制可以提供各种益处。例如,一个益处可能是在应用的执行期间减少突然停顿或延迟,因为应用不必等待对依赖对象的解压缩。此外,预先激活解压缩不会减慢启动时间,因为解压缩可以并行,以及独立于针对应用启动所需的活动的关键路径来发生。另一益处可能涉及在应用启动期间,作为顺序依赖链依次需要多个依赖经压缩的对象时减少应用的启动时间,因为如果通过多个解压缩单元可获得足够的并行性,则可以同时解压缩在顺序依赖链中的所有经压缩的对象。以这种方式,系统100可以提供减少延时和减少中间停顿的总体益处,由此改善用户体验。

抢占式nand解压缩调度器126为一个或多个所安装的应用134生成特别配置的元数据。元数据可以存储在解压缩元数据表124中。如在下文更详细描述的,可以在应用安装时使用高层信息来静态地生成用于应用134的元数据。在实施例中,针对应用134的解压缩元数据表可以包括关于针对一个或多个所安装的应用134的一个或多个依赖库、代码对象、大小受限的块、应用数据、文件等的信息。当启动应用134时,解压缩元数据表124被访问并用于提前抢占式解码/解压缩依赖经压缩的对象136。可以基于对应用134的执行活动来动态地更新元数据表124。在实施例中,o/s122可以生成和/或管理解压缩元数据表124,以及触发对经压缩的对象136的抢占式解码/解压缩。

图2示出了抢占式nand解压缩调度器126的示例性实现方式。抢占式nand解压缩调度器126可以与应用安装器组件202、o/s122、应用启动器组件208和应用执行环境210连接。应用安装器组件202被配置为在nand闪速存储104中安装包括未经压缩的组件204的未经压缩的应用134。应用安装器组件202可以指导压缩/解压缩模块118来压缩未经压缩的组件204并将对应的经压缩的组件136存储在nand闪速存储104中。

在其它实施例中,如果由系统100以经压缩的形式直接地接收应用,则应用安装器组件202还可以直接地安装经压缩的应用。例如,平台“app商店”可以以经压缩的形式维护应用或“app”以在将app下载到计算设备时节省带宽。在这些情况下,可以使用匹配的压缩/解压缩算法来解压缩直接所接收的经压缩的应用。在这样的情况下,可以在以传统方式由应用启动器组件202第一次解压缩和启动经压缩的应用时,创建存储在解压缩元数据表124中的元数据。在未来启动应用时,抢占式调度和抢占式解压缩将对经压缩的应用及其经压缩的对象的任何未来的解压缩是有效的。

在操作中,应用安装器组件202接收用于启动应用134的安装的安装指令(附图标记201)。响应于安装指令,应用启动器组件202发起静态元数据生成(附图标记203),以及指示压缩/解压缩模块118来压缩未经压缩的组件204,以及将对应的经压缩的组件136存储在nand闪速存储104中(附图标记205)。如在图2中所示出的,静态元数据生成模块206可以被配置为生成定义一个或多个依赖对象的元数据。所生成的用于应用134的元数据可以存储在解压缩元数据124中(附图标记207)。

应当了解的是,在应用安装时间期间,可以以各种方式静态地生成针对依赖对象的元数据,这取决于例如应用执行环境210、o/s122、应用代码的类型、由o/s122所使用的封装文件格式等。例如,在o/s122包括android移动操作系统的情况下,静态元数据生成模块206可以从android应用封装(apk)静态地创建元数据。在其它实施例中,封装文件格式可以包括用于unix操作系统的可执行和可链接格式(elf)以及用于windows操作系统的便携式可执行(pe)格式。无论封装文件格式如何,静态元数据生成模块206都从可执行/对象文件/库生成一个或多个依赖对象或组件。

图4示出了解压缩元数据表124的示例性实施例。表124包括用于安装在nand闪速存储104中的一个或多个应用的应用标识符402(应用标识符1406...应用标识符n407),其中对应的元数据404由静态元数据生成模块206来生成。在图4的实施例中,元数据404包括由应用134利用对应的优先级值来访问的所有依赖性库、共享的库、文件、数据对象等的展开的列表。展开的列表可以定义完整的安装路径和依赖对象的名称。当抢占式调度解压缩时,可以使用优先级值。例如,优先级值可以用于调度解压缩的次序。参考图4,<完整的安装路径和名称>408和优先级值410可以对应于依赖对象411。<完整的安装路径和名称>412和优先级值414可以对应于依赖对象415。

如在图4中进一步所示出的,元数据404可以进一步定义一个或多个大小受限的块419,其具有优先级值418以及块索引和大小(<块索引,大小>数据416)。例如,应该了解的是,数据和/或代码的块可以为未经压缩的大小设置最小(min)限制(例如,1mb、16mb、64mb等)。可以使用块的索引作为标识符来压缩大小受限的块419并将其存储在nand闪速存储104中。应该了解的是,可以使用基于块的方法,其中整个库具有相当大的大小并且加载在部分而不是单个进程中。可以设置块的min大小限制以限制在块的数量中的任何“爆炸”,这可能增加了开销。静态元数据生成模块206可以忽略在大小限制以下的任何块。

已经一般性地描述了静态元数据生成模块206,将参考示例性封装文件格式来描述各种实施例。在一个实施例中,应用134包括本地android应用。如在本领域中已知的,用于android应用的组件204可以包括apk文件,所述apk文件包含关于由应用所需的资源、库等的信息。静态元数据生成模块206可以从各种apk文件确定一个或多个依赖对象。“清单”文件列出了应用必须链接的库。“清单”文件可以指定应用必须链接的一个或多个共享的库。这些依赖对象指示系统100在用于封装的类加载器中包括用于共享的库的代码。在apk中的“lib”对象具有由应用所需的所有经编译的代码(二进制对象文件等)。“res”对象包括包含未编译到“resources.arsc”文件中的资源的目录。“assets”对象包括包含应用资产的目录。“classes.dex”文件定义以dex文件格式编译的并由虚拟机所使用的类。“resources.arsc”文件包括经预编译的资源。

可以提前使用这些对象或其它对象中的任何对象来确定由应用所需的所有共享的库、dex类文件和其它资源文件,其可以作为元数据404被存储在解压缩元数据表124中。应当了解的是,一旦用户触发应用启动,该元数据可以用于抢占式解压缩以经压缩的形式存储在nand闪速存储104中的任何项目。

对于在linux、unix、android操作系统中的可执行文件,可执行和可链接格式(elf)是用于可执行文件、对象代码和共享的库的通用标准文件格式。在这些实施例中,静态元数据生成模块206可以获得用于elf可执行文件/库的动态链接的依赖性的列表。应当了解的是,来自诸如readelf、objdumo、lld等的实用程序的功能可以用于确定动态链接的依赖性。下文的表1示出了各种索引、标签和值。

表1:确定动态链接的依赖性

参考表1,具有[lazy]值的标签posflag_1指示应该懒惰加载以下needed条目libdebug.so.1。由于libelf.so.1没有前面的lazy标签,因此在程序的初始启动时加载此库。当动态链接器为目标文件创建存储器分段时,依赖性(记录在动态结构的dt_needed条目中)定义了需要何种共享的对象以提供程序服务。通过重复连接所引用的共享的对象及其依赖性,动态链接器构建完整的处理图像。在“懒惰”绑定中,仅当图像实际使用符号时才绑定符号引用。lazy信息指示动态链接器仅在需要时加载共享的库,这与在程序加载期间所加载的其它库(未标记为懒惰)不同。

在其它实施例中,可以提前为lazy和非lazy共享的库两者调度解压缩,以便吸收解压缩时间。当动态链接器执行程序加载时,执行解压缩可能会减慢应用启动时间。在懒惰绑定期间,执行解压缩可能会降低执行性能。

应当了解的是,可以在应用安装时间期间使用该数据(对于lazy和未标记为lazy的其它数据两者)来确定用于应用的整个共享的库的树(对于所有依赖级别),以及将它们存储在用于应用的解压缩元数据表124中。在o/s122中的软件模块可以在安装时间期间确定库的依赖性树。因为这是针对整个库完成的,所以这可以应用于作为库的部分的代码、数据等。一旦用户触发应用启动,即使在动态链接器递归地找到依赖性并加载所有依赖库之前,元数据404也可以用于抢占式解压缩以经压缩的形式存储在nand闪速存储104中的库中的任何库。以这种方式,当动态链接器递归地找到每个依赖库时,该库以经解压缩的形式已经是可用的,由此在应用启动/执行时从动态加载的关键路径移除解码/解压缩活动。

便携式可执行(pe)格式是用于windows操作系统的32位和64位版本中的可执行文件、对象代码、动态链接库(dll)、fon字体文件等的文件格式。pe格式是数据结构,其封装了windowso/s加载器管理所打包的可执行代码所需的信息。这包括用于链接的动态库引用、api导出和导入表、资源管理数据,以及线程局部存储(tls)数据。类似于用于elf可执行文件/目标文件的方法,可以提前使用来自pe可执行文件/对象/库的信息来确定整个共享的库的树,以及使它们在应用的元数据404中保持是可用的。元数据404可以用于抢占式解压缩以经压缩的形式存储在nand闪速存储104中的任何库。

再次参考图2,当应用134由用户来启动时,应用启动器组件208可以通知抢占式nand解压缩调度器126(附图标记209)。响应于来自应用启动器组件208的通知,抢占式nand解压缩调度器126访问解压缩元数据表124,以及获得用于应用134的对应的元数据404(附图标记211)。应当了解的是,只要应用134安装在系统100中,就可以持久性地保存解压缩元数据表124并且处于o/s122的控制下。如果未安装应用,则用于应用的元数据404可以被删除。当o/s122检测到应用启动触发器(例如,用户触摸应用图标等)时,o/s122立即给出信号以抢占式解压缩存在于nand闪速存储104中的任何依赖对象或资源(例如,代码、库、数据文件、大小受限的块等)。

参考图2的实施例,在附图标记213处,抢占式nand解压缩调度器126可以经由例如应用执行环境210来抢占式调度对依赖对象的解压缩。应当了解的是,对依赖对象的解压缩发生在应用执行环境210解析依赖性并从nand闪速存储104以未经压缩的形式加载依赖对象(附图标记215)之前。

如上所述,可以基于执行活动来在执行应用134期间动态地更新解压缩元数据表124。在执行应用134期间,动态元数据生成模块212可以检测用于运行应用134的文件、库和块存取(附图标记217)。基于来自应用134的一个或多个运行的执行活动,动态元数据生成模块212可以动态地提取进一步的依赖性,以及更新解压缩元数据表124以包括进一步依赖对象(附图标记219)。

图3示出了用于抢占式解压缩在系统100中的依赖对象的方法300的实施例。在方块302处,发起应用134到nand闪速存储104的安装。如上所述,应用134可以包括多个对象。在方块304处,压缩/解压缩模块118压缩应用对象。如上所述,应用134可以是在安装期间以经压缩的形式而直接可用的。在这种情况下,应用134可以直接地安装在现有的经压缩的形式中,或者它可以被解压缩以及然后再次被压缩为与原始经压缩的形式相比不同且使用不同的压缩算法和/或参数的形式。如果经压缩的应用被解压缩以及然后在安装期间再次被压缩到nand中,则可以在安装期间创建元数据。然而,如果所接收的以经压缩的形式的应用是安装在nand104中的,则可以在第一次启动应用期间在应用134被第一次解压缩时创建元数据。以这种方式,一旦已经创建了元数据,抢占式调度和解压缩的益处可以在任何将来的后续应用启动中生效。

在方块306处,经由闪存控制器108将经压缩的应用对象存储在nand闪速存储104中。在应用安装期间(例如,在方块302之后),在方块308处,静态元数据生成模块206生成元数据404,所述元数据404定义将被存储在nand闪速存储104中的一个或多个依赖对象或资源(例如,代码、库、数据文件、大小受限的块等)。在方块310处,将所生成的元数据404存储在可以由o/s122来管理的解压缩元数据表124中。响应于启动应用(判定方块312),抢占式nand解压缩调度器126读取用于存储在nand闪速存储104中的、要被启动的应用134的元数据404(方块314)。在方块316处,抢占式nand解压缩调度器126抢占地调度对由元数据404所定义的一个或多个依赖对象的解压缩。在方块318处,在应用启动器组件208解析依赖性,以及从nand闪速存储104加载依赖对象之前,依赖对象由压缩/解压缩模块118来解压缩(附图标记322)。

图5示出了用于在应用的一次或多次运行期间动态更新用于应用134的元数据404的方法500的实施例。在方块502处,启动存储在nand闪速存储104中的经压缩的应用134。在方块504处,可以以传统方式(或以基于元数据404的上述方式)解压缩和执行经压缩的应用。在方块506处,动态元数据生成模块212可以检测例如文件、库和块存取。在方块508处,动态元数据生成模块212基于应用执行活动来提取或以其它方式确定另外的依赖性。在方块510处,动态元数据生成模块212利用在执行活动期间所确定的另外的依赖性来更新用于应用134的元数据404。

应当了解的是,可以从所安装的apk的所预定的或所计算的初始运行的数量或关于正在使用或访问的文件、库、大小受限的块、数据集的代码,来生成另外的元数据。所更新的元数据可以在应用的将来执行中使用,以便一旦启动应用134,则抢占式解压缩依赖文件、库、大小受限的块、数据集等。用于应用134的元数据可以在应用134的几次运行之后趋于稳定,以及可以用于安装在设备中的应用134的整个寿命。对于代码、库和文件,元数据可以保持与其存储路径和文件名称相关联的数据。对于大小受限的块,元数据可以定义块索引和大小。对于应用数据,元数据可以跟踪被访问的应用134的页面索引的信息。o/s122可以用于跟踪在nand闪速存储104中页面存在的位置。元数据可以持久地保存并且处于o/s122的控制下。当o/s122检测到应用启动触发时,它立即给出信号以抢占式解压缩存在于nand闪速存储104中的任何依赖资源(例如,代码、库、数据、文件)。

应进一步了解的是,对通过懒惰绑定所加载的共享的库的抢占式解压缩可以使用替代的方法,诸如,例如,dlopen()和dlsym()。dlopen()函数使由路径名和文件名所指定的可执行对象文件在程序执行期间对调用程序是可用的。在运行时,dlopen()调用有效地执行对由路径名和文件名所指定的可执行对象文件的动态加载。然后,调用程序可以通过使用dlsym()调用发现在动态加载的目标文件中所实现的函数和符号,来开始使用由动态加载的可执行对象文件所提供的功能。成功的dlopen()函数返回句柄,调用程序需要在使用dlsym()的后续调用上使用所述句柄。dlsym()函数获取符号的地址,所述符号定义在通过dlopen()调用变得可访问的运行时动态加载的目标文件内。作为字符串的符号的名称被作为变元传递给dlsym()函数,然后在运行时在动态加载的所有对象中搜索命名的符号。

通过拦截使用dlopen()api所加载的库,可以在应用执行期间动态地获得元数据信息。可以在dlopen()api中进行改变以捕获库名称并将其保存到用于应用134的元数据404中。由于元数据404是由o/s来管理的,因此可以容易地将信息保存在解压缩元数据表124中。元数据404可以用于在下次启动应用134时抢占式解压缩库。对基于应用执行活动的元数据的动态生成提供对解压缩元数据表124的周期性或连续的更新,以及可以检测由静态元数据生成模块206可能遗漏的任何丢失的库/文件、大小受限的块等。

在进一步的实施例中,可以对由在nand闪速存储104上的应用134所保存和高速缓存的数据执行抢占式解压缩。高速缓存的数据可以存在作为具有完整路径的文件名(例如,用于移动浏览器apk的持久高速缓存)。动态元数据生成模块212可以检测应用保存的高速缓存和数据的完整路径和名称,以及可以在访问文件时将它们包括在用于应用134的解压缩元数据表124中。一旦启动应用,就可以抢占式解压缩数据和高速缓存文件。

对于大小受限的数据块,块索引和大小可以用于标识。静态元数据生成模块206可以为解压缩元数据表124提供初始种子,以及在第一次启动应用134时提供辅助。动态元数据生成模块212有助于更新和细化初始元数据,以及可以使用块索引作为标识符来覆盖例如代码和/或数据的大小受限的块。优先级值(例如,在图4中的410、414和418)与在解压缩元数据表124中的每个条目相关联,以指示应用134在每次启动时如何主动/频繁地使用该项目以及在应用执行阶段中多早使用该项目。优先级值可以由动态元数据生成模块212周期性地来更新。针对特定应用134的所需项目的解压缩活动可以遵循优先级次序。例如,可以为被频繁使用的项目和在应用执行早期出现的使用分配更高的优先级,因为抢占式解压缩该项目可能是最有影响力的。

如上所述,系统100可以合并到任何期望的计算系统中。图6示出了并入示例性便携式计算设备(pcd)600中的系统100。将容易理解的是,系统100的特定组件可以包括在soc322上(例如,数据压缩组件118和抢占式nand解压缩调度器126),而其它组件(例如,dram106、nand闪速存储104)可以是耦合到soc322的外部组件。soc322可以包括多核cpu602。多核cpu602可以包括第零内核610、第一内核612和第n内核614。内核中的一个内核可以包括例如图形处理单元(gpu),其中其它内核中的一个或多个内核包括cpu。

显示控制器328和触摸屏控制器330可以耦合到cpu602。反过来,在片上系统322外部的触摸屏显示器606可以耦合到显示控制器328和触摸屏控制器330。

图6还示出了视频编码器334(例如,逐行倒相(pal)编码器、顺序色彩存储(secam)编码器,或国家电视系统委员会(ntsc)编码器)耦合到多核cpu602。另外,视频放大器336耦合到视频编码器334和触摸屏显示器606。此外,视频端口338耦合到视频放大器336。如在图6中所示出的,通用串行总线(usb)控制器340耦合到多核cpu602。此外,usb端口342耦合到usb控制器340。

此外,如在图6中所示出的,数字摄像头348可以耦合到多核cpu602。在示例性方面中,数字摄像头348是电荷耦合元件(ccd)摄像头或互补金属氧化物半导体(cmos)摄像头。

如在图6中所进一步示出的,立体声音频编码器-解码器(codec)350可以耦合到多核cpu602。此外,音频放大器352可以耦合到立体声音频codec350。在示例性方面中,第一立体声扬声器354和第二立体声扬声器356耦合到音频放大器352。图6示出了麦克风放大器358也可以耦合到立体声音频codec350。另外,麦克风360可以耦合到麦克风放大器358。在特定方面中,频率调制(fm)无线电调谐器362可以耦合到立体声音频codec350。此外,fm天线364耦合到fm无线电调谐器362。此外,立体声头戴式受话器366可以耦合到立体声音频codec350。

图6进一步示出射频(rf)收发机368可以耦合到多核cpu602。rf开关370可以耦合到rf收发机368和rf天线372。小型键盘204可以耦合到多核cpu602。此外,具有麦克风的单声道耳机376可以耦合到多核cpu602。此外,振动器设备378可以耦合到多核cpu602。

图6还示出了电源380可以耦合到片上系统322。在特定方面中,电源380是向需要电力的pcd600的各个组件供电的直流(dc)电源。另外,在特定方面中,电源是可再充电的dc电池或dc电源,所述dc电源是从到dc变压器的交流(ac)导出的,所述dc变压器被连接到ac电源。

图6进一步指示pcd600还可以包括可以用于接入数据网络(例如,局域网、个域网或任何其它网络)的网卡388。网卡388可以是蓝牙网卡、wifi网卡、个域网(pan)卡、个域网超低功率技术(peanut)网卡、电视/电缆/卫星调谐器、或在本领域中已知的任何其它网卡。另外,网卡388可以并入芯片中,即,网卡388可以是在芯片中的完整解决方案,以及可以不是单独的网卡388。

如在图6中所描绘的,触摸屏显示器606、视频端口338、usb端口342、摄像头348、第一立体声扬声器354、第二立体声扬声器356、麦克风360、fm天线364、立体声头戴式受话器366、rf开关370、rf天线372、小型键盘374、单声道耳机376、振动器378和电源380可以处于片上系统322外部。

应该了解的是,本文中所描述的方法步骤中的一个或多个方法步骤可以在存储器中作为计算机程序指令(诸如上述模块)来存储。这些指令可以由任何适当的处理器结合或配合相应的模块来执行,以便执行本文中所描述的方法。

为了使本发明起到如所描述的作用,在本说明书中所描述的过程或过程流中的某些步骤自然地先于其它步骤。然而,如果这样的次序或顺序并不改变本发明的功能,则本发明并不局限于所描述的步骤的次序。也就是说,要认识到的是,在不脱离本发明的范围和精神的情况下,一些步骤可以在其它步骤之前、之后或与其它步骤平行(基本上同时)执行。在一些实施例中,可以在不脱离本发明的情况下省略或不执行某些步骤。此外,诸如“此后”、“然后”、“接下来”等的词语并不旨在限制步骤的次序。这些词语仅用于通过示例性方法的描述来引导读者。

另外,例如,在编程领域的普通技术人员能够写计算机代码或识别适当的硬件和/或电路,以便基于在本说明书中的流程图和相关联的描述轻而易举地实现所公开的发明。

因此,特定的程序代码指令集合或详细的硬件设备的公开内容不被认为是对如何实现和使用本发明的充分理解所必要的。在上文的描述中并且结合可以示出各个过程流的附图更详细地解释了所要求保护的计算机实现的过程的发明的功能。

在一个或多个示例性方面中,所描述的功能可以在硬件、软件、固件或其任何组合中来实现。如果在软件中实现,则功能可以作为在计算机可读介质上的一个或多个指令或代码被存储或传输。计算机可读介质包括计算机存储介质和通信介质两者,所述通信介质包括促进将计算机程序从一个地方传送到另一地方的任何介质。存储介质可以是可以由计算机存取的任何可用的介质。通过举例而非限制性的方式,这样的计算机可读介质可以包括ram、rom、eeprom、nand闪速、nor闪速、m-ram、p-ram、r-ram、cd-rom或者其它光盘存储、磁盘存储或者其它磁存储设备,或者任何其它可以用于以指令或者数据结构的形式来携带或者存储期望的程序代码并且可以由计算机来存取的介质。

另外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字用户线(“dsl”)或者诸如红外线、无线电和微波的无线技术,从网站、服务器或者其它远程源发送软件,那么同轴电缆、光纤光缆、双绞线、dsl或者诸如红外线、无线电和微波的无线技术包含在介质的定义中。

如本文中所使用的,磁盘和光盘包括压缩光盘(“cd”)、激光光盘、光盘、数字多功能光盘(“dvd”)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上文的组合也应该包括在计算机可读介质的范围之内。

在不脱离本发明的精神和范围的情况下,替换的实施例对本发明所涉及领域的普通技术人员而言将变得显而易见。因此,虽然已经示出并详细描述了所选择的各方面,但将理解的是,如由所附权利要求所定义的,可以在不脱离本发明的精神和范围的情况下进行各种替换和改变。

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