使用bpram来布局和执行软件应用_2

文档序号:8287849阅读:来源:国知局
它被读取者访问的同时被放在BPRAM中。然而,当应用尝试通过对这些数据结构进行写入来更新这些数据结构时,这些数据结构将被移回易失性(DRAM)存储器。
[0025]应用以几种不同的方式从这种可用性中获益。首先,它消除了在存在过程时应用将各数据结构串行化到盘中的需要。当然,这仅在应用可推断数据结构的一致性的情况下可用。当应用崩溃时,可能数据结构不再可用,而必须从保持在另一位置的副本(或快照)中重新创建。第二,如果应用对其数据结构的持久版本具有即时访问权,则应用性能可被改善。最后,对于与DRAM相比具有更低能量覆盖区的DPRAM而言,DRAM的有意义部分可被替换为BPRAM以通过将其数据的一部分保持在BPRAM中来降低计算机器的总能量覆盖区。
[0026]在标准操作系统中,以与用户应用代码相同的方式将诸如内核之类几乎不被更新的恒定代码从传统驱动器中读出。软件布局系统确定操作系统的哪些组件是恒定的并且没有遭受改变或遭受了最少的改变,并且构建高性能RERAM/PCM高速缓存来提供对这些被频繁使用的组件(包括内核)的快速访问。因此,该系统将内核数据结构和代码保持在非易失性和高性能ReRAM中,同时将改变数据保留在易失性DRAM或其他系统。
[0027]传统上,在操作系统已被初始化和稳定化后,用户空间应用才被新鲜加载。然而,稍后加载应用或者将应用加载在另一操作系统中要求该应用加载来自库的碎片,并且随后被加载到存储器中的用户数据形成完整的实况图像。软件布局系统将应用及其存储器快速地持久保存到ReRAM/PCM中以允许快速转移到同一或另一系统上并稍后在同一或另一系统上快速重构。这种挂起和恢复移除了使用操作系统加载序列来形成应用图像的成本和负担,并将用户数据持久保存在实况状态中。该系统的这些和其它元素将在下文中更详细地描述。
[0028]图1是示出一个实施例中的软件布局系统的各组件的框图。系统100包括内核布局组件110、应用布局组件120、静态分析组件130、动态分析组件140、布局创建组件150、耗损监视组件160、内核初始化组件170和应用初始化组件180。这些组件中的每一个都在此处进一步详细讨论。
[0029]内核布局组件110确定被操作系统内核用来进行引导的数据和软件指令,并为字节可寻址的持久随机存取存储器(BPRAM)确定内核数据和软件指令的、将允许内核从BPRAM引导的布局。在字节可寻址的存储器快到足以允许令人满意的性能的情况下该内核可直接从BPRAM引导,或者该内核可通过首先将BPRAM中存储的布局复制到另一存储器(例如,DRAM)中来间接形成BPRAM。一些操作系统可具有会影响从何处运行代码的决策的附加要求,诸如安全引导过程。内核布局组件110调用静态分析组件130、动态分析组件140和布局创建组件150来确定内核的布局图像并将所确定的图像复制到BPRAM中。内核布局组件110还可更改引导数据结构或其他信息以使得计算机系统从被复制到BPRAM的图像中引导。内核布局组件110还可确定针对内核的其他类型的初始化(诸如,重启、休眠、从睡眠恢复等)的布局。
[0030]应用布局组件120确定被应用用来初始化该应用的数据和软件指令,并为BPRAM确定应用数据和软件指令的、将允许该应用从BPRAM初始化的布局。类似于内核,应用可直接从BPRAM运行,或者操作系统可首先将BPRAM中存储的应用布局复制到另一存储器设备中并从那里执行该应用。该布局还可用于使应用状态休眠并快速地恢复该应用状态,如同有时在当今的移动设备上使用字节不可寻址的闪存来实现的那样。应用可运行有改变数据和相对不改变的数据的组合,并且应用布局组件120可决定将相对不改变的数据放置在BPRAM中,而将改变数据放置在易失性存储器(诸如DRAM)中。每次应用运行时诸如应用二进制码、常量和其他类型的数据之类的数据项可以保持相同,或者仅被很少地改变,诸如应用二进制码可每年被更新若干次或更少。与当今通常遵循的加载过程相比,将该信息以可直接执行的布局保持在BPRAM中允许该应用快速得多地进入运行状态,而在当今通常遵循的加载过程期间,许多具有指令和数据的二进制代码可被分开地从一个存储位置(例如,硬盘驱动器)加载,并在该应用准备好运行之前被映射到存储器中。
[0031]应用布局组件120调用静态分析组件130、动态分析组件140和布局创建组件150来确定应用的布局图像并将所确定的图像复制到BPRAM中。应用布局组件120还可更改操作系统数据结构或其他信息以使得操作系统将运行应用的请求重定向至被复制到BPRAM的图像。由内核布局组件110和应用布局组件120创建的图像对其他计算机系统和/或操作系统而言可能是轻便的,从而图像可被创建在与将最终运行该图像的计算机系统不同的计算机系统上,并且可随后被复制到将运行该图像的一个或多个计算机系统。这可允许虚拟化环境、应用主机、移动设备制造商或其他各方产生可被复制到任何特定设备的BPRAM上的快速加载应用和操作系统图像,以实现本文中描述的优点。
[0032]静态分析组件130静态地分析软件二进制码、数据模块或其他所存储的软件数据以确定软件如何访问指令和数据。组件130可分析二进制代码(例如,汇编代码)、中间代码(例如,MICROSOFT ?中间语言(IL)代码)或应用或操作系统的其它经编译或可运行版本。静态分析基本上在过去的几年中已有进展。系统100使用静态分析技术来特别关注应用用来存储代码、数据和其他资源的区域。静态分析组件130可以对应用二进制码进行插装以接收信息或截取应用的特定动作,并且可以用新或另外的动作来替换所截取的动作。例如,如果组件130发现了对外部模块的调用,则组件130可以用访问BPRAM中的外部模块的图像的调用来替换该调用。通过这种方式,系统100可发现应用操作并修改允许使用BPRAM来加速应用和操作系统初始化的行为。组件130还可访问元数据,诸如可移植可执行文件(PE)头部或软件数据中描述特定代码和/或数据如何被正在分析的软件使用的其他信息。例如,PE格式允许特定部分被标记成可执行代码、只读数据、读/写数据、资源(例如,按钮、图标、对话框等)等等。
[0033]动态分析组件140动态地分析正在运行的应用以收集与难以用静态分析来确定的该应用的行为有关的附加信息。应用经常包括阻扰静态分析的编程步骤(有意地或者只是因为这些步骤在编译后变成如此)。动态分析具有可用信息,诸如从外部组件接收到的响应的内容、由应用使用的存储器的实际内容、和用户配置信息,对于这些内容在静态分析期间只能进行猜测或逼近。在一些情况下,该系统基于性能开销或其他已知的资源约束来确定执行静态分析、动态分析还是两者。动态分析可潜在地发现在静态分析期间没有被找到的应用行为。动态分析组件140还可使用动态分析来确认静态分析的结果。动态分析组件140将所确定的信息提供给布局创建组件150以标识适合布局在BPRAM中的特定应用代码和数据。例如,动态布局组件150可确定特定数据(虽然被标记为读/写)实际上没有被应用改变。反之,动态分析还可标识应用的数据中被频繁改变的各部分。应用还可包含诸如指示应用代码是否为只读并因此适合存储在BPRAM中的自修改代码之类的行为。
[0034]布局创建组件150创建用于基于由内核布局组件或应用布局组件所确定的布局来初始化操作系统或应用的BPRAM中的图像,并存储所创建的BPRAM中的图像。布局创建组件150可从一个或多个所存储的模块、数据存储等中访问数据、二进制代码和其他软件信息,以创建表示应用或操作系统的存储器内数据中用于执行该操作系统或应用的至少一部分的图像。布局创建组件150在运行操作系统或应用之前执行由当今加载器、堆和其他软件组件执行的许多步骤。例如,加载器通常负责每次应用加载时都检索硬盘驱动器上存储的二进制码模块并将那些模块的内容放置在字节可寻址的存储器堆中,而布局创建组件150执行类似的步骤一次,并将得到的存储器图像放置在BPRAM中,在BPRAM中每次该应用被请求时它都可以是准备好的,而无需每次都从较慢的存储中加载这些模块。这显著地加速了应用加载时间。
[0035]耗损监视组件160可任选地监视BPRAM的使用信息以避免写入BPRAM达超过BPRAM的耗损规范的次数。BPRAM通常具有它可接受的有限次数的写入,并因此它有助于执行耗损平均和类似技术以确保BPRAM被均匀地使用(例如,每次当其他部分未被使用时,一个部分也不被使用)。此外,组件160可基于通过静态和/或动态分析所确定的数据的写频率来在哪些数据要存储在哪些设备中之间作出权衡。如果特定BPRAM设备可处理特定数据的写加载达合适长的生存期(例如,该设备可在特定的计算机系统中使用的5-10年),则系统100可将该数据存储在该位置处。对于具有较长生存期(例如,较多写循环)的BPRAM设备而言,系统100可选择将一些不被频繁写入的数据包括在BPRAM中,即使这些数据不完全是只读的。例如,应用配置参数可能很少改变,因此BPRAM是合适的。由于具有更长生存期的BPRAM随时间而发展,因此该系统可调适以将BPRAM用于更多数据。
[0036]内核初始化组件170使用由布局创建组件创建的BPRAM中的图像来初始化操作系统。不是按传统的方式通过从基于扇区的持久存储中加载操作系统二进制代码和数据(诸如,旋转硬盘驱动器或固态盘)来引导操作系统,组件170直接从BPRAM图像或通过将BPRAM图像快速地复制到DRAM或其他存储器中来执行操作系统。由于由布局创建组件150创建的布局基于代码和数据在执行期间如何被使用而非代码和数据最初被存储在何处,因此从所存储的图像初始化操作系统要快得多。不是潜在地对较慢存储有许多调用,内核初始化组件170可利用字节可寻址性来从BPRAM直接执行操作系统,或可使用快速直接存储器存取(DMA)转移来将BPRAM图像快速复制到DRAM或其他存储器中。
[0037]应用初始化组件180使用由布局创建组件创建的BPRAM中的图像来初始化应用。不是按传统的方式通过从基于扇区的持久存储中加载应用二进制代码和数据(诸如,旋转硬盘驱动器或固态盘)来初始化应用,组件180直接从BPRAM图像或通过将BPRAM图像快速地复制到DRAM或其他存储器中来加载应用。由于由布局创建组件150创建的布局基于代码和数据在执行期间如何被使用而非代码和数据最初被存储在何处,因此从所存储的图像初始化应用要快得多。不是潜在地对较慢存储有许多调用,应用初始化组件180可利用字节可寻址性来从BPRAM直接执行应用,或可使用快速直接存储器存取(DMA)转移来将BPRAM图像快速复制到DRAM或其他存
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1