亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種應(yīng)用于數(shù)字電視機(jī)頂盒的數(shù)據(jù)存儲(chǔ)管理方法

文檔序號(hào):9649280閱讀:744來(lái)源:國(guó)知局
一種應(yīng)用于數(shù)字電視機(jī)頂盒的數(shù)據(jù)存儲(chǔ)管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種應(yīng)用于數(shù)字電視機(jī)頂盒的數(shù)據(jù)存儲(chǔ)管理方法。
【背景技術(shù)】
[0002]在數(shù)字電視機(jī)頂盒中,數(shù)據(jù)的存儲(chǔ)以及對(duì)數(shù)據(jù)存儲(chǔ)的管理是非常重要的環(huán)節(jié)。在數(shù)字電視機(jī)頂盒中數(shù)據(jù)的存儲(chǔ)分為兩種:內(nèi)存存儲(chǔ)和記憶存儲(chǔ)。由于數(shù)字電視機(jī)頂盒存儲(chǔ)器的容量非常有限,如不對(duì)其進(jìn)行有效地管理,很容易出現(xiàn)存儲(chǔ)空間不夠的情況。
[0003]在數(shù)字電視機(jī)頂盒中,現(xiàn)有的存儲(chǔ)空間分配機(jī)制是由操作系統(tǒng)根據(jù)存儲(chǔ)空間申請(qǐng)的先后次序,以最先匹配原則,依次進(jìn)行分配。按照這樣的分配機(jī)制,隨著系統(tǒng)運(yùn)行期間可能出現(xiàn)的頻繁的存儲(chǔ)空間的分配和釋放,會(huì)在整個(gè)存儲(chǔ)空間中形成大量的、不連續(xù)的碎片。在申請(qǐng)大量的連續(xù)存儲(chǔ)空間時(shí),盡管剩余存儲(chǔ)空間總量并未超出總的可用存儲(chǔ)空間總數(shù),但由于連續(xù)的存儲(chǔ)空間不足而無(wú)法滿(mǎn)足分配要求,導(dǎo)致系統(tǒng)的存儲(chǔ)資源枯竭。如果能夠采取一種方法,盡量減少存儲(chǔ)空間碎片的產(chǎn)生,對(duì)存儲(chǔ)空間的利用效率會(huì)有很大的提高。

【發(fā)明內(nèi)容】

[0004]為解決上述現(xiàn)有的缺點(diǎn),本發(fā)明的主要目的在于提供一種實(shí)用的應(yīng)用于數(shù)字電視機(jī)頂盒的數(shù)據(jù)存儲(chǔ)管理方法,減少碎片,提高存儲(chǔ)空間的使用效率。
[0005]為達(dá)成以上所述的目的,本發(fā)明的一種應(yīng)用于數(shù)字電視機(jī)頂盒的數(shù)據(jù)存儲(chǔ)管理方法采取如下技術(shù)方案:
一種應(yīng)用于數(shù)字電視機(jī)頂盒的數(shù)據(jù)存儲(chǔ)管理方法,其特征在于:包括如下步驟:
步驟一、系統(tǒng)初始化,經(jīng)常使用的占用大量存儲(chǔ)空間的數(shù)據(jù)分配存儲(chǔ)空間;
步驟二、當(dāng)請(qǐng)求使用的存儲(chǔ)空間的數(shù)據(jù)為經(jīng)常使用的占用大量存儲(chǔ)空間的數(shù)據(jù)時(shí),直接使用在系統(tǒng)初始化時(shí)分配的存儲(chǔ)空間,結(jié)束存儲(chǔ)空間的分配;步驟三、當(dāng)請(qǐng)求使用的存儲(chǔ)空間的數(shù)據(jù)為非常用的、占用少量存儲(chǔ)空間的數(shù)據(jù)時(shí),從包括多個(gè)大小相同存儲(chǔ)單元的緩沖池中分配一個(gè)存儲(chǔ)單元,該存儲(chǔ)單元用完后,歸還緩沖池。
[0006]所述的步驟二中,系統(tǒng)初始化時(shí),為經(jīng)常使用的占用大量存儲(chǔ)空間的數(shù)據(jù)分配的存儲(chǔ)空間在整個(gè)機(jī)頂盒工作期間一直存在,所述的步驟三中,緩沖池的規(guī)格可以為一種以上,不同規(guī)格的緩沖池所占的存儲(chǔ)空間相同,緩沖池的存儲(chǔ)單元大小不同,所述的緩沖池存儲(chǔ)單元大小為32字節(jié)或64字節(jié)或128字節(jié)或2n字節(jié),η為自然數(shù),η ^ 8。
[0007]所述的步驟三中,包括如下過(guò)程:
步驟3.1、判斷是否存在存儲(chǔ)單元合適的緩沖池,如果存在,執(zhí)行步驟3.2 ;否則,執(zhí)行步驟3.3 ;
步驟3.2、判斷緩沖池中的空閑存儲(chǔ)單元是否已經(jīng)用盡,如果緩沖池中的空閑存儲(chǔ)單元用盡,執(zhí)行步驟3.3 ;否則執(zhí)行步驟3.4 ;
步驟3.3、分配存儲(chǔ)空間,建立一個(gè)存儲(chǔ)單元合適的新緩沖池,執(zhí)行步驟1 4 ; 步驟3.4、從存儲(chǔ)單元合適的緩沖池分配一個(gè)存儲(chǔ)單元,用完后歸還緩沖池;
步驟3.5、如果緩沖池中全部的存儲(chǔ)單元已歸還,釋放緩沖池所占的存儲(chǔ)空間。
[0008]所述的步驟三中,步驟3.2判斷是否存在存儲(chǔ)單元匹配的緩沖池,具體為如下過(guò)程:
判斷與所需的存儲(chǔ)空間大小最接近的,大于或等于所需的存儲(chǔ)空間大小的存儲(chǔ)單元所在的緩沖池是否包含在已建立的緩沖池中。
[0009]所述的步驟三中,步驟3.3分配存儲(chǔ)空間,建立一個(gè)存儲(chǔ)單元匹配的新緩沖池,具體包括如下步驟:
步驟3.3.1分配建立緩沖池所需的存儲(chǔ)空間,存儲(chǔ)空間中設(shè)定多個(gè)大小相同的匹配的存儲(chǔ)單元;
步驟3.3.2建立一個(gè)空閑鏈表來(lái)管理的空閑存儲(chǔ)單元。
[0010]所述的步驟三中,步驟3.4從緩沖池分配存儲(chǔ)單元,歸還用完的存儲(chǔ)單元給緩沖池,具體包括如下過(guò)程:
首先,判斷緩沖池空閑鏈表是否為空,如果為空,則分配失敗,
返回出錯(cuò)信息;如果不為空,則取出空閑鏈表第一個(gè)節(jié)點(diǎn),重置空閑鏈表,返回取出的節(jié)點(diǎn)的指針;用完后,將該存儲(chǔ)單元節(jié)點(diǎn)添加到空閑鏈表最前面,存儲(chǔ)單元的實(shí)現(xiàn)回收。
[0011]所述的步驟三中,步驟3.5釋放緩沖池,從緩沖池鏈表中刪除該緩沖池節(jié)點(diǎn);釋放緩沖池結(jié)構(gòu),釋放該存儲(chǔ)空間。
[0012]采用如上技術(shù)方案的本發(fā)明,具有如下有益效果:
本發(fā)明對(duì)經(jīng)常使用的占用大塊存儲(chǔ)空間的數(shù)據(jù),固定分配;對(duì)非常用的、小塊的存儲(chǔ)空間,采用緩沖池內(nèi)多次使用的方法來(lái)分配,即根據(jù)所申請(qǐng)的存儲(chǔ)空間的大小和使用頻繁程度,做不同的分配和處理,減少了存儲(chǔ)空間出現(xiàn)的碎片,提高存儲(chǔ)空間的使用效率;并且可以通過(guò)一些調(diào)試函數(shù)以及統(tǒng)計(jì)函數(shù),更好地監(jiān)測(cè)系統(tǒng)中存儲(chǔ)空間的使用情況。
【附圖說(shuō)明】
[0013]圖1為本發(fā)明方法實(shí)施例的流程圖。
【具體實(shí)施方式】
[0014]為了進(jìn)一步說(shuō)明本發(fā)明,下面結(jié)合附圖和實(shí)施例進(jìn)一步進(jìn)行說(shuō)明:
本實(shí)施例的機(jī)頂盒數(shù)據(jù)存儲(chǔ)管理方法,如圖1所示,包括如下步驟:
步驟一、系統(tǒng)初始化,經(jīng)常使用的占用大量存儲(chǔ)空間的數(shù)據(jù)分配存儲(chǔ)空間;
步驟二、當(dāng)請(qǐng)求使用的存儲(chǔ)空間的數(shù)據(jù)為經(jīng)常使用的占用大量存儲(chǔ)空間的數(shù)據(jù)時(shí),直接使用在系統(tǒng)初始化時(shí)分配的存儲(chǔ)空間,結(jié)束存儲(chǔ)空間的分配;
步驟三、當(dāng)請(qǐng)求使用的存儲(chǔ)空間的數(shù)據(jù)為非常用的、占用少量存儲(chǔ)空間的數(shù)據(jù)時(shí),從包括多個(gè)大小相同存儲(chǔ)單元的緩沖池中分配一個(gè)存儲(chǔ)單元,該存儲(chǔ)單元用完后,歸還緩沖池。
[0015]對(duì)于程序設(shè)計(jì)人員來(lái)說(shuō),什么地方會(huì)用到經(jīng)常使用的占用大量存儲(chǔ)空間的數(shù)據(jù)是清楚的,因此,可以在系統(tǒng)初始化時(shí),先將這部分的數(shù)據(jù)所需的存儲(chǔ)空間分配好,并且使其一直存在,并不釋放。
[0016]比如,數(shù)字電視的機(jī)頂盒對(duì)視頻信號(hào)的解碼和還原處理過(guò)程中,對(duì)于機(jī)頂盒處理前后的視頻數(shù)據(jù)的緩沖存儲(chǔ),要占用大量的存儲(chǔ)空間,而且整個(gè)機(jī)頂盒工作期間,這個(gè)存儲(chǔ)空間一直存在。對(duì)于這個(gè)存儲(chǔ)空間在系統(tǒng)初始化時(shí)就可以預(yù)先分配好。這也是數(shù)字電視的機(jī)頂盒存儲(chǔ)空間管理不同于普通的存儲(chǔ)空間管理之處。
[0017]對(duì)常用大塊存儲(chǔ)空間的這種處理方法,避免了在程序運(yùn)行過(guò)程中存儲(chǔ)空間的頻繁分配和釋放,減少產(chǎn)生碎片的機(jī)會(huì)。在初始化時(shí),因?yàn)闆](méi)有碎片,對(duì)于大的存儲(chǔ)塊的需求容易得到滿(mǎn)足,提高程序可靠性。并且在運(yùn)行過(guò)程中,可以減少因存儲(chǔ)空間分配而花費(fèi)的時(shí)間,提聞運(yùn)彳丁效率。
[0018]本發(fā)明的步驟三中,對(duì)非經(jīng)常使用的占用少量存儲(chǔ)空間的數(shù)據(jù),采用緩沖池內(nèi)多次使用的分配方法,這樣可以減少了直接存儲(chǔ)空間分配和釋放的次數(shù),從而降低了分配失敗的風(fēng)險(xiǎn),并且以一塊較大的緩沖池作為直接存儲(chǔ)空間分配的單元,從而減少了存儲(chǔ)空間內(nèi)的碎片。由于一個(gè)緩沖池的存儲(chǔ)單元是大小相同,同一規(guī)格的,所以為了適應(yīng)不同的需求,把最接近的存儲(chǔ)單元分配給調(diào)用者,存儲(chǔ)單元大小應(yīng)該不同,因此,產(chǎn)生不同規(guī)格的緩沖池。
[0019]存儲(chǔ)單元規(guī)格為32字節(jié)、64字節(jié)、128字節(jié)或2n字節(jié),η為自然數(shù),η >8。釆用2η字節(jié)作為存儲(chǔ)單元的規(guī)格是由于大多數(shù)情況下,系統(tǒng)申請(qǐng)使用的存儲(chǔ)空間一般都是2η字節(jié)。
[0020]如果調(diào)用者需要申請(qǐng)小于30個(gè)字節(jié)的存儲(chǔ)空間,則實(shí)際分配的存儲(chǔ)空間應(yīng)該在存儲(chǔ)單元規(guī)格是32字節(jié)的緩沖池內(nèi);而大小在32字節(jié)和64字節(jié)之間的存儲(chǔ)空間,則分配在存儲(chǔ)單元規(guī)格是64字節(jié)的緩沖池內(nèi),這種以調(diào)用者的需要確定所要分配的存儲(chǔ)單元,也稱(chēng)為存儲(chǔ)單元的匹配過(guò)程。
[0021]每個(gè)緩沖池的大小是相同的,一般為2Κ或4Κ字節(jié),根據(jù)不同的需求而可能有所不同;這樣既方便了分配和統(tǒng)計(jì)又減少存儲(chǔ)空間的碎片和浪費(fèi)。例如,某個(gè)中間的緩沖池由于不再使用而釋放了,那么,由于每個(gè)緩沖池的大小是相同的,就可以在它空出來(lái)的空間里分配新的緩沖池。
[0022]下面是一個(gè)具體的緩沖池結(jié)構(gòu),由以下幾部分組成:存儲(chǔ)單元大小、緩沖池的大小、已使用的單元數(shù)、緩沖池指針、空閑鏈表、緩沖池鏈表的前節(jié)點(diǎn)指針和后節(jié)點(diǎn)指針;具體為
Typcdef struct bufpool;
Size-t cell-size/* 存儲(chǔ)單兀大小 */
Size-t bufpool-size /* 緩沖池大小 */
Unisigned short cells-used; /* 已使用的單兀數(shù) */
Void * bufpool-ptr/* 緩沖池的指針 */
Sllist free-list /* 空間鏈表 */
Struct bufpool * m-prev /*緩沖池鏈表的前節(jié)點(diǎn)指針*/
Struct bufpool * m-next /*緩沖池鏈表的后節(jié)點(diǎn)指針*/
Bufpool-t
每個(gè)緩沖池的最前面一塊存儲(chǔ)空間(大小為32字節(jié))留給緩沖池結(jié)構(gòu)1 Bufpool-t,實(shí)際的存儲(chǔ)單元緊隨其后。
[0023]對(duì)所有緩沖池的管理也可以采用一個(gè)上述結(jié)構(gòu)的雙向鏈表來(lái)完成。系統(tǒng)自動(dòng)生成一個(gè)頭節(jié)點(diǎn),每當(dāng)創(chuàng)建一個(gè)新的緩沖池時(shí),都需要將緩沖池的指針添加到緩沖池鏈表中。向緩沖池鏈表添加新的節(jié)點(diǎn)時(shí)采用前向插入法,即總是將新的節(jié)點(diǎn)加入到鏈表的最前面即頭節(jié)點(diǎn)之后。
[0024]如圖1所示,利用緩沖池對(duì)非常用的、占用少量的存儲(chǔ)空間數(shù)據(jù)分配存儲(chǔ)空間,包括以下步驟:
步驟3.1、判斷是否存在存儲(chǔ)單元規(guī)格匹配的緩沖池,即判斷與所需的存儲(chǔ)空間大小最接近的,大于或等于所需的存儲(chǔ)空間大小的存儲(chǔ)單元所在的緩沖池是否包含在已建立的緩沖池中;如果存在,執(zhí)行步驟3.2 ;否則,執(zhí)行步驟3.3 ;
步驟3.2、判斷緩沖池中的空閑存儲(chǔ)
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1