一种内存操作管理方法及装置

申请号 CN200910235682.3 申请日 2009-10-12 公开(公告)号 CN101702813B 公开(公告)日 2014-12-10
申请人 中兴通讯股份有限公司; 发明人 尤斌;
摘要 本 发明 公开了一种内存操作管理方法,包括:子网依赖汇聚协议层(SNDCP)将压缩的上行数据进行分割标识后得到的SNDCP参数保存在预设的SNDCP数据队列中,并将保存后得到的SNDCP数据队列的特征参数发送给逻辑链路层(LLC);LLC将SNDCP数据队列的特征参数保存在预设的LLC数据队列中,并将保存后得到的LLC数据队列的特征参数发送给无线链路层(RLC);RLC在 申请 到无线资源之后,根据收到的LLC数据队列的特征参数依次回调LLC回调函数和SNDCP回调函数以获取LLC数据包并对其进行处理,然后通过申请的无线资源进行发送。本发明还公开了一种内存操作管理装置。采用本发明能够有效节省内存空间。
权利要求

1.一种内存操作管理方法,其特征在于,设置子网依赖汇聚协议层SNDCP数据队列、SNDCP全局数组、逻辑链路层LLC数据队列、LLC全局数组;该方法还包括:
SNDCP压缩收到的上行数据,并根据N201-U或N201-I对压缩的上行数据进行分割标识,将进行分割标识后得到的SNDCP参数保存在所述SNDCP数据队列中,并将保存后得到的SNDCP数据队列的特征参数携带在逻辑链路确认数据请求LL_DATA_REQ消息或逻辑链路非确认数据请求LL_UNIDATA_REQ消息中发送给LLC;所述N201-U是指U和无编号信息UI帧最大信息域长度;N201-I是指I帧最大信息域长度;
LLC将收到的SNDCP数据队列的特征参数保存在所述LLC数据队列中,并将保存后得到的LLC数据队列的特征参数携带在无线链路层确认数据请求RLC_DATA_REQ消息或无线链路层非确认数据请求RLC_UNIDATA_REQ消息中发送给无线链路层RLC;
RLC将收到的LLC数据队列的特征参数输入LLC提供的LLC回调函数,调取LLC保存的SNDCP数据队列的特征参数,再将SNDCP数据队列的特征参数输入SNDCP提供的SNDCP回调函数,调取SNDCP参数;
SNDCP将根据SNDCP参数分割组装所述压缩的上行数据得到的SNDCP数据包存入所述SNDCP全局数组,LLC获取SNDCP全局数组中的SNDCP数据包并对SNDCP数据包进行组装,将组装得到的LLC数据包存入所述LLC全局数组,RLC获取LLC全局数组中的LLC数据包并对LLC数据包进行处理,然后通过申请的无线资源进行发送。
2.根据权利要求1所述的内存操作管理方法,其特征在于,所述方法进一步包括:
当RLC中待发送的数据超过预设的上限值时,RLC通知SNDCP暂停发送SNDCP数据包;当RLC中待发送的数据下降到所述上限阀值内时,RLC通知SNDCP继续发送SNDCP数据包。
3.根据权利要求1所述的内存操作管理方法,其特征在于,所述方法进一步包括:
当RLC收到下行数据时,将下行数据组装成LLC数据包,并保存到申请的内存中,然后发送给LLC;
LLC对收到的LLC数据包进行解包,并将解包得到的SNDCP数据包在LLC数据包中的位置以及长度发送给SNDCP。
4.根据权利要求1、2或3所述的内存操作管理方法,其特征在于,所述SNDCP参数包括:分段号码、协议数据单元编号、SNDCP数据在所述上行数据中的位置、及SNDCP数据的长度。
5.根据权利要求1、2或3所述的内存操作管理方法,其特征在于,所述SNDCP数据队列的特征参数为SNDCP数据在所述SNDCP数据队列中的偏移量。
6.根据权利要求1、2或3所述的内存操作管理方法,其特征在于,所述LLC数据队列的特征参数为SNDCP数据在所述LLC数据队列中的偏移量。
7.一种内存操作管理装置,其特征在于,该装置包括:设置模、SNDCP、LLC和RLC;其中,
设置模块,用于设置SNDCP数据队列、SNDCP全局数组、LLC数据队列、LLC全局数组;
SNDCP,用于压缩收到的上行数据,并根据N201-U或N201-I对压缩的上行数据进行分割标识,将进行分割标识后得到的SNDCP参数保存在所述SNDCP数据队列中,并将保存后得到的SNDCP数据队列的特征参数携带在逻辑链路确认数据请求LL_DATA_REQ消息或逻辑链路非确认数据请求LL_UNIDATA_REQ消息中发送给LLC;所述N201-U是指U帧和无编号信息UI帧最大信息域长度;N201-I是指I帧最大信息域长度;
LLC,用于将收到的SNDCP数据队列的特征参数保存在所述LLC数据队列中,并将保存后得到的LLC数据队列的特征参数携带在无线链路层确认数据请求RLC_DATA_REQ消息或无线链路层非确认数据请求RLC_UNIDATA_REQ消息中发送给RLC;
RLC,用于将收到的LLC数据队列的特征参数输入LLC提供的LLC回调函数,调取LLC保存的SNDCP数据队列的特征参数,再将SNDCP数据队列的特征参数输入SNDCP提供的SNDCP回调函数,调取SNDCP参数;
SNDCP,还用于将根据SNDCP参数分割组装所述压缩的上行数据得到的SNDCP数据包存入所述SNDCP全局数组;
LLC,还用于获取SNDCP全局数组中的SNDCP数据包并对SNDCP数据包进行组装,将组装得到的LLC数据包存入所述LLC全局数组;
RLC,还用于获取LLC全局数组中的LLC数据包并对LLC数据包进行处理,然后通过申请的无线资源进行发送。
8.根据权利要求7所述的内存操作管理装置,其特征在于,所述RLC进一步用于:当RLC中待发送的数据超过预设的上限阀值时,通知SNDCP暂停发送SNDCP数据包;当RLC中待发送的数据下降到所述上限阀值内时,通知SNDCP继续发送SNDCP数据包。
9.根据权利要求7所述的内存操作管理装置,其特征在于,所述RLC进一步用于:当收到下行数据时,将下行数据组装成LLC数据包,并保存到申请的内存中,然后发送给LLC;所述LLC进一步用于:对收到的LLC数据包进行解包,并将解包得到的SNDCP数据包在LLC数据包中的位置以及长度发送给SNDCP。
10.根据权利要求7、8或9所述的内存操作管理装置,其特征在于,所述SNDCP参数包括:分段号码、协议数据单元编号、SNDCP数据在所述上行数据中的位置、及SNDCP数据的长度;所述SNDCP数据队列的特征参数为SNDCP数据在所述SNDCP数据队列中的偏移量;所述LLC数据队列的特征参数为SNDCP数据在LLC数据队列中的偏移量。

说明书全文

一种内存操作管理方法及装置

技术领域

[0001] 本发明涉及内存的操作管理技术,尤其涉及一种在通用分组无线业务(GPRS)传输面协议层中内存操作管理方法及装置。

背景技术

[0002] 在GPRS终端系统中,可以采用减少模间的消息发送、减少系统调用、以及合理的内存操作管理等方法来提高系统的效率、以及发送数据的平滑性。下面将介绍其中一种内存操作管理方法。
[0003] 在整个GPRS终端系统中,传输面协议层主要包括子网依赖汇聚协议层(SNDCP)、逻辑链路控制层(LLC)和无线链路控制层(RLC)。其中,SNDCP提供属于不同协议种类的数据接入功能,并进行数据和控制部分的压缩、数据分割和组装等操作;LLC提供移动台(MS)与服务GPRS支持节点(SGSN)之间稳定的逻辑链路,并通过确认机制、加密机制保证数据的可靠性传送;RLC对LLC数据包进行处理,然后通过无线接口传送出去,并采用自动请求重传机制(ARQ)予以传送确认。
[0004] 在第三代合作伙伴计划技术规范(3GPP TS44.065)、3GPP TS44.064和3GPPTS44.060中仅规定了SNDCP、LLC和RLC之间的消息原语,但并未规定数据传输过程中的内存操作管理方法。
[0005] 现有最直接的内存操作管理方法是SNDCP收到应用层发来的数据(即上行数据)后,对数据进行压缩、分割,将分割的数据组装成SNDCP数据包,并将SNDCP数据包保存到申请的内存中,然后通过消息原语发送给LLC;LLC收到SNDCP数据包后,将其组装成LLC数据包,并将LLC数据包保存到申请的内存中,然后通过消息原语发送给RLC;RLC发现有数据要发送后,开始申请无线资源,然后发送数据。
[0006] 这种内存操作管理方法的优点是条理清晰,SNDCP、LLC、RLC之间互不干涉,数据一层一层组装处理;但是,却存在以下缺点:
[0007] 一、会使用比较多的内存。例如,应用层发送10000字节的数据,在传输过程中至少需使用30000字节的内存,如果数据量进一步增加,则实际使用的内存也需乘3;
[0008] 二、传输面数据区内存的申请、控制面数据区内存的申请、以及发送消息时消息内存的申请都是向同一块内存申请,因此,如果数据量过大,则很有可能导致发送消息或控制面的数据申请不到内存,从而导致一些控制无法正常进行;
[0009] 三、大量的数据会堆积在RLC,从而增大RLC的计算量,进而降低数据的传输效率;
[0010] 四、在LLC,数据大部分都需进行加密处理,一般加密都很占资源,如果一个数据传输失败,会导致LLC的链路重建,则之前发送给RLC的所有LLC数据包都会被清除,这样导致LLC之前所做的工作成为无用功。
[0011] 此外,现有技术还采用内存池方式对内存进行操作管理,这样可以避免上述方法的一些缺点,但还是不能避免大量的动态内存申请释放、以及繁琐的内存池操作。

发明内容

[0012] 有鉴于此,本发明的主要目的在于提供一种内存操作管理方法及装置,能够有效节省内存空间。
[0013] 为达到上述目的,本发明的技术方案是这样实现的:
[0014] 一种内存操作管理方法,设置SNDCP数据队列、SNDCP全局数组、LLC数据队列、LLC全局数组;该方法还包括:
[0015] SNDCP压缩收到的上行数据,将压缩的上行数据进行分割标识后得到的SNDCP参数保存在所述SNDCP数据队列中,并将保存后得到的SNDCP数据队列的特征参数发送给LLC;
[0016] LLC将收到的SNDCP数据队列的特征参数保存在所述LLC数据队列中,并将保存后得到的LLC数据队列的特征参数发送给无线链路层RLC;
[0017] RLC将收到的LLC数据队列的特征参数输入LLC提供的LLC回调函数,调取LLC保存的SNDCP数据队列的特征参数,再将SNDCP数据队列的特征参数输入SNDCP提供的SNDCP回调函数,调取SNDCP参数;
[0018] SNDCP将根据SNDCP参数分割组装所述压缩的上行数据得到的SNDCP数据包存入所述SNDCP全局数组,LLC获取SNDCP全局数组中的SNDCP数据包并对SNDCP数据包进行组装,将组装得到的LLC数据包存入所述LLC全局数组,RLC获取LLC全局数组中的LLC数据包并对LLC数据包进行处理,然后通过申请的无线资源进行发送。
[0019] 其中,所述方法进一步包括:
[0020] 当RLC中待发送的数据超过预设的上限值时,RLC通知SNDCP暂停发送SNDCP数据包;当RLC中待发送的数据下降到所述上限阀值内时,RLC通知SNDCP继续发送SNDCP数据包。
[0021] 其中,所述方法进一步包括:
[0022] 当RLC收到下行数据时,将下行数据组装成LLC数据包,并保存到申请的内存中,然后发送给LLC;
[0023] LLC对收到的LLC数据包进行解包,并将解包得到的SNDCP数据包在LLC数据包中的位置以及长度发送给SNDCP。
[0024] 其中,所述SNDCP参数包括:分段号码、协议数据单元编号、SNDCP数据在所述上行数据中的位置、及SNDCP数据的长度。
[0025] 其中,所述SNDCP数据队列的特征参数为SNDCP数据在所述SNDCP数据队列中的偏移量。
[0026] 其中,所述LLC数据队列的特征参数为SNDCP数据在所述LLC数据队列中的偏移量。
[0027] 一种内存操作管理装置,该装置包括:设置模块、SNDCP、LLC和RLC;其中,[0028] 设置模块,用于设置SNDCP数据队列、SNDCP全局数组、LLC数据队列、LLC全局数组;
[0029] SNDCP,用于压缩收到的上行数据,将压缩的上行数据进行分割标识后得到的SNDCP参数保存在所述SNDCP数据队列中,并将保存后得到的SNDCP数据队列的特征参数发送给LLC;
[0030] LLC,用于将收到的SNDCP数据队列的特征参数保存在所述LLC数据队列中,并将保存后得到的LLC数据队列的特征参数发送给RLC;
[0031] RLC,用于将收到的LLC数据队列的特征参数输入LLC提供的LLC回调函数,调取LLC保存的SNDCP数据队列的特征参数,再将SNDCP数据队列的特征参数输入SNDCP提供的SNDCP回调函数,调取SNDCP参数;
[0032] SNDCP,还用于将根据SNDCP参数分割组装所述压缩的上行数据得到的SNDCP数据包存入所述SNDCP全局数组;
[0033] LLC,还用于获取SNDCP全局数组中的SNDCP数据包并对SNDCP数据包进行组装,将组装得到的LLC数据包存入所述LLC全局数组;
[0034] RLC,还用于获取LLC全局数组中的LLC数据包并对LLC数据包进行处理,然后通过申请的无线资源进行发送。
[0035] 其中,所述RLC进一步用于:当RLC中待发送的数据超过预设的上限阀值时,通知SNDCP暂停发送SNDCP数据包;当RLC中待发送的数据下降到所述上限阀值内时,通知SNDCP继续发送SNDCP数据包。
[0036] 其中,所述RLC进一步用于:当收到下行数据时,将下行数据组装成LLC数据包,并保存到申请的内存中,然后发送给LLC;所述LLC进一步用于:对收到的LLC数据包进行解包,并将解包得到的SNDCP数据包在LLC数据包中的位置以及长度发送给SNDCP。
[0037] 其中,所述SNDCP参数包括:分段号码、协议数据单元编号、SNDCP数据在所述上行数据中的位置、及SNDCP数据的长度;所述SNDCP数据队列的特征参数为SNDCP数据在所述SNDCP数据队列中的偏移量;所述LLC数据队列的特征参数为SNDCP数据在LLC数据队列中的偏移量。
[0038] 由以上技术方案可以看出,在GPRS传输面协议层上行数据的整个传输过程中,仅使用了1520字节的SNDCP全局数组和1560字节的LLC全局数组,因此可以有效节省内存空间;并且,由于使用SNDCP全局数组保存SNDCP数据包以及使用LLC全局数组保存LLC数据包,因此避免了在传输面动态的内存申请释放过程;此外,只有LLC需发送的数据才进行LLC格式的组装,因此避免了LLC做无用功;进一步地,通过预设的上限阀值控制LLC待发送数据的积压量,保证上行数据吞吐量。另外,由于本发明采用全局数组的方式对内存进行操作管理,因此无需进行繁琐的内存池操作。附图说明
[0039] 图1为本发明内存操作管理方法的流程示意图;
[0040] 图2为本发明内存操作管理装置的结构示意图。

具体实施方式

[0041] 在执行本发明内存操作管理方法之前,先设置SNDCP数据队列和SNDCP全局数组、以及LLC数据队列和LLC全局数组。
[0042] 其中,由于3GPP TS 44.064规定的最大SNDCP数据的大小为1520字节,因此设置的SNDCP全局数组的大小为1520字节;另外,由于3GPP TS 44.064规定的最大LLC数据的大小为1560字节,因此设置的LLC全局数组的大小为1560字节。
[0043] 另外,数据队列和全局数组的作用将在下文详细描述到,故在此不再赘述。
[0044] 接着,如图1所示,本发明内存操作管理方法包括以下步骤:
[0045] 步骤101,SNDCP对收到的上行数据进行压缩,并根据N201-U或N201-I对压缩的上行数据进行分割标识,将进行分割标识后得到的SNDCP参数保存在已设置的SNDCP数据队列中,并将保存SNDCP参数后得到的SNDCP数据队列的特征参数发送给LLC。
[0046] 其中,上行数据指应用层向SNDCP发送的数据。另外,应用层以数据包方式向SNDCP发送数据,因此SNDCP除了对数据包中的数据部分进行压缩,还对数据包中的控制部分进行压缩。此为现有技术,故在此不再赘述。
[0047] 其中,N201-U是指U帧和无编号信息帧(UI)帧最大信息域长度,N201-I是指I帧最大信息域长度。
[0048] 其中,对压缩的上行数据进行分割标识意在强调此时对压缩的上行数据不进行实际分割。
[0049] 其中,SNDCP参数包括:分段号码、协议数据单元编号(N-PDU)、SNDCP进行分割标识后的每段数据在原始数据(即收到的上行数据)中的位置、及SNDCP进行分割标识后的每段数据的长度。这里为了简要,将SNDCP进行分割标识后的每段数据称为SNDCP数据。
[0050] 其中,SNDCP数据队列的特征参数为SNDCP数据在SNDCP数据队列中的偏移量。
[0051] 此外,SNDCP数据队列的特征参数是携带在逻辑链路确认数据请求(LL_DATA_REQ)消息或逻辑链路非确认数据请求(LL_UNIDATA_REQ)消息中,由SNDCP发送给LLC的。
[0052] 步骤102,LLC将收到的SNDCP数据队列的特征参数保存在已设置的LLC数据队列中,并将保存SNDCP数据队列的特征参数后得到的LLC数据队列的特征参数发送给RLC。
[0053] 其中,LLC数据队列的特征参数为SNDCP数据在LLC数据队列中的偏移量。需要说明的是,此时LLC数据并未按LLC帧格式进行组装,其中,LLC数据是指SNDCP数据在加上LLC包头和LLC包尾之后的数据。
[0054] 此外,LLC数据队列的特征参数是携带在无线链路层确认数据请求(RLC_DATA_REQ)消息或无线链路层非确认数据请求(RLC_UNIDATA_REQ)消息中,由LLC发送给RLC的。
[0055] 步骤103,RLC保存收到的LLC数据队列的特征参数,并申请无线资源,在申请到无线资源之后,RLC将LLC数据队列的特征参数输入LLC提供的LLC回调函数,调取LLC保存的SNDCP数据队列的特征参数,再将SNDCP数据队列的特征参数输入SNDCP提供的SNDCP回调函数,调取SNDCP参数;
[0056] SNDCP将根据SNDCP参数分割组装所述压缩的上行数据得到的SNDCP数据包存入已设置的SNDCP全局数组,然后向LLC返回所述SNDCP全局数组的指针,LLC根据SNDCP全局数组的指针获取SNDCP全局数组中的SNDCP数据包并对SNDCP数据包按LLC帧格式进行组装,将组装得到的LLC数据包存入已设置的LLC全局数组,然后向RLC返回LLC全局数组的指针,RLC根据LLC全局数组的指针获取LLC全局数组中的LLC数据包并对LLC数据包进行处理,然后通过申请的无线资源进行发送。
[0057] 其中,RLC将保存的LLC数据队列的特征参数输入LLC提供的LLC回调函数是为了获取LLC数据包,但此时LLC中并不存在SNDCP数据包,所以LLC需将保存的SNDCP数据队列的特征参数输入SNDCP提供的SNDCP回调函数以获取到SNDCP数据包,然后再将SNDCP数据包组装成LLC数据包。另外,在将SNDCP数据包组装成LLC数据包过程中,还进行算校验以及加密等操作,此为现有技术,故在此不再赘述。
[0058] 本发明内存操作管理方法还包括以下步骤:
[0059] 当RLC中待发送的数据超过预设的上限阀值时,RLC通知SNDCP暂停发送SNDCP数据包;当RLC中待发送的数据下降到所述上限阀值内时,RLC通知SNDCP继续发送SNDCP数据包。
[0060] 其中,RLC通过发送逻辑链路层_子网依赖汇聚协议层_暂停_指示(LLC_SNDCP_SUSPEND_IND)消息通知SNDCP暂停发送SNDCP数据包。等RLC发送积压的数据一段时间后,使得RLC中待发送的数据下降到上限阀值内时,RLC通过发送逻辑链路层_子网依赖汇聚协议层_恢复_指示(LLC_SNDCP_RESUME_IND)消息通知SNDCP继续发送SNDCP数据包。这样,对于RLC来说,待发送的数据量控制在一定范围内,因此发送速率相对平滑。
[0061] 本发明内存操作管理方法还包括以下步骤:
[0062] 当RLC收到下行数据时,将下行数据组装成LLC数据包,并保存到申请的内存中,然后发送给LLC;
[0063] LLC对收到的LLC数据包进行解包,并将解包得到的SNDCP数据包在LLC数据包中的位置以及长度发送给SNDCP。
[0064] 其中,下行数据是指网络侧发送给RLC的数据。
[0065] 对于下行数据在GPRS传输面协议层的传输,由于每个消息所要传输的数据都是按目标层的帧格式进行组装,如果按上行数据的处理方法进行处理,来回地相互调用回调函数,则会增加程序的复杂度和出错率,反而得不偿失。因此,对下行数据的传输按上述过程进行处理。具体地说是:
[0066] RLC将收到的下行数据按LLC帧格式组装成LLC数据包,并保存到申请的内存中,然后通过逻辑链路_层确认数_据指示(RLC_DATA_IND)消息或逻辑链路层_非确认数据_指示(RLC_UNIDATA_IND)消息发送给LLC;
[0067] LLC对收到的LLC数据包按LLC帧格式进行解包得到SNDCP数据包在LLC数据包中的位置以及长度;这里,LLC不再重新申请内存,而是将解包得到的SNDCP数据包在LLC数据包中的位置以及长度直接发送给SNDCP,SNDCP再根据SNDCP数据包在LLC数据包中的位置以及长度从RLC申请的内存中获取SNDCP数据。
[0068] 为实现上述方法,本发明相应提供一种内存操作管理装置,如图2所示,该装置包括:设置模块10、SNDCP 20、LLC 30和RLC 40;其中,
[0069] 设置模块10,用于设置SNDCP数据队列、SNDCP全局数组、LLC数据队列、LLC全局数组;
[0070] SNDCP 20,用于压缩收到的上行数据,将压缩的上行数据进行分割标识后得到的SNDCP参数保存在SNDCP数据队列中,并将保存SNDCP参数后得到的SNDCP数据队列的特征参数发送给LLC 30;
[0071] LLC 30,用于将收到的SNDCP数据队列的特征参数保存在LLC数据队列中,并将保存SNDCP数据队列后得到的LLC数据队列的特征参数发送给RLC40;
[0072] RLC 40,用于将收到的LLC数据队列的特征参数输入LLC 30提供的LLC回调函数,调取LLC 30保存的SNDCP数据队列的特征参数,再将SNDCP数据队列的特征参数输入SNDCP 20提供的SNDCP回调函数,调取SNDCP参数;
[0073] SNDCP 20,还用于将根据SNDCP参数分割组装所述压缩的上行数据得到的SNDCP数据包存入SNDCP全局数组;
[0074] LLC 30,还用于获取SNDCP全局数组中的SNDCP数据包并对SNDCP数据包进行组装,将组装得到的LLC数据包存入LLC全局数组;
[0075] RLC 40,还用于获取LLC全局数组中的LLC数据包并对LLC数据包进行处理,然后通过申请的无线资源进行发送。
[0076] 其中,RLC 40进一步用于:当RLC 40中待发送的数据超过预设的上限阀值时,通知SNDCP 20暂停发送SNDCP数据包;当RLC 40中待发送的数据下降到所述上限阀值内时,通知SNDCP 20继续发送SNDCP数据包。
[0077] 其中,RLC 40进一步用于:当收到下行数据时,将下行数据组装成LLC数据包,并保存到申请的内存中,然后发送给LLC 30;LLC 30进一步用于:对收到的LLC数据包进行解包,并将解包得到的SNDCP数据包在LLC数据包中的位置以及长度发送给SNDCP 20。
[0078] 其中,SNDCP参数包括:分段号码、N-PDU、SNDCP数据在所述上行数据中的位置、及SNDCP数据的长度。
[0079] 其中,SNDCP数据队列的特征参数为SNDCP数据在所述SNDCP数据队列中的偏移量。
[0080] 其中,LLC数据队列的特征参数包括为SNDCP数据在LLC数据队列中的偏移量。
[0081] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
QQ群二维码
意见反馈