R TOS動態分區內存管理機制的優化設計

圖7是對小塊內存操作算法的簡單模擬。小塊內存緩存區從上到下依次緩存512~64字節的內存塊。有4個操作過程:分配64字節→分配128字節→回收64字節→回收128字節。

①分配64字節。初始狀態小塊內存緩存區為空,此時將會執行大塊內存分配操作并將1 KB內存分割緩存到小塊內存緩存區。在分配64字節內存時,系統自動探測到了128字節、256字節和512字節處的緩存區已經處于饑餓狀態,因此也將會分配其緩存區1塊內存。
②分配128字節。由于系統存在該大小的緩存,因此直接獲取并返回。
③回收64字節。由于釋放后,系統中64字節大小的內存塊可以合并,因此合并后鏈入上一級緩存區。
④回收128字節。內存塊再次進行合并操作,最終調用大塊內存釋放操作,從而回到原始態。
圖7所示的內存操作只是一個非常簡單的模擬,實際系統內存的分配和回收是非常復雜和不確定的,而小塊內存動態緩存分配機制的性能在這種情況下表現得尤為突出??傮w而言其具有以下幾點優勢:
①快速性。因為使用了緩存機制,所以在大部分情況下,小塊內存釋放后依舊在緩存區中,當系統再次分配該大小的內存塊時就極為快速。
②自適應性。在分配小塊內存的過程中,算法能檢測出處于饑餓狀態的內存塊大小,并依次為它們所在的緩存區分配1塊相應大小的內存塊。
③動態性。在小塊內存的回收過程中,該算法將對內存塊進行合并重組。假若某時刻先前從大塊內存中分配的1 KB內存塊全部被小內存塊釋放,其經過重組后必定能重新添加到大內存塊存儲區。
3 優化后的系統內存管理機制
圖8和圖9分別是優化后系統分配和回收內存的算法,圖中的max代表的是小塊內存的最大值。當不能得到所需的小塊內存,或者釋放小塊內存最終合并成大塊內存時,分別調用大塊內存分配和釋放操作,從而保證小塊內存和大塊內存操作能很好地協作,增強了系統的穩定性。

結 語
盡管在引入小塊內存動態緩存分配機制后,系統在分配小塊內存時會存在一定的內存內部碎片,但由于小塊內存本身很小以及大塊內存的動態分區管理機制,很好地降低了系統中由于存在內存碎片而帶來的風險。在實際模擬測驗1中,經優化過的動態分區內存管理機制能在一定程度上提高系統的實時性及可靠性,在嵌入式RTOS的設計中具有實際的意義。









評論