[發(fā)明專利]一種嵌入式操作系統(tǒng)的內(nèi)存池分配方法有效
| 申請(qǐng)?zhí)枺?/td> | 200610089365.1 | 申請(qǐng)日: | 2006-06-21 |
| 公開(kāi)(公告)號(hào): | CN101093455A | 公開(kāi)(公告)日: | 2007-12-26 |
| 發(fā)明(設(shè)計(jì))人: | 王澤民;徐立峰;曹剛 | 申請(qǐng)(專利權(quán))人: | 中興通訊股份有限公司 |
| 主分類號(hào): | G06F9/50 | 分類號(hào): | G06F9/50 |
| 代理公司: | 北京律誠(chéng)同業(yè)知識(shí)產(chǎn)權(quán)代理有限公司 | 代理人: | 梁揮;徐金國(guó) |
| 地址: | 518057廣東省深圳市南山區(qū)*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 嵌入式 操作系統(tǒng) 內(nèi)存 分配 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域,特別是涉及在嵌入式系統(tǒng)中,使用事先分配的內(nèi)存池對(duì)應(yīng)用申請(qǐng)的大小不確定的內(nèi)存進(jìn)行管理的實(shí)現(xiàn)方法。
背景技術(shù)
隨著嵌入式實(shí)時(shí)系統(tǒng)在各個(gè)領(lǐng)域的廣泛應(yīng)用,嵌入式軟件的開(kāi)發(fā)也受到越來(lái)越多的矚目。在滿足系統(tǒng)實(shí)時(shí)性要求的前提下,如何提高內(nèi)存分配的快速性、可靠性、高效性,是嵌入式軟件系統(tǒng)需要重點(diǎn)研究的一個(gè)課題。內(nèi)存分配的快速性從嵌入式系統(tǒng)對(duì)實(shí)時(shí)性的要求出發(fā),要求內(nèi)存在分配過(guò)程中盡可能的快,因此在嵌入式系統(tǒng)中,不可能采用通用操作系統(tǒng)中復(fù)雜而繁瑣的內(nèi)存分配策略,一般都采用簡(jiǎn)單、快速的內(nèi)存分配方案;內(nèi)存分配的可靠性則要求內(nèi)存分配的請(qǐng)求必須得到滿足,如果分配失敗的話可能會(huì)帶來(lái)災(zāi)難性的后果;而內(nèi)存分配的高效性,則要求內(nèi)存分配盡可能地少浪費(fèi)。
目前,在嵌入式軟件開(kāi)發(fā)中,特別是在諸如電信、信息家電這些行業(yè),由于對(duì)內(nèi)存的申請(qǐng)和釋放比較頻繁,一般采用的內(nèi)存分配方法是使用內(nèi)存分塊管理的內(nèi)存池方式。在開(kāi)源的嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-II中也采用了該種內(nèi)存分配方式。它的技術(shù)方案如圖1所示,其中:a表示各個(gè)內(nèi)存頭信息,m、n、f均為任意整數(shù)。相同大小的內(nèi)存塊由實(shí)箭頭構(gòu)成一個(gè)鏈表。
為了避免由于內(nèi)存頻繁申請(qǐng)和釋放而導(dǎo)致內(nèi)存碎片,通用的內(nèi)存池管理方式首先配置各種大小的內(nèi)存塊的數(shù)量,比如21字節(jié)大小的內(nèi)存塊m個(gè),22字節(jié)大小的內(nèi)存塊n個(gè),以此類推,2n字節(jié)大小的內(nèi)存塊f個(gè)(其中m、n、f均為任意整數(shù)),一般為了保證內(nèi)存分配的可靠性,各種內(nèi)存塊大小保持一個(gè)較大的上限值,同時(shí)在內(nèi)存頭中保存每個(gè)內(nèi)存塊的信息。然后在空閑內(nèi)存中分配一個(gè)大內(nèi)存,專門(mén)用于滿足用戶的內(nèi)存申請(qǐng)需求,該內(nèi)存池大小為各種大小的內(nèi)存塊大小的總和,即:(21×m+22×n+…+2n×f+所有內(nèi)存頭大小)的值。
在進(jìn)行內(nèi)存申請(qǐng)時(shí),根據(jù)申請(qǐng)內(nèi)存的大小在相應(yīng)的內(nèi)存池中尋找滿足大小需要的內(nèi)存塊,如果用戶申請(qǐng)的內(nèi)存是在2q-1~2q這樣一個(gè)區(qū)間中(q為一個(gè)確定的整數(shù),滿足2q-1<申請(qǐng)內(nèi)存大小<=2q),則取一個(gè)空閑的2q大小的內(nèi)存塊分配給應(yīng)用;內(nèi)存釋放是根據(jù)內(nèi)存塊的的指針找到相應(yīng)的頭,再將其標(biāo)記為自由內(nèi)存并歸還給相應(yīng)的緩沖池的過(guò)程。
在該內(nèi)存池分配方法中,不可能把內(nèi)存塊大小差距配置得很小、很均勻,比如內(nèi)存塊大小1,2,4,6...2n,因?yàn)閮?nèi)存塊大小差距太小,需要保存的內(nèi)存頭指針就多,導(dǎo)致內(nèi)存的申請(qǐng)和釋放的查找耗時(shí)劇增,直接影響內(nèi)存分配的快速性;同時(shí),諸如內(nèi)存頭大小這樣的額外的開(kāi)銷也大大增加。所以,一般各內(nèi)存塊是采取諸如2n這樣的分配方式的。
這種通用的內(nèi)存池管理方法針對(duì)頻繁申請(qǐng)和釋放的內(nèi)存,可以高效,可靠的滿足應(yīng)用需要,同時(shí)也可以較好的避免內(nèi)存碎片的問(wèn)題。因此在目前的嵌入式軟件開(kāi)發(fā)中,有很大范圍的應(yīng)用。
但是,這種通用的內(nèi)存池管理方式對(duì)內(nèi)存的使用有時(shí)是有比較大的浪費(fèi)的。因?yàn)椋瑢?duì)于用戶申請(qǐng)的內(nèi)存UB,其對(duì)應(yīng)的內(nèi)存塊是在2n-1<=UB<2n這樣一個(gè)區(qū)間中,但是經(jīng)過(guò)內(nèi)存池選擇出的內(nèi)存塊大小則是2n(必須要不小于2n,否則會(huì)導(dǎo)致內(nèi)存申請(qǐng)失敗),這樣就存在(2n-UB)大小的空間浪費(fèi),特別是UB為2n-1+1的時(shí)候尤為明顯,而且n值愈大,內(nèi)存耗費(fèi)愈大;如果存在一定數(shù)量的用戶申請(qǐng)的內(nèi)存,其大小落在靠近2n-1且大于2n-1附近的話,這種浪費(fèi)就可能對(duì)嵌入式產(chǎn)品產(chǎn)生致命影響了,因?yàn)橐环矫妫度胧较到y(tǒng)對(duì)成本的要求使得內(nèi)存在其中只是一種很有限的資源;而另一方面,即使不考慮成本的因素,系統(tǒng)有限的空間和有限的板面積決定了可配置的內(nèi)存容量是很有限的。
如何揚(yáng)長(zhǎng)避短,既保持通用內(nèi)存池管理的高效性等優(yōu)點(diǎn),又避免其可能存在的內(nèi)存浪費(fèi)是更好利用內(nèi)存池管理方式的關(guān)鍵。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種嵌入式操作系統(tǒng)的內(nèi)存池分配方法,解決現(xiàn)有技術(shù)的內(nèi)存浪費(fèi)的問(wèn)題。
為達(dá)到上述目的,本發(fā)明提供了一種嵌入式操作系統(tǒng)的內(nèi)存池分配方法,其特點(diǎn)在于,包括如下步驟:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中興通訊股份有限公司,未經(jīng)中興通訊股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200610089365.1/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。





