CN1625248A - 一种机顶盒的数据存储管理方法 - Google Patents

一种机顶盒的数据存储管理方法 Download PDF

Info

Publication number
CN1625248A
CN1625248A CNA2003101169555A CN200310116955A CN1625248A CN 1625248 A CN1625248 A CN 1625248A CN A2003101169555 A CNA2003101169555 A CN A2003101169555A CN 200310116955 A CN200310116955 A CN 200310116955A CN 1625248 A CN1625248 A CN 1625248A
Authority
CN
China
Prior art keywords
buffer pool
memory cell
memory
data
top box
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
Application number
CNA2003101169555A
Other languages
English (en)
Other versions
CN100336392C (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.)
BEIJING ZHONGSHILIAN DIGITAL SYSTEM Co Ltd
Original Assignee
BEIJING ZHONGSHILIAN DIGITAL SYSTEM Co Ltd
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 BEIJING ZHONGSHILIAN DIGITAL SYSTEM Co Ltd filed Critical BEIJING ZHONGSHILIAN DIGITAL SYSTEM Co Ltd
Priority to CNB2003101169555A priority Critical patent/CN100336392C/zh
Publication of CN1625248A publication Critical patent/CN1625248A/zh
Application granted granted Critical
Publication of CN100336392C publication Critical patent/CN100336392C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种机顶盒的数据存储管理办法,首先,判断使用的存储空间的数据;如果为经常使用的占用大量存储空间的数据,直接使用在***初始化时,为经常使用的占用大量存储空间的数据分配的存储空间,结束存储空间的分配;如果为非常用的、占用少量存储空间的数据,从包括多个大小相同存储单元的缓冲池中分配一个存储单元,用完后归还缓冲池。本发明通过对经常使用的占用大块存储空间的数据,分配固定的存储空间;对非常用的、小块的存储空间,采用缓冲池内多次使用的方法来分配,减少了存储空间出现的碎片,提高存储空间的使用效率;并且可以通过一些统计函数,更好地监测***中存储空间的使用情况。

Description

一种机顶盒的数据存储管理方法
技术领域
本发明涉及一种数据存储管理方法,尤其是一种应用于数字电视机顶盒的数据存储管理方法,属于数字电视技术领域。
背景技术
在数字电视机顶盒中,数据的存储以及对数据存储的管理是非常重要的环节。在数字电视机顶盒中数据的存储分为两种:内存存储和记忆存储。由于数字电视机顶盒存储器的容量非常有限,如不对其进行有效地管理,很容易出现存储空间不够的情况。
在数字电视机顶盒中,现有的存储空间分配机制是由操作***根据存储空间申请的先后次序,以最先匹配原则,依次进行分配。按照这样的分配机制,随着***运行期间可能出现的频繁的存储空间的分配和释放,会在整个存储空间中形成大量的、不连续的碎片。在申请大量的连续存储空间时,尽管剩余存储空间总量并未超出总的可用存储空间总数,但由于连续的存储空间不足而无法满足分配要求,导致***的存储资源枯竭。如果能够采取一种方法,尽量减少存储空间碎片的产生,对存储空间的利用效率会有很大的提高。
发明内容
本发明要解决的技术问题是一种机顶盒的数据存储的管理办法,减少碎片,提高存储空间的使用效率。
一种机顶盒的数据存储管理办法,包括如下步骤:
步骤一、***初始化,经常使用的占用大量存储空间的数据分配存储空间;
步骤二、当请求使用的存储空间的数据为经常使用的占用大量存储空间的数据时,直接使用在***初始化时分配的存储空间,结束存储空间的分配;
步骤三、当请求使用的存储空间的数据为非常用的、占用少量存储空间的数据时,从包括多个大小相同存储单元的缓冲池中分配一个存储单元,该存储单元用完后,归还缓冲池。
本发明通过对经常使用的占用大块存储空间的数据,固定分配;对非常用的、小块的存储空间,采用缓冲池内多次使用的方法来分配,即根据所申请的存储空间的大小和使用频繁程度,做不同的分配和处理,减少了存储空间出现的碎片,提高存储空间的使用效率;并且可以通过一些调试函数以及统计函数,更好地监测***中存储空间的使用情况。
附图说明
图1是本发明方法实施例的流程图。
具体实施方式
下面结合附图和实施例对本发明的技术方案做详细说明:
本实施例的机顶盒数据存储管理方法,如图1所示,包括如下步骤:
步骤一、***初始化,经常使用的占用大量存储空间的数据分配存储空间;
步骤二、当请求使用的存储空间的数据为经常使用的占用大量存储空间的数据时,直接使用在***初始化时分配的存储空间,结束存储空间的分配;
步骤三、当请求使用的存储空间的数据为非常用的、占用少量存储空间的数据时,从包括多个大小相同存储单元的缓冲池中分配一个存储单元,该存储单元用完后,归还缓冲池。
对于程序设计人员来说,什么地方会用到经常使用的占用大量存储空间的数据是清楚的,因此,可以在***初始化时,先将这部分的数据所需的存储空间分配好,并且使其一直存在,并不释放。
比如,数字电视的机顶盒对视频信号的解码和还原处理过程中,对于机顶盒处理前后的视频数据的缓冲存储,要占用大量的存储空间,而且整个机顶盒工作期间,这个存储空间一直存在。对于这个存储空间在***初始化时就可以预先分配好。这也是数字电视的机顶盒存储空间管理不同于普通的存储空间管理之处。
对常用大块存储空间的这种处理方法,避免了在程序运行过程中存储空间的频繁分配和释放,减少产生碎片的机会。在初始化时,因为没有碎片,对于大的存储块的需求容易得到满足,提高程序可靠性。并且在运行过程中,可以减少因存储空间分配而花费的时间,提高运行效率。
本发明的步骤三中,对非经常使用的占用少量存储空间的数据,采用缓冲池内多次使用的分配方法,这样可以减少了直接存储空间分配和释放的次数,从而降低了分配失败的风险,并且以一块较大的缓冲池作为直接存储空间分配的单元,从而减少了存储空间内的碎片。
由于一个缓冲池的存储单元是大小相同,同一规格的,所以为了适应不同的需求,把最接近的存储单元分配给调用者,存储单元大小应该不同,因此,产生不同规格的缓冲池。
存储单元规格为32字节、64字节、128字节或2n字节,n为自然数,n≥8。采用2n字节作为存储单元的规格是由于大多数情况下,***申请使用的存储空间一般都是2n字节。
如果调用者需要申请小于30个字节的存储空间,则实际分配的存储空间应该在存储单元规格是32字节的缓冲池内;而大小在32字节和64字节之间的存储空间,则分配在存储单元规格是64字节的缓冲池内,这种以调用者的需要确定所要分配的存储单元,也称为存储单元的匹配过程。
每个缓冲池的大小是相同的,一般为2K或4K字节,根据不同的需求而可能有所不同;这样既方便了分配和统计又减少存储空间的碎片和浪费。例如,某个中间的缓冲池由于不再使用而释放了,那么,由于每个缓冲池的大小是相同的,就可以在它空出来的空间里分配新的缓冲池。
下面是一个具体的缓冲池结构,由以下几部分组成:存储单元大小、缓冲池的大小、已使用的单元数、缓冲池指针、空闲链表、缓冲池链表的前节点指针和后节点指针;具体为
  typedef struct bufPool{

  Size_t cell_size;       /*存储单元大小*/

  Size_t bufPool_size;    /*缓冲池大小*/

  unsigned short cells_used; /*已使用的单元数*/

  void*bufPool_ptr;       /*缓冲池的指针*/

  SLList free_list;       /*空闲链表*/

  struct bufPool *m_prev; /*缓冲池链表的前节点指针*/

  struct bufPool *m_next;    /*缓冲池链表的后节点指针*/

  }bufPool_t;
每个缓冲池的最前面一块存储空间(大小为32字节)留给缓冲池结构bufPool_t,实际的存储单元紧随其后。
对所有缓冲池的管理也可以采用一个上述结构的双向链表来完成。***自动生成一个头节点,每当创建一个新的缓冲池时,都需要将缓冲池的指针添加到缓冲池链表中。向缓冲池链表添加新的节点时采用前向***法,即总是将新的节点加入到链表的最前面即头节点之后。
如图1所示,利用缓冲池对非常用的、占用少量的存储空间数据分配存储空间,包括以下步骤:
步骤3.1、判断是否存在存储单元规格匹配的缓冲池,即判断与所需的存储空间大小最接近的,大于或等于所需的存储空间大小的存储单元所在的缓冲池是否包含在已建立的缓冲池中;如果存在,执行步骤3.2;否则,执行步骤3.3;
步骤3.2、判断缓冲池中的空闲存储单元是否已经用尽,如果缓冲池中的空闲存储单元用尽,执行步骤3.3;否则执行步骤3.4;
步骤3.3、分配存储空间,建立一个存储单元合适的新缓冲池,执行步骤3.4;
步骤3.4、从存储单元规格匹配的缓冲池中分配一个存储单元,用完后,归还缓冲池;
步骤3.5、如果缓冲池中全部的存储单元已归还,释放缓冲池所占的存储空间。
选择最为合适的存储单元,可以节约存储空间,减少浪费。如果链表中的空闲存储单元没有了,就再次从***存储空间中分配一个较大的存储块作为新的缓冲池。新缓冲池与原有的缓冲池所占存储空间大小相同,存储单元与存储单元用尽的缓冲池的存储单元大小相同。如果存储单元用尽的缓冲池的存储单元被归还后,再分配相同大小的存储单元从原有的缓冲池中分配。
存储单元,用完后归还缓冲池,并不释放,大大降低了碎片产生的机会。缓冲池中全部的存储单元已归还,释放缓冲池所占的存储空间,然后就可以在释放的存储空间中再建立新的缓冲池。由于每次建立和释放都是以缓冲池的大小作为单位的,这样也避免了碎片的产生。
下面分别就缓冲池的建立,存储单元的分配,归还和缓冲池的释放进行详细的说明:
建立缓冲池,具体步骤为:
步骤3.3.1、分配建立缓冲池所需的存储空间,存储空间中设定多个大小相同的匹配的存储单元;
步骤3.3.2、建立一个空闲链表来管理的空闲存储单元。
获取每个存储单元的地址,然后建立一个链表来管理这些地址,这是一种较好的存储单元的分配和归还的方式,简单而且高效。
空闲链表是用来管理缓冲池中空闲的存储单元的,为一单向链表,其结构很简单,每个节点存放下一个空闲存储单元的地址。每当创建缓冲池后都要建立本缓冲池的空闲链表,首先缓冲池结构中建立了空闲链表的头节点,然后将缓冲池内所有存储单元地址依次添加到空闲链表中,同样,添加时采用前向***法,即将新的节点加入到链表的最前面即头节点之后,完成后最后一个存储单元应在链表的最前面。这里需要注意,空闲链表的节点信息是存放在这些空闲的存储单元中的。也就是说,在存储单元空闲时需要存放空闲链表的节点信息,一旦被使用,即存放具体数据信息,而此时空闲链表中已不需要该节点,因此不会造成冲突。
创建缓冲池,具体过程说明如下:
1)为缓冲池分配存储空间,缓冲池所占的存储空间大小是***默定的(注意要包括缓冲池结构所占用的那部分的存储空间);
2)初始化缓冲池结构。包括存储单元大小、缓冲出大小、已使用的单元数(初始为0)、缓冲池指针(即缓冲池存储空间的首地址,也是缓冲池结构的首地址);
3)向缓冲池链表中添加该缓冲池节点;
4)建立空闲链表,将缓冲池内所有存储单元地址依次添加到空闲链表中;
5)返回缓冲池指针。
分配存储空间,输入参数为所需存储空间的大小,输出为分配到的存储单元指针和所在缓冲池的指针,具体过程说明如下:
步骤1,根据所需存储空间大小确定存储单元大小(判断的原则前面已有介绍);
步骤2,从缓冲池链表头节点的下一个节点开始查询,查找空闲链表不为空且存储单元大小与步骤1中确定的存储单元大小相同的缓冲池,直到找到或者缓冲池链表结束,如果没有找到,执行步骤3;如果找到,执行步骤4;
步骤3,分配一个新的缓冲池;
步骤4,从缓冲池中分配一个存储单元;
步骤5,将缓冲池指针和存储单元指针输出给使用者。
从缓冲池中分配一个存储单元,具体过程如下:
1)判断空闲链表是否为空(空闲链表头节点是否指向NULL),如果为空,分配失败;如果不为空,执行2);
2)取出空闲链表第一个节点,重置空闲链表,返回取出的节点的指针。
释放存储空间,其参数为存储单元指针和所在缓冲池的指针,返回成功、失败标志,具体过程说明如下:
步骤1,将存储单元返还给缓冲池;
步骤2,判断该缓冲池的空闲链表是否为空,如果为空,执行步骤3,如果不为空,执行步骤4;
步骤3,释放该缓冲池;
步骤4,释放完成,返回成功、失败标志。
回收用完的存储单元,返还给缓冲池,具体过程如下:
1)判断数据单元的内容是否为空闲链表节点信息(也就是缓冲池内某存储单元的地址),从而确定是否为第二次回收;
2)如果不是第二次释放,将该存储单元节点添加到空闲链表最前面(该存储单元中存放下一个存储单元地址),如果是第二次释放,则不再回收。
释放(删除)缓冲池,具体过程说明如下:
1)从缓冲池链表中删除该缓冲池节点;
2)释放缓冲池结构,释放该存储空间。
通过以上的存储空间分配和释放的调试函数以及一些统计功能参量,能够更好地监测***中存储空间的使用情况。比如,查询缓冲池中存储单元的大小和已使用的单元数就可以了解已使用的存储空间的大小,通过缓冲池的大小,从而计算出未使用的存储空间;计算出所有的缓冲池未使用的存储空间,就可以了解整个机顶盒的存储空间的使用情况。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1、一种机顶盒的数据存储管理办法,其特征在于:包括如下步骤:
步骤一、***初始化,经常使用的占用大量存储空间的数据分配存储空间;
步骤二、当请求使用的存储空间的数据为经常使用的占用大量存储空间的数据时,直接使用在***初始化时分配的存储空间,结束存储空间的分配;
步骤三、当请求使用的存储空间的数据为非常用的、占用少量存储空间的数据时,从包括多个大小相同存储单元的缓冲池中分配一个存储单元,该存储单元用完后,归还缓冲池。
2、根据权利要求1所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤二中,***初始化时,为经常使用的占用大量存储空间的数据分配的存储空间在整个机顶盒工作期间一直存在。
3、根据权利要求1所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤三中,缓冲池的规格可以为一种以上,不同规格的缓冲池所占的存储空间相同,缓冲池的存储单元大小不同。
4、根据权利要求1或3所述的机顶盒的数据存储管理办法,其特征在于:所述的缓冲池存储单元大小为32字节或64字节或128字节或2n字节,n为自然数,n≥8。
5、根据权利要求1所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤三中,包括如下过程:
步骤3.1、判断是否存在存储单元合适的缓冲池,如果存在,执行步骤3.2;否则,执行步骤3.3;
步骤3.2、判断缓冲池中的空闲存储单元是否已经用尽,如果缓冲池中的空闲存储单元用尽,执行步骤3.3;否则执行步骤3.4;
步骤3.3、分配存储空间,建立一个存储单元合适的新缓冲池,执行步骤3.4;
步骤3.4、从存储单元合适的缓冲池分配一个存储单元,用完后归还缓冲池;
步骤3.5、如果缓冲池中全部的存储单元已归还,释放缓冲池所占的存储空间。
6、根据权利要求5所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤三中,步骤3.2判断是否存在存储单元匹配的缓冲池,具体为如下过程:
判断与所需的存储空间大小最接近的,大于或等于所需的存储空间大小的存储单元所在的缓冲池是否包含在已建立的缓冲池中。
7、根据权利要求5所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤三中,步骤3.3分配存储空间,建立一个存储单元匹配的新缓冲池,具体包括如下步骤:
步骤3.3.1分配建立缓冲池所需的存储空间,存储空间中设定多个大小相同的匹配的存储单元;
步骤3.3.2建立一个空闲链表来管理的空闲存储单元。
8、根据权利要求7所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤三中,步骤3.4从缓冲池分配存储单元,归还用完的存储单元给缓冲池,具体包括如下过程:
首先,判断缓冲池空闲链表是否为空,如果为空,则分配失败,返回出错信息;如果不为空,则取出空闲链表第一个节点,重置空闲链表,返回取出的节点的指针;用完后,将该存储单元节点添加到空闲链表最前面,存储单元的实现回收。
9、根据权利要求7所述的机顶盒的数据存储管理办法,其特征在于:所述的步骤三中,步骤3.5释放缓冲池,从缓冲池链表中删除该缓冲池节点;释放缓冲池结构,释放该存储空间。
CNB2003101169555A 2003-12-03 2003-12-03 一种机顶盒的数据存储管理方法 Expired - Fee Related CN100336392C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2003101169555A CN100336392C (zh) 2003-12-03 2003-12-03 一种机顶盒的数据存储管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2003101169555A CN100336392C (zh) 2003-12-03 2003-12-03 一种机顶盒的数据存储管理方法

Publications (2)

Publication Number Publication Date
CN1625248A true CN1625248A (zh) 2005-06-08
CN100336392C CN100336392C (zh) 2007-09-05

Family

ID=34760833

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101169555A Expired - Fee Related CN100336392C (zh) 2003-12-03 2003-12-03 一种机顶盒的数据存储管理方法

Country Status (1)

Country Link
CN (1) CN100336392C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721065B2 (en) 2006-09-28 2010-05-18 Kyocera Mita Corporation Reducing memory fragmentation by learning memory allocation patterns
CN101154193B (zh) * 2006-09-28 2010-06-16 京瓷美达株式会社 存储管理装置和存储管理方法
CN101141737B (zh) * 2007-09-25 2010-09-29 中兴通讯股份有限公司 在移动终端上实时更新空间信息的方法
CN101873470A (zh) * 2010-04-30 2010-10-27 中山大学 支持用户同时播放电视节目和节目录制的方法及***
CN102023924B (zh) * 2009-09-21 2012-11-14 鸿富锦精密工业(深圳)有限公司 整合接收设备的存储空间征用的装置及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303347A (en) * 1991-12-27 1994-04-12 Digital Equipment Corporation Attribute based multiple data structures in host for network received traffic
US5916309A (en) * 1997-05-12 1999-06-29 Lexmark International Inc. System for dynamically determining the size and number of communication buffers based on communication parameters at the beginning of the reception of message
WO2000070466A1 (fr) * 1999-05-17 2000-11-23 Technowave, Ltd. Procede d'acces a un dispositif e/s et une memoire utilisant une adresse virtuelle et support enregistre comportant un programme destine a executer le procede d'acces a un dispositif e/o et une memoire utilisant une adresse virtuelle
CN1204501C (zh) * 2001-09-18 2005-06-01 华为技术有限公司 Flash存储文件管理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721065B2 (en) 2006-09-28 2010-05-18 Kyocera Mita Corporation Reducing memory fragmentation by learning memory allocation patterns
CN101154193B (zh) * 2006-09-28 2010-06-16 京瓷美达株式会社 存储管理装置和存储管理方法
CN101141737B (zh) * 2007-09-25 2010-09-29 中兴通讯股份有限公司 在移动终端上实时更新空间信息的方法
CN102023924B (zh) * 2009-09-21 2012-11-14 鸿富锦精密工业(深圳)有限公司 整合接收设备的存储空间征用的装置及方法
CN101873470A (zh) * 2010-04-30 2010-10-27 中山大学 支持用户同时播放电视节目和节目录制的方法及***

Also Published As

Publication number Publication date
CN100336392C (zh) 2007-09-05

Similar Documents

Publication Publication Date Title
CN1276361C (zh) 一种嵌入式***内存管理的方法
US7165255B2 (en) Method and apparatus for managing surplus memory in multitasking system
CN1154928C (zh) 用于多任务设施信息处理***的资源管理方法和设备
CN1085863C (zh) 计算机***的存储器管理***
CN1271524C (zh) 一种静态内存管理方法
US7565507B2 (en) Cooperative memory management allowing program request and release memory as needed
CN1764117A (zh) 向以太网无源光网络中的光网络单元发送升级软件的方法
CN1194526C (zh) 存储装置及使用它的传真装置
CN101055533A (zh) 一种多线程处理器动态内存管理***及方法
CN1722106A (zh) 一种嵌入式实时操作***中内存分配的方法
CN1679005A (zh) 动态存储器管理
CN1794208A (zh) 大容量存储设备和用于动态管理大容量存储设备的方法
CN1869933A (zh) 实现数据升级的计算机处理***和数据升级方法
CN1687904A (zh) 智能卡存储环境的控制方法
CN100336392C (zh) 一种机顶盒的数据存储管理方法
CN1889737A (zh) 一种资源管理的方法和***
CN1133337C (zh) 资源分配
CN1881895A (zh) 一种网络管理***中的设备操作方法
CN1360256A (zh) 一种机顶盒软件动态升级的方法
CN1889038A (zh) 以类为单位的远程构件生命周期的管理方法
CN1427361A (zh) 基于客户/服务器结构的底层设备驱动的方法
CN1878150A (zh) 一种实现时分复用承载资源共享的方法及***
CN101059774A (zh) 动态存储管理装置及方法
CN1129281C (zh) 利用缓存技术提高ip报文转发速度的方法
CN1567250A (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
EE01 Entry into force of recordation of patent licensing contract

Assignee: Zhejiang Boxsam Electronic Co., Ltd.

Assignor: Beijing Zhongshilian Digital System Co., Ltd.

Contract fulfillment period: 2008.3.21 to 2015.12.31 contract change

Contract record no.: 2009330002551

Denomination of invention: Data storage managing method of set-top box

Granted publication date: 20070905

License type: Exclusive license

Record date: 20091020

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2008.3.21 TO 2015.12.31; CHANGE OF CONTRACT

Name of requester: ZHEJIANG BOXSAM ELECTRONICS CO., LTD.

Effective date: 20091020

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

Granted publication date: 20070905

Termination date: 20101203