不可变可共享零复制数据和流传输制造技术

技术编号:12297775 阅读:89 留言:0更新日期:2015-11-11 09:01
不可变缓冲区的环境和使用。计算实体获取数据或生成数据,并将该数据填充到缓冲区,在这之后该缓冲区被分类成不可变的。该分类保护填充在不可变缓冲区中的数据在该不可变缓冲区的寿命期间免于改变,并且还保护不可变缓冲区在该不可变缓冲区的寿命期间免于改变其物理地址。在不同的计算实体使用来自不可变缓冲区的数据时,它们通过视图提供实体所提供的视图来这样做。不可变缓冲区体系结构还可被用于流传输数据,其中流传输数据中的每一分量使用不可变缓冲区。因此,不同计算实体可以不同地查看不可变数据,而不必实际上复制该数据。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】不可变可共享零复制数据和流传输 Μ? 计算机操作系统性能通常由操作系统在给定时间间隔期间可维持的最大输入/ 输出(I/O)操作速率(也称为"I/O性能")来表征。结果,操作系统采用各种公知机制来 提升I/O性能。 传统上,操作系统是使用向系统程序员提供对如何操纵存储器的非常精细的控制 的非受管语言(如汇编语言、C、C++)来编写的。未经检查的指针的使用可被用来最小化操 作系统开销并允许增加的吞吐量或降低的等待时间。使用这些未经检查的指针的不利方面 在于它们难以创建和推理,导致不可靠的软件和安全弱点。 用受管编程语言编写软件提供了充足的正确性益处和开发时间效率。这些受管语 言防止程序员创建许多种类的软件缺陷,这造成改进的软件质量和缩短的开发时间。操作 系统正确性是用于递送可靠且安全的计算体验的关键因素。因此,使用受管语言来创建操 作系统是非常有说服力的主张,因为操作系统可靠性可以改进且开发成本可被降低。 为了达到这些益处,受管编程语言在由程序员编写的源代码与物理计算机系统的 原始机器资源之间插入抽象层。这一抽象层一般用于约束程序员被允许写什么,并且通过 这样做消除了全部的各类潜在缺陷。不幸的是,这一抽象层引入可能损害所创建的软件的 性能的开销。结果,普遍假定是受管语言用正确性缺陷来换取性能缺陷。因而,用受管语言 编写的软件通常被认为先天地慢于用非受管语言编写的软件。 影响受管代码操作系统的具体问题是对在数据穿过系统时在各层之间复制数据 的固有需求。这是由以下事实引起的:系统的不同组件存在于不同隔离上下文中并且没有 清晰的机制来摆脱这些隔离上下文。【
技术实现思路
】 根据本文描述的至少一个实施例,描述了不可变缓冲区的环境和使用。计算实体 获取数据或生成数据,如可能的批量数据,并将该数据填充到缓冲区,在这之后该缓冲区被 分类成不可变的。该分类保护填充在不可变缓冲区中的数据在该不可变缓冲区的寿命期间 免于改变,并且还保护不可变缓冲区在该不可变缓冲区的寿命期间免于改变其物理地址。 在不同的计算实体使用来自不可变缓冲区的数据时,它们通过视图提供实体所提 供的视图来这样做。因此,不同计算实体可以不同地查看不可变数据,而不必实际上复制该 数据。例如,在处理网络分组时,代替通过从一个缓冲区复制到另一个缓冲区来传递分组的 不同部分,可改为传递该分组的细粒度视图定义,而不必实际上复制分组本身。 本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于 帮助确定所要求保护的主题的范围。 附图简沐 为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通 过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其 范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中: 图1抽象地示出可在其中采用本文描述的一些实施例的计算系统; 图2示出用于提供不可变缓冲区的方法的流程图; 图3A示出填充缓冲区的过程在其中发生的环境; 图3B示出在其中使经填充的缓冲区不可变的环境; 图4示出用于使用不可变缓冲区的方法的流程图; 图5示出其中不同计算实体具有不可变缓冲区的不同视图的环境; 图6示出用于将不可变数据从一个计算实体传递到下一计算实体的方法的流程 图; 图7示出其中数据流从流源提供给流缓冲区并随后从流缓冲区提供给流消费者 的流传输环境; 图8示出其中第二计算实体通过第一计算实体的高速缓存来获取高速缓存的环 境; 图9示出第二计算实体从第一计算实体支持的高速缓存进行第一次读取的方法 的流程图; 图10示出第二计算实体从第一计算实体支持的高速缓存进行后续读取的方法的 流程图; 图11示出第一计算实体(或后备高速缓存)执行逐出的方法的流程图; 图12示出示例受管代码系统;以及 图13描绘正常受管字节阵列,它具有指向它的两个不同的跨度并允许应用将该 阵列的各部分看作不同的类型。 详细描沐 根据本文描述的各实施例,描述了促进受管操作系统中的零复制输入/输出(1/ 0)语义的机制。这样的机制中的一些可被用在非受管代码操作系统中以及受管代码操作系 统中。各机制不是互斥的,因为一个、一些、或甚至全部机制可被组合以进一步促进零复制 I/O语义。 "零复制"指的是被设计成使数据能通过被写入存储器来进入系统并在不必复制 该数据的情况下传播通过许多抽象层的体系结构。零复制体系结构不保证没有数据复制发 生。相反,它仅仅使机制就位以确保大多数I/O操作可以在无需复制的情况下完成。在本 说明书和权利要求书中,"存储器"被定义为任何随机存取存储器,它通常是易失性存储器, 但也可包括非易失性部分或可能可完全是非易失性的。在本说明书和权利要求书中,"存储 器"被定义为计算系统的主存储介质,包括可由计算系统的微处理器访问且可由硬件设备 (如图形控制器或网络接口控制器)经由DM(直接存储器访问)机制访问的可单独寻址的 位置。 首先,将描述使用共享数据的不可变缓冲区的不可变可共享零复制批量数据机 制。这样的机制允许在无需复制的情况下在计算系统中转移数据的大型缓冲区。该机制将 被进一步扩展到数据流在计算系统内的共享使用,具有完全控制以允许高效的资源利用, 这些全都在维持完整的零复制语义的同时进行。尽管受管代码系统的当前类型安全性允许 更直接地实现这些机制,但这些机制也可在非受管代码系统中使用。 其次,将描述用于零复制高速缓存的机制。这样的零复制高速缓存可被用于非受 管代码系统和受管代码系统两者中。零复制高速缓存使得可能创建表征进入高速缓存的数 据以及从高速缓存返回的数据的零复制语义的通用高速缓存体系结构。 第三,将描述进一步增强受管代码系统的性能的若干机制,而不管这些系统是否 采用不可变缓冲区或共享数据。这样的受管代码机制包括统一存储器访问和类型安全类型 铸造。统一存储器访问使受管代码能够使用一致且可组合的方法均匀地访问受管存储器和 非受管存储器(用于I/O缓冲区)两者。类型安全类型铸造使受管代码能够执行指针铸造 以允许给定存储器区域被看作不同类型,同时维持完整的类型安全性。 将参考图1来描述计算系统的一些介绍性讨论。随后将按以上参考图2-13提供 的次序来描述以上列出的机制。 计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设 备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计 算系统的设备。在本说明书以及权利要求书中,术语"计算系统"被广义地定义为包括任何 设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有 可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并 可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可包括多个组分 计算系统。 如图1所示,在其最基本的配置中,计算系统100包括至少一个处理单元102和计 算机可读介质104。计算机可读介质104可在概念上被认为包括物理系统存储器,它可以是 易失性的、非易失性的、或这两者的某种组合。计算机可读介质104还在概念上包括非易失 性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式 的本文档来自技高网
...

【技术保护点】
一种用于在多个计算实体之间共享数据的方法,所述方法包括:用数据填充缓冲区的动作;将所述缓冲区分类成不可变缓冲区的动作,其中所述分类保护填充在所述不可变缓冲区中的所述数据在所述不可变缓冲区的寿命期间免于改变,并且还保护所述不可变缓冲区在所述不可变缓冲区的寿命期间免于改变其物理地址;向第一计算实体授予所述不可变缓冲区的第一视图的动作;以及向第二计算实体授予所述不可变缓冲区的第二视图的动作,其中所述第二视图不同于所述第一视图。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:J·T·亨特J·于M·塔耶费尔G·M·内沃洛夫D·卡库林A·H·莫罕默德J·J·达菲C·W·布鲁密F·S·特瑞克
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1