[發(fā)明專(zhuān)利]一種恢復(fù)被破壞的空閑內(nèi)存鏈表的方法有效
| 申請(qǐng)?zhí)枺?/td> | 201310204921.5 | 申請(qǐng)日: | 2013-05-28 |
| 公開(kāi)(公告)號(hào): | CN104182291B | 公開(kāi)(公告)日: | 2018-04-20 |
| 發(fā)明(設(shè)計(jì))人: | 汪革;茍利平;李俊盛;劉基永;于雯 | 申請(qǐng)(專(zhuān)利權(quán))人: | 上海博達(dá)數(shù)據(jù)通信有限公司 |
| 主分類(lèi)號(hào): | G06F11/08 | 分類(lèi)號(hào): | G06F11/08 |
| 代理公司: | 上海天翔知識(shí)產(chǎn)權(quán)代理有限公司31224 | 代理人: | 劉粉寶 |
| 地址: | 201203 上海市浦*** | 國(guó)省代碼: | 上海;31 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 恢復(fù) 破壞 空閑 內(nèi)存 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及操作系統(tǒng)領(lǐng)域,具體涉及一種恢復(fù)被破壞的空閑內(nèi)存鏈表的方法。
背景技術(shù)
現(xiàn)有內(nèi)存管理技術(shù)主要是針對(duì)內(nèi)存碎片、內(nèi)存泄漏、內(nèi)存越界等問(wèn)題,其方法主要是通過(guò)設(shè)置內(nèi)存池、記錄內(nèi)存分配點(diǎn)、增加監(jiān)測(cè)區(qū)域等,當(dāng)出現(xiàn)內(nèi)存使用錯(cuò)誤時(shí),根據(jù)記錄的有關(guān)數(shù)據(jù),便于跟蹤和修復(fù)有關(guān)錯(cuò)誤。
現(xiàn)有的這些方法對(duì)于解決單塊內(nèi)存使用錯(cuò)誤有一定效果,但難以解決系統(tǒng)中維護(hù)空閑內(nèi)存塊的鏈表發(fā)生錯(cuò)誤時(shí),造成分配內(nèi)存失敗或錯(cuò)誤的問(wèn)題。
針對(duì)系統(tǒng)中維護(hù)空閑內(nèi)存塊的鏈表發(fā)生錯(cuò)誤造成的問(wèn)題,現(xiàn)有技術(shù)中通過(guò)在釋放內(nèi)存時(shí)做有效性檢查,雖然這樣可以避免釋放錯(cuò)誤內(nèi)存導(dǎo)致空閑鏈表錯(cuò)誤,但難以解決由其它情況引起的空閑內(nèi)存鏈表錯(cuò)誤,比如對(duì)沒(méi)有進(jìn)行初始化的指針賦值,導(dǎo)致錯(cuò)誤的寫(xiě)了空閑鏈表。
發(fā)明內(nèi)容
本發(fā)明針對(duì)內(nèi)存空閑鏈表破壞導(dǎo)致內(nèi)存分配失敗,甚至引起設(shè)備異常的問(wèn)題,而提供一種恢復(fù)被破壞的空閑內(nèi)存鏈表的方法。該方法利用內(nèi)存管理冗余信息來(lái)恢復(fù)被破壞的空閑內(nèi)存鏈表,極大的減少了由于內(nèi)存空閑鏈表破壞導(dǎo)致內(nèi)存分配失敗的情況。
為了達(dá)到上述目的,本發(fā)明采用如下的技術(shù)方案:
一種恢復(fù)被破壞的空閑內(nèi)存鏈表的方法,所述方法利用內(nèi)存管理冗余信息恢復(fù)被破壞的空閑內(nèi)存鏈表。
在本發(fā)明的優(yōu)選實(shí)例中,所述方法恢復(fù)被破壞的空閑內(nèi)存鏈表的具體步驟如下:
(1)形成所有空閑地址為連續(xù)的空閑內(nèi)存鏈表,且空閑鏈表控制塊記 錄空閑塊的首地址、空閑塊的大小和結(jié)束地址等信息;
(2)從空閑內(nèi)存鏈表分配地址時(shí),檢查空閑塊是否有效;
(3)檢查到空閑塊出現(xiàn)錯(cuò)誤時(shí),設(shè)置標(biāo)志,表明此空閑內(nèi)存鏈表出現(xiàn)錯(cuò)誤,后續(xù)禁止從該鏈分配地址,并根據(jù)空閑鏈表控制塊記錄的空閑塊首地址、空閑塊大小和結(jié)束地址等冗余信息開(kāi)始該內(nèi)存鏈表的整理過(guò)程;
(4)從空閑塊的起始地址開(kāi)始,把所有空閑的空閑塊重新組成一空閑鏈表;
(5)把在上述整理過(guò)程中釋放的內(nèi)存塊組成另一空閑鏈表;
(6)將上述兩個(gè)鏈表合并,組成新的空閑內(nèi)存鏈表;
(7)處理結(jié)束,后續(xù)內(nèi)存申請(qǐng)從新的鏈表中分配。
進(jìn)一步的,所述步驟(1)中組成空閑內(nèi)存鏈表的過(guò)程如下:
(11)首先,根據(jù)鏈表中空閑塊數(shù)目和每塊大小及其鏈表控制塊等冗余信息計(jì)算出此空閑鏈表需要的所有內(nèi)存大小,并分配內(nèi)存;
(12)把分配內(nèi)存的地址即空閑塊的起始地址、結(jié)束地址、空閑塊大小、數(shù)目等記錄到鏈表控制快中,每個(gè)空閑塊具有冗余頭部,用來(lái)記錄分配的地址、該塊內(nèi)存處于分配或空閑狀態(tài)及下一塊的指針,并初始化每塊頭部,所有空閑塊組成空閑內(nèi)存鏈表。
進(jìn)一步的,所述步驟(6)把兩個(gè)鏈表合并方法為將步驟(4)中形成的空閑鏈表插入到步驟(5)中空閑鏈表的尾部,形成一個(gè)新的空閑鏈表。
利用本發(fā)明提供的方案能夠大大減少由于內(nèi)存空閑鏈表破壞導(dǎo)致內(nèi)存分配失敗的情況,增強(qiáng)了系統(tǒng)的穩(wěn)定性,并能及時(shí)的發(fā)現(xiàn)內(nèi)存越界等錯(cuò)誤。
具體實(shí)施方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面進(jìn)一步闡述本發(fā)明。
針對(duì)空閑內(nèi)存鏈表破壞導(dǎo)致內(nèi)存分配失敗的問(wèn)題,本發(fā)明利用內(nèi)存管理冗余信息恢復(fù)被破壞的空閑內(nèi)存鏈表,具體過(guò)程如下:
1、根據(jù)鏈表中空閑塊數(shù)目和每塊大小及其鏈表控制塊等冗余信息計(jì)算出此空閑鏈表需要的所有內(nèi)存大小,并分配內(nèi)存;
2、把分配內(nèi)存的地址即空閑塊起始地址、結(jié)束地址、空閑塊大小、數(shù)目、空閑內(nèi)存鏈表的指針等記錄到鏈表控制塊中、設(shè)置標(biāo)志位為正常狀態(tài)(該標(biāo)志位用來(lái)表明空閑鏈表分配過(guò)程中是否檢查到異常,如有異常發(fā)生,則設(shè)置為異常狀態(tài)),鏈表控制塊記為C,每個(gè)空閑塊具有冗余頭部,用來(lái)記錄分配的地址、狀態(tài)標(biāo)志位(表明該塊內(nèi)存處于分配或空閑狀態(tài))、下一空閑塊的指針,初始化每塊頭部,所有空閑塊組成空閑內(nèi)存鏈表L,把L賦值于鏈表控制塊C中的記錄空閑鏈表指針的域;
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于上海博達(dá)數(shù)據(jù)通信有限公司,未經(jīng)上海博達(dá)數(shù)據(jù)通信有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310204921.5/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 上一篇:自動(dòng)路面刻紋機(jī)
- 下一篇:劑量指示器的末端
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 用于移動(dòng)終端的空閑屏幕布置結(jié)構(gòu)和空閑屏幕顯示方法
- 一種RNC配置空閑間隔的方法和系統(tǒng)
- 存儲(chǔ)器系統(tǒng)和控制存儲(chǔ)器系統(tǒng)的方法
- 一種內(nèi)存管理方法及裝置
- 內(nèi)存分配的方法及裝置
- 文件系統(tǒng)級(jí)的非揮發(fā)性存儲(chǔ)器磨損均衡空閑塊管理方法
- 用于空閑狀態(tài)確定的系統(tǒng)和方法
- 空閑產(chǎn)能的發(fā)布、交易管理方法及系統(tǒng)和存儲(chǔ)介質(zhì)
- 終端配置方法、平臺(tái)、系統(tǒng)和終端以及存儲(chǔ)介質(zhì)
- 網(wǎng)絡(luò)連接池管理方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)





