CN1414481A - 一种基于多业务多通道的数据收发处理方法 - Google Patents
一种基于多业务多通道的数据收发处理方法 Download PDFInfo
- Publication number
- CN1414481A CN1414481A CN02117925A CN02117925A CN1414481A CN 1414481 A CN1414481 A CN 1414481A CN 02117925 A CN02117925 A CN 02117925A CN 02117925 A CN02117925 A CN 02117925A CN 1414481 A CN1414481 A CN 1414481A
- Authority
- CN
- China
- Prior art keywords
- data
- idle
- pond
- processing method
- zone
- 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.)
- Granted
Links
Images
Landscapes
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于多业务多通道的数据收发处理方法,该方法包括:a)预先设置缓冲区标识符(BD)索引池、BD池,并在底层缓冲区中分配一段固定的内存空间作为存储不同通道收发数据的BD内存区域;b)当有通道要收发数据时,该通道将要收发的数据信息存储于BD池中,***先通过BD索引池分配一个空闲BD内存,再从BD池中读取所要收发的数据信息,将该数据信息存入所分配的BD内存中。采用该方法能够充分高效地利用内存空间,提高通道接口开发效率,降低通道接口维护难度。
Description
技术领域
本发明涉及数据通信中通道的数据收发处理技术,尤其涉及一种基于多业务多通道的数据收发处理方法。
背景技术
在现有的路由器接口卡数据收发过程中,底层需要完成向上向下的数据收发任务,每完成一次成功的收发,必须知道当前要收发的数据的指针、数据的长度以及要收发的数据属于哪一个接口等信息,而这些信息均保存在底层的缓冲区标识符(BD,Buffer Directer)表中。如图1所示的BD表,表示的是一个底层数据结构链,该数据结构链由两部分组成:待收发的数据存储空间BD和存储当前要收发的数据指针、数据长度以及待收发的数据属于哪一个接口等信息的BD池,每个接口卡对应一段BD内存和一个BD池。假设有n个通道,对应n个接口卡,那么BD内存n与BD池n就表示第n个接口卡对应的BD表部分。每段BD内存都用两个指针来维护:已经收发完成的数据指针fptr和尚未收发的数据指针tptr,通过这两个指针,可以获得正确的数据信息。
如图2所示,主机上的每个端口对应一个接口卡,当主机的端口n,即接口卡n,有数据需要收发时,端口n向主机发出中断请求信号,主机接收并响应中断,从BD池n内取回相应的数据收发信息,再通过BD内存n的指针tptr n索引,将所要收发的数据存入BD内存n,再由主机完成接口卡n的数据收发。上述数据结构链虽然简单,易于实现,但容易出现这种现象:某一时刻某些接口卡的BD内存不够用,而另一些接口卡的BD内存却空闲,使得BD内存空间不能被充分有效地利用,而且该方法需要维护多段BD内存,还需要维护各段BD内存的指针fptri和tptri,导致内存管理复杂化,增加了维护难度。同时,每开发一种接口卡,就需要编写匹配该接口卡的收发函数,降低了开发效率。
发明内容
本发明的目的是提供一种基于多业务多通道的数据收发处理方法,使其能够高效利用内存空间,提高通道接口开发效率,降低通道接口维护难度。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于多业务多通道的数据收发处理方法,该方法包括以下步骤:
a.预先设置缓冲区标识符(BD)索引池、BD池,并在底层缓冲区中分配一段固定的内存空间作为存储不同通道收发数据的BD内存区域;
b.当有通道要收发数据时,该通道将要收发的数据信息存储于BD池中,***先通过BD索引池分配一个空闲BD内存,再从BD池中读取所要收发的数据信息,将该数据信息存入所分配的BD内存中。
步骤a进一步包括:预先在底层缓冲区中分配固定的内存空间为BD表,并将该段内存空间分割为一个BD池区域、一个BD索引池区域和一段BD内存区域。
在BD索引池中存放有每个BD在内存空间的地址偏移量,该BD索引池设置有至少两个指针,管理调度BD索引池中的空闲BD和当前被占用BD。
其中,通过BD索引池管理调度BD的过程进一步包括:
a.将BD索引池设置为一循环链表,每个BD为循环链表中的一个节点,由两个指针分别指向该循环链表中空闲BD区域的头节点和尾节点,设定所有当前被占用BD位于两个指针之间;
b.当有数据进行收发时,***取出空闲BD区域头指针当前指向的空闲BDi来存储收发数据,然后下移空闲BD区域头指针;
c.当该BDi所存数据收发完毕后,将该BDi从当前位置删除,并通过空闲BD区域尾指针***空闲BD区域尾,然后下移空闲BD区域尾指针。
在上述方法中,由于BD索引池中的BD索引号是不连续的,所以不同通道在不同时间内可占用同一个BD。而且,所有通道进行数据收发时,可采用同一个BD池存放相关的数据信息,因此,所有通道进行数据收发时采用相同的收发函数。
由于本发明提供的基于多业务多通道的数据收发处理方法,采用BD索引池来分配BD,使所有的BD可以被不同的通道共用,达到了有效利用BD的目的。而且,本发明采用BD索引池来统一管理BD内存,减少了内存管理的复杂程度;不同通道共用同一个收发BD池,只需采用同一种收发函数,从而降低了新通道接口的开发难度,提高了新通道接口的开发效率,也因此提高了整个***的稳定性、可靠性及可维护性。
附图说明
图1为现有的BD表结构示意图;
图2为现有技术中端口数据收发处理的流程示意图;
图3为本发明的BD表结构示意图;
图4为BD索引池区域分配指示示意图;
图5为实际应用过程中BD空闲状态示意图;
图6为实际应用过程中BD被占用状态示意图;
图7为实际应用过程中BD被释放状态示意图;
图8为实际应用过程中BD被回填状态示意图;
图9为本发明中通道数据收发处理的流程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图及实施例对本发明进一步详细说明。
本实施例是将路由器中所有接口卡的底层数据收发BD统一管理,即所有接口卡共用一个BD表,进而将同异步串口、异步MODEM口、E1接口、BRI接口等多种收发函数统一为一套收发函数,减轻了接口卡的维护量,提高了接口卡的开发效率。其具体的实施方案如下:
图3为本发明实施例的BD表结构示意图,是在现有的BD表中新增一个BD索引池,即在内存开辟一段区域用作BD索引池,用来存放BD索引号,也就是BD在内存空间的地址偏移量,至少需要两个指针来维护BD索引池。在本实施例中,采用空闲BD区域指针Pending_Ptr作为头指针、被再用BD区域指针Done_Ptr作为尾指针来维护BD索引池。Pending_Ptr指向的BD索引号是当前空闲BD索引号的头,Done_Ptr指向的BD索引号是可以被再用的BD索引号的尾;一个BD池用来存放通道信息,即接口卡信息,这些信息包括通道号、数据指针、通道状态、数据长度等,不同的接口卡共用这一个BD池收发数据;不同接口卡所用到的BD都在一个大的BD表中循环,不按接口来划分,而是通过指针fptr和指针tptr来维护,以保证申请的BD能够被各个接口卡使用。
BD区域的使用与划分参照图4所示,通常将BD区域划分为空闲BD区域和被占用BD区域,本实施例中,为突出表示BD的使用状态与流程,又将空闲BD区域划分为空闲BD和可被再用BD两部分,Pending_Ptr指针以下指示的BD区域表示空闲区域,Done_Ptr指针以上指示的BD区域表示可被再用区域,Done_Ptr和Pending_Ptr之间的BD区域表示被占用区域,当然,两个指针的位置完全可以互换,Pending_Ptr指针在上,Done_Ptr指针在下,那么,Pending_Ptr指针以上指示的BD区域表示空闲区域,Done_Ptr指针以下指示的BD区域表示可被再用区域,只要保证两个指针之间的区域为被占用区域即可,以利于方便管理。所有BD可以通过一个循环链表来进行管理,且所有的BD都在这样一个流程中被循环使用:空闲→占用→释放→回填→被再用。
图9是本发明实施例的收发BD数据流程图,当某一通道有数据需要收发时,主机接收并响应中断,从BD池中取回所要收发的数据信息,同时通过指针Pending_Ptr在BD索引池空闲BD区域段找到空闲BD索引号,通过空闲BD索引号找到对应的空闲BD,将要收发的数据填入该BD内存中,再由主机完成数据的收发。
下面以BD24为例,结合图5到图8,具体阐述本发明中BD表的使用流程。
图5到图8表示了BD24从空闲→占用→释放→回填的使用状态流程。当某一通道有数据需要收发时,主机接收并响应中断,从BD池中取回所要收发的数据信息,同时通过指针Pending_Ptr在BD索引池空闲BD区域段找到空闲BD索引号24,通过BD索引号24找到对应的空闲BD24,如图5所示;主机将要收发的数据填入BD24,同时Pending_Ptr指针加1,指向下一个空闲BD128,此时BD24处于被占用状态,BD24的索引号加入到BD索引池的被占用区域段,如图6所示;数据收发完成后,BD24被释放,即BD24的索引号24从被占用区域段去除,如图7所示;主机将BD24的索引号24回填到BD索引池的可被再用区域段,同时Done_Ptr指针加1,指向新增加的BD索引号24,BD24可被再次使用,如图8所示。从图5到图8还可以看出,当Pending_Ptr指针指向BD索引池尾时,即空闲BD已经用完,根据程序的判断,Pending_Ptr指针返回BD索引池头,指向可再用BD区域段,可再用BD区域段转化成了空闲BD区域段,实现了BD的循环使用。上述方法中,所有的BD都在一个BD表中循环,通过指针Done_Ptr和Pending_Ptr的维护,可以避免数据收发时占用尚未收发完毕数据的BD,从而保证了收发BD池的正常运转。
从图5到图8还可以看出,BD索引池中的BD可以是不连续的,也就是说BD中任何一块被释放的内存都有可能被下一次收发占用,表明不同接口卡可以在不同时间内占用同一个BD,这对于原来每个通道必须占用不同的连续的BD空间有了很大改进,保证了BD内存的高效利用。
从图9还可以看出,由于收发BD的统一,每个通道都可以采用这一个BD池进行数据的收发,进而使得收发函数的统一成为可能。在通道接口开发过程中,每个通道只需要初始化与自己相关的数据流特性的芯片寄存器,调用统一的收发函数即可,不必考虑数据的收发流程,大大简化了通道接口开发的复杂度,缩短了开发周期。
本发明剥离了收发BD与接口特性的关系,将多个通道的收发统一成一个独立的模块,可为多个通道共享,开发通道接口只须关心本接口的物理特性,不必关心接口的收发流程,提高了通道接口的开发效率,降低了通道接口的开发难度。
本发明采用统一收发BD队列的方法处理不同通道的数据收发,提高了内存的利用率,同时也增强了通道的可维护性。本发明的方法适用于多通道多业务的数据发送和接收,这些通道可以是相同速率的,也可以是不同速率的,但在采用一个BD池时,同一时刻只能用于数据发送或数据接收,不能同时进行数据的接收和发送,以避免收发的数据发生冲突,如果采用两个或两个以上BD池,则可分别设置收BD池和发BD池,同时进行数据的接收和发送。
Claims (8)
1、一种基于多业务多通道的数据收发处理方法,其特征在于该方法包括以下步骤:
a.预先设置缓冲区标识符(BD)索引池、BD池,并在底层缓冲区中分配一段固定的内存空间作为存储不同通道收发数据的BD内存区域;
b.当有通道要收发数据时,该通道将要收发的数据信息存储于BD池中,***先通过BD索引池分配一个空闲BD内存,再从BD池中读取所要收发的数据信息,将该数据信息存入所分配的BD内存中。
2、根据权利要求1所述的数据收发处理方法,其特征在于步骤a进一步包括:预先在底层缓冲区中分配固定的内存空间为BD表,并将该段内存空间分割为一个BD池区域、一个BD索引池区域和一段BD内存区域。
3、根据权利要求1或2所述的数据收发处理方法,其特征在于该方法进一步包括:设定所有通道进行数据收发时,采用同一个BD池存放相关的数据信息。
4、根据权利要求1或2所述的数据收发处理方法,其特征在于该方法进一步包括:将每个BD在内存空间的地址偏移量存放于BD索引池中。
5、根据权利要求4所述的数据收发处理方法,其特征在于该方法进一步包括:预先设置至少两个指针管理调度BD索引池中的空闲BD和当前被占用BD。
6、根据权利要求5所述的数据收发处理方法,其特征在于BD索引池的管理调度进一步包括:
a.将BD索引池设置为一循环链表,每个BD为循环链表中的一个节点,由两个指针分别指向该循环链表中空闲BD区域的头节点和尾节点,设定所有当前被占用BD位于两个指针之间;
b.当有数据进行收发时,***取出空闲BD区域头指针当前指向的空闲BDi来存储收发数据,然后下移空闲BD区域头指针;
c.当该BDi所存数据收发完毕后,将该BDi从当前位置删除,并通过空闲BD区域尾指针***空闲BD区域尾,然后下移空闲BD区域尾指针。
7、根据权利要求4所述的数据收发处理方法,其特征在于:不同通道在不同时间内可占用同一个BD。
8、根据权利要求1所述的数据收发处理方法,其特征在于:所有通道进行数据收发时采用相同的收发函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021179255A CN1189826C (zh) | 2002-05-23 | 2002-05-23 | 一种基于多业务多通道的数据收发处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021179255A CN1189826C (zh) | 2002-05-23 | 2002-05-23 | 一种基于多业务多通道的数据收发处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1414481A true CN1414481A (zh) | 2003-04-30 |
CN1189826C CN1189826C (zh) | 2005-02-16 |
Family
ID=4744573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021179255A Expired - Fee Related CN1189826C (zh) | 2002-05-23 | 2002-05-23 | 一种基于多业务多通道的数据收发处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1189826C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361093C (zh) * | 2004-12-07 | 2008-01-09 | 华为技术有限公司 | 一种处理器中使用缓存区的方法 |
CN101146031B (zh) * | 2006-12-05 | 2012-02-22 | 中兴通讯股份有限公司 | 无线通讯***中前向业务数据的存储方法及其处理方法 |
CN102375790A (zh) * | 2010-08-12 | 2012-03-14 | 杭州华三通信技术有限公司 | 共享总线传输***及方法 |
CN104458261A (zh) * | 2014-11-06 | 2015-03-25 | 上海汽车集团股份有限公司 | 多接口发动机测控***数据队列处理方法 |
CN104505109A (zh) * | 2014-12-29 | 2015-04-08 | 珠海全志科技股份有限公司 | 多媒体播放器的音轨切换方法、***及对应播放器和设备 |
-
2002
- 2002-05-23 CN CNB021179255A patent/CN1189826C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361093C (zh) * | 2004-12-07 | 2008-01-09 | 华为技术有限公司 | 一种处理器中使用缓存区的方法 |
CN101146031B (zh) * | 2006-12-05 | 2012-02-22 | 中兴通讯股份有限公司 | 无线通讯***中前向业务数据的存储方法及其处理方法 |
CN102375790A (zh) * | 2010-08-12 | 2012-03-14 | 杭州华三通信技术有限公司 | 共享总线传输***及方法 |
CN104458261A (zh) * | 2014-11-06 | 2015-03-25 | 上海汽车集团股份有限公司 | 多接口发动机测控***数据队列处理方法 |
CN104505109A (zh) * | 2014-12-29 | 2015-04-08 | 珠海全志科技股份有限公司 | 多媒体播放器的音轨切换方法、***及对应播放器和设备 |
CN104505109B (zh) * | 2014-12-29 | 2017-06-30 | 珠海全志科技股份有限公司 | 多媒体播放器的音轨切换方法、***及对应播放器和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1189826C (zh) | 2005-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100499565C (zh) | 自由表和环形数据结构管理 | |
US5752031A (en) | Queue object for controlling concurrency in a computer system | |
CN1038160C (zh) | 多处理器数据存储器共享 | |
CN100517236C (zh) | 智能卡嵌入式操作***及其控制方法 | |
US6829769B2 (en) | High performance interprocess communication | |
CN100594487C (zh) | 调度方法和实时处理*** | |
CN100557570C (zh) | 多处理器*** | |
CA2080187C (en) | Multi-media computer operating system and method | |
CN100351798C (zh) | 在多线程网络处理器中线程信令的分组处理方法和*** | |
US5448735A (en) | Task organization for execution using linked records referencing code modules | |
CN101594299B (zh) | 基于链表的交换网络中队列缓冲管理方法 | |
CN103914399B (zh) | 一种并行计算***中的磁盘缓存方法及装置 | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
CN101178664A (zh) | 实时操作***中的任务调度方法及*** | |
CN110704465B (zh) | 一种处理业务工单表的方法、装置及存储介质 | |
CN101854300A (zh) | 一种实现CANopen从站的方法 | |
US6304891B1 (en) | Execution control for processor tasks | |
CN102047218A (zh) | 进程中的调度器实例 | |
CN103701934A (zh) | 一种资源优化调度方法及虚拟机宿主机优化选择方法 | |
CN109814994A (zh) | 一种动态调度线程池的方法及终端 | |
US20120079494A1 (en) | System And Method For Maximizing Data Processing Throughput Via Application Load Adaptive Scheduling And Content Switching | |
CN1702623A (zh) | 一种微内核嵌入式实时操作***的任务级资源管理方法 | |
CN1194408A (zh) | 对象管理容器及其管理方法 | |
CN1189826C (zh) | 一种基于多业务多通道的数据收发处理方法 | |
US20060047874A1 (en) | Resource management apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050216 Termination date: 20150523 |
|
EXPY | Termination of patent right or utility model |