<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > R TOS動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制的優(yōu)化設(shè)計(jì)

          R TOS動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制的優(yōu)化設(shè)計(jì)

          作者: 時(shí)間:2009-10-13 來(lái)源:網(wǎng)絡(luò) 收藏
          假設(shè)小塊內(nèi)存最小為1字節(jié),并以2的指數(shù)遞增,最大為512字節(jié)。這也就意味著當(dāng)系統(tǒng)需要分配或釋放小于或等于512字節(jié)的內(nèi)存時(shí),會(huì)執(zhí)行小塊內(nèi)存操作。圖5和圖6分別是小塊內(nèi)存的分配和回收流程(圖中j代表需操作的小塊內(nèi)存對(duì)應(yīng)的緩存號(hào),若申請(qǐng)120字節(jié)則j對(duì)應(yīng)為8;min代表小塊內(nèi)存最大的緩存號(hào),如圖中min=9)。

          本文引用地址:http://www.ex-cimer.com/article/188571.htm

          圖7是對(duì)小塊內(nèi)存操作算法的簡(jiǎn)單模擬。小塊內(nèi)存緩存區(qū)從上到下依次緩存512~64字節(jié)的內(nèi)存塊。有4個(gè)操作過(guò)程:分配64字節(jié)→分配128字節(jié)→回收64字節(jié)→回收128字節(jié)。

          ①分配64字節(jié)。初始狀態(tài)小塊內(nèi)存緩存區(qū)為空,此時(shí)將會(huì)執(zhí)行大塊內(nèi)存分配操作并將1 KB內(nèi)存分割緩存到小塊內(nèi)存緩存區(qū)。在分配64字節(jié)內(nèi)存時(shí),系統(tǒng)自動(dòng)探測(cè)到了128字節(jié)、256字節(jié)和512字節(jié)處的緩存區(qū)已經(jīng)處于饑餓狀態(tài),因此也將會(huì)分配其緩存區(qū)1塊內(nèi)存。
          ②分配128字節(jié)。由于系統(tǒng)存在該大小的緩存,因此直接獲取并返回。
          ③回收64字節(jié)。由于釋放后,系統(tǒng)中64字節(jié)大小的內(nèi)存塊可以合并,因此合并后鏈入上一級(jí)緩存區(qū)。
          ④回收128字節(jié)。內(nèi)存塊再次進(jìn)行合并操作,最終調(diào)用大塊內(nèi)存釋放操作,從而回到原始態(tài)。
          圖7所示的內(nèi)存操作只是一個(gè)非常簡(jiǎn)單的模擬,實(shí)際系統(tǒng)內(nèi)存的分配和回收是非常復(fù)雜和不確定的,而小塊內(nèi)存緩存分配機(jī)制的性能在這種情況下表現(xiàn)得尤為突出。總體而言其具有以下幾點(diǎn)優(yōu)勢(shì):
          ①快速性。因?yàn)槭褂昧司彺鏅C(jī)制,所以在大部分情況下,小塊內(nèi)存釋放后依舊在緩存區(qū)中,當(dāng)系統(tǒng)再次分配該大小的內(nèi)存塊時(shí)就極為快速。
          ②自適應(yīng)性。在分配小塊內(nèi)存的過(guò)程中,算法能檢測(cè)出處于饑餓狀態(tài)的內(nèi)存塊大小,并依次為它們所在的緩存區(qū)分配1塊相應(yīng)大小的內(nèi)存塊。
          性。在小塊內(nèi)存的回收過(guò)程中,該算法將對(duì)內(nèi)存塊進(jìn)行合并重組。假若某時(shí)刻先前從大塊內(nèi)存中分配的1 KB內(nèi)存塊全部被小內(nèi)存塊釋放,其經(jīng)過(guò)重組后必定能重新添加到大內(nèi)存塊存儲(chǔ)區(qū)。

          3 優(yōu)化后的系統(tǒng)機(jī)制
          圖8和圖9分別是優(yōu)化后系統(tǒng)分配和回收內(nèi)存的算法,圖中的max代表的是小塊內(nèi)存的最大值。當(dāng)不能得到所需的小塊內(nèi)存,或者釋放小塊內(nèi)存最終合并成大塊內(nèi)存時(shí),分別調(diào)用大塊內(nèi)存分配和釋放操作,從而保證小塊內(nèi)存和大塊內(nèi)存操作能很好地協(xié)作,增強(qiáng)了系統(tǒng)的穩(wěn)定性。

          結(jié) 語(yǔ)
          盡管在引入小塊內(nèi)存緩存分配機(jī)制后,系統(tǒng)在分配小塊內(nèi)存時(shí)會(huì)存在一定的內(nèi)存內(nèi)部碎片,但由于小塊內(nèi)存本身很小以及大塊內(nèi)存的動(dòng)態(tài)管理機(jī)制,很好地降低了系統(tǒng)中由于存在內(nèi)存碎片而帶來(lái)的風(fēng)險(xiǎn)。在實(shí)際模擬測(cè)驗(yàn)1中,經(jīng)優(yōu)化過(guò)的動(dòng)態(tài)機(jī)制能在一定程度上提高系統(tǒng)的實(shí)時(shí)性及可靠性,在嵌入式R的設(shè)計(jì)中具有實(shí)際的意義。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();