[發(fā)明專利]一種利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法和裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201710534043.1 | 申請(qǐng)日: | 2017-07-03 |
| 公開(公告)號(hào): | CN107329833B | 公開(公告)日: | 2021-02-19 |
| 發(fā)明(設(shè)計(jì))人: | 王偉波 | 申請(qǐng)(專利權(quán))人: | 蘇州浪潮智能科技有限公司 |
| 主分類號(hào): | G06F9/50 | 分類號(hào): | G06F9/50;G06F12/06 |
| 代理公司: | 北京集佳知識(shí)產(chǎn)權(quán)代理有限公司 11227 | 代理人: | 羅滿 |
| 地址: | 215100 江蘇省蘇州市吳*** | 國(guó)省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 利用 實(shí)現(xiàn) 內(nèi)存 連續(xù) 方法 裝置 | ||
本申請(qǐng)公開了一種利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法和裝置,該方法包括從操作系統(tǒng)申請(qǐng)預(yù)設(shè)數(shù)量的大塊內(nèi)存;利用Buffer記錄所述大塊內(nèi)存的首地址、起始偏移量和長(zhǎng)度,并將所述Buffer標(biāo)記為unused;將所述標(biāo)記為unused的Buffer按照Buffer的起始地址升序排序,利用鏈表組織起來(lái),得到List?unused;當(dāng)需要利用小塊內(nèi)存保存數(shù)據(jù)時(shí),從所述List?unused的頭部查找長(zhǎng)度不小于所述小塊內(nèi)存長(zhǎng)度的Buffer進(jìn)行數(shù)據(jù)的保存,并標(biāo)記為used,將其他部分標(biāo)記為unused。上述利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法和裝置,能夠避免頻繁的從操作系統(tǒng)申請(qǐng)和拷貝內(nèi)存,增強(qiáng)系統(tǒng)的性能。
技術(shù)領(lǐng)域
本發(fā)明屬于內(nèi)存技術(shù)領(lǐng)域,特別是涉及一種利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法和裝置。
背景技術(shù)
一個(gè)系統(tǒng)往往在使用過(guò)程中需要在堆中申請(qǐng)很多內(nèi)存塊用來(lái)保存數(shù)據(jù),在一些系統(tǒng)(例如文件系統(tǒng))中經(jīng)常會(huì)將一些內(nèi)存塊中的數(shù)據(jù)合并之后進(jìn)行處理,即多個(gè)小內(nèi)存塊合并成一個(gè)大的內(nèi)存塊。常規(guī)的做法是先申請(qǐng)一個(gè)大內(nèi)存塊,然后將多個(gè)小內(nèi)存塊中的數(shù)據(jù)依次拷貝到大內(nèi)存塊中,釋放小內(nèi)存塊,但是,這種做法需要從操作系統(tǒng)中頻繁的申請(qǐng)內(nèi)存和數(shù)據(jù)拷貝,這就對(duì)系統(tǒng)的性能造成不利影響。
發(fā)明內(nèi)容
為解決上述問(wèn)題,本發(fā)明提供了一種利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法和裝置,能夠避免頻繁的從操作系統(tǒng)申請(qǐng)和拷貝內(nèi)存,增強(qiáng)系統(tǒng)的性能。
本發(fā)明提供的一種利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法,包括:
從操作系統(tǒng)申請(qǐng)預(yù)設(shè)數(shù)量的大塊內(nèi)存;
利用Buffer記錄所述大塊內(nèi)存的首地址、起始偏移量和長(zhǎng)度,并將所述Buffer標(biāo)記為unused;
將所述標(biāo)記為unused的Buffer按照Buffer的起始地址升序排序,利用鏈表組織起來(lái),得到List-unused;
當(dāng)需要利用小塊內(nèi)存保存數(shù)據(jù)時(shí),從所述List-unused的頭部查找長(zhǎng)度不小于所述小塊內(nèi)存長(zhǎng)度的Buffer進(jìn)行數(shù)據(jù)的保存,并標(biāo)記為used,將其他部分標(biāo)記為unused。
優(yōu)選的,在上述利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法中,還包括:
當(dāng)需要利用多個(gè)小塊內(nèi)存保存數(shù)據(jù)時(shí),將多個(gè)小塊內(nèi)存按照業(yè)務(wù)需要依次插入List-used中;
當(dāng)所述List-used或其中的小塊內(nèi)存不再使用時(shí),將所述List-used刪除,或者,將所述小塊內(nèi)存從所述List-used中刪除并標(biāo)記為unused,按照Buffer的起始地址升序排序插入所述List-unused中。
優(yōu)選的,在上述利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法中,還包括:
當(dāng)所述List-unused中的相鄰的Buffer具有相同的首地址,且前一個(gè)Buffer的終止地址和后一個(gè)Buffer的起始地址相等時(shí),將二者進(jìn)行合并。
優(yōu)選的,在上述利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的方法中,還包括:
當(dāng)大塊內(nèi)存不足時(shí),從操作系統(tǒng)中再申請(qǐng)另一塊大塊內(nèi)存,直到內(nèi)存足夠。
本發(fā)明提供的一種利用鏈表實(shí)現(xiàn)內(nèi)存連續(xù)的裝置,包括:
申請(qǐng)單元,用于從操作系統(tǒng)申請(qǐng)預(yù)設(shè)數(shù)量的大塊內(nèi)存;
記錄單元,用于利用Buffer記錄所述大塊內(nèi)存的首地址、起始偏移量和長(zhǎng)度,并將所述Buffer標(biāo)記為unused;
組織單元,用于將所述標(biāo)記為unused的Buffer按照Buffer的起始地址升序排序,利用鏈表組織起來(lái),得到List-unused;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于蘇州浪潮智能科技有限公司,未經(jīng)蘇州浪潮智能科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710534043.1/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 互動(dòng)業(yè)務(wù)終端、實(shí)現(xiàn)系統(tǒng)及實(shí)現(xiàn)方法
- 街景地圖的實(shí)現(xiàn)方法和實(shí)現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實(shí)現(xiàn)裝置及其圖像實(shí)現(xiàn)方法
- 增強(qiáng)現(xiàn)實(shí)的實(shí)現(xiàn)方法以及實(shí)現(xiàn)裝置
- 軟件架構(gòu)的實(shí)現(xiàn)方法和實(shí)現(xiàn)平臺(tái)
- 數(shù)值預(yù)報(bào)的實(shí)現(xiàn)方法及實(shí)現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實(shí)現(xiàn)方法和實(shí)現(xiàn)裝置以及實(shí)現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實(shí)現(xiàn)方法和實(shí)現(xiàn)裝置以及實(shí)現(xiàn)系統(tǒng)
- 輸入設(shè)備實(shí)現(xiàn)方法及其實(shí)現(xiàn)裝置





