数据缓存方法和装置

阅读: 评论:0

著录项
  • CN201811203720.2
  • 20181016
  • CN109547727A
  • 20190329
  • 视联动力信息技术股份有限公司
  • 崔博;朱道彦;潘庭勇;杨春晖
  • H04N7/15
  • H04N7/15 H04N7/14 H04N21/218 H04N21/231

  • 北京市东城区青龙胡同1号歌华大厦A1103-1113
  • 北京(11)
  • 北京润泽恒知识产权代理有限公司
  • 莎日娜
摘要
本发明提供了一种数据缓存方法及装置,应用于视联网中。其中方法包括:视联网终端通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;视联网终端接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。本发明可以仅在初始时调用一次操作系统中的内存申请函数申请较大的内存作为内存池,在后续的数据缓存时直接从内存池中分配内存块即可,因此无需动态地、频繁地调用操作系统,能够避免频繁调用时内存申请函数产生段错误,提高系统的稳定性。
权利要求

1.一种数据缓存方法,其特征在于,所述方法应用于视联网中,所述视联网包括视联网终端和视联网服务器,所述方法包括:

所述视联网终端通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;

所述视联网终端接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;

所述视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。

2.根据权利要求1所述的方法,其特征在于,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,所述视联网终端从所述内存池中分配所述数据包所需的目标内存块的步骤,包括:

所述视联网终端判断所述内存池中,从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量;

所述视联网终端在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块;

所述视联网终端在判断结果为否时,将所述分配指针指向所述内存池的顶部内存块,并从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

3.根据权利要求2所述的方法,其特征在于,所述从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块的步骤,包括:

所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量;

所述视联网终端在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块;

所述视联网终端在判断结果为否时,继续返回执行所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量的步骤。

4.根据权利要求1或2所述的方法,其特征在于,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,在所述视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中的步骤之后,还包括:

所述视联网终端将所述分配指针指向最后一个目标内存块的下一个内存块。

5.根据权利要求1所述的方法,其特征在于,还包括:

所述视联网终端按照所述数据包缓存的时间从早到晚的顺序,从所述内存池中提取所述数据包,释放用于缓存提取的数据包的内存块。

6.一种数据缓存装置,其特征在于,所述装置应用于视联网中,所述视联网包括视联网终端和视联网服务器,所述视联网终端包括:

申请模块,用于通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;

接收模块,用于接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;

分配模块,用于从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。

7.根据权利要求6所述的装置,其特征在于,所述分配模块包括:

判断单元,用于判断所述内存池中,从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量;

内存分配单元,用于在所述判断单元判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块;在所述判断单元判断结果为否时,将所述分配指针指向所述内存池的顶部内存块,并从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

8.根据权利要求7所述的装置,其特征在于,所述内存分配单元具体用于:

判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量;

在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块;

在判断结果为否时,继续返回执行所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量的步骤。

9.根据权利要求6或7所述的装置,其特征在于,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,所述视联网终端还包括:

调整模块,用于在所述分配模块从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中之后,将所述分配指针指向最后一个目标内存块的下一个内存块。

10.根据权利要求6所述的装置,其特征在于,所述视联网终端还包括:

释放模块,用于按照所述数据包缓存的时间从早到晚的顺序,从所述内存池中提取所述数据包,释放用于缓存提取的数据包的内存块。

说明书
技术领域

本发明涉及视联网技术领域,特别是涉及一种数据缓存方法和一种数据缓存装置。

随着网络科技的快速发展,视频会议、视频教学、可视电话等双向通信在用户的生活、工作、学习等方面广泛普及。在通信过程中,通信双方的终端之间可以相互传输数据。终端在接收到数据后,先将数据缓存并进行相应处理后,再对数据进行解码、显示等。

现有技术中,终端每次接收到数据后,通过调用操作系统申请该数据所需大小的内存,因此需要频繁地调用操作系统,而频繁调用会导致系统出现错误,从而降低系统的稳定性。

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据缓存方法和相应的一种数据缓存装置。

为了解决上述问题,本发明实施例公开了一种数据缓存方法,所述方法应用于视联网中,所述视联网包括视联网终端和视联网服务器,所述方法包括:

所述视联网终端通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;

所述视联网终端接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;

所述视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。

优选地,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,所述视联网终端从所述内存池中分配所述数据包所需的目标内存块的步骤,包括:所述视联网终端判断所述内存池中,从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量;所述视联网终端在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块;所述视联网终端在判断结果为否时,将所述分配指针指向所述内存池的顶部内存块,并从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

优选地,所述从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块的步骤,包括:所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量;所述视联网终端在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块;所述视联网终端在判断结果为否时,继续返回执行所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量的步骤。

优选地,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,在所述视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中的步骤之后,还包括:所述视联网终端将所述分配指针指向最后一个目标内存块的下一个内存块。

优选地,还包括:所述视联网终端按照所述数据包缓存的时间从早到晚的顺序,从所述内存池中提取所述数据包,释放用于缓存提取的数据包的内存块。

另一方面,本发明实施例还公开了一种数据缓存装置,所述装置应用于视联网中,所述视联网包括视联网终端和视联网服务器,所述视联网终端包括:

申请模块,用于通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;

接收模块,用于接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;

分配模块,用于从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。

优选地,所述分配模块包括:判断单元,用于判断所述内存池中,从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量;内存分配单元,用于在所述判断单元判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块;在所述判断单元判断结果为否时,将所述分配指针指向所述内存池的顶部内存块,并从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

优选地,所述内存分配单元具体用于:判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量;在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块;在判断结果为否时,继续返回执行所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量的步骤。

优选地,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,所述视联网终端还包括:调整模块,用于在所述分配模块从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中之后,将所述分配指针指向最后一个目标内存块的下一个内存块。

优选地,所述视联网终端还包括:释放模块,用于按照所述数据包缓存的时间从早到晚的顺序,从所述内存池中提取所述数据包,释放用于缓存提取的数据包的内存块。

本发明实施例中,视联网终端通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;视联网终端接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。由此可知,本发明实施例中,可以仅在初始时调用一次操作系统中的内存申请函数申请较大的内存作为内存池,在后续的数据缓存时直接从内存池中分配内存块即可,因此无需动态地、频繁地调用操作系统,能够避免频繁调用时内存申请函数产生段错误,提高系统的稳定性。

图1是本发明的一种视联网的组网示意图;

图2是本发明的一种节点服务器的硬件结构示意图;

图3是本发明的一种接入交换机的硬件结构示意图;

图4是本发明的一种以太网协转网关的硬件结构示意图;

图5是本发明实施例一的一种数据缓存方法的步骤流程图;

图6是本发明实施例二的一种数据缓存装置的结构框图。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

视联网是网络发展的重要里程碑,是一个实时网络,能够实现高清视频实时传输,将众多互联网应用推向高清视频化,高清面对面。

视联网采用实时高清视频交换技术,可以在一个网络平台上将所需的服务,如高清视频会议、视频监控、智能化监控分析、应急指挥、数字广播电视、延时电视、网络教学、现场直播、VOD点播、电视邮件、个性录制(PVR)、内网(自办)频道、智能化视频播控、信息发布等数十种视频、语音、图片、文字、通讯、数据等服务全部整合在一个系统平台,通过电视或电脑实现高清品质视频播放。

为使本领域技术人员更好地理解本发明实施例,以下对视联网进行介绍:

视联网所应用的部分技术如下所述:

网络技术(Network Technology)

视联网的网络技术创新改良了传统以太网(Ethernet),以面对网络上潜在的巨大视频流量。不同于单纯的网络分组包交换(Packet Switching)或网络电路交换(CircuitSwitching),视联网技术采用Packet Switching满足Streaming需求。视联网技术具备分组交换的灵活、简单和低价,同时具备电路交换的品质和安全保证,实现了全网交换式虚拟电路,以及数据格式的无缝连接。

交换技术(Switching Technology)

视联网采用以太网的异步和包交换两个优点,在全兼容的前提下消除了以太网缺陷,具备全网端到端无缝连接,直通用户终端,直接承载IP数据包。用户数据在全网范围内不需任何格式转换。视联网是以太网的更高级形态,是一个实时交换平台,能够实现目前互联网无法实现的全网大规模高清视频实时传输,将众多网络视频应用推向高清化、统一化。

服务器技术(Server Technology)

视联网和统一视频平台上的服务器技术不同于传统意义上的服务器,它的流媒体传输是建立在面向连接的基础上,其数据处理能力与流量、通讯时间无关,单个网络层就能够包含信令及数据传输。对于语音和视频业务来说,视联网和统一视频平台流媒体处理的复杂度比数据处理简单许多,效率比传统服务器大大提高了百倍以上。

储存器技术(Storage Technology)

统一视频平台的超高速储存器技术为了适应超大容量和超大流量的媒体内容而采用了最先进的实时操作系统,将服务器指令中的节目信息映射到具体的硬盘空间,媒体内容不再经过服务器,瞬间直接送达到用户终端,用户等待一般时间小于0.2秒。最优化的扇区分布大大减少了硬盘磁头寻道的机械运动,资源消耗仅占同等级IP互联网的20%,但产生大于传统硬盘阵列3倍的并发流量,综合效率提升10倍以上。

网络安全技术(Network Security Technology)

视联网的结构性设计通过每次服务单独许可制、设备与用户数据完全隔离等方式从结构上彻底根除了困扰互联网的网络安全问题,一般不需要杀毒程序、防火墙,杜绝了黑客与病毒的攻击,为用户提供结构性的无忧安全网络。

服务创新技术(Service Innovation Technology)

统一视频平台将业务与传输融合在一起,不论是单个用户、私网用户还是一个网络的总合,都不过是一次自动连接。用户终端、机顶盒或PC直接连到统一视频平台,获得丰富多彩的各种形态的多媒体视频服务。统一视频平台采用“菜谱式”配表模式来替代传统的复杂应用编程,可以使用非常少的代码即可实现复杂的应用,实现“无限量”的新业务创新。

视联网的组网如下所述:

视联网是一种集中控制的网络结构,该网络可以是树型网、星型网、环状网等等类型,但在此基础上网络中需要有集中控制节点来控制整个网络。

如图1所示,视联网分为接入网和城域网两部分。

接入网部分的设备主要可以分为3类:节点服务器,接入交换机,终端(包括各种机顶盒、编码板、存储器等)。节点服务器与接入交换机相连,接入交换机可以与多个终端相连,并可以连接以太网。

其中,节点服务器是接入网中起集中控制功能的节点,可控制接入交换机和终端。节点服务器可直接与接入交换机相连,也可以直接与终端相连。

类似的,城域网部分的设备也可以分为3类:城域服务器,节点交换机,节点服务器。城域服务器与节点交换机相连,节点交换机可以与多个节点服务器相连。

其中,节点服务器即为接入网部分的节点服务器,即节点服务器既属于接入网部分,又属于城域网部分。

城域服务器是城域网中起集中控制功能的节点,可控制节点交换机和节点服务器。城域服务器可直接连接节点交换机,也可直接连接节点服务器。

由此可见,整个视联网络是一种分层集中控制的网络结构,而节点服务器和城域服务器下控制的网络可以是树型、星型、环状等各种结构。

形象地称,接入网部分可以组成统一视频平台(虚线圈中部分),多个统一视频平台可以组成视联网;每个统一视频平台可以通过城域以及广域视联网互联互通。

1、视联网设备分类

1.1本发明实施例的视联网中的设备主要可以分为3类:服务器,交换机(包括以太网网关),终端(包括各种机顶盒,编码板,存储器等)。视联网整体上可以分为城域网(或者国家网、全球网等)和接入网。

1.2其中接入网部分的设备主要可以分为3类:节点服务器,接入交换机(包括以太网网关),终端(包括各种机顶盒,编码板,存储器等)。

各接入网设备的具体硬件结构为:

节点服务器:

如图2所示,主要包括网络接口模块201、交换引擎模块202、CPU模块203、磁盘阵列模块204;

其中,网络接口模块201,CPU模块203、磁盘阵列模块204进来的包均进入交换引擎模块202;交换引擎模块202对进来的包进行查地址表205的操作,从而获得包的导向信息;并根据包的导向信息把该包存入对应的包缓存器206的队列;如果包缓存器206的队列接近满,则丢弃;交换引擎模202轮询所有包缓存器队列,如果满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。磁盘阵列模块204主要实现对硬盘的控制,包括对硬盘的初始化、读写等操作;CPU模块203主要负责与接入交换机、终端(图中未示出)之间的协议处理,对地址表205(包括下行协议包地址表、上行协议包地址表、数据包地址表)的配置,以及,对磁盘阵列模块204的配置。

接入交换机:

如图3所示,主要包括网络接口模块(下行网络接口模块301、上行网络接口模块302)、交换引擎模块303和CPU模块304;

其中,下行网络接口模块301进来的包(上行数据)进入包检测模块305;包检测模块305检测包的目地地址(DA)、源地址(SA)、数据包类型及包长度是否符合要求,如果符合,则分配相应的流标识符(stream-id),并进入交换引擎模块303,否则丢弃;上行网络接口模块302进来的包(下行数据)进入交换引擎模块303;CPU模块204进来的数据包进入交换引擎模块303;交换引擎模块303对进来的包进行查地址表306的操作,从而获得包的导向信息;如果进入交换引擎模块303的包是下行网络接口往上行网络接口去的,则结合流标识符(stream-id)把该包存入对应的包缓存器307的队列;如果该包缓存器307的队列接近满,则丢弃;如果进入交换引擎模块303的包不是下行网络接口往上行网络接口去的,则根据包的导向信息,把该数据包存入对应的包缓存器307的队列;如果该包缓存器307的队列接近满,则丢弃。

交换引擎模块303轮询所有包缓存器队列,在本发明实施例中分两种情形:

如果该队列是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零;3)获得码率控制模块产生的令牌;

如果该队列不是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。

码率控制模块208是由CPU模块204来配置的,在可编程的间隔内对所有下行网络接口往上行网络接口去的包缓存器队列产生令牌,用以控制上行转发的码率。

CPU模块304主要负责与节点服务器之间的协议处理,对地址表306的配置,以及,对码率控制模块308的配置。

以太网协转网关:

如图4所示,主要包括网络接口模块(下行网络接口模块401、上行网络接口模块402)、交换引擎模块403、CPU模块404、包检测模块405、码率控制模块408、地址表406、包缓存器407和MAC添加模块409、MAC删除模块410。

其中,下行网络接口模块401进来的数据包进入包检测模块405;包检测模块405检测数据包的以太网MAC DA、以太网MAC SA、以太网length or frame type、视联网目的地址DA、视联网源地址SA、视联网数据包类型及包长度是否符合要求,如果符合则分配相应的流标识符(stream-id);然后,由MAC删除模块410减去MAC DA、MAC SA、length or frame type(2byte),并进入相应的接收缓存,否则丢弃;

下行网络接口模块401检测该端口的发送缓存,如果有包则根据包的视联网目的地址DA获知对应的终端的以太网MAC DA,添加终端的以太网MAC DA、以太网协转网关的MACSA、以太网length or frame type,并发送。

以太网协转网关中其他模块的功能与接入交换机类似。

终端:

主要包括网络接口模块、业务处理模块和CPU模块;例如,机顶盒主要包括网络接口模块、视音频编解码引擎模块、CPU模块;编码板主要包括网络接口模块、视音频编码引擎模块、CPU模块;存储器主要包括网络接口模块、CPU模块和磁盘阵列模块。

1.3城域网部分的设备主要可以分为2类:节点服务器,节点交换机,城域服务器。其中,节点交换机主要包括网络接口模块、交换引擎模块和CPU模块;城域服务器主要包括网络接口模块、交换引擎模块和CPU模块构成。

2、视联网数据包定义

2.1接入网数据包定义

接入网的数据包主要包括以下几部分:目的地址(DA)、源地址(SA)、保留字节、payload(PDU)、CRC。

如下表所示,接入网的数据包主要包括以下几部分:

DA SA Reserved Payload CRC

其中:

目的地址(DA)由8个字节(byte)组成,第一个字节表示数据包的类型(例如各种协议包、组播数据包、单播数据包等),最多有256种可能,第二字节到第六字节为城域网地址,第七、第八字节为接入网地址;

源地址(SA)也是由8个字节(byte)组成,定义与目的地址(DA)相同;

保留字节由2个字节组成;

payload部分根据不同的数据包的类型有不同的长度,如果是各种协议包的话是64个字节,如果是单组播数据包话是32+1024=1056个字节,当然并不仅仅限于以上2种;

CRC有4个字节组成,其计算方法遵循标准的以太网CRC算法。

2.2城域网数据包定义

城域网的拓扑是图型,两个设备之间可能有2种、甚至2种以上的连接,即节点交换机和节点服务器、节点交换机和节点交换机、节点交换机和节点服务器之间都可能超过2种连接。但是,城域网设备的城域网地址却是唯一的,为了精确描述城域网设备之间的连接关系,在本发明实施例中引入参数:标签,来唯一描述一个城域网设备。

本说明书中标签的定义和MPLS(Multi-Protocol Label Switch,多协议标签交换)的标签的定义类似,假设设备A和设备B之间有两个连接,那么数据包从设备A到设备B就有2个标签,数据包从设备B到设备A也有2个标签。标签分入标签、出标签,假设数据包进入设备A的标签(入标签)是0x0000,这个数据包离开设备A时的标签(出标签)可能就变成了0x0001。城域网的入网流程是集中控制下的入网过程,也就意味着城域网的地址分配、标签分配都是由城域服务器主导的,节点交换机、节点服务器都是被动的执行而已,这一点与MPLS的标签分配是不同的,MPLS的标签分配是交换机、服务器互相协商的结果。

如下表所示,城域网的数据包主要包括以下几部分:

DA SA Reserved 标签 Payload CRC

即目的地址(DA)、源地址(SA)、保留字节(Reserved)、标签、payload(PDU)、CRC。其中,标签的格式可以参考如下定义:标签是32bit,其中高16bit保留,只用低16bit,它的位置是在数据包的保留字节和payload之间。

实施例一

本发明实施例的数据缓存方法可以应用于视联网中。在视联网中可以包括视联网终端和视联网服务器(具体可以为上述的节点服务器),一个视联网服务器可以接入多个视联网终端。本发明实施例的数据缓存方法具体可以应用于视联网终端中。视联网终端是视联网上业务落地设备,视联网业务的实际参与者或服务者,视联网终端可以为各种机顶盒、流媒体网关、存储网关、媒体合成器、编码板,等等。视联网终端需要注册到视联网服务器上方可进行正常业务。

参照图5,示出了本发明实施例一的一种数据缓存方法的步骤流程图。

本发明实施例的数据缓存方法可以包括以下步骤:

步骤501,视联网终端通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池。

本发明实施例的数据缓存方法可以应用于基于视联网的通信过程中,如视频会议、视频教学、可视电话、发布直播、收看直播,等等。

比如,以视频会议为例,在视频会议的通信过程中,发送方的视联网终端(比如会议发言方)可以基于视联网协议将采集的视频数据封装为视频数据包,并通过视联网将视频数据包发送到视联网服务器。视频数据包中可以包括发送方的视联网终端的信息及接收方的视联网终端的信息等,视联网服务器可以基于视联网协议,通过视联网将视频数据包下发至接收方的视联网终端(比如会议参会方)。接收方的视联网终端在接收到视频数据包后,先对视频数据包进行缓存,并进行相关处理,如对乱序、丢包的处理等等,处理之后对视频数据包进行解码,并显示相应视频。

本发明实施例主要描述接收方的视联网终端,在接收到视联网服务器下发的数据包之后的对数据包的缓存过程。因此,本发明实施例中所涉及的视联网终端为接收方的视联网终端。

如果不做预先处理,那么视联网终端每次在接收到视联网服务器下发的数据包后,均会调用操作系统中预设的内存申请函数,向操作系统申请当前数据包所需大小的内存,用于缓存当前数据包。但是,该种方式会导致频繁调用操作系统的内存申请函数,从而容易使得内存申请函数本身产生段错误,降低系统的稳定性。

因此,本发明实施例中针对上述问题提出了预先创建内存池的方案。在初始时,比如视联网终端开机启动后,视联网终端可以通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池。因此,本发明实施例中视联网终端是在接收到数据包之前,预先申请设定数量的内存块,利用这些内存块创建内存池,该内存池用于缓存后续接收到的数据包。对于调用内存申请函数申请内存块的具体过程,本领域技术人员根据实际经验进行相关处理即可,本发明实施例对此不再详细论述。

其中,对于内存申请函数,本领域技术人员根据实际经验选用任意适用的内存申请函数即可,本发明实施例对此不作限制。比如,内存申请函数可以选用kmalloc函数,vmalloc函数,_get_free_page函数,malloc函数族,alloca函数,等等。对于设定数量,本领域技术人员根据实际经验选用任意适用的数值即可,本发明实施例对此不作限制。比如,设定数量可以选用100、150、200,等等。

步骤502,视联网终端接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包。

在一种优选实施方式中,视联网服务器可以基于视联网协议,按照对视联网终端(即接收方的视联网终端)配置的下行通信链路,向视联网终端下发数据包,该数据包具体可以为发送方的视联网终端发送至视联网服务器的数据包。其中,数据包可以为视频数据包、音频数据包,等等。

在实际应用中,视联网为具有集中控制功能的网络,包括主控服务器和下级网络设备,该下级网络设备包括终端,视联网的核心构思之一在于,通过由主控服务器通知交换设备针对当次服务的下行通信链路配表,然后基于该配置的表进行数据包的传送。

即,视联网中的通信方法包括:

主控服务器配置当次服务的下行通信链路。

将源终端(如发送方的视联网终端)发送的当次服务的数据包,按照所述下行通信链路传送至目标终端(如接收方的视联网终端)。

在本发明实施例中,配置当次服务的下行通信链路包括:通知当次服务的下行通信链路所涉及的交换设备配表。

进一步而言,按照下行通信链路传送包括:查询所配置的表,交换设备对所接收的数据包通过相应端口进行传送。

在具体实现中,服务包括单播通信服务和组播通信服务。即无论是组播通信还是单播通信,都可以采用上述配表—用表的核心构思实现视联网中的通信。

如前所述,视联网包括接入网部分,在接入网中,该主控服务器为节点服务器,下级网络设备包括接入交换机和终端。

对于接入网中的单播通信服务而言,所述主控服务器配置当次服务的下行通信链路的步骤可以包括以下步骤:

子步骤S11,主控服务器依据源终端发起的服务请求协议包,获取当次服务的下行通信链路信息,下行通信链路信息包括,参与当次服务的主控服务器和接入交换机的下行通信端口信息。

子步骤S12,主控服务器依据主控服务器的下行通信端口信息,在其内部的数据包地址表中设置当次服务的数据包所导向的下行端口;并依据接入交换机的下行通信端口信息,向相应的接入交换机发送端口配置命令。

子步骤S13,接入交换机依据端口配置命令在其内部的数据包地址表中,设置当次服务的数据包所导向的下行端口。

对于接入网中的组播通信服务(如视频会议)而言,主控服务器获取当次服务的下行通信链路信息的步骤可以包括以下子步骤:

子步骤S21,主控服务器获得目标终端发起的申请组播通信服务的服务请求协议包,服务请求协议包中包括服务类型信息、服务内容信息和目标终端的接入网地址。

其中,服务内容信息中包括服务号码。

子步骤S22,主控服务器依据所述服务号码在预置的内容-地址映射表中,提取源终端的接入网地址。

子步骤S23,主控服务器获取源终端对应的组播地址,并分配给目标终端;以及,依据服务类型信息、源终端和目标终端的接入网地址,获取当次组播服务的通信链路信息。

步骤503,视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。

视联网终端接收到视联网服务器下发的数据包后,从预先创建的内存池中分配该数据包所需的内存块。

在具体实现中,视联网终端接收到的数据包为基于视联网的,这些数据包具有先收到,先处理的特点,因此本发明实施例中可以采用对内存池中的内存块顺序分配、顺序释放的方式。

因此,本发明实施例内存池中的内存块可以按顺序排列。比如,如果内存池中包括100个内存块,那么这100个内存块可以依据各自的编号,按照从上到下的顺序排列为1~100,其中内存块1为内存池的顶部内存块,内存块100为内存池的底部内存块。

在一种优选实施方式中,步骤503可以包括以下子步骤:

子步骤A1,视联网终端判断所述内存池中,从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量。若是,则执行子步骤A2;若否,则执行子步骤A3。

视联网终端接收到的数据包可以包括该数据包的大小等信息。视联网终端根据数据包的大小可以确定该数据包所需内存块的数量。比如,如果接收到的数据包的大小为1MB,每个内存块可以存储的数据大小为128KB,那么该数据包所需的内存块数量则为8。

视联网终端可以预先针对内存池设置分配指针,该分配指针用于指示分配内存块时的开始位置。因此,视联网终端可以判断从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量。

比如,如果内存池中包括内存块1~内存块100这100个内存块,分配指针当前指向的内存块为内存块93,那么从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量为8,上述接收到的数据包所需的内存块数量为8,因此可以确定从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量等于所述数据包所需内存块的数量。如果内存池中包括内存块1~内存块100这100个内存块,分配指针当前指向的内存块为内存块98,那么从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量为3,上述接收到的数据包所需的内存块数量为8,因此可以确定从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量小于所述数据包所需内存块的数量。

子步骤A2,视联网终端在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

如果从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量大于或等于所述数据包所需内存块的数量,则无需调整分配指针的位置,可以从分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

在一种优选实施方式中,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块的步骤可以包括:

a1,视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量。若是,则执行a2;若否,则继续返回执行a1。

虽然从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量大于或等于所述数据包所需内存块的数量,但是这些剩余内存块有可能是空闲的,也有可能是占用的。因此本发明实施例并非直接从剩余内存块中分配,而是可以进一步进行判断,判断剩余内存块中的空闲内存块的数量是否大于或等于所述数据包所需内存块的数量。

a2,视联网终端在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块。

如果从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量大于或等于所述数据包所需内存块的数量,则视联网终端可以从分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块。

比如,如果分配指针当前指向的内存块为内存块93,那么从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量为8,上述接收到的数据包所需的内存块数量为8,而剩余的8个内存块中,内存块93~内存块100这8个内存块均是空闲的,因此可以确定从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量等于所述数据包所需内存块的数量。因此,可以从内存块93开始,按向下顺序分配内存块93~内存块100这8个空闲内存块作为所述数据包所需的目标内存块。

如果分配指针当前指向的内存块为内存块93,那么从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量为8,上述接收到的数据包所需的内存块数量为8,而剩余的8个内存块中,内存块93~内存块98这6个内存块是空闲的,而内存块99和内存块100这两个内存块是占用的,因此可以确定从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量小于所述数据包所需内存块的数量。考虑到数据包是先缓存的先释放,因此如果等待一段时间后,占用的内存块可能被释放,因此本发明实施例中在该中情况下可以等待一段时间,并继续返回执行a1,直至从分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量后,按照a2的过程分配空闲内存块。

子步骤A3,视联网终端在判断结果为否时,将所述分配指针指向所述内存池的顶部内存块,并从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

如果从分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量小于所述数据包所需内存块的数量,则可以调整分配指针的位置,将所述分配指针指向所述内存池的顶部内存块,并从分配指针当前指向的内存块(也即顶部内存块)开始,按向下顺序分配所述数据包所需的目标内存块。

对于该子步骤A3中从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块的具体过程,与上述子步骤A3基本相似,具体参照上述子步骤A2的相关描述即可,本发明实施例在此不再详细论述。

本发明实施例中,在所述视联网终端从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中的步骤之后,还可以包括:视联网终端将所述分配指针指向最后一个目标内存块的下一个内存块。也即视联网终端在为接收到的数据包分配内存块之后,还要更新分配指针的指向,以便后续能够正确地分配内存块。比如,在本次接收到数据包时,为其分配内存之前分配指针指向的内存块为内存块50,为其分配的内存块为内存块50~内存块57,则视联网终端在分配后将分配指针指向内存块58。

视联网终端在缓存接收到的数据包之后,还可以按照所述数据包缓存的时间从早到晚的顺序,从所述内存池中提取所述数据包,释放用于缓存提取的数据包的内存块。视联网终端可以对提取的数据包进行解码、显示等操作,以实现视联网终端之间的数据传输。

本发明实施例中,可以仅在初始时调用一次操作系统中的内存申请函数申请较大的内存作为内存池,在后续的数据缓存时直接从内存池中分配内存块即可,因此无需动态地、频繁地调用操作系统,能够避免频繁调用时内存申请函数产生段错误,提高系统的稳定性。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

实施例二

参照图6,示出了本发明实施例二的一种数据缓存装置的结构框图。本发明实施例的数据缓存装置可以应用于视联网中,所述视联网包括视联网终端和视联网服务器。

本发明实施例的数据缓存装置具体可以应用于视联网终端中,可以包括以下位于视联网终端中的模块:

所述视联网终端包括:

申请模块601,用于通过调用操作系统中预设的内存申请函数,申请设定数量的内存块,作为用于数据缓存的内存池;

接收模块602,用于接收所述视联网服务器基于视联网协议,按照对所述视联网终端配置的下行通信链路下发的数据包;

分配模块603,用于从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中。

在一种优选实施方式中,所述分配模块包括:判断单元,用于判断所述内存池中,从所述分配指针当前指向的内存块开始,按向下顺序剩余内存块的数量是否大于或等于所述数据包所需内存块的数量;内存分配单元,用于在所述判断单元判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块;在所述判断单元判断结果为否时,将所述分配指针指向所述内存池的顶部内存块,并从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需的目标内存块。

在一种优选实施方式中,所述内存分配单元具体用于:判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量;在判断结果为是时,从所述分配指针当前指向的内存块开始,按向下顺序分配所述数据包所需内存块的数量的空闲内存块,作为所述数据包所需的目标内存块;在判断结果为否时,继续返回执行所述视联网终端判断从所述分配指针当前指向的内存块开始,按向下顺序剩余空闲内存块的数量是否大于或等于所述数据包所需内存块的数量的步骤。

在一种优选实施方式中,所述内存池具有分配指针,所述内存池中的内存块按顺序排列,所述视联网终端还包括:调整模块,用于在所述分配模块从所述内存池中分配所述数据包所需的目标内存块,并将所述数据包缓存至所述目标内存块中之后,将所述分配指针指向最后一个目标内存块的下一个内存块。

在一种优选实施方式中,所述视联网终端还包括:释放模块,用于按照所述数据包缓存的时间从早到晚的顺序,从所述内存池中提取所述数据包,释放用于缓存提取的数据包的内存块。

本发明实施例中,可以仅在初始时调用一次操作系统中的内存申请函数申请较大的内存作为内存池,在后续的数据缓存时直接从内存池中分配内存块即可,因此无需动态地、频繁地调用操作系统,能够避免频繁调用时内存申请函数产生段错误,提高系统的稳定性。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种数据缓存方法和一种数据缓存装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本文发布于:2023-04-14 14:45:45,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86667.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图