[發(fā)明專利]一種數(shù)據(jù)存儲方法及裝置有效
| 申請?zhí)枺?/td> | 201510024257.5 | 申請日: | 2011-11-14 |
| 公開(公告)號: | CN104598390B | 公開(公告)日: | 2019-06-04 |
| 發(fā)明(設(shè)計)人: | 宋學(xué)東;黃蔚 | 申請(專利權(quán))人: | 北京奇虎科技有限公司;奇智軟件(北京)有限公司 |
| 主分類號: | G06F12/06 | 分類號: | G06F12/06 |
| 代理公司: | 北京潤澤恒知識產(chǎn)權(quán)代理有限公司 11319 | 代理人: | 蘇培華 |
| 地址: | 100088 北京市西城區(qū)新*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 數(shù)據(jù) 存儲 方法 裝置 | ||
本申請?zhí)峁┝艘环N數(shù)據(jù)存儲方法及裝置,以解決內(nèi)存利用率低的問題。所述方法對于請求的數(shù)據(jù),如果能夠存入分頁分配的內(nèi)存塊中,則選擇空閑內(nèi)存塊存儲;如果數(shù)據(jù)大小大于分頁分配的內(nèi)存塊,則將其中一部分數(shù)據(jù)存入該內(nèi)存塊,將另一部分剩余數(shù)據(jù)存入內(nèi)存中的一個或多個可用內(nèi)存塊中,并將存有請求數(shù)據(jù)的所有內(nèi)存塊通過指針相連。所述可用內(nèi)存塊為零散內(nèi)存塊,并不一定與分頁分配的內(nèi)存塊大小相同。因此,本申請可以盡量避免內(nèi)存浪費,最大限度地提高內(nèi)存利用率。
技術(shù)領(lǐng)域
本申請涉及內(nèi)存管理技術(shù),特別是涉及一種數(shù)據(jù)存儲方法及裝置。
背景技術(shù)
數(shù)據(jù)的存儲可分為內(nèi)存存儲和文件存儲。對于內(nèi)存存儲方式,一般采用分頁存儲管理機制。分頁存儲管理是將一個進程的邏輯空間分成若干個大小相等的片,稱為頁面或頁,并為各頁加以編號,從0開始,如第0頁、第1頁等。相應(yīng)地,也把內(nèi)存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如0#塊、1#塊等等。
在為進程分配內(nèi)存時,以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由于進程的最后一頁經(jīng)常裝不滿一塊而形成了不可利用的碎片,稱之為“頁內(nèi)碎片”。內(nèi)存中因為有這些碎片的存儲,大量的小內(nèi)存的分配,就會引起大量的碎片,從而導(dǎo)致內(nèi)存利用率比較低。
發(fā)明內(nèi)容
本申請的目的在于,提供一種數(shù)據(jù)存儲方法及裝置,以解決內(nèi)存利用率低的問題。
為了解決上述問題,本申請公開了一種數(shù)據(jù)存儲方法,包括:
接收數(shù)據(jù)存儲請求,并獲得請求的數(shù)據(jù)大小M;
將請求的數(shù)據(jù)大小M與內(nèi)存中當前指針指向的空閑內(nèi)存塊的大小N進行比較,若M小于等于N,則將該空閑內(nèi)存塊分配給請求數(shù)據(jù);
若M大于N,并且內(nèi)存空閑,則從內(nèi)存申請大小為P的空閑內(nèi)存塊并分配給請求數(shù)據(jù),其中P大于N;
若請求的數(shù)據(jù)大小M大于所述空閑內(nèi)存塊的大小P,則再將內(nèi)存中的一個或多個可用內(nèi)存塊分配給M-P大小的請求數(shù)據(jù),并將存有請求數(shù)據(jù)的所有內(nèi)存塊通過指針相連。
優(yōu)選地,所述可用內(nèi)存塊為零散內(nèi)存塊。
優(yōu)選地,所述方法還包括:將內(nèi)存塊的大小分級,每個級別對應(yīng)一個鏈表,其中P對應(yīng)一個級別;按照大小級別分配內(nèi)存塊,并將已分配的內(nèi)存塊分別插入對應(yīng)級別的鏈表中。
優(yōu)選地,所述從內(nèi)存申請大小為P的空閑內(nèi)存塊并分配給請求數(shù)據(jù),包括:若請求的數(shù)據(jù)大小M小于P,并且M符合某些小于P的級別,則將請求數(shù)據(jù)按照所選級別分拆,并從大小為P的空閑內(nèi)存塊中按照所選級別分割出一個或多個內(nèi)存塊分配給分拆后的請求數(shù)據(jù),并將所述已分配的內(nèi)存塊分別插入對應(yīng)級別的鏈表中。
優(yōu)選地,所述將內(nèi)存中的一個或多個可用內(nèi)存塊分配給M-P大小的請求數(shù)據(jù),包括:如果內(nèi)存空閑,則從內(nèi)存申請大小為P的空閑內(nèi)存塊并分配給M-P大小的請求數(shù)據(jù)。
優(yōu)選地,所述將內(nèi)存中的一個或多個可用內(nèi)存塊分配給M-P大小的請求數(shù)據(jù),包括:如果內(nèi)存沒有大小為P的空閑內(nèi)存塊,并且已分配的內(nèi)存塊中有剩余,則從已分配的一個或多個內(nèi)存塊中分割出剩余未用部分,作為一個或多個可用內(nèi)存塊分配給M-P大小的請求數(shù)據(jù)。
優(yōu)選地,所述從已分配的一個或多個內(nèi)存塊中分割出剩余未用部分,作為一個或多個可用內(nèi)存塊分配給M-P大小的請求數(shù)據(jù),包括:若從一個已分配的內(nèi)存塊中分割出的剩余未用部分大于等于M-P,則將該剩余未用部分作為一個可用內(nèi)存塊分配給M-P大小的請求數(shù)據(jù);否則,將M-P大小的請求數(shù)據(jù)按照所選級別分拆,并從多個已分配的內(nèi)存塊中分割出剩余未用部分,每個剩余未用部分作為一個級別的可用內(nèi)存塊,分配給M-P大小的分拆后的請求數(shù)據(jù)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京奇虎科技有限公司;奇智軟件(北京)有限公司,未經(jīng)北京奇虎科技有限公司;奇智軟件(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510024257.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置





