G06F12/02(2006.01) H04L29/02(2006.01)
1、一种主动回收数据缓冲区的方法,该方法利用系统缓冲区 池的管理函数,该管理函数一般包括系统缓冲区申请函数,其特征在 于:增加系统缓冲区回收处理函数,在缓冲区申请过程中,系统缓冲 区申请函数可以调用系统缓冲区回收处理函数。
2、如权利要求1所述主动回收数据缓冲区的方法,其特征在 于,系统中各个可以回收数据缓冲区的功能模块注册自己的缓冲区回 收函数到系统,供所述的系统缓冲区回收处理函数调用。
3、如权利要求1或2所述主动回收数据缓冲区的方法,其特 征在于,包括如下步骤:
a、功能模块从系统缓冲区池申请所需的数据缓冲区不成功,所 述系统缓冲区申请函数调用所述系统缓冲区回收处理函数;
b、所述系统缓冲回收处理函数调用各功能模块注册的缓冲区 回收函数;
c、所述功能模块判断并释放可以回收的缓冲区。
4、如权利要求3所述主动回收数据缓冲区的方法,其特征在 于,功能模块可以重新调用系统缓冲区申请函数申请回收到的缓冲 区。
5、如权利要求3步骤b所述主动回收数据缓冲区的方法,其 特征在于,所述系统缓冲回收处理函数按照一定的规则进行缓冲区回 收函数的调用。
6、如权利要求3步骤b所述主动回收数据缓冲区的方法,其 特征在于,所述系统缓冲回收处理函数按照各功能模块注册回收函数 的顺序进行缓冲区回收函数的调用。
7、如权利要求3步骤c所述主动回收数据缓冲区的方法,其 特征在于,被释放的缓冲区被放入缓冲池。
8、如权利要求5、6或7任一权利要求所述主动回收数据缓冲 区的方法,其特征在于,功能模块可以重新调用系统缓冲区申请函数 申请回收到的缓冲区。
技术领域
本发明主要涉及网络通信领域,特别是数据通信系统中对缓冲区 的回收处理技术。
背景技术
数据通信系统中,通常将用于临时存放待处理数据的内存区域叫 做数据缓冲区,简称缓冲区。系统协议栈中的各种协议和功能模块, 在进行数据处理之前,通常是把接收到的数据临时存放在其由数据缓 冲区组成的缓冲区队列中。通信系统功能模块的缓冲区队列示意图参 见图1,通信系统从外部接收来的数据,依次经过第一功能模块缓冲 区队列21、第二功能模块缓冲区队列22、第三功能模块缓冲区队列 23,并被以上三层功能模块处理完成后,再依次经过第四功能模块缓 冲区队列24、第五功能模块的缓冲区队列25,在第四、第五功能模 块完成对数据处理后,该通信系统完成了数据的整个处理过程,发送 出去。各个功能模块缓冲区队列中的各个缓冲区11、12、13、14、 15都是来自于通信系统的缓冲区池,系统缓冲区池示意图见图2,缓 冲区池中的各个缓冲区空间大小一般是固定的,并且是有不同大小 的。为存储空间考虑,所有缓冲区池中缓冲区的总数不会超过所有系 统功能模块的队列长度的和。每个功能模块在处理任务时一般按照一 定的空间大小要求申请缓冲区,因此,系统很难避免出现缓冲区池中 可用大小的缓冲区被申请空的情况,即所有空间大小合适的缓冲区都 在各个功能模块的缓冲队列中没有被释放,这时系统会因为当前功能 模块不能申请到可用的缓冲区而不能继续数据处理操作,在这种情况 下,当前功能模块的任务可能会长时间的挂起等待从而引起数据处理 的停顿,引起正常业务的中断;或者因为反复多次申请不能成功出现 错误,引起系统故障甚至崩溃。
发明内容
本发明要解决的技术问题就是克服现有技术中,当通信系统中某 一功能模块申请不到所需的缓冲区时,可能导致数据处理停顿或者系 统故障甚至崩溃地缺点,提出一种改变传统缓冲区申请处理过程,主 动回收当前通信系统中被其它功能模块占用,但可以暂时释放掉的可 用缓冲区以满足但前功能模块的需要,从而保证系统正常运行的解决 方法。
本发明所采用的技术方案是:利用通信系统缓冲区池的统一管理 函数,该管理函数一般包括系统缓冲区申请函数,本发明增加系统缓 冲区回收处理函数;并且系统中各个可以回收数据缓冲区的功能模块 首先要注册自己的缓冲区回收函数到系统,供以上所述的系统回收处 理函数调用。本发明的主动回收数据缓冲区的方法,包括如下步骤:
a、功能模块从系统缓冲区池申请所需的缓冲区不成功,所述系 统缓冲区的申请函数调用所述系统缓冲区回收处理函数;
b、所述系统缓冲回收处理函数调用各功能模块注册的缓冲区 回收函数;
c、所述功能模块判断并释放可以回收的缓冲区。
因此,申请缓冲区的所述功能模块可以通过重新调用系统缓冲区 申请函数申请被其它功能模块释放的合适缓冲区。
具体的说,以上步骤b所述系统缓冲回收处理函数,按照一定的 规则依次进行缓冲区回收函数的调用。
当以上步骤c完成之后,被其它功能模块释放的缓冲区被放入缓 冲池。所述功能模块可以重新调用系统申请函数申请回收到的缓冲 区。
本发明的有益效果是:可以有效解决通信系统中因为可用缓冲区 耗尽,功能模块无法申请到所需的缓冲区时,导致数据处理停顿或者 系统故障甚至崩溃的问题。本发明可以使通信系统更加稳健可靠,提 高了可用性。
附图说明
图1为通信系统中缓冲区队列示意图。
图2为系统缓冲区池示意图。
图3为本发明流程图。
附图中标记说明:
11、12、13、14、15缓冲区
21第一功能模块缓冲区队列
22第二功能模块缓冲区队列
23第三功能模块缓冲区队列
24第四功能模块缓冲区队列
25第五功能模块缓冲区队列
以下通过具体实施方式,对本发明作进一步的阐述。
具体实施方式
在本发明中,参见图3,在一个通信系统中,当某一功能模块任务 需要使用缓冲区时,它首先调用系统缓冲区申请函数。系统缓冲区申 请函数首先检查缓冲区池中是否有可用的空闲缓冲区,如果缓冲区池 中没有合适的缓冲区,则调用系统缓冲区回收处理函数。系统缓冲区 回收处理函数先从缓冲区回收函数表中取已经注册的协议模块缓冲 区回收函数。在这里,我们可以考虑按照已经注册的有限的功能模块 注册缓冲区回收函数的顺序规则,依次调用,一直到调用完所有注册 的回收函数。在调用过程中,每个模块的缓冲区回收函数判断其缓冲 区队列中哪些为空闲缓冲区并释放。所有被释放的缓冲区被系统缓冲 区回收处理函数放回系统缓冲区池。需要缓冲区的功能模块利用缓冲 区申请函数可以从系统缓冲区池中去取出被模块冲区函数释放的缓 冲区。
当前知道的可以采取这样的机制暂时释放回收缓冲区的有TCP 队列,IP队列,QOS队列,驱动队列,PPP协议队列,PPP多链路 队列,帧中继协议队列,帧中继多链路队列等。无论是协议还是其它 功能模块,只要是采用缓冲区缓存机制,可能出现可用缓冲区耗尽引 起引起系统不能正常运行的某些功能模块的任务,均可以采用此办法 解决。本专利的保护的是主动回收缓冲区的方法,不限于上面提到的 功能模块。
本文发布于:2023-04-14 03:58:13,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/1/86928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |