CN100530078C - 一种堆栈缓冲区管理方法 - Google Patents

一种堆栈缓冲区管理方法 Download PDF

Info

Publication number
CN100530078C
CN100530078C CNB2007101037253A CN200710103725A CN100530078C CN 100530078 C CN100530078 C CN 100530078C CN B2007101037253 A CNB2007101037253 A CN B2007101037253A CN 200710103725 A CN200710103725 A CN 200710103725A CN 100530078 C CN100530078 C CN 100530078C
Authority
CN
China
Prior art keywords
buffer
index
buffer zone
management method
released
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2007101037253A
Other languages
English (en)
Other versions
CN101038542A (zh
Inventor
娄本刚
吴春华
刁瑞强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CNB2007101037253A priority Critical patent/CN100530078C/zh
Publication of CN101038542A publication Critical patent/CN101038542A/zh
Application granted granted Critical
Publication of CN100530078C publication Critical patent/CN100530078C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种堆栈缓冲区管理方法,利用空闲缓冲堆栈(103)进行PUSH操作时,根据被释放索引使用与否允许或拒绝其写入空闲缓冲堆栈(103)。这种方法避免空闲缓冲区堆栈中会存在重复的索引,拒绝将已重复索引压入空闲缓冲区堆栈,而直接向提供重复索引的缓冲区使用者给出释放缓冲区应答信号;该机制维护了空闲缓冲区堆栈内部索引的正确性,避免引起缓冲区分配的冲突;另一方面,也不会因外部使用模块的错误导致缓冲区管理内部的混乱,提高了缓冲区管理器的健壮性,可靠性。

Description

一种堆栈式缓冲区管理方法
技术领域
本发明涉及计算机和通讯领域,具体涉及一种堆栈式缓冲区管理方法。
背景技术
通信和计算机领域中,经常需要用一大块快速读写存储器memory用来暂存接收到的数据、等待处理的数据、以及等待发送出去的数据。这一大块存储器在逻辑上被分割为很多小块。这些小块被称为缓冲区buffer。对这些缓冲区进行有效地管理的机制及其具体实现,称为缓冲区管理器buffer manager。缓冲区管理器完成的主要功能有:外部有缓冲区申请请求时,根据分配策略进行答复,分配具体的缓冲区或者拒绝分配缓冲区;外部有缓冲区释放请求时,响应释放请求,将待释放的缓冲区列入空闲缓冲区池供以后分配使用。
比较通用的缓冲区管理器有堆栈式stack管理器和先进先出式First InFirst Out管理器,简称FIFO管理器。和本发明相关的是堆栈式stack缓冲区管理器。
堆栈式缓冲区管理器3的实现如附图1所示。包括控制逻辑101、堆栈指针102、空闲缓冲区堆栈103三个部分。索引图105是为了表示方便,物理上并不存在;大容量存储器104是缓冲区管理器所要管理的对象。将这一块存储器分成n个小块缓冲区,每个缓冲区用一个索引index来寻址,索引和缓冲区一一对应。空闲缓冲区堆栈中保存的是空闲缓冲区的索引,初始状态下,堆栈是满的,所有的索引都在堆栈中,堆栈指针指向堆栈地址addr0。工作原理为:①出栈操作POP:外部有申请缓冲区的请求后,如果允许分配缓冲区,则将堆栈指针指向的索引分配给申请源,同时将堆栈指针下移一步;②入栈操作PUSH:如果外部要求释放缓冲区,则将堆栈指针上移一步,并将需要释放的缓冲区索引写入堆栈。经过多次的出栈,入栈操作后,如图2中所示,空闲缓冲区堆栈103中的索引排列是无序的。缓冲区管理器3和缓冲区使用者的交互信号有:缓冲区使用者分配缓冲区请求信号、缓冲区管理器分配应答信号、分配给缓冲区使用者的缓冲区索引、缓冲区使用者请求释放缓冲区请求信号、缓冲区使用者请求释放的缓冲区索引、缓冲区管理器释放应答信号。
现有的堆栈式缓冲区管理器,分配缓冲区时直接执行压栈操作,释放缓冲区时执行入栈操作。外部缓冲区使用模块必须维护自己使用的缓冲区索引。如果外部缓冲区使用模块维护缓冲区索引出错,申请释放缓冲区时,给出了错误的缓冲区索引,或者对同一缓冲区索引连续释放多次,就会引起空闲缓冲区堆栈内的索引混乱。如附图3所示:假设空闲缓冲区堆栈103初始指针301原本指向addr3,addr3中存放的索引是index3;这时候如果有外部请求释放一个索引为index3的缓冲区,执行入栈操作,索引index3会被再次写入堆栈,堆栈目前指针302指向addr2。而根据上文所述,堆栈中的索引表示空闲缓冲区,堆栈中存在重复的索引,当有外部模块申请分配缓冲区时,缓冲区管理器就有可能把相同的一块缓冲区索引index3同时分配给不同的外部模块使用,造成冲突。这样的后果是很严重的,如果用在数据通信中,轻则会有丢包现象,重则数据转发完全混乱,业务中断。而目前的缓冲区管理器无法检测到这种情况的发生,也无法从这种混乱状态中恢复正常。
发明内容
本发明需要解决的技术问题是提供一种堆栈式缓冲区管理方法,能够避免一个缓冲区同时被多个外部模块使用。
本发明的上述技术问题这样解决,提供一种堆栈式缓冲区管理方法,在空闲缓冲区堆栈中保存空闲缓冲区的索引,当释放缓冲区,并利用空闲缓冲区堆栈进行缓冲区索引的PUSH操作时,如果被释放缓冲区的索引对应的缓冲区信息为已使用,则允许将所述索引写入空闲缓冲区堆栈,如果被释放缓冲区的索引对应的缓冲区信息为未使用,则拒绝将所述索引写入空闲缓冲堆栈;当分配缓冲区,并利用空闲缓冲区堆栈(103)进行缓冲区索引的POP操作时,将当前指针(102)指向的索引对应的缓冲区分配给申请者并将该索引对应的缓冲区信息修改为已使用。
按照本发明提供的管理方法,进行PUSH操作时还包括根据被释放缓冲区的索引存在于空闲缓冲堆栈中空闲索引集合内与否判断该被释放缓冲区的索引对应的缓冲区信息为为使用或已使用。
按照本发明提供的管理方法,使用缓冲区使用信息表记录被管理所有缓冲区的索引及其对应已使用或未使用标记,进行PUSH操作时还包括根据被释放缓冲区的索引在所述缓冲区使用信息表内的对应记录判断该被释放缓冲区的索引为已使用或未使用。
按照本发明提供的管理方法,使用缓冲区使用信息表记录所有已使用缓冲区的索引,进行PUSH操作时还包括根据被释放缓冲区的索引是否存在于所述缓冲区使用信息表来判断该被释放缓冲区的索引为已使用或未使用。
按照本发明提供的管理方法,进行PUSH操作时还包括根据允许被释放索引写入空闲缓冲堆栈修改或删除所述缓冲区使用信息表中对应记录。
按照本发明提供的管理方法,该管理方法还包括初始化所述缓冲区使用信息表,记录被管理所有缓冲区的索引并全部初始化为未使用标记。
按照本发明提供的管理方法,该管理方法包括初始化所述缓冲区使用信息表为空。
按照本发明提供的管理方法,该管理方法还包括进行POP操作时,在所述缓冲区使用信息表增加该索引的记录。
本发明提供的一种堆栈式缓冲区管理方法,根据被释放索引使用与否允许或拒绝其写入空闲缓冲堆栈,避免空闲缓冲区堆栈中会存在重复的索引,拒绝将已重复索引压入空闲缓冲区堆栈,而直接向提供重复索引的缓冲区使用者给出释放缓冲区应答信号;该机制维护了空闲缓冲区堆栈内部索引的正确性,避免引起缓冲区分配的冲突;另一方面,也不会因外部使用模块的错误导致缓冲区管理内部的混乱,提高了缓冲区管理器的健壮性,可靠性。
附图说明
下面结合附图和具体实施例进一步对本发明进行详细说明。
图1是传统的堆栈式缓冲区管理器系统结构示意图;
图2是经过一段时间的分配释放后,传统空闲缓冲区堆栈中的内容;
图3是释放出错后,传统空闲缓冲区堆栈中的内容;
图4是一种按照本发明思路改进后的堆栈式缓冲区管理器系统结构示意图;
图5是图4所示堆栈式缓冲区管理器缓冲区分配流程图;
图6是图4所示堆栈式缓冲区管理器缓冲区释放流程图。
具体实施方式
本发明包括但不限制于以下具体实施例:
首先,说明本发明可靠的缓冲区管理器3系统,如图4所示,包含四个组成部分:控制逻辑101、堆栈指针102、空闲缓冲区堆栈103、记录缓冲区使用信息表的缓冲区信息记录器401。存储器104是被管理的对象,存储器104划分成很多小块缓冲区,每个缓冲区用一个索引index来表示。索引图105物理上不存在,为了理解方便,用来说明缓冲区索引和缓冲区,信息记录器条目的一一对应关系。在缓冲区信息记录器401中为每个索引创建一个条目,每个条目和索引一一对应,如index0对应info0、index1对应info1、index2对应info2、依次类推。
第二步,说明本发明缓冲区管理器的分配流程和释放流程:
(一)分配流程
如图5所示,该分配流程具体包括以下步骤:
501)开始;
502)缓冲区使用者申请缓冲区;
503)查找堆栈指针指向的缓冲区索引;
504)根据缓冲区索引操作缓冲区信息记录器,完成缓冲区信息的记录;
505)将缓冲区分配给使用者,堆栈指针下移;
506)结束。
(二)释放流程
如图6所示,该释放流程具体包括以下步骤:
601)开始;
602)缓冲区使用者释放缓冲区;
603)记录缓冲区索引,查找缓冲区记录器;
604)判断缓冲区信息是否为空闲缓冲区?是,进入步骤6051);否则进入步骤6050);
6050)改写缓冲区记录器,并将缓冲区索引压入空闲缓冲区,堆栈指针上移,进入步骤606);
6051)使用者申请释放错误的缓冲区索引,不进行压栈操作,堆栈指针不变;
606)响应缓冲区释放操作;
607)结束。
最后,以实际应用场景详细说明本发明:缓冲区管理器可以服务多个缓冲区使用者,使用者需要使用缓冲区时向缓冲区管理器申请分配,使用完缓冲区后向缓冲区管理器申请释放该缓冲区,回收供以后使用。控制逻辑部分根据外部的分配或者释放请求,根据优先级策略仲裁,选择处理某一个申请源的请求,然后访问堆栈指针、空闲缓冲区堆栈、缓冲区信息记录器,根据本发明上面公开的流程进行处理,如下面的实例所描述:
C1,初始时,堆栈指针指向addr0,外部缓冲区使用者申请分配缓冲区时,地址addr0中的索引是index0,index0对应的缓冲区信息记录器条目是info0,往info0写入标志1,表示index0缓冲区已经被分配使用,堆栈指针下移一步,指向addr1,然后把index0,缓冲区分配应答信号一起送给缓冲区使用者。分配缓冲区结束;
C2,缓冲区使用者申请分配缓冲区,addr1中的索引是index1,index1对应的缓冲区信息记录器条目是info1,往info1写入标志1,堆栈指针下移一步,指向addr2,然后把index1,冲区分配应答信号一起送给缓冲区使用者。分配缓冲区结束;
C3,缓冲区使用者请求释放缓冲区index0,读取缓冲区信息记录器info0中的标志,标志是1,表明该缓冲区已经被分配使用,可以释放,改写标志,将标志写为0,表明该缓冲区将被释放,转为空闲状态。将堆栈指针上移一步,指向addr1,将index0写入堆栈中addr1处。给出释放缓冲区应答信号。释放缓冲区结束;
C4,缓冲区使用者请求释放缓冲区index0,读取缓冲区信息记录器info0条目。由于C3步骤时,info0已经被写为0,表示该缓冲区已经是空闲缓冲区,企图释放一个空闲缓冲区是个错误的,不把缓冲区索引入栈,堆栈指针不变。直接给出释放缓冲区应该信号,释放缓冲区结束。
在C4步骤中,采用本发明的缓冲区管理器成功地检测到了外部释放缓冲区操作的错误,拒绝执行会引起空闲缓冲区堆栈混乱的操作,直接给出释放应答信号,大大提高了缓冲区管理器的健壮性、可靠性。
以上,缓冲区管理器是执行分配操作,还是执行释放操作,取决于外部缓冲区使用者的使用情况。

Claims (8)

1、一种堆栈式缓冲区管理方法,在空闲缓冲区堆栈(103)中保存空闲缓冲区的索引,其特征在于,当释放缓冲区,并利用空闲缓冲区堆栈(103)进行缓冲区索引的PUSH操作时,如果被释放缓冲区的索引对应的缓冲区信息为已使用,则允许将所述索引写入空闲缓冲区堆栈(103),如果被释放缓冲区的索引对应的缓冲区信息为未使用,则拒绝将所述索引写入空闲缓冲区堆栈(103);当分配缓冲区,并利用空闲缓冲区堆栈(103)进行缓冲区索引的POP操作时,将当前指针(102)指向的索引对应的缓冲区分配给申请者并将该索引对应的缓冲区信息修改为已使用。
2、根据权利要求1所述管理方法,其特征在于,进行PUSH操作时还包括根据被释放缓冲区的索引存在于空闲缓冲堆栈(103)中空闲索引集合内与否判断该被释放缓冲区的索引对应的缓冲区信息为未使用或已使用。
3、根据权利要求1所述管理方法,其特征在于,使用缓冲区使用信息表记录被管理所有缓冲区的索引及其对应已使用或未使用标记,进行PUSH操作时还包括根据被释放缓冲区的索引在所述缓冲区使用信息表内的对应记录(401)判断该被释放缓冲区的索引对应的缓冲区信息为已使用或未使用。
4、根据权利要求1所述管理方法,其特征在于,使用缓冲区使用信息表记录所有已使用缓冲区的索引,进行PUSH操作时还包括根据被释放索引是否存在于所述缓冲区使用信息表来判断该被释放缓冲区的索引对应的缓冲区信息为已使用或未使用。
5、根据权利要求3或4所述管理方法,其特征在于,进行PUSH操作时还包括根据允许被释放索引写入空闲缓冲堆栈修改或删除所述缓冲区使用信息表中对应记录。
6、根据权利要求3所述管理方法,其特征在于,该管理方法还包括初始化所述缓冲区使用信息表,记录被管理所有缓冲区的索引并全部初始化为未使用标记。
7、根据权利要求4所述管理方法,其特征在于,该管理方法包括初始化所述缓冲区使用信息表为空。
8、根据权利要求7所述管理方法,其特征在于,该管理方法还包括进行POP操作时,在所述缓冲区使用信息表增加该索引的记录。
CNB2007101037253A 2007-05-16 2007-05-16 一种堆栈缓冲区管理方法 Expired - Fee Related CN100530078C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101037253A CN100530078C (zh) 2007-05-16 2007-05-16 一种堆栈缓冲区管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101037253A CN100530078C (zh) 2007-05-16 2007-05-16 一种堆栈缓冲区管理方法

Publications (2)

Publication Number Publication Date
CN101038542A CN101038542A (zh) 2007-09-19
CN100530078C true CN100530078C (zh) 2009-08-19

Family

ID=38889464

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101037253A Expired - Fee Related CN100530078C (zh) 2007-05-16 2007-05-16 一种堆栈缓冲区管理方法

Country Status (1)

Country Link
CN (1) CN100530078C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499956B (zh) * 2008-01-31 2012-10-10 中兴通讯股份有限公司 分级缓冲区管理系统及方法
CN101923517B (zh) * 2009-06-17 2013-03-27 中兴通讯股份有限公司 一种缓冲区管理方法及系统
CN107621926B (zh) * 2017-09-19 2020-06-16 珠海市杰理科技股份有限公司 栈区数据存取方法、装置、可读存储介质和计算机设备

Also Published As

Publication number Publication date
CN101038542A (zh) 2007-09-19

Similar Documents

Publication Publication Date Title
US4354232A (en) Cache memory command buffer circuit
EP0378423B1 (en) DMA controller
CN100458757C (zh) 嵌入式实时操作系统中多核处理器的核间通信方法及装置
CN101707565B (zh) 零拷贝网络报文发送、接收方法和装置
CN101359314A (zh) 通过将所检索的数据直接写入存储器的存储控制器来最佳使用缓冲器空间
JPH07175698A (ja) ファイルシステム
CN102324246B (zh) 用于存取位于存储器装置中的寄存器的方法、设备及系统
US5359568A (en) FIFO memory system
CN101344861B (zh) 一种智能卡内存管理方法
US20030056073A1 (en) Queue management method and system for a shared memory switch
CN100530078C (zh) 一种堆栈缓冲区管理方法
US7865632B2 (en) Memory allocation and access method and device using the same
CN102402422A (zh) 处理器组件及该组件内存共享的方法
CN115080455A (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
CN100419723C (zh) 多中断的缓存装置和方法
CN101610197A (zh) 一种缓冲区管理方法及其系统
CN101923517B (zh) 一种缓冲区管理方法及系统
CN112311696A (zh) 网络封包接收装置及方法
CN101208675A (zh) 帧序处理装置、系统和方法
CN114691571A (zh) 数据处理方法、重排序缓存器及互联设备
US7917906B2 (en) Resource allocation in a computer-based system
CN108897696B (zh) 一种基于DDRx存储器的大容量FIFO控制器
CN107861887A (zh) 一种串行易失性存储器的控制方法
CN115617715A (zh) 一种fifo装置及其数据传输方法
CN111290709B (zh) 一种可动态调整的环形缓冲区

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151126

Address after: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice

Patentee after: ZTE Corporation

Patentee after: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Address before: 518057 Nanshan District high tech Industrial Park, Guangdong, South Road, science and technology, ZTE building, legal department

Patentee before: ZTE Corporation

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090819

Termination date: 20170516

CF01 Termination of patent right due to non-payment of annual fee