发明内容
有鉴于此,本发明提供了一种实现队列共享存储空间的方法,应用本发明所提供的共享存储空间的方法,能够在一定程度上保证队列的可靠性,维护系统的正常运行。
为达到上述目的,本发明的技术方案是这样实现的:
一种实现队列共享存储空间的方法,该方法包括:
数据请求入队列时,判断为该队列在共享的存储空间内分配存储所述数据的存储单元后,所述存储空间是否能够保障共享所述存储空间的其他队列享有设置的保障数目的存储单元,如果是,为该队列分配所需的存储单元,所述数据入队列;
数据出队列时,释放为存储所述数据而为队列分配的存储单元。
另外,本发明又提供了一种实现共享队列存储空间的装置,应用本发明所提供的共享存储空间的装置,能够在一定程度上保证队列的可靠性,维护系统的正常运行。
为达到上述目的,本发明的技术方案是这样实现的:
一种实现队列共享存储空间的装置,包括控制单元和执行单元;
所述控制单元,接收数据入队列的请求,在为该队列在共享的存储空间内分配存储所述数据的存储单元后,所述存储空间还能够保障共享所述存储空间的其他队列均享有设置的保障数目的存储单元的情况下,为该队列分配存储单元,并指示所述执行单元;
所述执行单元接收所述控制单元的指示,将所述数据存入分配的存储单元执行所述数据入队列的操作;并在数据出队列时,释放为存储所述数据而为队列分配的存储单元。
本发明所提供的一种实现队列共享存储空间的技术方案,通过数据请求入队列时,判断为该队列在共享的存储空间内分配存储所述数据的存储单元后,所述存储空间是否能够保障共享所述存储空间的其他队列享有设置的保障数目的存储单元,如果是,为该队列分配所需的存储单元,所述数据入队列;否则,拒绝所述数据入队列的请求;数据出队列时,释放为存储所述数据而为队列分配的存储单元。本发明技术方案通过对分配存储单元的操作进行控制,综合考虑了各队列的需求,使共享同一存储空间的各队列保证有一定数目的存储单元。可见,由于各队列有了基本存储单元的保障,因此本发明的技术方案保证了队列的正常工作,提高了队列的可靠性,维护了系统的正常运行。
具体实施方式
在本部分的详细描述中,仅通过对实施本发明的发明者所预期的最佳方式的示例,示出并描述了本发明的较佳实施例。应意识到,可以在不背离本发明的前提下,就各个显而易见的方面对其进行修改。相应地,附图和说明书应被视为在本质上是示例性的,而不是限制性的。
共享存储空间的各队列在系统运行过程中,大部分都是处于一种接近空闲的状态,因此大部分的队列仅需要占用一定数目的存储单元就可以满足该队列对存储单元的需求。在本发明的技术方案中,可以通过为共享存储空间的各队列保证一定数目的存储单元,无论存储空间中的存储单元如何分配,只要能够为各队列保障这一定数目的存储单元,就能够确保各队列的正常工作,进而保证队列的可靠性。
本发明可以通过下述技术手段为共享存储空间的各队列保证一定数目的存储单元。具体如下:数据请求入队列时,判断为该队列在共享的存储空间内分配存储所述数据的存储单元后,所述存储空间是否能够保障共享所述存储空间的其他队列享有设置的保障数目的存储单元,如果是,为该队列分配所需的存储单元,所述数据入队列。数据出队列时,释放为存储所述数据而为队列分配的存储单元。这样,既能够保障各队列的存储单元,同时也能够实现存储空间的共享。
假设存储空间包含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,图1为本实施例数据入队列的流程,包括:
在步骤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为本实施例装置的结构图。本实施例实现队列共享存储空间的装置,包括由多个存储单元构成存储空间,还包括控制单元和执行单元。
其中,控制单元接收数据入队列的请求,在为该队列在共享的存储空间内分配存储所述数据的存储单元后,所述存储空间还能够保障共享所述存储空间的其他队列均享有设置的保障数目的存储单元的情况下,为该队列分配存储单元,并指示所述执行单元。执行单元接收所述控制单元的指示,将所述数据存入分配的存储单元执行所述数据入队列的操作;并在数据出队列时,释放为存储所述数据而为队列分配的存储单元。
所述控制单元如果在为该队列分配所述存储单元后,该队列占用的存储单元的数目未超出该队列设置的保障数目时,为该队列分配所需的存储单元。
另外,该装置进一步包括获取单元。所述获取单元获得共享所述存储空间各队列当前所需的总保障数目。相应的,所述控制单元从所述获取单元中获得所述各队列当前所需的总保障数目;如果为该队列分配所述存储单元后,该队列占用的存储单元的数目超出该队列设置的保障数目,并且所述存储空间内未分配的存储单元数目大于或等于获得的总保障数目的情况下,为该队列分配所需的存储单元。
该装置进一步包括记录单元。所述记录单元用于得到所述各队列设置的保障数目的总和,将其作为初始总保障数目;每当队列从自身保障数目内分配得到存储单元时,依次从所述初始总保障数目中减去当前分配的存储单元数目,得到分配后当前所需的总保障数目并记录;每当队列释放保障数目内的存储单元时,用释放前所需的总保障数目加上释放的存储单元数目,得到释放后当前所需的总保障数目并记录。相应的,所述获取单元读取所述记录单元记录的总保障数目,得到所述各队列当前所需的总保障数目。
本发明所提供的一种实现队列共享存储空间的技术方案,在数据请求入队列时,为该队列在共享的存储空间内分配存储所述数据的存储单元后,存储空间仍然能够保障共享所述存储空间的其他队列享有设置的保障数目的存储单元的情况下,才为队列分配所需的存储单元,执行所述数据入队列的操作,进而为共享存储空间的各队列保障一定数目的存储单元。本发明技术方案通过对分配存储单元的操作进行控制,综合考虑了各队列的需求,为共享同一存储空间的各队列保证一定数目的存储单元。可见,本发明技术方案能够确保各队列的正常工作,保证队列的可靠性,维护了系统的正常运行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。