熟妇,五月综合激情,黄片无限看欧美,亚洲草原天堂视频

文章詳情
所在位置: 首頁> 技術(shù)文章> 其它>

電子產(chǎn)品開發(fā)里的分塊式內(nèi)存管理

日期:2024-09-18 09:58
瀏覽次數(shù):874
摘要:電子產(chǎn)品開發(fā)里的分塊式內(nèi)存管理的是如何高效,快速的分配,并且在適當(dāng)?shù)臅r候釋放和回收內(nèi)存資源。使用FSMC外擴SRAM,可實現(xiàn)內(nèi)存容量的擴展。通過擴展后,我們可使用的內(nèi)存(外擴SRAM容量是1MB,STM32F103ZET6內(nèi)部SRAM有64KB)就比較多了。單片機開發(fā)里的分塊式內(nèi)存管理 盡管有這么多可使用的內(nèi)存,但我們還是得使用某種方式來有效管理這些內(nèi)存,這種方式和我們學(xué)習(xí)C語言時,使用malloc和free函數(shù)來申請內(nèi)存和內(nèi)存釋放類似,malloc用于申請內(nèi)存,free用于釋放內(nèi)存。本文...

      電子產(chǎn)品開發(fā)里的分塊式內(nèi)存管理,是指軟件運行時對計算機內(nèi)存資源的分配和使用的技術(shù)。其主要的目的是如何高效,快速的分配,并且在適當(dāng)?shù)臅r候釋放和回收內(nèi)存資源。使用FSMC外擴SRAM,可實現(xiàn)內(nèi)存容量的擴展。通過擴展后,我們可使用的內(nèi)存(外擴SRAM容量是1MB,STM32F103ZET6內(nèi)部SRAM有64KB)就比較多了。單片機開發(fā)里的分塊式內(nèi)存管理

       盡管有這么多可使用的內(nèi)存,但我們還是得使用某種方式來有效管理這些內(nèi)存,這種方式和我們學(xué)習(xí)C語言時,使用malloc和free函數(shù)來申請內(nèi)存和內(nèi)存釋放類似,malloc用于申請內(nèi)存,free用于釋放內(nèi)存。本文我們就來介紹一種簡單的內(nèi)存管理方式:分塊內(nèi)存管理。單片機開發(fā)里的分塊式內(nèi)存管理,該方法的實現(xiàn)原理如圖:

 

       從上圖我們可以看出,單片機開發(fā)里的分塊式內(nèi)存管理由內(nèi)存池和內(nèi)存管理表兩部分組成,內(nèi)存池被分成n個內(nèi)存塊,然后對應(yīng)內(nèi)存管理表,內(nèi)存管理表就是用來標(biāo)識相應(yīng)的內(nèi)存塊是否使用,我們可以對它進行設(shè)置。當(dāng)相應(yīng)的內(nèi)存管理表設(shè)置為0的時候,表示該內(nèi)存塊沒有被使用;而當(dāng)內(nèi)存管理表設(shè)置為非零的時候,表示該內(nèi)存已被使用,而內(nèi)存管理表里面的數(shù)字表示當(dāng)前申請內(nèi)存塊的數(shù)量,且申請的內(nèi)存塊是連續(xù)的。單片機開發(fā)里的分塊式內(nèi)存管理

      從上圖中我們還可以看出內(nèi)存分配的方向是從底到頂?shù)姆峙浞较颍词紫葟?末端開始找空內(nèi)存。通常當(dāng)內(nèi)存管理剛初始化的時候,內(nèi)存表全部清零,表示沒有任何內(nèi)存塊被占用。

     (1)內(nèi)存分配原理

      當(dāng)指針p調(diào)用malloc申請內(nèi)存的時候,先判斷p要分配的內(nèi)存塊數(shù)(m),然后從第n項開始,向下查找,直到找到m塊連續(xù)的空內(nèi)存塊(即對應(yīng)內(nèi)存管理表項為0),然后將這m個內(nèi)存管理表項的值都設(shè)置為m(標(biāo)記被占用),*后,把*后的這個空內(nèi)存塊的地址返回指針p,完成一次分配。注意,如果當(dāng)內(nèi)存不夠的時候(找到*后也沒找到連續(xù)的m塊空閑內(nèi)存),則返回NULL給p,表示分配失敗。

     (2)內(nèi)存釋放原理

      當(dāng)p申請的內(nèi)存用完,需要釋放的時候,調(diào)用free函數(shù)實現(xiàn)。free函數(shù)先判斷p指向的內(nèi)存地址所對應(yīng)的內(nèi)存塊,然后找到對應(yīng)的內(nèi)存管理表項目,得到p所占用的內(nèi)存塊數(shù)目m(內(nèi)存管理表項目的值就是所分配內(nèi)存塊的數(shù)目),將這m個內(nèi)存管理表項目的值都清零,標(biāo)記釋放,完成一次內(nèi)存釋放。

       關(guān)于單片機開發(fā)里的分塊式內(nèi)存管理,就介紹到這。