一种对象数据存储管理的装置的制作方法

文档序号:6473715阅读:137来源:国知局
专利名称:一种对象数据存储管理的装置的制作方法
技术领域
本实用新型涉及存储管理的装置及方法,特别涉及对象数据存储管理的装 置及方法。
背录技术
动态存储管理是指动态存储管理系统根据用户程序在动态运行过程中的需 要分配存储块给用户程序,并在用户程序使用结束时,释放回收分配给用户程 序的存储空间。动态分配和释放的工作都由动态存储管理系统完成,这是支持 程序运行的基础系统(称为程序运行系统)的一部分。面向对象程序由于在运 行过程中频繁地创建和释放对象,会导致大量的存储分配和存储释放的操作。 传统的页式虚拟存储系统中以固定大小的存储页为管理和保护单位,但其对于 对象来说却无能为力。这是因为面向对象程序在运行时生成的对象大小不一, 且与这些存储页相比,对象要小得多;另外对象的数量众多,而且都是在程序 运行的过程中不断地被创建和删除的。由于每个对象在存储空间中占用一段连 续的存储区域,频繁地创建和删除较小的对象会在动态存储空间产生大量的内 存碎片,进而导致存储利用率下降。为提高软件运行效率,动态存储管理是许 多软件系统的重要组成部分。许多大型的应用系统中采用了专门的动态存储管 理算法, 一方面是为了提高动态存储管理的效率(时间和空间),另一方面是为 了实现无用存储单元的自动回收。
目前主要有两种动态存储管理系统, 一种是基于软件的存储管理,另外一 种是基于硬件的动态存储管理。软件方式易于实现,但是会导致应用程序性能 下降,响应迟缓,导致存储分配和释放所耗时间的不确定性,并在运行时占用 大量的系统资源;而基于硬件的动态存储装置能够提供存储管理的确定性,可 以在常量时间内完成对象创建和对象释放操作。目前不管是软件管理方式还是 硬件管理方式,在回收空闲存储空间时都会导致应用程序长时间的停顿,即应 用程序只有等存储压縮工作完成以后才能继续运行。现有存储系统的这一特点 不仅降低了应用程序的性能,并会导致系统无法在规定的时间内对外部系统作出响应,这一点对于实时性要求较高的系统来说也是不可接受的,基于此我们 提出一种硬件辅助的对象数据存储管理的装置和方法。
发明内容
本实用新型提供一种对象数据存储管理装置,包括接口部件,用于响应 外部请求;存储管理部件,完成对象创建和对象删除;存储压縮部件,用于压 缩并回收无用的存储空间;多端口存储控制器,用于为对象数据访问和存储压 缩提供存储访问的通道;存储体,用于存储对象信息和数据。
所述接口部件接收到的请求分别为创建对象请求、删除对象请求和读写对 象数据请求,其中创建对象请求和删除对象请求被直接发送给存储管理部件处 理,读写对象数据的请求由接口部件处理完成。
所述接口部件按照先来先服务的原则处理外来请求。
所述存储管理部件触发存储压縮部件进行存储压縮操作,存储压縮部件压 缩存储空间完成后通知存储管理部件。
所述存储体构成的存储空间被划分为两部分,分别为对象表和对象数据区。 对象表用于保存已创建对象的存储地址,大小和状态信息;对象数据区用于保 存实际的对象数据。
所述的对象表组织为两个链表,分别为使用链表和空闲链表,使用链表将 所有已经使用的对象表记录按照对象创建的顺序串联起来;空闲链表将所有没 有使用的对象表记录串联起来。其中使用链表尾和空闲链表头由存储管理部件 维护,使用链表头和空闲链表尾由存储压缩部件维护。
所述对象数据区进一步被划分为A半区和B半区两个半区。存储管理部件 在半区内按照一定的方向为新对象分配存储空间,当该半区空间耗尽时,存储 管理器立即切换到另一个半区创建对象,同时存储压縮部件将已经耗尽的半区 内的存活对象移动到该半区的一侧,使得存活对象集中紧密存放,已经被删除 的对象占用的存储空间在移动的过程中自动被回收,消除了存储碎片的存在。
所述对象表记录中的状态信息中至少包括两个标志位半区标志位和对象 删除位。半区标志位用来表示对象驻留在哪个半区(A半区或者B半区),对象 删除位用来表示对应的对象是否已经被删除。
所述存储管理部件接收到接口部件发出的创建对象请求时,首先根据要创建的对象的大小检查当前分配对象的半区是否有足够的空闲空间,如果没有则 触发存储压縮部件对当前半区进行压縮,并切换到另一个半区为对象分配空间, 如果当前的半区有足够的空闲空间,则为该对象分配空间,并从空闲链表头获 得一个空闲对象表记录,写入对象的大小,半区标志位和删除标志位,地址信 息,最后将该记录从空闲链表中删除并插入到使用链表的尾部。处理完成后存 储管理部件将该对象表记录在对象表中的索引作为对象的唯一标识返回给接口 部件,完成对象创建的操作。
所述存储管理部件接收到来自接口部件的释放对象请求时,根据对象的唯 一标识访问对象表并设置对象删除标志位。 ' 所述的创建对象的操作和删除对象的操作可以在常量时间内完成。 所述存储压縮部件接收到存储管理部件发出的压缩半区请求时,首先获取 使用链表头,保存当前的使用链表结束位置,并初始化半区新的空闲空间开始 地址为半区起始地址;接着按照顺序处理使用链表中的每个节点直到到达开始 时保存的使用链表结束位置。对于每一个节点,首先检査其对应的对象是不是 位于被压縮的半区内,然后查看对象是否已经被删除,如果已经删除,则将该
节点的对象表记录从使用链表中删除,并插入到空闲链表的尾部;否则移动该
对象到半区的一侧,使得没有删除的对象紧密排列,以回收已经被删除的对象 占用的空间。当压縮完成时,存储压缩部件通知存储管理部件,并将半区新的 空闲空间开始地址传递给存储管理部件。
所述接口部件在存储压縮部件压縮某个半区的过程中仍然可以接受来自外 部的请求,即压縮存储空间的操作可以与读写对象数据的操作并行进行,存储
管理部件创建对象的操作可以与存储压縮部件压縮半区的操作并行进行;存储
管理部件删除对象的操作与存储压缩部件压縮半区的操作也可以并行进行。
为达到上述目的,本实用新型的实施例采用如下技术方案所述接口部件
向外连接至外部存储总线,向内连接至多端口存储控制器和存储管理部件。接 口部件可以接受对象创建、对象删除和对象数据访问请求,并将对象创建和对 象删除请求转发给存储管理部件完成。所述接口部件通过控制线和数据线连接 至存储管理部件,并通过地址总线和数据总线直接连接到多端口存储控制器, 所述存储管理部件和存储压縮部件使用地址总线和数据总线连接至多端口存储器。本实用新型的有益效果是采用所述的动态存储管理方法,有效地节省了 系统存储空间,提高了对象创建和删除的速度,实现了存储压縮和存储访问的 并行进行,提高了对象创建和删除的可预测性。


图1为本实用新型动态存储管理装置实施例的示意图; 图2为本实用新型动态存储管理方法的存储空间划分示意图; 图3为本实用新型动态存储管理方法的对象表组织示意图; 图4为本实用新型动态存储管理方法的创建对象流程图; 图5为本实用新型动态存储管理方法的存储压縮流程图。
具体实施方式
以下结合附图和具体实施方式
对本实用新型作进一步详细描述。本实用新 型不仅限于以下实施例,凡是利用本实用新型的设计思路,做一些简单变化的 设计都应进入本实用新型的保护范围之内。
在图1中,接口部件根据来自外部请求信号的类型进行不同的处理,所述 请求信号分为对象创建请求、对象释放请求和对象数据读写请求。接口部件将 对象创建请求和对象释放请求转发给存储管理部件进行处理,而对象数据读写 请求由接口部件通过多端口存储控制器读写存储体完成。存储管理部件完成对 象创建任务后返回一个对象唯一标识给接口部件,接口部件将该对象标识返回 给外部请求源。接口部件按照先来先服务的顺序处理来自外部的请求,即只有 当前的一个请求处理完成后才能处理下一个请求。所述多端口存储器控制器可 以是两端口存储器控制器,三端口存储器控制器,存储体个数根据数据通道的 宽度决定。
本实用新型对象数据管理装置的实施例可以利用FPGA(现场可编程门阵列) 实现,也可以在其它的处理器芯片或者其它ASIC芯片(专用集成电路)内实现。
本实用新型动态存储管理装置的实施例可以用在很多存储器件的管理中,所述 例如SR扁、DRAM或FLASH (闪存),也可以用在专门的存储芯片的管理中,还 可以用在FPAG、 ASIC等的内部存储的管理中。
由多个存储体构成的存储空间被划分为两部分,如图2所示,分别是对象表和对象数据区。所述对象表中的记录用来存放对象的大小,状态信息,对象
在对象数据区的地址,及下一个记录指针;所述对象数据区用来存放对象的实 际数据,对象数据区被进一步划分为A半区和B半区。所述对象表记录中的状
态信息中至少包括两个标志位半区标志位和对象删除位。半区标志位用来表
示对象在那个半区(A半区或者B半区),对象删除位用来表示对象是否已经被 删除。A半区从左向右分配对象,并从右向左移动对象;B半区从右向左分配对 象,并从左向右移动对象。所述移动对象的过程就是压縮存储空间,回收无用 存储空间的过程。存储管理部件创建对象的操作可以与存储压縮部件压縮半区 的操作并行进行;接口部件访问对象数据的操作与存储压縮部件压縮半区的操 作也可以并行进行。
如图3所示,为实现对空闲对象表记录的快速査找,对象表记录用两个链 表组织,分别为使用链表和空闲链表。所述使用链表将所有已经使用的对象表 记录按照对象创建的顺序将这些记录串联起来,对象创建的顺序也就是对象在 半区内排列存放的顺序;所述空闲链表将所有没有使用的对象表记录串联起来。
其中使用链表的尾和空闲链表的头由存储管理部件维护,使用链表头和空闲链 表尾由存储压縮部件维护。
图4给出了存储管理部件创建对象的流程图。当存储管理部件接收到接口 部件发出的创建对象请求时,根据要创建的对象的大小检查当前分配对象的半 区是否有足够的空闲空间,如果没有则触发存储压縮部件对当前半区进行压縮, 并切换到另一个半区为对象分配空间,如果当前的半区有足够的空闲空间,则 为该对象分配空间,从空闲链表头获得一个空闲对象表记录,并写入对象的大 小,半区标志位和删除标志位,地址信息,最后将该记录从空闲链表中删除并 插入到使用链表的尾部。处理完成后存储管理部件将该对象表记录在对象表中 的索引作为对象的唯一标识返回给接口部件,完成对象创建的工作。在实际的 运行过程中有可能会出现一种极端情况,比如当A半区耗尽时,存储管理部件 立即切换到B半区创建对象,同时存储压縮部件开始对A半区进行压縮,但是 当B空间也耗尽时,A半区的存储压縮操作还没有完成,这时存储管理部件就需 要等待A半区的存储压縮操作完成后才能继续在A半区创建对象。但是实际测 试的结果表明,这种情况出现的概率非常小,亦即一个半区的存储压縮操作由 于比较简单,总是能在另一个半区耗尽之前完成,这就保证了存储压縮操作和创建对象的操作可以并行进行。
存储管理部件删除对象的步骤比较简单,存储管理部件接收到来自接口部 件的释放对象请求时,根据对象的唯一标识访问对象表并设置对象删除标志位 即可。
图5给出了存储压缩部件压縮半区的流程图。当存储压縮部件接收到存储 管理部件发出的压縮半区请求时,首先需要获取使用链表头,保存当前的使用 链表结束位置,以及初始化半区新的空闲空间开始地址;接着按照顺序处理使
用链表中的每个节点直到到达开始时保存的使用链表结束位置。对于每一个节 点,首先检査其对应的对象是不是位于被压縮的半区内,然后查看对象是否已 经被删除,如果已经删除,则将该节点的对象表记录从使用链表中删除,并插
入到空闲链表的尾部;否则移动该对象到半区的一侧,使得没有删除的对象紧 密排列,以回收已经被删除的对象占用的空间。当压縮完成时,存储压縮部件 通知存储管理部件,并将半区新的空闲空间开始地址传递给存储管理部件。
在存储压縮的过程中,接口部件仍然可以接受来自外部总线的请求,并通 过多端口存储控制器完成对象数据的存取,从而实现了对象数据访问与存储空 间压縮的并行工作。
权利要求1. 一种对象数据存储管理装置,其特征在于该装置包括响应外部请求的接口部件;完成对象创建和对象删除的存储管理部件;压缩并回收无用存储空间的存储压缩部件;为对象数据访问和存储压缩提供存储访问通道的多端口存储控制器;存储对象信息和数据的存储体。
2. 根据权利要求l所述的对象数据存储管理装置,其特征在于所述接口 部件接收到的请求分别为创建对象请求、删除对象请求和读写对象数据请求。
专利摘要本实用新型涉及一种对象数据存储管理装置,特别涉及创建对象、删除对象、对象数据访问和动态存储空间管理的装置。该装置包括接口部件,用于响应外部请求;存储管理部件,完成对象创建和删除;存储压缩部件,压缩存储空间;多端口存储控制器,为对象数据访问和存储压缩部件提供数据通道;存储体,存储对象信息和对象数据。本实用新型提供对对象数据存储的硬件支持,实现了对象数据访问和存储压缩并行运行,达到提高面向对象程序运行速度的目的,主要用于电子设备中数据存储的管理。
文档编号G06F12/02GK201229568SQ200820079178
公开日2009年4月29日 申请日期2008年2月25日 优先权日2008年2月25日
发明者峰 石, 薛立成, 计卫星 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1