使用、管理多队列数据的共用缓存空间的方法和系统技术方案

技术编号:8765192 阅读:240 留言:0更新日期:2013-06-07 22:14
一种多个队列共用缓存空间的使用方法,具体包括:将存储空间分为若干数据存储子空间;每个数据存储子空间有指针记录有效数据结束位置、存入数据时刻、数据或空闲队列中的前后子空间地址、时间队列中的前后子空间地址;每个数据存储子空间属于不同的逻辑队列,逻辑队列指针记录各个队列的头尾指针;初始化缓存空间中的各个子空间及指针信息;写入数据、读出数据需要更新对应的子空间及指针信息。本发明专利技术适用于一般的多队列数据的存储和管理,并极大提高了存储空间的利用率。

【技术实现步骤摘要】
使用、管理多队列数据的共用缓存空间的方法和系统
本专利技术涉及通信
,尤其涉及多队列数据的存储规则、管理与快速查询多队列的方法、管理多队列数据存储的系统。
技术介绍
在现代通信网络中,数据的存储是网络中的重要组成部分。数据存储是数据流在加工过程中产生的临时文件或加工过程中需要查找的信息。数据以某种格式记录在计算机内部或外部存储介质上。尤其在通信节点上,数据在处理过程中需要存储,如交换设备等。其中,对于多个队列的存储,是通信系统中数据缓存的重要类型。虽然数据的存储,已经有多种实现方式,但是现有的技术仍然存在以下问题:传统的多队列数据存储,通常采用分区存储的处理方式,由于数据的随机性,每个队列的数据多少可能变化很大,每个队列使用单独的分区存储空间,往往使得数据较少的队列空间浪费,无法充分利用全部的存储空间。本专利技术针对以上几点,采取了分块式、带有块指针并且每块空间存在于不同的逻辑队列中的方式,解决了多队列共用存储空间,提升了功能性和空间利用率。在具有交换功能的设备中,为防止阻塞,交换设备有时需要在输入、输出端都带有缓存功能,但是这也使得完成交换,需要从输入队列转入输出队列,增加了处理时延。本专利技术可以使得交换动作,只涉及指针的更新,而无需将数据读出、写入的更换队列过程,提高了交换速度。在PON网络中,将互相通信的ONU的两组数据,通过OLT运算编码合为一组数据并下行发送,与源ONU存储的其中一组原始数据再进行逆运算,即可获得另一组数据,这就是网络编码在PON中的应用,可以减少下行数据流量。本专利技术针对这一应用,可以将所有网络编码数据存储在同一存储空间,避免了因为网络编码数据的随机性带来的空间浪费,并通过队列指针的索引,大大提高数据处理的灵活性。
技术实现思路
本专利技术提供了一种网络编码数据的存储空间的设计方式,能够快速的查询、更新数据存储空间中的内容,是一种新的管理网络编码数据的存储规则的方法,实现简单、高效。为了实现上述技术,本专利技术通过以下技术方案实现:建立缓存空间体系,主要包括存储有效数据的子空间、记录子空间信息的子空间指针和记录多队列信息的队列指针,通过子空间指针和队列指针的记录,使得子空间分别属于不同的队列;在初始化缓存空间后,在子空间中写入或读出数据,并通过更新子空间指针和队列指针,使得在队列中加入或删除子空间,完成多个队列共用所有子空间的管理。步骤1,建立缓存空间,主要包括存储有效数据的子空间K、记录子空间信息的子空间指针P和记录多队列信息的队列指针LP;其中,子空间与子空间指针具有固定对应关系;根据队列指针及子空间指针,确定每个子空间分别属于不同的队列;步骤2,在使用缓存空间时,首先初始化各个子空间K和子空间指针P,初始化队列指针LP;步骤3,在写入数据时,需要在子空间K中存入数据,更新子空间指针P,更新队列指针LP,在队列中加入子空间K;步骤4,在读出数据时,需要从子空间K中读出数据,更新子空间指针P,更新队列指针LP,从队列中删除子空间K。步骤5,如果缓存数据需要记录所有数据的时间顺序,可以同时加入时间队列,包括子空间指针和队列指针信息;在写入数据时,在时间队列中加入子空间;在读出数据时,从时间队列中删除子空间;步骤6,如果交换数据,需要更新子空间指针P和队列指针LP,即将子空间K从一个队列交换到另一个队列。一方面,所述“建立缓存空间,主要包括存储有效数据的子空间、记录子空间信息的子空间指针和记录多队列信息的队列指针”,具体为:步骤1-1,建立子空间,将空间分块,每一块子空间可以存储若干字节数据,子空间的大小由存储数据的特征决定;如果一组数据超出子空间存储上限,可以使用多个子空间K存储。步骤1-2,建立子空间指针,每一项记录一个子空间的信息,主要包括子空间有效数据结束地址,包括在数据队列或空闲队列中的前一个子空间地址和后一个子空间地址,可以包括时间队列中的前一个子空间地址和后一个子空间地址,可以包括存入数据的时间。步骤1-3,建立队列指针,每一项记录逻辑队列起始和结束的子空间,逻辑队列分为数据队列和空闲队列两种类型,其中数据队列是指逻辑上属于一组数据的子空间组成的队列,可以有多个数据队列;空闲队列是指当前未使用的子空间组成的队列,通常只需要有一个空闲队列。步骤1-4,还可以建立时间队列指针,记录时间队列起始和结束的子空间,时间队列是指根据时间顺序,子空间组成的队列。所述步骤1-3“逻辑队列分为数据队列和空闲队列两种类型,其中数据队列是指逻辑上属于一组数据的子空间组成的队列,可以有多个数据队列”,具体为步骤1-3-1,如果缓存空间中不对数据进行区分,则可以只有一个数据队列,表示存入有效数据的子空间组成的队列;步骤1-3-2,如果为有多个收发端口,数据需要根据接收或发送端口分类,则每个端口对应一个数据队列,数据队列数量与端口数量有关;步骤1-3-3,如果数据根据源、目的地址进行区分,从同一个源地址到同一个目的地址的数据属于一组数据,则数据队列数量与源地址与目的地址的组合有关;步骤1-3-4,如果数据队列可能性多,但具有规律,数据队列指针可以使用列表的方式,进行排列管理;当步骤3-2中端口数较多,使用一维列表;步骤3-3中源地址和目的地址组合,使用二维列表;步骤1-3-5,如果数据队列可能性多,不适宜穷举,步骤3-3中源地址与目的地址组合情况很多时,可以将数据队列加入标签,标记当前每个数据队列的类型,同类型的数据存入相同的队列中,当某一队列清空,允许更新标签,用于存储其他队列数据。所述步骤1-3“空闲队列是指当前未使用的子空间组成的队列,通常只需要有一个空闲队列”,具体为步骤1-3-6,如果所有子空间没有区别,可以在任何数据队列中使用,只需要一个空闲队列,此时为所有队列共用缓存空间的方式;步骤1-3-7,如果所有子空间存在区别,允许使用多个空闲队列,每个空闲队列可以使用的规则不同,此时缓存空间不是完全共用的方式。另一方面,所述“在使用缓存空间时,首先初始化各个子空间K和子空间指针P,初始化队列指针LP”,具体为步骤2-1,定义一个子空间为空闲子空间NK,不存储实际有效数据,特殊子空间NK可以只逻辑上存在,而没有实际例化。定义一个无效时间NT,用于表示存入数据时间无效。步骤2-2,初始化子空间是指将子空间中的数据清除,由于子空间是否存储有效数据,取决于子空间是否属于空闲队列,因此初始化子空间可以不进行实际操作。步骤2-3,初始化子空间指针是指将子空间指针,按照子空间在空闲队列中的方式进行赋值,即有效数据结束地址为0,第1个子空间指针前一个子空间地址为空闲子空间,后一个子空间地址为第2个子空间,中间每个子空间指针的前一个子空间地址和后一个子空间地址按顺序排列,最后1个子空间指针前一个子空间地址为倒数第2个子空间,后一个子空间地址为空闲子空间。每个子空间指针时间队列中的前一个子空间地址和后一个子空间地址,均为空闲子空间;存入数据时间初始化为无效时间。步骤2-4,初始化队列指针是指将数据队列和空闲队列和时间队列的指针赋值,数据队列起始和结束子空间为空闲子空间,表示数据队列为空;空闲队列起始子空间为第1个子空间,结束子空间为最后1个子空间,结合子空间指针初始化,表示所有子空间属于空闲队列;时间队列起本文档来自技高网
...
使用、管理多队列数据的共用缓存空间的方法和系统

【技术保护点】
一种使用、管理多队列数据的共用缓存空间的方法,其特征在于:建立缓存空间体系,主要包括存储有效数据的子空间、记录子空间信息的子空间指针和记录多队列信息的队列指针,通过子空间指针和队列指针的记录,使得子空间分别属于不同的队列;在初始化缓存空间后,在子空间中写入或读出数据,并通过更新子空间指针和队列指针,使得在队列中加入或删除子空间,完成多个队列共用所有子空间的管理。

【技术特征摘要】
1.一种使用、管理多队列数据的共用缓存空间的方法,其特征在于:建立面向随机存储器的缓存空间体系,包括存储有效数据的子空间、记录子空间信息的子空间指针和记录多队列信息的队列指针,通过子空间指针和队列指针的记录,使得子空间分别属于不同的队列;在初始化缓存空间后,在子空间中写入或读出数据,并通过更新子空间指针和队列指针,使得在队列中加入或删除子空间,完成多个队列共用所有子空间的管理;其特征还在于:步骤1,建立缓存空间,包括存储有效数据的子空间K、记录子空间信息的子空间指针P和记录多队列信息的队列指针LP;其中,子空间与子空间指针具有固定对应关系;根据队列指针及子空间指针,确定每个子空间分别属于不同的队列;步骤2,在使用缓存空间时,首先初始化各个子空间K和子空间指针P,初始化队列指针LP;步骤3,在写入数据时,需要在子空间K中存入数据,更新子空间指针P,更新队列指针LP,在队列中加入子空间K;步骤4,在读出数据时,需要从子空间K中读出数据,更新子空间指针P,更新队列指针LP,从队列中删除子空间K;步骤5,如果缓存数据需要记录所有数据的时间顺序,则允许同时加入时间队列,包括子空间指针和队列指针信息;在写入数据时,在时间队列中加入子空间;在读出数据时,从时间队列中删除子空间;步骤6,如果交换数据,需要更新子空间指针P和队列指针LP,即将子空间K从一个队列交换到另一个队列;其中,所述“建立缓存空间,包括存储有效数据的子空间、记录子空间信息的子空间指针和记录多队列信息的队列指针”,具体为:步骤1-1,建立子空间,将空间分块,每一块子空间则存储若干字节数据,子空间的大小由存储数据的特征决定;如果一组数据超出子空间存储上限,则使用多个子空间K存储;步骤1-2,建立子空间指针,每一项记录一个子空间的信息,包括子空间有效数据结束地址,即包括在数据队列或空闲队列中的前一个子空间地址和后一个子空间地址,或者包括时间队列中的前一个子空间地址和后一个子空间地址,或者包括数据队列或空闲队列中的前一个子空间地址和后一个子空间地址和存入数据的时间;步骤1-3,建立队列指针,每一项记录逻辑队列起始和结束的子空间,逻辑队列分为数据队列和空闲队列两种类型,其中数据队列是指逻辑上属于一组数据的子空间组成的队列,支持多个数据队列;空闲队列是指当前未使用的子空间组成的队列,只需要有一个空闲队列;其中,所述步骤1-3“逻辑队列分为数据队列和空闲队列两种类型,其中数据队列是指逻辑上属于一组数据的子空间组成的队列,支持多个数据队列”,具体为步骤1-3-1,如果缓存空间中不对数据进行区分,则只有一个数据队列,表示存入有效数据的子空间组成的队列;步骤1-3-2,如果为有多个收发端口,数据需要根据接收或发送端口分类,则每个端口对应一个数据队列,数据队列数量与端口数量有关;步骤1-3-3,如果数据根据源、目的地址进行区分,从同一个源地址到同一个目的地址的数据属于一组数据,则数据队列数量与源地址与目的地址的组合有关。2.如权利要求1所述的使用、管理多队列数据的共用缓存空间的方法,其特征在于:步骤1-4,还建立时间队列指针,记录时间队列起始和结束的子空间,时间队列是指根据时间顺序,子空间组成的队列。3.如权利要求1所述的使用、管理多队列数据的共用缓存空间的方法,其特征还在于:所述步骤1-3“逻辑队列分为数据队列和空闲队列两种类型,其中数据队列是指逻辑上属于一组数据的子空间组成的队列,支持多个数据队列”,还包括:步骤1-3-4,如果数据队列可能性多,但具有规律,数据队列指针可以使用列表的方式,进行排列管理;当步骤3-2中端口数较多,使用一维列表;步骤3-3中源地址和目的地址组合,使用二维列表;步骤1-3-5,如果数据队列可能性多,不适宜穷举,步骤3-3中源地址与目的地址组合情况很多时,可以将数据队列加入标签,标记当前每个数据队列的类型,同类型的数据存入相同的队列中,当某一队列清空,允许更新标签,用于存储其他队列数据。4.如权利要求1所述的使用、管理多队列数据的共用缓存空间的方法,其特征在于:所述步骤1-3“空闲队列是指当前未使用的子空间组成的队列,只需要有一个空闲队列”,具体为:步骤1-3-6,如果所有子空间没有区别,则在任何数据队列中使用,只需要一个空闲队列,此时为所有队列共用缓存空间的方式;步骤1-3-7,如果所有子空间存在区别,支持使用多个空闲队列,则每个空闲队列使用的规则不同,此时缓存空间不是完全共用的方式。5.如权利要求1所述的使用、管理多队列数据的共用缓存空间的方法,其特征在于:所述“在使用缓存空间时,首先初始化各个子空间K和子空间指针P,初始化队列指针LP”,具体为:步骤2-1,定义一个子空间为空闲子空间NK,不存储实际有效数据,特殊子空间NK则只逻辑上存在,而没有实际例化;定义一个无效时间NT,用于表示存入数据时间无效;步骤2-2,初始化子空间是指将子空间中的数据清除,由于子空间是否存储有效数据,取决于子空间是否属于空闲队列,因此初始化子空间不进行实际操作;步骤2-3,初始化子空间指针是指将子空间指针,按照子空间在空闲队列中的方式进行赋值,即有效数据结束地址为0,第1个子空间指针前一个子空间地址为空闲子空间,后一个子空间地址为第2个子空间,中间每个子空间指针的前一个子空间地址和后一个子空间地址按顺序排列,最后1个子空间指针前一个子空间地址为倒数第2个子空间,后一个子空间地址为空闲子空间;每个子空间指针时间队列中的前一个子空间地址和后一个子空间地址,均为空闲子空间;存入数据时间初始化为无效时间;步骤2-4,初始化队列指针是指将数据队列和空闲队列和时间队列的指针赋值,数据队列起始和结束子空间为空闲子空间,表示数据队列为空;空闲队列起始子空间为第1个子空间,结束子空间为最后1个子空间,结合子空间指针初始化,表示所有子空间属于空闲队列;时间队列起始和结束子空间为空闲子空间,表示时间队列为空。6.如权利要求1所述的使用、管理多队列数据的共用缓存空间的方法,其特征在于:所述“在写入数据时,需要在子空间K中存入数据,更新子空间指针P,更新队列指针LP,在队列中加入子空间K”,具体为:步骤3-1,写入数据时,根据数据的类型,确定子空间应该属于的数据队列;步骤3-2,如果空闲队列为空,则不允许写入数据;如果空闲队列不为空,则允许写入数据;步骤3-3,查询空闲队列的起始子空间,在此子空间中存入数据,数据结束时记录有效数据结束地址;步骤3-4,如果数据队列不为空,则数据队列原来的结束子空间,其子空间指针后一个子空间为写入数据的子空间;如果数据队列为空,则跳过此步骤3-4;步骤3-5,写入数据的子空间,其子空间指针前一个子空间为数据队列原有的结束子空间;子空间指针后一个子空间为空闲子空间;步骤3-6,空闲队列原来的第2个子空间,其子空间指针前一个子空间为空闲子空间,如果空闲队列此时为空,则跳过此步骤3-6;步骤3-7,数据队列如果原本为空,则起始子空间为写入数据的子空间;数据队列如果不为空,则起始子空间不变;数据队列结束子空间为写入数据的子空间;步骤3-8,空闲队列起始子空间为空闲队列原来的第2个子空间,如果为空闲子空间,则此时空闲队列为空,空闲队列结束子空间也为空闲子空间。7.如权利要求1所述的使用、管理多队列数据的共用缓存空间的方法,其特征在于:所述“在读出数据时,需要从子空间K中读出数据,更新子空间指针P,更新队列指针LP,从队列中删除子空间K”,具体为:步骤4-1,读出数据时,根据数据的类型,确定子空间应该属于的数据队列;步骤4-2,如果数据队列为空,则不允许读出数据,如果数据队列不为空,则允许读出数据;步骤4-3,查询数据队列的起始子空间,从此子空间中读出数据,直到有效数据结束;步骤4-4,如果空闲队列不为空,则空闲队列原来的结束子空间,其子空间指针后一个子空间为读出数据的子空间;如果空闲队列为空,则跳过此步骤4-4;步骤4-5,读出数据的子空间,其子空间指针前一个子空间为空闲队列原有的结束子空间;子空间指针后一个子空间为空闲子空间;步骤4-6,数据队列原来的第2个子空间,...

【专利技术属性】
技术研发人员:顾仁涛王震纪越峰
申请(专利权)人:北京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1