一种实现队列共享存储空间的方法及装置的制作方法

文档序号:6614040阅读:169来源:国知局
专利名称:一种实现队列共享存储空间的方法及装置的制作方法
技术领域
本发明涉及队列技术,尤指一种实现队列共享存储空间的方法及装置。
背景技术
队列是一种常见的数据结构,有着先进先出(FIFO)的特点。在设计 系统时,为了节约系统的存储资源,系统中的各队列通常共享存储空间来缓 存队列中排队的数据。也就是,在存储空间由多个存储单元构成时,不为队 列分配固定使用的存储单元,而是在队列需要时,在共享的存储空间内为该 队列分配存储单元,用来緩存入队数据。当存储单元中緩存的数据出队后, 释放该存储单元,该存储单元则可用于后续緩存数据,从而达到节约系统存 储资源的目的。
为了使共享的存储空间能够供系统中各队列使用,通常会很好的设计共 享存储空间中所包含的存储单元的数目。但是在一些突发的情况下,例如软 件异常或恶意攻击,可能会造成一个或少数几个队列占用存储空间中大量的 存储单元。这样,有可能会导致系统中其他队列由于找不到可用的存储单元, 而拒绝数据的入队操作,导致数据丢失,从而影响使用队列的可靠性,同时 也无法保证系统的正常运行。

发明内容
有鉴于此,本发明提供了一种实现队列共享存储空间的方法,应用本发 明所提供的共享存储空间的方法,能够在一定程度上保证队列的可靠性,维 护系统的正常运行。
为达到上述目的,本发明的技术方案是这样实现的
一种实现队列共享存储空间的方法,该方法包括
数据请求入队列时,判断为该队列在共享的存储空间内分配存储所述数 据的存储单元后,所述存储空间是否能够保障共享所述存储空间的其他队列 享有设置的保障数目的存储单元,如果是,为该队列分配所需的存储单元,
所述数据入队列;
数据出队列时,释放为存储所述数据而为队列分配的存储单元。 另外,本发明又提供了一种实现共享队列存储空间的装置,应用本发明 所提供的共享存储空间的装置,能够在一定程度上保证队列的可靠性,维护 系统的正常运行。
为达到上述目的,本发明的技术方案是这样实现的 一种实现队列共享存储空间的装置,包括控制单元和执行单元; 所述控制单元,接收数据入队列的请求,在为该队列在共享的存储空间 内分配存储所述数据的存储单元后,所述存储空间还能够保障共享所述存储 空间的其他队列均享有设置的保障数目的存储单元的情况下,为该队列分配 存储单元,并指示所述执行单元;
所述执行单元接收所述控制单元的指示,将所述数据存入分配的存储单 元执行所述数据入队列的操作;并在数据出队列时,释放为存储所述数据而 为队列分配的存储单元。
本发明所提供的 一种实现队列共享存储空间的技术方案,通过数据请求 入队列时,判断为该队列在共享的存储空间内分配存储所述数据的存储单元 后,所述存储空间是否能够保障共享所述存储空间的其他队列享有设置的保 障数目的存储单元,如果是,为该队列分配所需的存储单元,所述数据入队 列;否则,拒绝所述数据入队列的请求;数据出队列时,释放为存储所述数 据而为队列分配的存储单元。本发明技术方案通过对分配存储单元的操作进 行控制,综合考虑了各队列的需求,使共享同一存储空间的各队列保证有一 定数目的存储单元。可见,由于各队列有了基本存储单元的保障,因此本发 明的技术方案保证了队列的正常工作,提高了队列的可靠性,维护了系统的
正常运行。


图1为本发明实施例中数据入队列的流程图; 图2为本发明实施例中的装置结构图。
具体实施例方式
在本部分的详细描述中,仅通过对实施本发明的发明者所预期的最佳方 式的示例,示出并描述了本发明的较佳实施例。应意识到,可以在不背离本 发明的前提下,就各个显而易见的方面对其进行修改。相应地,附图和说明 书应被视为在本质上是示例性的,而不是限制性的。
共享存储空间的各队列在系统运行过程中,大部分都是处于一种接近空 闲的状态,因此大部分的队列仅需要占用一定数目的存储单元就可以满足该 队列对存储单元的需求。在本发明的技术方案中,可以通过为共享存储空间 的各队列保证一定数目的存储单元,无论存储空间中的存储单元如何分配, 只要能够为各队列保障这一定数目的存储单元,就能够确保各队列的正常工 作,进而保证队列的可靠性。
本发明可以通过下述技术手段为共享存储空间的各队列保证一定数目 的存储单元。具体如下数据请求入队列时,判断为该队列在共享的存储空
间内分配存储所述数据的存储单元后,所述存储空间是否能够保障共享所述 存储空间的其他队列享有设置的保障数目的存储单元,如果是,为该队列分 配所需的存储单元,所述数据入队列。数据出队列时,释放为存储所述数据 而为队列分配的存储单元。这样,既能够保障各队列的存储单元,同时也能 够实现存储空间的共享。
假设存储空间包含20个存储单元,有3条队列共享该存储空间,分别 为队列A、 B和C。队列A的保障数目为6,队列B的保障数目为4,队列 C的保障数目为5。队列A当前已经被分配了 6个存储单元,队列B已经分 配了 9个存储单元,而队列C未分配。假设当前数据A需要进入队列A, 如果为存储数据A而再为队列A分配一个存储单元的话,该存储空间中的未被分配存储单元为20-6-9-1=4,而队列C的基本保障数目是5,则无法到 达队列C保障分配5个存储单元,即为队列A分配的存储单元无法保障共 享所述存储空间的各队列,均享有设置的保障数目的存储单元。此时,为了 实现各队列均获得保障数目的存储单元,则拒绝数据A进入队列A的请求。
在本发明的实施例中,还可以在判断为该队列在共享的存储空间内分配 存储所述数据的存储单元后,所述存储空间是否能够保障共享所述存储空间 的其他队列享有设置的保障数目的存储单元这个操作之前或者之后,进一步 判断为该队列分配所述存储单元后,是否会使该队列占用存储单元的数目超 出该队列设置的保障数目作,用来进一步确定是否需要为当前队列分配所需 的存储单元。如果为该队列分配所述存储单元后,不会使该队列占用存储单 元的数目超出该队列设置的保障数目,则为该队列分配所需的存储单元,所 述数据入队列。其中,所描述的为该队列分配所述存储单元后,是指一种假 设的状态,并不表示分配了所述的存储单元。
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 两个实施例,对本发明估文进一步的详细说明。
首先为共享同一个存储空间的各队列设置保障数目,为各队列设置的保
障数目可以相同,也可以不相同。具体的数目可以根据各队列自身的情况, 例如队列需要存储单元的均值、队列优先级以及其他 一 些因素。
在本实施例中,假设存储空间包含20个存储单元,由3条队列共享该 存储空间,分别为队列A、 B和C。队列A的保障数目为6,队列B的保障 数目为4,队列C的保障数目为5。这样共享该存储空间的各队列的初始总 保障数目为6+4+5=15。另外,还可以维护两个值,其中一个是共享该存 储空间的各队列所需的总保障数目;另外一个是该存储空间中已被分配的存 储单元数目。在初始情况下,各队列所需的总保障数目等于初始总保障数目。
本实施例方法包括数据入队列和数据出队列的流程。参见图1,图l为 本实施例数据入队列的流程,包括
在步骤101中,数据请求入队列。 在步骤102中,判断为该队列在共享的存储空间内分配存储所述数据的 存储单元后,是否会使该队列占用的存储单元的数目超出该队列设置的保障
数目,如果是,则执行步骤103;否则,执行步骤104。
例如,假设当前数据A需要进入队列A,而队列A当前已经被分配了 6 个存储单元,如果为存储数据A而再为队列A分配一个存储单元的话,则 超出了队列A的保障数目。
在步骤103中,判断为该队列分配所述存储单元后,所述存储空间内未 被分配的存储单元是否还能向共享存储空间的其他各队列提供保障数目的 存储单元,如果是,则执行步骤104;否则,执行步骤105。
其中,在步骤102和103中记载的"为该队列分配所述存储单元后"是 一种假设的状态,并不是执行了分配存储单元的操作。
这里,在进一步获得共享所述存储空间各队列当前所需的总保障数目。 那么具体的判断方法可以是判断为该队列分配所需存储单元后,所述存储 空间内未被分配的存储单元的数目是否大于或等于获得的总保障数目,如果 是,则为该队列分配所需的存储单元;否则,拒绝所述数据入队列的请求。
其中,各队列当前所需的总保障数目可以用初始总保障数目,减去各队 列已经占用的保障数目内的存储单元数目。例如,队列A当前已经分配了 6 个存储单元,队列B已经分配了 9个存储单元,而队列C未分配,则各队 列当前所需的总保障数目为15-6-4=5,即队列C所需的保障数目。又如,队 列A当前已经分配了 4个存储单元,队列B已经分配了 9个存储单元,而 队列C分配了 1个存储单元,则各队列当前所需的总保障数目为15-4-4-1=6, 即还需要为队列A保留2个存储单元,为队列C保障4个存储单元。
在步骤104中,为该队列分配所需的存储单元,所述数据入队列,结束 当前处理流程。
在步骤105中,拒绝所述数据入队列的请求。
另外,数据出队列时,释放为存储所述数据而为队列分配的存储单元。 另外,在本实施例的方法中,为了获得共享所述存储空间各队列当前所
需的总保障数目,还可以采用如下实现方式预先得到所述各队列设置的保 障数目的总和,并将其作为初始总保障数目;然后,每当队列从自身保障数 目内分配得到存储单元时,则依次从所述初始总保障数目中减去当前分配的 存储单元数目,得到分配后当前所需的总保障数目并记录;另外,每当队列 释放保障数目内的存储单元时,则用释放前所需的总保障数目加上释放的存 储单元数目,得到释放后当前所需的总保障数目并记录。这样,具体获得共 享所述存储空间各队列当前所需的总保障数目可以是读取当前记录的总保 障数目。
上述所记载的从自身保障数目内分配得到的存储单元表示的是假设队 列A的保障数目为8,队列A被分配的前8个存储单元均称为从自身保障数 目内分配得到存储单元。如果在队列A已经被分配了 8个存储单元之后, 又被分配了一个存储单元,此时该存储单元则不为在保障数目内分配得到的 存储单元。
这里,通过以下示例对上述获得共享所述存储空间各队列当前所需的总 保障数目的技术方案进行详细说明。同样,假设存储空间包含20个存储单 元,由3条队列共享该存储空间,分别为队列A、 B和C;队列A的保障数 目为6,队列B的保障数目为4,队列C的保障数目为5,则初始总保障数 目为15。例如,首先有数据A需要进入队列A,为队列A分配了一个存储 单元用于存储数据A,此时各队列当前所需的总保障数目为15-1 = 14;接着 数据B需要进入队列B,为队列B分配了两个存储单元用于存储数据B,此 时各队列当前所需的总保障数目为14-2=12;然后,数据A出队列,则此时 各队列当前所需的总保障数目为12+1=13。
假设,队列A当前已经分配了 5个存储单元,队列B已经分配了 9个 存储单元,而队列C未分配。由于只有在保障数目内分配得到的存储单元加 入当前所需总保障数目的计算,因此当前所需的总保障数目为6。此时,如 果再为队列A分配一个存储单元的话,由于并不在保障数目内分配得到的 存储单元,因此当前所需的总保障数目还是为6;如果此时队列B释放一个
存储单元,由于释放的存储单元不在保障数目内,因此同样不用参与当前所 需总保障数目的计算。
另外,参见图2,图2为本实施例装置的结构图。本实施例实现队列共
享存储空间的装置,包括由多个存储单元构成存储空间,还包括控制单元和
执行单元。
其中,控制单元接收数据入队列的请求,在为该队列在共享的存储空间 内分配存储所述数据的存储单元后,所述存储空间还能够保障共享所述存储 空间的其他队列均享有设置的保障数目的存储单元的情况下,为该队列分配 存储单元,并指示所述执行单元。执行单元接收所述控制单元的指示,将所
述数据存入分配的存储单元执行所述数据入队列的操作;并在数据出队列 时,释放为存储所述数据而为队列分配的存储单元。
所述控制单元如果在为该队列分配所述存储单元后,该队列占用的存储 单元的数目未超出该队列设置的保障数目时,为该队列分配所需的存储单 元。
另外,该装置进一步包括获取单元。所述获取单元获得共享所述存储空 间各队列当前所需的总保障数目。相应的,所述控制单元从所述获取单元中 获得所述各队列当前所需的总保障数目;如果为该队列分配所述存储单元 后,该队列占用的存储单元的数目超出该队列设置的保障数目,并且所述存 储空间内未分配的存储单元数目大于或等于获得的总保障数目的情况下,为 该队列分配所需的存储单元。
该装置进一步包括记录单元。所述记录单元用于得到所述各队列设置的 保障数目的总和,将其作为初始总保障数目;每当队列从自身保障数目内分
配得到存储单元时,依次从所述初始总保障数目中减去当前分配的存储单元
数目,得到分配后当前所需的总保障数目并记录;每当队列释放保障数目内
的存储单元时,用释放前所需的总保障数目加上释放的存储单元数目,得到
释放后当前所需的总保障数目并记录。相应的,所述获取单元读取所述记录
单元记录的总保障数目,得到所述各队列当前所需的总保障数目。
本发明所提供的 一种实现队列共享存储空间的技术方案,在数据请求入 队列时,为该队列在共享的存储空间内分配存储所述数据的存储单元后,存 储空间仍然能够保障共享所述存储空间的其他队列享有设置的保障数目的 存储单元的情况下,才为队列分配所需的存储单元,执行所述数据入队列的 操作,进而为共享存储空间的各队列保障一定数目的存储单元。本发明技术 方案通过对分配存储单元的操作进行控制,综合考虑了各队列的需求,为共 享同一存储空间的各队列保证一定数目的存储单元。可见,本发明技术方案 能够确保各队列的正常工作,保证队列的可靠性,维护了系统的正常运行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明的保护范围之内。
权利要求
1、一种实现队列共享存储空间的方法,其特征在于,该方法包括数据请求入队列时,判断为该队列在共享的存储空间内分配存储所述数据的存储单元后,所述存储空间是否能够保障共享所述存储空间的其他队列享有设置的保障数目的存储单元,如果是,为该队列分配所需的存储单元,所述数据入队列;数据出队列时,释放为存储所述数据而为队列分配的存储单元。
2、 根据权利要求1所述的方法,其特征在于,该方法进一步包括 判断为该队列分配所述存储单元后,是否会使该队列占用存储单元的数目超出该队列设置的保障数目,如果不是,为该队列分配所需的存储单元,所述 数据入队列。
3、 根据权利要求1或2所述的方法,其特征在于,该方法进一步包括获得共享所述存储空间各队列当前所需存储单元的总 保障数目;所述判断为该队列在共享的存储空间内分配存储所述数据的存储单元后, 所述存储空间是否能够保障共享所述存储空间的其他队列享有设置的保障数目 的存储单元包括判断为该队列分配存储单元后,所述存储空间内未被分配的 存储单元的数目是否大于或等于所述总保障数目,如果是,则为该队列分配所 需的存储单元;否则,拒绝所述数据入队列的请求。
4、 根据权利要求3所述的方法,其特征在于,该方法进一步包括得到所述各队列设置的存储单元保障数目的总和,作 为初始总保障数目;每当队列从自身保障数目内分配得到存储单元时,依次从 所述初始总保障数目中减去当前分配的存储单元数目,得到分配后当前所需的 总保障数目并记录;每当队列释放保障数目内的存储单元时,则用释放前所需的总保障数目加上释放的存储单元数目,得到释放后当前所需的总保障数目并 记录;所述获得共享所述存储空间各队列当前所需的总保障数目包括读取当前记录的总保障数目。
5、 一种实现队列共享存储空间的装置,其特征在于,包括控制单元和执行单元;所述控制单元,接收数据入队列的请求,在为该队列在共享的存储空间内 分配存储所述数据的存储单元后,所述存储空间还能够保障共享所述存储空间 的其他队列均享有设置的保障数目的存储单元的情况下,为该队列分配存储单元,并指示所述扭J于单元;所述执行单元接收所述控制单元的指示,将所述数据存入分配的存储单元 执行所述数据入队列的操作;并在数据出队列时,释放为存储所述数据而为队 列分配的存储单元。
6、 根据权利要求5所述的装置,其特征在于,所述控制单元如果在为该队列分配所述存储单元后,该队列占用的存储单 元的数目未超出该队列设置的保障数目时,为该队列分配所需的存储单元。
7、 根据权利要求5或6所述的装置,其特征在于,该装置进一步包括获取 单元;所述获取单元获得共享所述存储空间各队列当前所需的总保障数目; 所述控制单元从所述获取单元中获得所述各队列当前所需的总保障数目; 如果为该队列分配所述存储单元后,该队列占用的存储单元的数目超出该队列 设置的保障数目,并且在所述存储空间内未分配的存储单元数目大于或等于获 得的总保障数目的情况下,为该队列分配所需的存储单元。
8、 根据权利要求7所述的装置,其特征在于,该装置进一步包括记录单元; 所述记录单元用于得到所述各队列设置的保障数目的总和,将其作为初始总保障数目;每当队列从自身保障数目内分配得到存储单元时,依次从所述初始总保障数目中减去当前分配的存储单元数目,得到分配后当前所需的总保障 数目并记录;每当队列释放保障数目内的存储单元时,用释放前所需的总保障 数目加上释放的存储单元数目,得到释放后当前所需的总保障数目并记录;所述获取单元读取所述记录单元记录的总保障数目,得到所述各队列当前 所需的总保障数目。
全文摘要
本发明公开了一种实现队列共享存储空间的技术方案,在数据请求入队列时,在为该队列在共享的存储空间内分配存储所述数据的存储单元后,存储空间仍然能够保障共享所述存储空间的其他队列享有设置的保障数目的存储单元的情况下,为队列分配所需的存储单元,执行数据入队列的操作,进而为共享存储空间的各队列保障一定数目的存储单元。由于各队列有了基本存储单元的保障,因此本发明的技术方案保证了队列的正常工作,提高了队列的可靠性,维护了系统的正常运行。
文档编号G06F9/46GK101183319SQ200710179919
公开日2008年5月21日 申请日期2007年12月19日 优先权日2007年12月19日
发明者巍 魏 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1