[发明专利]用于持久性指针管理的软件转换后备缓冲器有效
申请号: | 201280059780.6 | 申请日: | 2012-10-23 |
公开(公告)号: | CN103959257B | 公开(公告)日: | 2016-10-12 |
发明(设计)人: | E·塞德拉;A·奈玛特 | 申请(专利权)人: | 甲骨文国际公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F12/10;G06F9/44 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 冯玉清 |
地址: | 美国加*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 持久性 指针 管理 软件 转换 后备 缓冲器 | ||
技术领域
本发明涉及把标识符转换成虚拟存储器地址。
背景技术
许多计算机程序把问题建模为相互关联的对象的集合。在执行过程中,这种程序对在计算机系统的存储器中存储为数据结构的对象执行操作。对象可以具有许多属性,包括代表与其它对象的关系的属性。当第一对象具有代表与第二对象的关系的属性时,该第一对象被称为源对象,而第二对象被称为目标对象。
用来表示代表与目标对象的关系的属性的信息被称为“引用”。对目标对象的引用存储在代表源对象的数据结构中。对于许多应用,处理对象时最常见的操作是基于源对象中所包含的对目标对象的引用来定位目标对象。这种操作被称为引用遍历。
许多程序使用称为“指针”的数据类型来引用目标对象。指针指示对应于目标对象的数据结构的存储器位置。为了允许程序访问比适合放在可用动态存储器中的更多的对象,指针通常包含目标对象的虚拟存储器地址(VMA),而不是目标对象所在的动态存储器位置的实际物理地址。当程序使用VMA作为引用的表示时,程序依赖于计算机操作系统的底层虚拟存储器机制和用于查找目标对象的物理存储器地址的硬件。
当对象在动态存储器中时,对象的VMA通常用来表示对对象的引用,因为大部分计算机具有内建的硬件查找机制和用于把VMA映射到物理存储器地址的地址转换表的高速存储器。此外,操作系统通常基于虚拟存储器访问提供高效的存储器高速缓存支持。通过采用内建的地址转换和存储器高速缓存机制,使用VMA作为对目标对象的引用导致非常高效的引用遍历。
不幸的是,VMA和物理存储器地址是动态分配的并且因此只在特定程序执行期间有效。因此,在程序的一次执行中用于目标对象的VMA可能不同于同一程序的后续执行中用于相同目标对象的VMA。类似地,任何给定的目标对象的VMA对两个同时执行的程序都不会相同。因此,在对象跨相同程序的不同执行或者跨同时执行的不同程序共享的环境中,VMA不能用作对目标对象的引用的唯一表示。
在数据库管理系统(DBMS)中,用于引用的信息必须跨所有程序执行正确地识别对象。必须提供持久地识别对象的某种唯一途径,这在本文中将被称为“对象标识符”(OID)。OID必须基于最低级的物理储存地址。因而,与对象的VMA或物理存储器地址相反,OID通常传达对象位于盘上什么地方。因此,OID通常是基于数据块ID的某种形式。例如,OID可以包括多部分的键,其指示文件编号(识别盘上储存信息的文件)或其代理以及相关块数(其对储存数据的文件中的固定大小的块的数量进行计数)。(文献中对OID的其它使用有时候描述逻辑持久性唯一ID,但是这必须最终经索引或类似结构被映射到物理储存地址)。
不像VMA,对象的OID跨所有程序执行唯一地识别对象。但是,如果OID用作对动态存储器中所存储的对象的引用,则每个遍历操作都需要把OID映射到目标对象的VMA,然后把VMA映射到目标对象的物理存储器地址。把OID映射到VMA的过程比把VMA映射到物理地址消耗显著更多的处理时间。
已经进行了各种尝试来实现关于VMA的引用遍历的效率,同时仍然能够在多个程序和同一程序的多次执行之间共享对象。一种常见的方案法使用OID作为对目前还未加载到动态存储器中的对象的引用,并且使用VMA作为对已经加载到动态存储器中的对象的引用。因此,当对象在静态存储器和动态存储器之间传输时,对对象的引用必须从一种形式转换到另一种。在外部形式和内部形式之间转换引用的过程被称为引用调和(swizzling)。
根据一种引用调和技术,当对象从盘加载到主存储器中时,该对象中所包含的所有引用都转换成VMA。由于那些引用的目标对象可能不在主存储器中,因此必须为目标对象预先分配VMA,就好像它们已经在主存储器中一样。
当对不在主存储器中的目标对象的引用被遍历时,DBMS把目标对象加载到主存储器中。为了检测这种引用遍历操作,通过以访问保护模式设置所有预先分配的VMA,DBMS可以依赖于计算机操作系统。当访问保护的VMA被访问时,计算机操作系统检测存储器访问保护违规并且产生异常。DBMS通过把期望的目标对象加载到主存储器中并且把VMA变成允许访问的模式来处理异常。
虽然保护模式的使用允许快速引用调和,但是它依赖于特殊的操作系统支持,诸如操作系统的存储器访问控制、检测以及异常处理功能。不幸的是,这些支持因平台而异,并且甚至可能在有些平台中不可用。因此,这种方案对于预期要在多个平台上使用的DBMS是不实用的。另外,因为已经为所有对象预先分配了存储器,所以存储器不能重用于其它目的。因此,使用大量对象的应用可能会耗尽存储器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201280059780.6/2.html,转载请声明来源钻瓜专利网。