缓冲区管理方法

文档序号:7965102阅读:314来源:国知局
专利名称:缓冲区管理方法
技术领域
本发明涉及一种数据缓冲区的管理方法。
背景技术
在数据传输过程中,由于数据传输前预处理的需要,以及物理层和物理层以上应用层的数据传输能力的差异等原因,在数据传输设备中或者在数据传输方法中使用缓冲区用于暂存数据几乎成为必然。
通常,在数据传输系统的存储资源充足时,往往仅考虑设置较大的缓冲区用于暂存数据,在对缓冲区进行管理时,也仅仅是在缓冲区满时取出数据处理,然后刷新缓冲区。这样简单的缓冲区的管理方式难以保证对缓冲区的有效利用。例如,仅在缓冲区满时处理数据,可能会由于数据处理装置忙或者相关器件故障导致不能及时处理数据,造成缓冲区由于数据溢出而丢失;当缓冲区容量过大而数据量较少时,还会造成缓存单元的利用效率下降或数据处理的迟缓。可见,现有的缓冲区管理方法难以有效利用缓冲区为数据处理服务发明方案本发明要解决的技术问题在于,提供一种能够有效利用数据缓冲区的缓冲区管理方法。
本发明提供的缓冲区管理方法,包括设置多个缓冲区以及设置用于指示和标识所述缓冲区的数据表;当一个缓冲区满足第一处理条件时,取出其中的数据处理,并修改所述数据表以及刷新所述缓冲区。
其中,将所述多个缓冲区设置为环形缓冲区队列。
所述处理条件为时间条件和/或状态条件和/或特征条件。
所述方法还包括,判断当前缓冲区是否满足第二处理条件,如果满足,更换所述数据缓冲区。
当全部缓冲区的状态为禁止使用时,增加新的缓冲区入缓冲区队列。
当一个缓冲区的未使用时间超过指定的阈值,删除所述缓冲区。
当空闲缓冲区的个数小于预设的阈值时,增加新的缓冲区入缓冲区队列。
本发明提供的缓冲区管理装置,包括缓冲区处理单元,用于设置缓冲区以及设置用于指示和标识所述缓冲区的数据表;缓冲区管理单元,用于判断所述缓冲区是否满足处理条件,当一个缓冲区满足处理条件时,取出其中的数据发给系统处理,并修改所述数据表以及刷新所述缓冲区。
所述装置还包括,用于在一定条件下增加新的缓冲区入缓冲区队列第一更新单元。
所述装置还包括,当一个缓冲区的未使用时间超过指定的阈值时删除所述缓冲区的第二更新单元。
由于本发明采用多缓冲区以及设置用于指示和标识所述缓冲区的数据表来管理所述数据缓冲区的方案,可以将多个缓冲区组织起来协调使用,例如组织成为队列使用,可以避免缓冲区缓存过大或过多的弊端,也可以方便缓冲区的使用;而且,本发明缓冲区的数据处理以处理条件为启动处理的依据,只有当一个缓冲区满足处理条件时,取出其中的数据处理,这样就能够同时兼顾数据的完整性和处理效率,即避免数据因为溢出而丢失,由能够满足处理效率的要求。
另外,多种条件的组合使用,以及所述缓冲区的动态增加和减少,还可以导致系统存储单元利用率的提高。


图1是根据本发明一个具体实施例的缓冲区管理方法流程图;图2(1)是一个用于对缓冲区进行动态和静态管理的数据表实施例结构图;图2(2)是一个正在运行的环形缓冲区实施例状态图;图3是根据本发明另一个具体实施例的流程图;图4是图3所示实施例采用的更换缓冲区的实施例流程图;图5是根据本发明一个具体实施例的缓冲区管理装置框图。
具体实施例方式
图1是根据本发明一个具体实施例的流程图。按照图1,首先应当设置缓冲区。由于缓冲区的最本质的任务是暂存等待处理的数据,因此,其设置的关键在于兼顾使用的灵活性、效率以及数据处理的需求,因此缓冲区的数量和每个缓冲区的容量应当根据系统的数据处理需求设置,例如,当系统的突发数据量较少时,每个缓冲区的容量可以小一些,数量也可以少一些;而在数据的种类或等级较多时,缓冲区的数量可以多一些,此时缓冲区的容量要根据突发数据量或数据的平均暂存时间设置,等等。因此,本实施例设置两个以上的缓冲区。
其次,为了有效使用缓冲区,使缓冲区之间具有独立和组合双重性质,需要要对所述多个缓冲区进行有效的管理。本实施例将所述缓冲区组织成一个环形队列(在本发明的另一个实施例中,将所述缓冲区组织成一个先进先出队列),因此在本步骤还设置用于指示和标识所述缓冲区的数据表,用于对所述缓冲区进行管理。在所述数据表中至少设置用于标识缓冲区的名称字段,用于作为指向该缓冲区的地址指针字段,以及指向所述缓冲区当前单元的、用于管理所述缓冲区的存储单元字段。在本发明的另外的实施例中,数据表设置为两个,分别用于缓冲区的静态和动态管理。实际上,将所述缓冲区组织成一个队列进行管理也是通过对所述数据表的操作实现的。
当所述缓冲区正常使用时,按照预先设定的使用条件或数据处理的条件对缓冲区进行使用和管理。所述缓冲区的使用和管理时分不开的,因此要在步骤12判断所述缓冲区是否满足数据处理的条件,如果满足,就要在步骤13对所述缓冲区进行数据处理,以及利用所述数据表对所述缓冲区进行管理,否则在步骤14继续其它的数据处理。
图1所示实施例所述的处理条件可以为时间条件、状态条件或特征条件中的一个或其任意的组合。所述时间条件指当缓冲区开始正常使用时,如果持续使用的时间超过指定的阈值,既视为时间条件成立。时间阈值的设定是为防止外部数据不能持续输入而引发的无休止等待,或者,设置时间阈值是为了避免已经输入缓冲区的数据的处理延时,因此,缓冲区中的数据处理延时是否超过设定的时间阈值就是一个时间条件。所述状态条件指缓冲区的数据或自身是否处于某种状态,例如,缓冲区存储的数据是否已满。所述特征条件指缓冲区中的数据是否具有特定的特征,例如是否输入了特殊的具有某种标记的数据等。在图1所述的实施例中,所述处理条件为时间条件和状态条件共同使用,即当所述缓冲区的数据输入超过预先设置的阈值且缓冲区不满时或者缓冲区已满视为条件成立。
所述步骤13中,利用所述数据表对所述缓冲区进行管理实际中可以有很多的方式,在本实施例中,修改所述数据表以及刷新所述缓冲区就是其中的一种方式。其中,修改所述数据表与所述条件的设置有关系,如果缓冲区满为条件,则在缓冲区已满而其中的数据尚未处理完毕时,将数据表的状态字段设置为“禁止使用”状态;如果对缓冲区中的数据处理已经完成,则可以将数据表的存储单元字段的指针值设置为指向缓冲区首地址,即完成当前缓冲区的刷新操作,然后再将状态字段设置为“允许使用”状态,此时,当前缓冲区就处于空闲状态。
图2(1)是一个用于对缓冲区进行动态和静态管理的数据表实施例结构图;图2(2)是一个正在运行的环形缓冲区实施例状态图;图2中,缓冲区21、22已经处于满状态,当前缓冲区指向的是缓冲区23,缓冲区24到27的状态为空闲,因此,当前缓冲区为23。图2中,每个缓冲区的长度为A00H(十六进制)。从图2(1)的状态表中看出,空闲缓冲区的首地址指针和当前地址指针的指向是重合的,而满缓冲区的首地址指针和当前地址指针则分别指向缓冲区的首部和尾部的存储单元,而当前缓冲区的首地址指针和当前地址指针则分别指向缓冲区的首部和中部的存储单元。
图1中的步骤12、13、14是对每个缓冲区操作的。例如,对于当前缓冲区,要在步骤12判断所述缓冲区是否满足数据已满或者该缓冲区的数据输入的时间是否已经超过指定的阈值,如果其中的一个条件成立,就要执行步骤13对所述缓冲区进行数据处理,即取出其中的数据,在数据全部取出后,将所述数据表中的当前地址指针、状态字段分别修改为C000和“空闲”,而“当前缓冲区”字段的内容不变,如果步骤12判断条件不成立,就在步骤14继续其它的数据处理,即继续输入数据,如果当前缓冲区数据已满,但经步骤12判断所述条件仍然不满足,就要将当前缓冲区的状态字段设置为“满”,“当前缓冲区”字段设置为“否”,而队列中的下一个缓冲区的“当前缓冲区”字段则设置为“是”,以便用新的缓冲区继续接收数据,从而完成当前缓冲区的更换,关于当前缓冲区的更换的方案继续参考下文。
图1所示实施例最好用于一个多任务的操作环境中,以便队列中的缓冲区并行工作,每一个缓冲区最好对应一个图1所示实施例中步骤12、13、14表述的进程。当然,采用一个独立的进程也能够很好地应用本发明实施例。
对于非当前缓冲区,例如缓冲区22,当在步骤12判断所述缓冲区是否满足数据已满或者该缓冲区的数据输入的时间是否已经超过指定的阈值的条件成立,如果成立,就要执行步骤13对所述缓冲区进行数据处理,即取出其中的数据,在数据全部取出后,将所述数据表中的当前地址指针、状态字段分别修改为B000和“空闲”,而“当前缓冲区”字段的内容不变,如果步骤12判断条件不成立,就在步骤14继续其它的数据处理,此时的数据处理不是继续输入数据,而是返回步骤12继续监控当前缓冲区是否满足数据处理条件,直到数据处理完毕。
可见,在本发明的实施例中,哪个缓冲区可以为新的当前缓冲区受当前缓冲区的状态和其在队列中的位置有关系。如果一个被指定的新的当前缓冲区状态不为空,说明其中的数据尚未处理完成,此时顺序指定下一个缓冲区为当前缓冲区。当前缓冲区的控制最好由一个单独的进程控制。
需要说明的是,由于实际数据处理的限制,所述空闲缓冲区或数据已满的缓冲区的位置可能不是连续的。
图3是根据本发明另一个具体实施例的流程图,该实施例讨论了更换当前缓冲区的情况。图3所述实施例与图1所述实施例的区别在于增加了两个步骤,步骤15、16。按照该实施例,当在步骤12判断所述缓冲区不满足数据已满或者该缓冲区的数据输入的时间是否已经超过指定的阈值的条件,就要在步骤15判断当前缓冲区是否满足第二个数据处理条件,该第二个数据处理条件可以为时间条件、状态条件或特征条件中的一个或其任意的组合,本实施例采用的是状态条件,本实施例中,步骤15判断当前缓冲区是否已满,如果数据已满,说明已经没有存储空间继续接收需要暂存的数据,因此要在步骤16更换缓冲区,即选择一个新的缓冲区作为当前的数据缓冲区。
在本发明的另一个实施例中,步骤15、16放在步骤12的前面,该实施例的实际的效果与图3所述实施例基本相同,没有本质区别。
图4是图3所示实施例采用的更换缓冲区的实施例流程图。按照图4,首先在步骤40选择下一个缓冲区为当前缓冲区,然后在步骤41判断当前缓冲区是否为空,如果为空,就可以在步骤44进行后续的数据操作,例如,将待处理的数据存入当前缓冲区。如果新选择的当前缓冲区不为空,还要在步骤42判断是否全部的缓冲区都判断完毕,如果还有剩余的缓冲区没有判断,就在步骤45继续选择下一个缓冲区作为当前缓冲区,否则,说明缓冲区队列中已经没有缓冲区可供使用,此时可以在步骤43在缓冲区队列中增加一个或多个缓冲区。
采用图4所示流程更换缓冲区,如果全部缓冲区的状态为禁止使用时,还可以在步骤43增加新的缓冲区入缓冲区队列。在该实施例中,增加的缓冲区可以插入到当前缓冲区的后面或前面或者一个指定的其它位置。以图2(2)为例,假设当前缓冲区为缓冲区22,增加的缓冲区可以插在缓冲区22与缓冲区23之间,也可以插在缓冲区22与缓冲区21之间。实际上,缓冲区的增加可以以“个”为单位逐个增加,也可以以“组”为单位每次增加多个缓冲区,在本发明的另一个实施例中就描述了这种情形。
在本发明的另一个实施例中,采用下述方案增加缓冲区首先进行判断,当空闲缓冲区的数量小于预设的阈值时,例如所述阈值为3,增加新的缓冲区入缓冲区队列。这样可以保证有足够的缓冲区暂存等待处理的数据,避免缓冲区满时数据处理的延时。在该实施例中,缓冲区的增加同样也可以以“个”或“组”为单位。
值得说明的是,本发明的判断操作可以通过对所述数据表中具体字段的判断实现,例如通过状态字段判断缓冲区是否空闲、已满等。
在本发明所述实施例中,为了避免缓冲区资源的浪费,当一个缓冲区的未使用时间超过指定的阈值,例如所述阈值为100秒,删除所述缓冲区。具体采用下述方案实现上述功能。设置一个时间阈值(或缓冲区生存周期),并为每个缓冲区设置一个计时器(或计数器),如果所述缓冲区的计时器的时间值大于或等于设置的阈值时,就可以删除相应的缓冲区,同时刷新或更新所述数据表。所述计时器可以用存储单元或寄存器实现。因此,计时器和所述缓冲区可以一并设置和删除。
本发明提供的缓冲区管理装置参考图5,包括数据表51、缓冲区队列52,以及用于设置缓冲区以及设置用于指示和标识所述缓冲区的数据表的缓冲区处理单元53和缓冲区管理单元54,所述缓冲区管理单元54,用于判断所述缓冲区是否满足处理条件,当一个缓冲区满足处理条件时,取出其中的数据发给系统处理,并修改所述数据表以及刷新所述缓冲区。
本实施例设置两个以上的缓冲区,并将所述缓冲区组织成一个环形队列(在本发明的另一个实施例中,将所述缓冲区组织成一个先进先出队列),设置的用于指示和标识所述缓冲区的数据表,用于对所述缓冲区进行管理。在所述数据表中至少设置用于标识缓冲区的名称字段,用于指向该缓冲区的地址指针字段,以及指向所述缓冲区当前单元的、用于管理所述缓冲区的存储单元字段。
当所述缓冲区正常使用时,按照预先设定的使用条件或数据处理的条件对缓冲区进行使用和管理。
所述处理条件为时间条件和/或状态条件和/或特征条件的任意组合。
在另外的实施例中,缓冲区处理单元53还用于判断把当前缓冲区是否满足一个预先设定的处理条件,如果满足,更换所述数据缓冲区,例如,在缓冲区已满时更换所述数据缓冲区。
为了改进图5所示的装置的性能,该装置还包括第一更新单元55和第二更新单元56,所述第一更新单元55用于在一定条件下,例如当全部缓冲区的状态为禁止使用时或当空闲缓冲区的个数小于预设的阈值时,增加新的缓冲区入缓冲区队列。而第二更新单元56则用于当一个缓冲区的未使用时间超过指定的阈值,删除所述缓冲区。
鉴于图5所述装置的各个功能单元的实现在本文的具体实施方式
部分有详细的描述,在此不再赘述。
权利要求
1.一种缓冲区管理方法,其特征在于包括设置多个缓冲区以及设置用于指示和标识所述缓冲区的数据表;当一个缓冲区满足第一处理条件时,取出其中的数据处理,并修改所述数据表以及刷新所述缓冲区。
2.如权利要求1所述的缓冲区管理方法,其特征在于,将所述多个缓冲区设置为环形缓冲区队列。
3.如权利要求1所述的缓冲区管理方法,其特征在于,所述处理条件为时间条件和/或状态条件和/或特征条件。
4.如权利要求1、2、或3所述的缓冲区管理方法,其特征在于还包括,判断当前缓冲区是否满足第二处理条件,如果满足,更换所述数据缓冲区。
5.如权利要求4所述的缓冲区管理方法,其特征在于,当全部缓冲区的状态为禁止使用时,增加新的缓冲区入缓冲区队列。
6.如权利要求5所述的缓冲区管理方法,其特征在于,当一个缓冲区的未使用时间超过指定的阈值时,删除所述缓冲区。
7.如权利要求4所述的缓冲区管理方法,其特征在于,当空闲缓冲区的个数小于预设的阈值时,增加新的缓冲区入缓冲区队列。
8.一种缓冲区管理装置,其特征在于包括缓冲区处理单元,用于设置缓冲区以及设置用于指示和标识所述缓冲区的数据表;缓冲区管理单元,用于判断所述缓冲区是否满足处理条件,当一个缓冲区满足处理条件时,取出其中的数据发给系统处理,并修改所述数据表以及刷新所述缓冲区
9.如权利要求8所述的缓冲区管理方法,其特征在于还包括,用于在一定条件下增加新的缓冲区入缓冲区队列第一更新单元。
10.如权利要求8或9所述的缓冲区管理方法,其特征在于还包括,当一个缓冲区的未使用时间超过指定的阈值时删除所述缓冲区的第二更新单元。
全文摘要
本发明公开一种缓冲区管理方法,包括设置多个缓冲区以及设置用于指示和标识所述缓冲区的数据表;当一个缓冲区满足第一处理条件时,取出其中的数据处理,并修改所述数据表以及刷新所述缓冲区。本发明可以将多个缓冲区组织起来协调使用,可以避免缓冲区缓存过大或过多的弊端,也可以方便缓冲区的使用;而且,本发明能够同时兼顾数据的完整性和处理效率,即避免数据因为溢出而丢失,也能够满足处理效率的要求。
文档编号H04L12/56GK1901548SQ20061010363
公开日2007年1月24日 申请日期2006年7月26日 优先权日2006年7月26日
发明者白杰, 李薇, 鲁征宇 申请人:白杰, 李薇, 鲁征宇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1