共享和受管的存储器统一访问制造技术

技术编号:12398290 阅读:91 留言:0更新日期:2015-11-26 03:58
一种受管存储器,其中多个计算实体各自具有服从垃圾收集的对应的实体专用部分。不可变缓冲区位于受管存储器之外。对于给定的计算实体,对应的受管存储器部分包含能由特定的计算实体访问但不能由其他多个计算实体访问的实体专用对象。对于实体专用的受管存储器部分中的一个或多个,该部分还包括对共享存储器(诸如不可变缓冲区)的引用。该引用被结构化为被垃圾收集器忽略,尽管该引用可以表现为如受管存储器部分中的正常对象那样。因而,制造统一的存储器访问模型是可能的,在其中用于计算实体访问受管存储器中的常规对象的方法与该计算实体如何访问共享存储器类似。

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

【技术保护点】
一种系统,包括:具有多个受管存储器部分的受管存储器,每一受管存储器部分对应于受管计算实体;位于所述受管存储器之外的不可变缓冲区,其中所述多个受管存储器部分中的特定受管存储器部分包括对应的特定受管计算实体可访问但其他计算实体不可访问的一个或多个可被垃圾收集的对象,所述特定受管存储器部分还包括对所述不可变缓冲区的一个或多个引用;以及垃圾收集组件,被配置成管理所述特定受管存储器部分中的一个或多个可被垃圾收集的对象,但还被配置成不对到所述不可变缓冲区的一个或多个引用执行任何动作。

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

【专利技术属性】
技术研发人员:M·塔耶费尔
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

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

1