首页> 中国专利> 用于预链接软件以改善虚拟系统中的存储器去重的技术

用于预链接软件以改善虚拟系统中的存储器去重的技术

摘要

本文描述了用于对软件进行预链接以改善虚拟系统中的存储器去重的技术。一种装置可以包括处理器电路、存储器单元和动态链接器应用,其中,所述存储器单元耦合到所述处理器电路,用于存储用于多个虚拟机的专用存储器页,所述动态链接器应用在所述处理器电路上运行,用于当软件程序的二进制版本在虚拟机上运行时,对该二进制版本和相关的程序模块进行链接。所述动态链接器应用可以包括在所述处理器电路上运行的主预链接部件,其用于使用被分配给第一虚拟机的第一专用存储器页中的第一组虚拟存储器地址,针对该第一虚拟机对用于该软件程序的第一二进制版本的第一组程序模块进行重定位,并且在全局预链接布局映射中存储该第一组程序模块的重定位信息,以供第二虚拟机使用。还描述并要求保护其它实施例。

著录项

  • 公开/公告号CN103975303A

    专利类型发明专利

  • 公开/公告日2014-08-06

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201180075337.3

  • 发明设计人 A·范德芬;

    申请日2011-12-07

  • 分类号G06F9/44;G06F12/08;

  • 代理机构永新专利商标代理有限公司;

  • 代理人刘瑜

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 01:44:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-08

    授权

    授权

  • 2014-09-03

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20111207

    实质审查的生效

  • 2014-08-06

    公开

    公开

说明书

背景技术

虚拟机(VM)是机器(例如,计算机)的软件实现,其像物理机一 样执行程序。基于虚拟机的使用和其相当于任何真机的程度,虚拟机主要 被分成两类。系统虚拟机提供完整的系统平台,其支持执行完整的操作系 统(OS)。与之相比,进程虚拟机被设计来运行单一程序,这意味着它支 持单一进程。虚拟机的一个基本特征是其内运行的软件受到该虚拟机提供 的资源和抽象化的限制。

在给定的时间,物理机仅有一小比例部分在使用中,虚拟化允许物理 机被共享以提高该物理机的总利用率。虚拟化的一个设计因素是高效共享 由物理机提供的诸如处理器、存储器和网络带宽这样的硬件资源。处理器 和网络资源即使在虚拟环境下也典型地未被充分利用。然而,存储器资源 经常处于高需求中。因此,针对在虚拟环境下的高效存储器共享的存储器 管理技术可以使得虚拟机能够更加动态、更加高功效和更加有成本效益。 针对这些和其它考虑,需要本改进。

附图说明

图1说明了虚拟机的第一存储器管理装置的实施例。

图2说明了用于虚拟机的存储器管理装置的第一操作环境的实施例。

图3说明了用于虚拟机的存储器管理装置的第二操作环境的实施例。

图4说明了用于虚拟机的存储器管理装置的第三操作环境的实施例。

图5说明了用于虚拟机的存储器管理装置的第四操作环境的实施例。

图6说明了用于虚拟机的存储器管理装置的第五操作环境的实施例。

图7说明了用于虚拟机的存储器管理装置的第一逻辑流的实施例。

图8说明了用于虚拟机的存储器管理装置的第二逻辑流的实施例。

图9说明了用于虚拟机的存储器管理装置的第三逻辑流的实施例。

图10说明了用于虚拟机的存储器管理装置的第四逻辑流的实施例。

图11说明了适用于虚拟化为多个虚拟机的计算架构的实施例。

具体实施方式

各种实施例通常针对虚拟化系统。一些实施例特别针对支持多个虚拟 机的虚拟化系统的增强的存储器管理技术。例如,在一个实施例中,可以 以便利并支持虚拟系统的存储器管理操作的方式来执行软件程序的预链接 操作。

如下面更详细地描述的,虚拟系统典型地实现了用于改善程序加载时 间的预链接技术和用于改善存储器使用的存储器管理技术。在常规的虚拟 系统中,预链接和存储器管理被视为不同且分别的过程。然而,预链接操 作可能显著地影响存储器管理操作。当前对预链接操作的优化包括随机化 部件,其对软件程序和相关的软件库使用的存储器地址进行随机化。随机 化存储器地址使得存储器管理技术更加难以定位并合并存储器中的重复内 容。这对虚拟系统中的存储器管理技术产生了显著的性能损失。

为了解决这些和其它问题,各种实施例实现了用于软件程序的增强的 预链接技术,其具体地被设计来改善虚拟系统的存储器管理操作。虚拟系 统可以实现多个虚拟机,每个虚拟机被分配存储器单元的专用(private) 存储器段中一个或更多专用存储器页。在多个虚拟机利用相同的软件程序 及相关的库的那些情况下,所述增强的预链接技术删除了对相关的库进行 重定位操作的随机化部件,从而允许该相关的库被使用一个已知的虚拟地 址空间存储在不同的专用存储器页中。诸如存储器去重(memory de-duplication)这样的存储器管理技术可以使用该已知的虚拟地址空间来 定位存储相同库的多个专用存储器页,并且把该多个专用存储器页转换成 用于该多个虚拟机的一个共享存储器页。这使得在虚拟环境下有更高效的 存储器共享,并且可以使得虚拟机能够更加动态、更加高功效和更加有成 本效益。作为结果,实施例能够为操作者、设备或网络提高可承受性、可 伸缩性、模块化、可扩展性或互操作性。

综合参考文中使用的概念和术语,可以就在计算机或计算机网络上执 行的程序过程来给出接下来的详细说明。本领域的技术人员使用这些过程 性的说明和表示,以便向本领域的其他技术人员更有效地传达他们工作的 主旨。

这里的过程,通常被构思为是导致期望结果的前后一致的操作序列。 这些操作是那些需要对物理量进行物理操纵的操作。虽然不是必须的,但 通常这些量表现为能够被存储、传递、合并、比较和以其它方式操纵的电、 磁或光信号的形式。有时,主要是因为常用的原因,把这些信号称作比特、 值、元素、符号、字符、项、数字等是很方便的。然而,应当注意,所有 这些及类似术语是与适当的物理量相关的,并且其仅仅是应用于那些量的 方便的标号。

此外,所执行的操纵经常明确地指,例如相加或比较,其一般与人工 操作员进行的智力操作有关。在多数情况下,在构成一个或更多实施例的 部分的文中所述任何操作中,并不需要或不要求这种人工操作员的能力。 更确切地说,该操作是机器操作。用于执行各种实施例的操作的有用的机 器包括通用数字计算机或类似设备。

各种实施例还涉及用于执行这些操作的装置。这种装置可以针对所要 求的目的进行专门地构造,或者其可以包括通用计算机,该通用计算机被 在该计算机中存储的计算机程序有选择地激活或重新配置。文中呈现的过 程不是固有地涉及特定的计算机或其它装置。各种通用机器可以和根据文 中示教所编写的程序一起使用,或者,构造更多专用的装置来执行所要求 的方法步骤也可以被证明是很方便的。根据给出的说明,用于各种这些机 器的所要求的结构将变得明显。

现在参考附图,其中相似的参考数字自始至终用于指示相似的元素。 在以下的说明中,出于解释说明的目的,给出了许多特定细节以提供对它 的细致了解。然而,明显的是,在没有这些特定细节的情况下也能够实现 新颖的实施例。在其它情况下,以框图的形式示出众所周知的结构和设备, 以便利对它们的说明。目的是要覆盖与所要求保护的主题相一致的所有修 改、等同和替代。

图1说明了用于存储器管理装置100的框图。在一个实施例中,存储 器管理装置100可以包含计算机实现的装置,其包括具有一个或更多处理 器电路130和一个存储器单元150的电子设备120。电子设备120还可以 具有已安装的专门的软件程序,包括虚拟化应用138、存储器管理应用140、 软件程序142、加载器应用144、和动态链接器应用146。尽管图1示出的 存储器管理装置100在某种拓扑中具有有限数量的元件,但是可以理解, 存储器管理装置100在替代的拓扑中可以包括更多或更少的元件,如给定 的实现所要求的。

在各种实施例中,存储器管理装置100可以包含电子设备120。电子 设备120的示例可以包括,但不限于:超级移动设备、移动设备、个人数 字助理(PDA)、移动计算设备、智能电话、电话、数字电话、蜂窝电话、 电子书阅读器、手持设备、单向寻呼机、双向寻呼机、消息传递设备、计 算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、 上网本、掌上型计算机、平板计算机、服务器、服务器阵列或服务器群、 web服务器、网络服务器、因特网服务器、工作站、迷你计算机、大型计 算机、超级计算机、网络装置、web装置、分布式计算系统、多处理器系 统、基于处理器的系统、消费电子、可编程消费电子、游戏设备、电视、 数字电视、机顶盒、无线接入点、基站、用户站、移动用户中心、无线网 络控制器、路由器、集线器、网关、桥接器、交换机、机器或它们的组合。 所述实施例在此方面不受限制。

在各种实施例中,存储器管理装置100可以包含处理器电路130。该 处理器电路130可以包含用于通用计算的通用处理器电路,例如用于计算 平台的中央处理器(CPU)。处理器电路130能够是各种商业上可获得的通 用处理器中的任何处理器,包括但不限于:的和 处理器;的应用、嵌入式和安全处理器;和的和处理器;和的Cell处理器;的和处 理器,以及类似的处理器。双核微处理器、多核处理器及其它多处理器架 构也可以被用作处理器电路130。所述实施例在此方面不受限制。

在各种实施例中,存储器管理装置100可以包含存储器单元150。存 储器单元150可以包括其形式为一个或更多较高速存储器单元的各种类型 的计算机可读存储介质,例如只读存储器(ROM)、随机存取存储器 (RAM)、动态RAM(DRAM)、双倍数据速率DRAM(DDRAM)、同步 DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦 除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存 储器、诸如铁电聚合物存储器这样的聚合物存储器、奥氏存储器、相变存 储器或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁 卡或光卡、诸如独立磁盘冗余阵列(RAID)驱动器这样的设备阵列、固态 存储器(例如,USB存储器、固态驱动器(SSD))、以及任何其它类型的 适合存储信息的存储介质。所述实施例在此方面不受限制。

在图1示出的被说明的实施例中,处理器电路130可以用于执行专门 的软件程序,包括虚拟化应用138、存储器管理应用140、软件程序142、 加载器应用144、和动态链接器应用146。尽管这些软件程序被说明和描述 为由处理器电路130执行,但是可以理解,这些软件程序的一些部分或全 部可以被电子设备120实现的诸如图形处理单元(GPU)、用于收发器的基 带处理器等这样的其它处理器电路执行。所述实施例在此方面不受限制。

如图1所示,存储器管理装置100可以包括虚拟化应用138。虚拟化 应用138通常用于安装并管理电子设备120上的多个虚拟机160-a。通常, 虚拟机160-a是抽象的或者模拟的计算机架构,其能够在硬件或软件中实 现。任一实现都是要被包括在虚拟机160-a的下列说明中的。例如,在一 个实施例中,虚拟机160-a是机器的软件实现,其像诸如电子设备120这 样的物理机一样执行程序。虚拟化应用138可以把虚拟机160-a实现为提 供完整系统平台的系统虚拟机,所述完整系统平台能够支持执行被表示为 软件程序142的完整的操作系统(OS)和/或应用程序。此外或作为选择, 虚拟化应用138可以把虚拟机160-a实现为用于运行单一程序的进程虚拟 机,这意味着其支持单一进程。虚拟机160-a可以使用或共享由电子设备 120提供的诸如处理器电路130和存储器单元150这样的各种硬件资源, 以及其它由电子设备120实现的计算和通信平台部件。

可以使用多种已知的虚拟化软件和/或硬件平台来实现虚拟化应用 138。虚拟化应用138的示例可以包括,但不限于:例如公司制 作的基于内核的虚拟机Oracle公司制作的VMware公司制作的以及公司制作 的公司制作的以及 类似的虚拟化平台。所述实施例在此方面不受限制。

尽管在虚拟化应用138创建并管理的虚拟机160-a这种情况下描述了 各种实施例,但是可以理解,一些实施例可以是针对提供被分割成多个分 立的计算部分的硬件平台的任何电子设备120来实现的。例如,可以使用 系统划分来实现各种实施例,所述系统划分将单一硬件平台分成多个硬件 子系统。例如,具有多个处理器和存储器单元的硬件平台可以被划分成两 个硬件子系统,每个硬件子系统具有一个处理器和一个存储器单元。所述 实施例在此方面不受限制。

值得注意的是,文中使用的“a”、“b”和“c”及类似符号是要作为表 示任何正整数的变量。因此,例如,如果一种实现设置了值为a=5,则虚 拟机160-a的完整集合可以包括虚拟机160-1、160-2、160-3、160-4和160-5。 所述实施例在此方面不受限制。

虚拟化应用138可以实现用来创建虚拟机160-a的多种虚拟化技术, 包括虚拟机管理器(VMM)或管理程序(hypervisor),以及其它虚拟化技 术。在各种实施例中,存在两种通用类型的虚拟机160-a。第一种类型是 主(master)虚拟机。第二种类型是客(guest)虚拟机。主虚拟机是主要 的虚拟机并且通常管理一个或更多客虚拟机的操作。例如,可以在主虚拟 机中执行VMM,以便为客虚拟机提供虚拟操作平台并管理客操作系统的 执行。客虚拟机遵循来自在主虚拟机中执行的VMM的控制指令。一种典 型实现具有单个主虚拟机和多个客虚拟机。如图1所示,例如,虚拟化应 用138可以实现VMM以创建主虚拟机160-1和客虚拟机160-2、160-3。 然而,可以理解,在各种组合中可以存在任意数量的主虚拟机和客虚拟机。 例如,虚拟系统可以具有多个主虚拟机,每个主虚拟机控制不同组的客虚 拟机的操作。所述实施例在此方面不受限制。

存储器管理装置100可以包括存储器管理应用140。存储器管理应用 140通常用于为一组虚拟机160-a执行存储器管理操作。每个虚拟机160-a 可以被分配存储器150中的一个分立的存储器部分,例如一个专用存储器 段。每个虚拟机160-a然后可以向它的专用存储器段中读取和写入一组专 用存储器页152-b。专用存储器页152-b是受限存取的存储器页。例如,虚 拟化应用138实现了安全措施以确保第一虚拟机160-1不可以存取第二虚 拟机160-2的专用存储器页152-b,反之亦然。

通常,存储器页(有时被称为虚拟页或简单称为页)是虚拟存储器中 的固定长度的连续块,其是操作系统为程序进行存储器分配的最小单元, 并且在主存储器和诸如硬盘驱动器这样的附属存储装置之间进行传送。页 大小通常由处理器架构确定。传统地,一个系统中的页具有统一的大小, 例如4096字节。然而,现代处理器设计经常由于各种利弊而允许(有时候 是同时有)两种或更多种页大小。存在几点在选择给定页大小要考虑的因 素,包括诸如页大小对比页表大小、页大小对比转换后备缓冲(TLB)利 用、页的内部碎片、页大小对比磁盘存取等这样的因素。

在一个实施例中,虚拟机160-a可以执行类似的操作系统和应用程序, 例如软件程序142的不同版本。当在多个虚拟机160-a中的每一个上执行 相同的软件程序142时,那些虚拟机160-a的许多专用存储器页152-b也 是相同的。当这些专用存储器页152-b是相同的并因此具有重复内容时, 它们能够被合并成共享存储器页154-c,从而释放存储器供其它应用使用。 例如,共享存储器页154-1可以被一组多个虚拟机160-1、160-2进行存取, 所述多个虚拟机160-1、160-2分别具有用于创建该共享存储器页154-1的 相同的专用存储器页152-1、152-2。在这种情况下,共享存储器页154-1 仍旧是专用的,因为该共享存储器页154-1不可以被虚拟机160-1、160-2 以外的其它虚拟机160-a进行存取。

存储器管理应用140可以实现一个或更多后台处理线程或守护进程, 其周期地对专用存储器页152-b执行扫描以便识别出重复的(或相同的) 存储器页,并且把重复的存储器页合并到一起以形成共享存储器页154-c。 在一个实施例中,共享存储器页154-c可以随后被标记为只读文件。在一 个实施例中,可以使用写时复制(Copy-on-Write,CoW)技术来执行合并 操作。存储器去重处理释放了存储器单元150中的存储器资源,以供其它 应用使用。当由于任何原因,一个虚拟机160-a改变了共享存储器页154-c, 则存储器管理应用140可以为进行该改变的该虚拟机160-a提供新的专用 存储器页152-b。

存储器管理装置100可以包括软件程序142。软件程序142可以包括 适合由处理器电路130执行的任意独立的软件程序。软件程序142的示例 可以包括系统程序和应用程序。系统程序通常可以协助电子设备120的运 行并且可以直接地负责控制、集成和管理计算机系统的单独的软件和硬件 部件。系统程序的示例可以包括,但不限于:操作系统(OS)、设备驱动 程序、编程工具、实用程序、软件库、应用编程接口(API)等。应用程 序通常可以允许用户完成一个或更多专门的任务。应用程序的示例可以包 括,但不限于:一个或更多消息传递应用(例如,电话、语音邮件、传真、 电子邮件、即时消息、短消息服务、多媒体消息服务、视频会议)、web 浏览器应用、个人信息管理(PIM)应用(例如,通讯录、日历、日程安 排、任务)、字处理应用、电子表格应用、数据库应用、媒体应用(例如, 视频播放器、音频播放器、多媒体播放器、数码相机、摄像机、媒体管理)、 游戏应用、生产力应用、企业应用等等。在各种实现中,应用程序可以提 供一个或更多图形用户接口(GUI)以便在电子设备120和用户之间传送 信息。所述实施例在此方面不受限制。

存储器管理装置100可以包括加载器应用144。加载器应用144是通 常负责把软件程序142加载到存储器单元150中、然后将其准备好以供处 理器电路130执行的软件程序。整个软件程序142可以在执行前被立即加 载,或者可以在执行过程中在实际需要时分阶段地被加载(例如,使用存 储器映射文件技术)。在许多情况下,软件程序142可以利用一个或更多软 件库156-d来运行。软件库156-d包含由分立的代码和数据集构成的集合, 所述分立的代码和数据集在本文中被称为程序模块,其向诸如软件程序 142这样的独立的软件程序提供服务。在这种情况下,在加载操作期间, 加载器应用144还需要从软件库156-d中定位并加载被软件程序142使用 的程序模块。

存储器管理装置100可以包括动态链接器应用146。动态链接器应用 146通常负责对软件程序142和一个或更多软件库156-d中的一个或更多 程序模块进行链接。由于软件程序142和软件库156-d中的程序模块是独 立的程序,为了便于模块化编程,软件程序142和这些程序模块典型地使 用符号互相引用。在一些情况下,每个程序使用的符号可能是不同的或者 未定义的。动态链接器应用146解析这些符号,以允许软件程序142和软 件库156-d中的任何相关程序模块像一个统一的可执行程序一样进行操 作。动态链接器应用146在软件程序142的运行期间执行动态链接操作。 与之相比,静态链接器典型地在编译时使用,以产生软件程序的二进制版 本(例如,可执行文件)。例如,动态链接器应用146在运行期间解析符号, 而静态链接器在编译期间解析符号。

动态链接器应用146在代码长度和管理方面提供了显著的优势。然而, 动态链接给加载器应用144增加了复杂度。每次执行软件程序142,加载 器应用144需要定位软件程序142和软件库156-d中的相关程序模块。出 于安全的原因,软件库156-d在进程地址空间中四处移动。例如,地址空 间布局随机化是一种安全技术,其在存储器单元150中随机安排关键数据 区(包括软件库156-d)的位置,以使攻击者更难以预测目标地址。然而, 由于软件库156-d能够移动,当加载器应用144定位软件库156-d以便和 软件程序142一同加载时,该加载器应用144遭受性能损失。有越多的软 件库156-d要解析,该性能损失越大。

为了补偿这种性能损失,动态链接器应用146可以实现预链接操作(也 称作预绑定)。预链接是在编译时间之后、但在可执行文件在处理器电路 130上的运行时间之前对诸如软件程序142的二进制版本这样的可执行文 件与软件库156-d中的程序模块进行链接的处理过程。这降低了软件程序 142的程序加载时间(或启动时间)。然而,诸如地址空间布局随机化这样 的安全技术不能和预链接一同使用,因为这样做将需要在存储器单元150 中重定位软件库156-d,从而击败了预链接的任何优势。为了在试图恢复 地址空间布局随机化的一些优势,常规的预链接操作随机地选择预链接使 用的地址。这使得更难以执行对系统的某些攻击,因为用于预链接的地址 是单独针对那个系统的。

尽管使用随机地址的预链接对于使用单一进程空间和地址空间的物理 机而言似乎是一种可行的解决方案,但是使用随机地址的预链接对诸如由 存储器管理装置100所示出的那样的虚拟系统使用的存储器管理应用140 造成了性能损失。存储器管理应用140可以实现存储器去重技术来检测出 重复的专用存储器页152-b,并且在多个虚拟机160-a之间共享它们。然而, 使用随机地址的预链接使得软件库156-d位于被分配给每个虚拟机160-a 的专用存储器页152-b中的不同虚拟存储器地址处。照此,存储器管理应 用140需要搜索并定位在每个专用存储器152-b中的不同虚拟存储器地址 处的相同的库,以执行存储器去重,从而增加了存储器去重技术的开销、 复杂度和性能影响。

动态链接器应用146通过实现用于软件程序142的增强的预链接技术, 解决了这些和其它问题,改善了虚拟系统中存储器管理应用140的性能。 在多个虚拟机160-a利用相同的软件程序142(例如系统程序或应用程序) 及相关的软件库156-d的那些情况下,动态链接器应用146实现了增强的 预链接技术,其删除了用于相关的软件库156-d的重定位操作的随机化部 件,从而允许在不同的专用存储器页152-b中使用一个已知的虚拟地址空 间来存储相关的库156-d。存储器管理应用140可以使用诸如存储器去重 这样的存储器管理技术,利用该已知的虚拟地址空间来定位存储相同的软 件库156-d的多个专用存储器页152-b,并且将该多个专用存储器页152-b 转换为用于虚拟机160-a的一个共享存储器页154-c。这允许在虚拟环境中 有更高效的存储器共享,并且可以使得虚拟机160-a能够更加动态、更加 高功效和更加有成本效益。

图2说明了用于存储器管理装置100的操作环境200的实施例。操作 环境200说明了处理器电路130所执行的动态链接器应用146的示例性实 现。更确切地,操作环境200说明了主虚拟机160-1实现动态链接器应用 146的主预链接部件202-1的更详细的框图和操作。

如前参考图1所述,动态链接器应用146在处理器电路130上运行, 以便在软件程序142的二进制版本204在处理器电路130上运行时,动态 地对该二进制版本204与相关的程序模块206-f进行链接。

软件程序142的二进制版本204可以包含源代码的一个编译版本。软 件程序142的二进制版本204的示例可以包括、但不限于:二进制目标、 二进制文件、可执行文件等。通常,诸如软件程序142这样的计算机程序 被用容易被人理解的高级语言写成源代码语句。当实际执行计算机程序时, 计算机响应由指令组成的机器代码,所述指令由直接控制诸如处理器电路 130这样的中央处理单元(CPU)的操作的二进制信号构成。一种被称为 编译器的专门程序被用来读取源代码并且将它的语句转换成特定CPU的 机器代码指令。这样产生的机器代码指令是与平台相关的,即,不同的计 算机设备具有不同的CPU,不同的CPU具有由不同的机器代码指示的不 同的指令集。

程序模块206-f可以包括一个或更多软件库156-d(在图2中被示为软 件库156-1)中的各种程序模块。在软件程序142的二进制版本204在处 理器电路130上运行期间,动态链接器应用146可以将程序模块206-f链 接到该二进制版本204。

为了执行动态链接,主虚拟机160-1可以实现动态链接器应用146的 一个或更多部件202-e。一个或更多部件202-e可以用于执行各种预链接操 作,以便就在软件程序142的二进制版本204在处理器电路130上运行之 前,对该二进制版本204和一个或更多软件库156-d中的相关程序模块 206-f进行预链接。预链接软件程序142与相关的程序模块206-f降低了当 用户实际期望启动执行软件程序142时,加载器应用144的程序加载时间。

如图2所示,例如,主虚拟机160-1可以实现动态链接器应用146的 主预链接部件202-1。主预链接部件202-1通常可以用于针对主虚拟机160-1 执行软件程序142和相关的软件库156-d的预链接操作,然后其可以被用 作一个或更多客虚拟机160-2、160-3的模板。

在一个实施例中,主预链接部件202-1可以用于使用被分配给主虚拟 机160-1的专用存储器段(例如,第一专用存储器页152-1)中的第一组虚 拟存储器地址,针对该主虚拟机160-1对用于软件程序142的第一二进制 版本204的第一组程序模块206-f进行重定位。

通常,重定位是为程序的各个部分指派加载地址并调整程序中的代码 和数据以反映所指派的地址的处理过程。主预链接部件202-1执行重定位 连同符号解析,所述符号解析是在运行软件程序142之前,搜索程序模块 206-f以便用存储器单元150中的实际可用的地址来替换程序模块206-f的 符号引用或名字的处理过程。重定位操作典型地分两个阶段完成。在第一 阶段,每个目标文件具有各种区段,像代码、数据、bss段等等。为了将 所有的目标文件合并成单个可执行文件,主预链接部件202-1将相似类型 的所有区段合并成那种类型的单个区段。然后,主预链接部件202-1向每 个区段和每个符号指派运行时地址。在此刻,代码(函数)和数据(全局 变量)将具有唯一的运行时地址。在第二阶段,每个区段引用一个或更多 符号,所述一个或更多符号应该被根据在目标文件的重定位表中存储的信 息进行修改,以便其指向正确的运行时地址。重定位表是由编译器或汇编 器创建、并且存储在目标或可执行文件中的指针列表。该重定位表中的每 个项目,有时被称作“修正(fixup)”,是到目标代码中的地址的指针,其 中,当主预链接部件202-1重定位该程序时,所述地址必须被改变。修正 被设计用于支持作为一个完整单元的程序的重定位。在一些情况下,重定 位表中的每个修正其自身都是相对于一个为零的基地址而言的,因此当主 预链接部件202-1在重定位表中移动时,所述修正本身必须改变。

一旦主预链接部件202-1对用于软件程序142的二进制版本204的程 序模块206-f进行了重定位,主预链接部件202-1可以在全局预链接布局映 射208中存储针对程序模块206-f的重定位信息,以供电子设备120的其 它虚拟机(例如,客虚拟机160-2、160-3)使用。

图3说明了用于存储器管理装置100的操作环境300的实施例。操作 环境300说明了由动态链接器应用146的主预链接部件202-1对单个示例 性程序模块206-1执行的重定位操作的一个示例性实现。可以理解,可以 为该组程序模块206-f中的其它程序模块执行针对程序模块206-1所描述的 重定位操作。

对程序模块202-1进行重定位涉及遍历程序模块206-1中的每个地址, 并且将其用存储器单元150中被分配给主虚拟机160-1的专用存储器段的 虚拟地址空间中由程序模块206-1的位置所确定的真实地址来替换。如图 3所示,主预链接部件202-1通过把在程序模块202-1中引用的每个模块地 址302-g改变成第一专用存储器页的第一组虚拟存储器地址中的一个虚拟 存储器地址304-h,来重定位第一组程序模块206-f中的该程序模块206-1。 例如,模块地址302-1可以被改变成虚拟存储器地址304-1,模块地址302-2 可以被改变成虚拟存储器地址304-2,等等。一旦完成程序模块206-1的重 定位操作,主预链接部件202-1可以在全局预链接布局映射208中存储重 定位信息210。重定位信息210可以包含第一组程序模块206-f中的程序模 块206-1的每个模块地址302-g和第一专用存储器页152-1的第一组虚拟存 储器地址304-h中的每个虚拟存储器地址304-h之间的映射。然后,主预 链接部件202-1可以为下一个程序模块206-2开始重定位操作。继续这种 处理直到主预链接部件202-1对该组程序模块206-f中的所有程序模块进行 了重定位,并且在全局预链接布局映射208中存储了对应的重定位信息 210。现在软件程序142的二进制版本204被与相关的程序模块206-f进行 了预链接,并且已经准备好供加载器应用144在用户启动执行该二进制版 本204时将其加载到存储器单元150中。

图4说明了用于存储器管理装置100的操作环境400的实施例。操作 环境400说明了处理器电路130所执行的动态链接器应用146的示例性实 现。更确切地,操作环境400说明了客虚拟机160-2实现动态链接器应用 146的客户机预链接部件202-2的更详细的框图和操作。

如前参考图1所述,动态链接器应用146在处理器电路130上运行, 以便在软件程序142的二进制版本204在处理器电路130上运行时,对该 二进制版本204与相关的程序模块206-f进行链接。类似地,动态链接器 应用146在处理器电路130上运行,以便在软件程序142的二进制版本404 在处理器电路130上运行时,对该二进制版本404与相关的程序模块406-j 进行链接。二进制版本204、404的相同之处在于它们是同一软件程序142 的副本,但它们并不必然是同一个二进制文件。

与程序模块206-f一样,程序模块406-j可以包含一个或更多软件库 156-d(在图4被示为软件库156-2)中的各种程序模块。在软件程序142 的二进制版本404在处理器电路130上运行期间,动态链接器应用146可 以将程序模块406-j链接到该二进制版本404。

如图4所示,动态链接器应用146可以包含在处理器电路130上运行 的客户机预链接部件202-2,以接收主预链接部件202-1生成的全局预链接 布局映射208,并且从全局预链接布局映射208中取回重定位信息210。重 定位信息210可以包含第一组程序模块206-f中的程序模块206-1的每个模 块地址302-g和第一专用存储器页152-1的第一组虚拟存储器地址304-h 中的每个虚拟存储器地址304-h之间的映射。客户机预链接部件202-2可 以用该重定位信息110作为模板,使用被分配给客虚拟机160-2的第二专 用存储器页152-2中的第二组虚拟存储器地址,针对该客虚拟机160-2对 用于软件程序142的第二二进制版本404的第二组程序模块406-j进行重 定位。现在,二进制版本204、404以及各自相关的程序模块206-f、406-j 被使用分别分配给虚拟机160-1、160-2的不同专用存储器段中的同一组虚 拟存储器地址进行了预链接。

图5说明了用于存储器管理装置100的操作环境500的实施例。操作 环境500说明了由动态链接器应用146的客户机预链接部件202-2对单个 示例性程序模块406-1执行的重定位操作的一个示例性实现。可以理解, 可以为该组程序模块406-f中的其它程序模块执行针对程序模块406-1所描 述的重定位操作。

如图5所示,客户机预链接部件202-2通过把在程序模块202-1中引 用的每个模块地址502-k改变成第二专用存储器页152-2的第二组虚拟存 储器地址504-h中的一个虚拟存储器地址504-h,对第二组程序模块406-j 中的该程序模块406-1进行重定位。例如,模块存储器地址502-1可以被 改变成虚拟存储器地址504-1,模块存储器地址502-2可以被改变成虚拟存 储器地址504-2,等等。一旦完成程序模块406-1的重定位操作,客户机预 链接部件202-2可以对下一个程序模块406-2开始重定位操作。继续这种 处理直到客户机预链接部件202-2对该组程序模块406-j中的所有程序模块 进行了重定位。现在,软件程序142的二进制版本404被与相关的程序模 块406-j进行了预链接,并且已经准备好供加载器应用144在用户启动执 行该二进制版本404时将其加载到存储器单元150中。

由于客户机预链接部件202-2使用全局预链接布局映射208中的重定 位信息210进行它的重定位操作,第一专用存储器页152-1的第一组虚拟 存储器地址304-h中的一个或更多被重定位的虚拟存储器地址304-h现在 与第二专用存储器页152-2的第二组虚拟存储器地址504-h中的一个或更 多被重定位的虚拟存储器地址504-h相匹配。照此,动态链接器应用146 可以向存储器管理应用140传送该已知的虚拟存储器地址304-h、504-h。

存储器管理应用140可以将该已知的虚拟存储器地址304-h、506-h用 作起点,来寻找适合存储器去重操作的候选者。存储器管理应用140可以 使用该已知的虚拟存储器地址304-h、504-h(例如,基准虚拟存储器地址 304-1、504-1)中的一个虚拟存储器地址,从存储器单元150中取回专用 存储器页152-1、152-2。存储器管理应用140可以对专用存储器页152-1、 152-2进行比较,以确定是否存在相同内容的匹配。如果存在匹配,则存 储器管理应用140可以将专用存储器页152-1、152-2合并成单个共享存储 器页154-1。现在,共享存储器页154-1可以被产生了专用存储器页152-1、 152-2的虚拟机160-1、160-2进行存取。如果虚拟机160-1、160-2中的一 个虚拟机修改了共享存储器页154-1,存储器管理应用140可以将共享存 储器页154-1转换回专用存储器页152-1、152-2,这是由于它们现在具有 不重复的内容。可以为共享存储器页154-2、共享存储器页154-3等等继续 这种处理,直到所有重复的专用存储器页152-b被合并成一个共享存储器 页154-c为止。

图6说明了用于存储器管理装置100的操作环境600的实施例。操作 环境600说明了在主预链接部件202-1与客户机预链接部件202-2、202-3 和202-4之间共享预链接信息602的一种示例性实现,所述主预链接部件 202-1在主虚拟机160-1中执行,所述客户机预链接部件202-2、202-3和 202-4分别在客虚拟机160-2、160-3和160-4中执行。

如图6所示,主预链接部件可以在对第一组程序模块206-f进行重定 位之前,接收预链接信息602,并且使用该预链接信息602对第一组程序 模块206-f进行重定位。预链接信息602可以被用作预链接映射算法的输 入,所述预链接映射算法被设计用于为预链接操作生成地址布局。通常, 预链接信息602可以包括任何可以被用来优化由主预链接部件202-1执行 的重定位操作的信息,下面给出其具体例子。

在一个实施例中,预链接信息602可以产生于诸如主虚拟机160-1这 样的单个虚拟机。在主虚拟机160-1内执行的主预链接部件202-1可以针 对仅仅对该主虚拟机160-1已知的信息生成预链接信息602。主预链接部 件202-1可以使用该预链接信息602为在主虚拟机160-1上执行的预链接 操作计算出虚拟存储器地址304-h的最佳布局。

举例来说,预链接信息602可以包括将被同时加载到主虚拟机160-1 上的第一组程序模块206-f中的程序模块206-f的图。然后,主预链接部件 202-1可以将第一组虚拟存储器地址304-h中的不同子组的虚拟存储器地 址304-h指派给在该图中的程序模块206-f,以避免使用同一组地址加载多 个程序模块206-f。例如,主预链接部件202-1可以针对要进行预链接的每 个可执行文件来扫描存储在分配给第一虚拟机160-1的专用存储器段中的 专用存储器页152-b,生成将要被同时加载的软件库156-d的图,然后为每 个软件库156-d计算出或“布局”成组的虚拟存储器地址304h,使得两个 软件库156-d(例如,156-1、156-2)将永远不会同时被加载、或者重叠虚 拟存储器地址304-h。然后,这些偏移量被存储在它们自己的共享目标文 件中,符号表和段地址全部都被调整以反映基于选定的基地址的地址。

此外或作为选择,预链接信息602可以产生于多个虚拟机,例如主虚 拟机160-1和一个或更多客虚拟机160-2、160-3和/或160-4。分别在客虚 拟机160-2、160-3和160-4内执行的客户机预链接部件202-2、202-3和202-4 中的每一个可以生成并向主预链接部件202-1发送相应组的预链接信息 602。主预链接部件202-1可以从客虚拟机160-2、160-3和160-4接收预链 接信息602,并且使用不同组的预链接信息602为预链接操作计算出虚拟 存储器地址的最佳布局。

举例来说,假设预链接信息602包含将被同时加载到主虚拟机160-1 上的第一组程序模块206-f中的程序模块206-f的第一图、和将被同时加载 到客虚拟机160-2上的第二组程序模块406-j中的程序模块406-j的第二图。 然后,主预链接部件202-1可以向第一图中的第一组程序模块206-f指派第 一组虚拟存储器地址304-h中的不同子组的虚拟存储器地址304-h,向第二 图中的第二组程序模块406-j指派第二组虚拟存储器地址504-h中的不同子 组的虚拟存储器地址504-h。对来自客虚拟机160-2的预链接信息602加以 考虑使得主预链接部件202-1能够以模板的方式(其不会对客虚拟机160-2 产生负面影响)为主虚拟机160-1布局虚拟存储器地址,例如使用客虚拟 机160-2不可用或尚未使用的虚拟存储器地址。

再参考图1,电子设备120可以被耦合到各种计算和/或通信平台上, 所述计算和/或通信平台包括在这样的平台上能典型地找到的平台部件。例 如,电子设备120可以包括计算平台,其具有各种平台部件,例如输入/ 输出(I/O)设备、I/O控制器、GPU、电源、热管理部件等等。在一个实 施例中,电子设备120可以包括诸如移动计算设备(例如,笔记本、平板 计算机、智能电话等)或固定计算设备(例如,个人计算机、台式计算机、 服务器等)这样的具有用于呈现在存储器单元150中存储的信息的显示器 的计算设备。显示器可以包含任何适合电子设备120的数字显示设备。例 如,显示器可以用液晶显示器(LCD)(例如触摸式的彩色薄膜晶体管(TFT) LCD)、等离子体显示器、有机发光二极管(OLED)显示器、阴极射线管 (CRT)显示器、或用于向电子设备120的用户显示内容的其它类型的适 当的可视接口来实现。显示器还可以包括某种形式的背光或亮度发射器, 如给定的实现所要求的。

文中包括的是表示用于执行所公开的架构的多个新颖方面的示例性方 法的一组流程图。尽管出于简洁解释的目的,文中示出的一个或更多方法, 例如采用流程图或流图的形式,被示出并描述为一系列动作,然而将明白 并理解的是,所述方法并不受到动作次序的限制,因为一些动作依照其自 身可以以不同于文中示出和描述的次序来发生、并且/或者与其它动作一同 发生。例如,本领域的技术人员将明白并理解,作为选择,方法能够被表 示为诸如在状态图中表示的那样的一系列相关的状态或事件。此外,对于 一种新颖实现来说,可能并不需要方法中所说明的所有动作。

图7说明了逻辑流700的一个实施例。逻辑流700可以表示由文中所 述的一个或更多实施例(例如,存储器管理装置100)执行的一些或全部 操作。更确切地,逻辑流700说明了动态链接器应用146的主预链接部件 202-1和/或客户机预链接部件202-2执行的预链接操作。

在图7示出的所说明的实施例中,在块702,逻辑流700可以使用被 分配给第一虚拟机的第一专用存储器页中的第一组虚拟存储器地址,针对 该第一虚拟机对用于软件程序的第一二进制版本的第一组程序模块进行重 定位。例如,在主虚拟机160-1上执行的动态链接器应用146的主预链接 部件202-1可以使用被分配给该主虚拟机160-1的第一专用存储器页152-1 中的第一组虚拟存储器地址304-h,针对该主虚拟机160-1对用于软件程序 142的第一二进制版本204的第一组程序模块206-1、206-2进行重定位。

在块704,逻辑流700可以在全局预链接布局映射中存储第一组程序 模块的重定位信息。例如,主预链接部件202-1可以在可以被主虚拟机 160-1和客虚拟机160-2进行存取的存储器单元150的共享存储器页152-3 中的全局预链接布局映射208中存储第一组程序模块206-1、206-2的重定 位信息210。全局预链接布局映射208可以被存储在所有虚拟机160-1、 160-2、160-3和160-4可以存取的诸如共享存储器页152-3这样的共享存 储器段中。作为选择,全局预链接布局映射208可以被当做在虚拟机160-1、 160-2、160-3和160-4之间传递的消息进行传送。

在块706,逻辑流700可以取回全局预链接布局映射。例如,在客虚 拟机160-2上执行的动态链接器应用146的客户机预链接部件202-2可以 从共享存储器页152-3中取回全局预链接布局映射208和重定位信息210。

逻辑流700可以基于全局预链接布局映射,使用被分配给第二虚拟机 的第二专用存储器页中的第二组虚拟存储器地址,针对第二虚拟机对用于 该软件程序的第二二进制版本的第二组程序模块进行重定位。例如,客户 机预链接部件202-2可以分析重定位信息210,并且用重定位信息210作 为模板,使用被分配给客虚拟机160-2的第二专用存储器页152-2中的第 二组虚拟存储器地址504-h,针对虚拟机160-2对用于软件程序142的第二 二进制版本404的第二组程序模块406-1、406-2进行重定位。

图8说明了逻辑流800的一个实施例。逻辑流800可以表示由文中所 述的一个或更多实施例(例如,存储器管理装置100)执行的一些或全部 操作。更确切地,逻辑流800说明了动态链接器应用146的主预链接部件 202-1和/或客户机预链接部件202-2执行的重定位操作。

在图8示出的所说明的实施例中,在块802,逻辑流800可以通过将 在第一组程序模块中的程序模块中引用的每个模块地址改变成第一专用存 储器页的第一组虚拟存储器地址中的虚拟存储器地址,对该程序模块进行 重定位。例如,主预链接部件202-1可以通过将在第一组程序模块206-1、 206-2中的一个程序模块206-1中引用的每个模块地址302-g改变成被分配 给主虚拟机160-1的专用存储器段(例如,第一专用存储器页152-1)的第 一组虚拟存储器地址304-h中的一个虚拟存储器地址304-h,对该程序模块 206-1进行重定位。

在块804,逻辑流800可以通过将在第二组程序模块中的程序模块中 引用的每个模块地址改变成第二专用存储器页的第二组虚拟存储器地址中 的虚拟存储器地址,对该程序模块进行重定位,其中,第一专用存储器页 的第一组虚拟存储器地址与第二专用存储器页中的第二组虚拟存储器地址 相匹配。例如,客户机预链接部件202-2可以通过将在第二组程序模块 406-1、406-2中的一个程序模块406-1中引用的每个模块地址502-k改变 成被分配给客虚拟机160-2的专用存储器段(例如,第二专用存储器页 152-2)的第二组虚拟存储器地址504-h中的一个虚拟存储器地址504-h, 对该程序模块进行重定位。第一专用存储器页152-1的第一组虚拟存储器 地址302-g与第二专用存储器页152-2的第二组虚拟存储器地址504-h相匹 配,这是由于这两种地址布局使用了相同的重定位信息210。

图9说明了逻辑流900的一个实施例。逻辑流900可以表示由文中所 述的一个或更多实施例(例如,存储器管理装置100)执行的一些或全部 操作。更确切地,逻辑流900说明了动态链接器应用146的主预链接部件 202-1和/或客户机预链接部件202-2基于不同类型和来源的预链接信息602 而执行的重定位操作。

在图9示出的所说明的实施例中,在块902,逻辑流900可以接收预 链接信息。例如,在一个实施例中,主预链接部件202-1可以从主虚拟机 160-1接收单组的预链接信息602。此外或作为选择,主预链接部件202-1 可以从诸如客虚拟机160-2、160-3和/或160-4这样的各种客虚拟机接收不 同组的预链接信息602。

在块904,逻辑流900可以基于该预链接信息,对第一组程序模块进 行重定位。例如,在一个实施例中,主预链接部件202-1可以基于仅仅是 来自主虚拟机160-1的预链接信息602,重定位第一组程序模块206-f。例 如,在一个实施例中,主预链接部件202-1可以基于来自客虚拟机160-2、 160-3和/或160-4的不同组的预链接信息602,重定位第一组程序模块 206-f。在这个实施例中,主预链接部件202-1可以把不同组的预链接信息 602整合到一个超集中,并且将该信息超集用作预链接映射算法的输入。

在块906,逻辑流900可以基于预链接信息,向第一组程序模块中的 不同的程序模块指派第一组虚拟存储器地址中的不同子组的虚拟存储器地 址。例如,基于预链接信息602,主预链接部件202-1可以通过向第一组 程序模块206-f中的不同的程序模块206-f指派第一组虚拟存储器地址 304-h中的不同子组的虚拟存储器地址304-h,来执行重定位操作。

图10说明了逻辑流1000的一个实施例。逻辑流1000可以表示由文中 所述的一个或更多实施例(例如,存储器管理装置100)执行的一些或全 部操作。更确切地,逻辑流1000说明了在主虚拟机160-1中,在处理器电 路130上执行的存储器管理应用140执行的存储器去重操作。

在图10示出的所说明的实施例中,在块1002,逻辑流1000可以取回 被分配给第一虚拟机的第一专用存储器页和被分配给第二虚拟机的第二专 用存储器页。例如,存储器管理应用140可以取回被分配给主虚拟机160-1 的第一专用存储器页152-1和被分配给客虚拟机160-2的第二专用存储器 页152-2。可以对存储器管理应用140进行编程,以便基于在对软件程序 142的二进制版本204、404和存储器单元150中的一个或更多软件库156-d 执行预链接操作之后从动态链接器应用146传递到存储器管理应用140的 已知的一组虚拟存储器地址304-h、504-h,取回第一和第二专用存储器页 152-1、152-2。

在块1004,逻辑流1000可以比较第一和第二专用存储器页,以查找 重复内容。例如,存储器管理应用140可以比较第一和第二专用存储器页 152-1、152-2,以查找重复内容。

在块1006,当第一和第二专用存储器页具有重复内容时,逻辑流1000 可以合并该第一和第二专用存储器页,以构成一个共享存储器页。例如, 当第一和第二专用存储器页152-1、152-2被确定具有重复内容时,存储器 管理应用140可以将该第一和第二专用存储器页152-1、152-2合并成单个 的共享存储器页154-1。

图11说明了适合实现前述的各种实施例(例如,存储器管理装置100) 的示例性计算架构1100的实施例。在一个实施例中,计算架构1100可以 包括或被实现为诸如电子设备120这样的电子设备的一部分及其它。所述 实施例在此方面不受限制。

如在本申请中所使用的,术语“装置”和“部件”是要指计算机相关 的实体,或者是硬件、硬件和软件的组合、软件,或者是执行中的软件, 示例性计算架构1100提供了其示例。例如,部件可以是,但不限于:在处 理器上运行的进程、处理器、硬盘驱动器、多个存储驱动器(或光和/或磁 存储介质)、目标文件、可执行文件、执行的线程、程序、和/或计算机。 作为举例说明,在服务器上运行的应用和该服务器都能够是部件。一个或 更多部件能够驻留在执行的进程和/或线程中,并且部件能够位于一个计算 机上和/或分布在两个或更多计算机之间。此外,多个部件可以通过各种类 型的通信介质,互相通信地耦合在一起以协调操作。该协调可以涉及单向 的或双向的信息交换。例如,多个部件可以用在通信介质上传送的信号的 形式来传送信息。该信息能够被实现为被分配给各种信号线的信号。在这 样的分配中,每个消息是一个信号。然而,另外的实施例可以替代地使用 数据消息。这样的数据消息可以通过各种连接来发送。示例性的连接包括 并行接口、串行接口和总线接口。

计算架构1100包括各种常见的计算元件,例如一个或更多处理器、多 核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、 振荡器、计时设备、视频卡、音频卡、多媒体输入/输出(I/O)部件、电 源,等等。然而,所述实施例并不限于计算架构1100的实现。

如图11所示,计算架构1100包含多个处理单元1104、一个系统存储 器1106和一个系统总线1108。处理单元1104可以包含例如处理器电路 130、132,CPU510,和/或GPU530。

系统总线1108为系统部件提供到处理单元1104的接口,所述系统部 件包括但不限于系统存储器1106。系统总线1108能够是几种类型的总线 结构中的任意一种,其可以进一步使用各种商业上可获得的总线架构中的 任意一种而互连到存储器总线(借助于或不借助于存储器控制器)、外围总 线、和局部总线。接口适配器可以经由插槽架构连接到系统总线1108。插 槽架构的示例可以包括,但不限于:加速图形端口(AGP)、插件总线(Card Bus)、(扩展的)工业总线标准架构((E)ISA)、微通道架构(MCA)、NuBus、 外围部件互连(扩展的)(PCI(X))、PCI Express、个人计算机存储卡国际 协会(PCMCIA),等等。

计算架构1100可以包含或实现各种制品。制品可以包括用于存储逻辑 的计算机可读存储介质。计算机可读存储介质的示例可以包括能够存储电 子数据的任意有形介质,其包括易失性存储器或非易失性存储器、可移动 或不可移动存储器、可擦除或不可擦除存储器、可写入或不可写入存储器, 等等。逻辑的示例可以包括使用任意合适类型的代码实现的可执行计算机 程序指令,所述代码例如是源代码、编译代码、解释代码、可执行代码、 静态代码、动态代码、面向对象代码、可视化代码,等等。

系统存储器1106可以包括其形式为一个或更多较高速存储器单元的 各种类型的计算机可读介质,例如只读存储器(ROM)、随机存取存储器 (RAM)、动态RAM(DRAM)、双倍数据速率DRAM(DDRAM)、同步 DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦 除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存 储器、诸如铁电聚合物存储器这样的聚合物存储器、奥氏存储器、相变存 储器或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁 卡或光卡、诸如独立磁盘冗余阵列(RAID)驱动器这样的设备阵列、固态 存储器(例如,USB存储器、固态驱动器(SSD))、以及任何其它类型的 适合存储信息的存储介质。在图11示出的所说明的实施例中,系统存储器 1106能够包括非易失性存储器1110和/或易失性存储器1112。基本输入/ 输出系统(BIOS)能够被存储在非易失性存储器1110中。

计算机1102可以包括其形式为一个或更多较低速存储器单元的各种 类型的计算机可读存储介质,包括内部(或外部)硬盘驱动器(HDD)1114、 用于从可移动磁盘1118读取或向其写入数据的软磁盘驱动器(FDD)1116、 以及用于从可移动光盘1122(例如,CD-ROM或DVD)读取或向其写入 数据的光盘驱动器1120。HDD1114、FDD1116和光盘驱动器1120能够分 别通过HDD接口1124、FDD接口1126以及光盘驱动器接口1128连接到 系统总线1108。用于外部驱动器实现的HDD接口1124能够包括通用串行 总线(USB)和IEEE13114接口技术中的至少一种或两种。

驱动器和相关的计算机可读介质提供了数据、数据结构、计算机可执 行指令等的易失性和/或非易失性存储。例如,许多程序模块,包括操作系 统1130、一个或更多应用程序1132、其它程序模块1134和程序数据1136, 能够被存储在驱动器和存储器单元1110、1112中。在一个实施例中,所述 一个或更多应用程序1132、其它程序模块1134和程序数据1136能够包括 例如存储器管理装置100、200和500的各种应用和/或部件。

用户能够通过一个或更多有线/无线输入设备,例如,键盘1138和诸 如鼠标1140这样的指点设备,向计算机1102输入命令和信息。其它输入 设备可以包括麦克风、红外线(IR)遥控器、射频(RF)遥控器、游戏手 柄、手写笔、读卡器、软件保护器(dongle)、指纹读取器、手套、图形输 入板、操纵杆、键盘、视网膜阅读器、触摸屏(例如,电容性的,电阻式 的,等等)、轨迹球、触控板、传感器、触控笔,等等。这些和其它输入设 备经常通过耦合到系统总线1108的输入设备接口1142连接到处理单元 1104,但是也能够通过诸如并口、IEEE13114串口、游戏端口、USB端口、 IR接口等这样的其它接口进行连接。

监视器1144或其它类型的显示设备也经由诸如视频适配器1146这样 的接口连接到系统总线1108。监视器1144可以在计算机1102的内部或外 部。除了监视器1144,计算机典型地还包括诸如扬声器、打印机等这样的 其它外围输出设备。

经由有线和/或无线通信,使用到诸如远程计算机1148这样的一个或 更多远程计算机的逻辑连接,计算机1102可以工作在联网环境中。远程计 算机1148能够是工作站、服务器计算机、路由器、个人计算机、便携式计 算机、基于微处理器的娱乐设备、对等设备或其它公用网络节点,并且典 型地包括结合计算机1102描述的多种或全部元件——尽管为了简洁,仅说 示出了存储器/存储设备1150。所述的逻辑连接包括到局域网(LAN)1152 和/或更大的网络,例如广域网(WAN)1154的有线/无线连接。这样的LAN 和WAN网络环境在办公室或公司是常见的,其便利诸如内联网这样的企 业范围的计算机网络,所有这些都可以连接到全球通信网络,例如,因特 网。

当在LAN网络环境中使用时,计算机1102通过有线和/或无线通信网 络接口或适配器1156连接到LAN1152。适配器1156能够便利到LAN1152 的有线和/或无线通信,LAN1152还可以包括在其上放置的无线接入点, 以用于与适配器1156的无线功能进行通信。

当在WAN网络环境中使用时,计算机1102能够包括调制解调器1158, 或者其被连接到WAN1154上的通信服务器,或者其具有其它方式在WAN 1154上建立通信,例如通过因特网。调制解调器1158能够是内部或者外 部设备,并且能够是有线的和/或无线的设备,其经由输入设备接口1142 连接到系统总线1108。在联网环境下,结合计算机1102描述的程序模块 或者其中的部分能够被存储在远程存储器/存储设备1150中。将被理解的 是,所示出的网络连接是示例性的,并且能够使用其它方法在计算机之间 建立通信链路。

计算机1102可用于与使用IEEE802系列标准的有线的和无线的设备 或实体进行通信,例如在无线通信(例如,IEEE802.11空中调制技术)中 部署的运转着的无线设备。这至少包括Wi-Fi(或无线保真)、WiMax和 BluetoothTM无线技术及其它技术。因此,通信能够是预定义结构的,像与 常规的网络进行的那样,或者可以仅仅是至少两个设备之间的ad>

各种实施例的元件可以被实现为各种硬件元件、软件元件或两者的组 合。硬件元件的示例可以包括设备、逻辑设备、部件、处理器、微处理器、 电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器, 等等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数 字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、 寄存器、半导体设备、芯片、微芯片、芯片组,等等。软件元件的示例可 以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、软件 开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、 子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、 计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或它们 的任意组合。确定使用硬件元件和/或软件元件来实现实施例是可以根据多 种因素而改变的,所述因素例如是期望的计算速率、功率电平、热耐受性、 处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速 度和其它涉及或性能限制,如给定的实现所要求的。

可以使用表述“某一实施例”或“实施例”及其派生词来描述一些实 施例。这些术语意味着结合该实施例描述的特定的特征、结构或特性被包 括在至少一个实施例中。在说明书的各处出现的短语“在一个实施例中” 未必全部指的是相同的实施例。此外,可以使用表述“耦合的”和“连接 的”及其派生词来描述一些实施例。这些术语未必互为同义词。例如,可 以使用术语“连接的”和/或“耦合的”来描述一些实施例,以指示两个或 更多元件彼此是直接物理或电气接触。然而,术语“耦合的”还可以表示 两个或更多元件不是直接相互接触,但是仍旧彼此协作或交互。

要强调的是,提供了该公开的摘要以便让读者快速确定该技术公开的 本质。摘要的提交也伴随着这样的理解,即,其并不会被用于解释或限制 权利要求的范围或意义。此外,在前述的详细说明中,可以看出,为了简 化该公开,各种特征被组合在一起放在单个实施例中。这种公开方式并不 应被解释为反映了这样的目的,即,所要求保护的实施例需要比在每个权 利要求中明确记载的特征更多的特征。相反,如下面的权利要求所反映的, 有创造性的主题在于比单个公开的实施例中的全部特征更少的特征。因此, 下面的权利要求被特此并入到详细说明中,每个权利要求独立自主地作为 一个单独的实施例。在所附权利要求中,术语“包括(including)”和“其 中(in which)”被分别被用作相应的术语“包含(comprising)”和“在其 中(wherein)”的简明英语同义词。此外,术语“第一”、“第二”、“第三” 等仅仅被用作标号,而不是要对它们的对象强加数值上的要求。

以上所描述的包括所公开的架构的各种示例。当然,不可能描述部件 和/或方法的每种可想到的组合,但是本领域的一个普通技术人员可以认识 到,许多进一步的组合和排列都是可能的。因此,该新颖的架构是要包含 落入所附权利要求的精神和范围之内的所有这样的替换、修改和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号