不可变可共享零复制数据和流传输的制作方法

文档序号:9332660阅读:505来源:国知局
不可变可共享零复制数据和流传输的制作方法
【专利说明】不可变可共享零复制数据和流传输
[0001] Μ?
[0002] 计算机操作系统性能通常由操作系统在给定时间间隔期间可维持的最大输入/ 输出(I/O)操作速率(也称为"I/O性能")来表征。结果,操作系统采用各种公知机制来 提升I/O性能。
[0003] 传统上,操作系统是使用向系统程序员提供对如何操纵存储器的非常精细的控制 的非受管语言(如汇编语言、C、C++)来编写的。未经检查的指针的使用可被用来最小化操 作系统开销并允许增加的吞吐量或降低的等待时间。使用这些未经检查的指针的不利方面 在于它们难以创建和推理,导致不可靠的软件和安全弱点。
[0004] 用受管编程语言编写软件提供了充足的正确性益处和开发时间效率。这些受管语 言防止程序员创建许多种类的软件缺陷,这造成改进的软件质量和缩短的开发时间。操作 系统正确性是用于递送可靠且安全的计算体验的关键因素。因此,使用受管语言来创建操 作系统是非常有说服力的主张,因为操作系统可靠性可以改进且开发成本可被降低。
[0005] 为了达到这些益处,受管编程语言在由程序员编写的源代码与物理计算机系统的 原始机器资源之间插入抽象层。这一抽象层一般用于约束程序员被允许写什么,并且通过 这样做消除了全部的各类潜在缺陷。不幸的是,这一抽象层引入可能损害所创建的软件的 性能的开销。结果,普遍假定是受管语言用正确性缺陷来换取性能缺陷。因而,用受管语言 编写的软件通常被认为先天地慢于用非受管语言编写的软件。
[0006] 影响受管代码操作系统的具体问题是对在数据穿过系统时在各层之间复制数据 的固有需求。这是由以下事实引起的:系统的不同组件存在于不同隔离上下文中并且没有 清晰的机制来摆脱这些隔离上下文。

【发明内容】

[0007] 根据本文描述的至少一个实施例,描述了不可变缓冲区的环境和使用。计算实体 获取数据或生成数据,如可能的批量数据,并将该数据填充到缓冲区,在这之后该缓冲区被 分类成不可变的。该分类保护填充在不可变缓冲区中的数据在该不可变缓冲区的寿命期间 免于改变,并且还保护不可变缓冲区在该不可变缓冲区的寿命期间免于改变其物理地址。
[0008] 在不同的计算实体使用来自不可变缓冲区的数据时,它们通过视图提供实体所提 供的视图来这样做。因此,不同计算实体可以不同地查看不可变数据,而不必实际上复制该 数据。例如,在处理网络分组时,代替通过从一个缓冲区复制到另一个缓冲区来传递分组的 不同部分,可改为传递该分组的细粒度视图定义,而不必实际上复制分组本身。
[0009] 本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于 帮助确定所要求保护的主题的范围。
[0010] 附图简沐
[0011] 为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通 过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其 范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:
[0012] 图1抽象地示出可在其中采用本文描述的一些实施例的计算系统;
[0013] 图2示出用于提供不可变缓冲区的方法的流程图;
[0014] 图3A示出填充缓冲区的过程在其中发生的环境;
[0015] 图3B示出在其中使经填充的缓冲区不可变的环境;
[0016] 图4示出用于使用不可变缓冲区的方法的流程图;
[0017] 图5示出其中不同计算实体具有不可变缓冲区的不同视图的环境;
[0018] 图6示出用于将不可变数据从一个计算实体传递到下一计算实体的方法的流程 图;
[0019] 图7示出其中数据流从流源提供给流缓冲区并随后从流缓冲区提供给流消费者 的流传输环境;
[0020] 图8示出其中第二计算实体通过第一计算实体的高速缓存来获取高速缓存的环 境;
[0021] 图9示出第二计算实体从第一计算实体支持的高速缓存进行第一次读取的方法 的流程图;
[0022] 图10示出第二计算实体从第一计算实体支持的高速缓存进行后续读取的方法的 流程图;
[0023] 图11示出第一计算实体(或后备高速缓存)执行逐出的方法的流程图;
[0024] 图12示出示例受管代码系统;以及
[0025] 图13描绘正常受管字节阵列,它具有指向它的两个不同的跨度并允许应用将该 阵列的各部分看作不同的类型。
[0026] 详细描沐
[0027] 根据本文描述的各实施例,描述了促进受管操作系统中的零复制输入/输出(1/ 0)语义的机制。这样的机制中的一些可被用在非受管代码操作系统中以及受管代码操作系 统中。各机制不是互斥的,因为一个、一些、或甚至全部机制可被组合以进一步促进零复制 I/O语义。
[0028] "零复制"指的是被设计成使数据能通过被写入存储器来进入系统并在不必复制 该数据的情况下传播通过许多抽象层的体系结构。零复制体系结构不保证没有数据复制发 生。相反,它仅仅使机制就位以确保大多数I/O操作可以在无需复制的情况下完成。在本 说明书和权利要求书中,"存储器"被定义为任何随机存取存储器,它通常是易失性存储器, 但也可包括非易失性部分或可能可完全是非易失性的。在本说明书和权利要求书中,"存储 器"被定义为计算系统的主存储介质,包括可由计算系统的微处理器访问且可由硬件设备 (如图形控制器或网络接口控制器)经由DM(直接存储器访问)机制访问的可单独寻址的 位置。
[0029] 首先,将描述使用共享数据的不可变缓冲区的不可变可共享零复制批量数据机 制。这样的机制允许在无需复制的情况下在计算系统中转移数据的大型缓冲区。该机制将 被进一步扩展到数据流在计算系统内的共享使用,具有完全控制以允许高效的资源利用, 这些全都在维持完整的零复制语义的同时进行。尽管受管代码系统的当前类型安全性允许 更直接地实现这些机制,但这些机制也可在非受管代码系统中使用。
[0030] 其次,将描述用于零复制高速缓存的机制。这样的零复制高速缓存可被用于非受 管代码系统和受管代码系统两者中。零复制高速缓存使得可能创建表征进入高速缓存的数 据以及从高速缓存返回的数据的零复制语义的通用高速缓存体系结构。
[0031] 第三,将描述进一步增强受管代码系统的性能的若干机制,而不管这些系统是否 采用不可变缓冲区或共享数据。这样的受管代码机制包括统一存储器访问和类型安全类型 铸造。统一存储器访问使受管代码能够使用一致且可组合的方法均匀地访问受管存储器和 非受管存储器(用于I/O缓冲区)两者。类型安全类型铸造使受管代码能够执行指针铸造 以允许给定存储器区域被看作不同类型,同时维持完整的类型安全性。
[0032] 将参考图1来描述计算系统的一些介绍性讨论。随后将按以上参考图2-13提供 的次序来描述以上列出的机制。
[0033] 计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设 备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计 算系统的设备。在本说明书以及权利要求书中,术语"计算系统"被广义地定义为包括任何 设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有 可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并 可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可包括多个组分 计算系统。
[0034] 如图1所示,在其最基本的配置中,计算系统100包括至少一个处理单元102和计 算机可读介质104。计算机可读介质104可在概念上被认为包括物理系统存储器,它可以是 易失性的、非易失性的、或这两者的某种组合。计算机可读介质104还在概念上包括非易失 性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式 的。
[0035] 如本文所使用的,术语"可执行模块"或"可执行组件"可以指可在计算系统上执 行的软件对象、例程或方法。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计 算系统上执行的对象或进程(例如,作为分开的线程)。在其中实施类型安全性并且其中各 进程被分配了它们自己的不同存储器对象的受管环境中执行的情况下,这样的可执行模块 可以是受管代码。在可执行模块用本机代码(如C或C++)编写的情况下,这样的可执行模 块还可以是非受管代码。
[0036] 在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果 这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已 经执行了计算机可执行指令来引导计算系统的操作。例如,这样的计算机可执行指令可被 实现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及对数 据的操纵。计算机可执行指令(以及被操纵的数据)可被存储在计算系统100的存储器 104中。计算系统100还可包含允许计算系统100例如通过网络110与其他处理器通信的 通信信道108。
[0037] 这里描述的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括 诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。这里描述 的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算 机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介 质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的 计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种 显著不同的计算机可读介质:计算机存储介质和传输介质。
[0038] 计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他 磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由 通用或专用计算机访问的任何其他有形存储介质。
[0039] "网络"被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设 备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、 或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介 质。传输介质可包括可用于
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1