vxworks內存管理(一)

vxworks中內存分配采用最先適配法,提供2種虛擬內存接口。

5.1 基本概念

嵌入式系統(tǒng)的存儲器,主要有內部/外部2種。

內部存儲器(內存):隨機存儲器(RAM)

RAM分動態(tài)存儲(DRAM)、靜態(tài)存儲器(SRAM),SRAM主要用作高速緩存,DRAM是主內存。

外部存儲器:只讀存儲器(ROM)、非易失存儲器(Flash/NVRAM),在系統(tǒng)掉電后內容仍然存在。

ROM用于存放vxworks的引導映像BootImage,其中代碼調試不便,已很少使用。

Flash(閃存)也可以存放引導映像,且訪問快、可反復修改內容,故已廣泛使用。且vxworks中提供了Flash文件系統(tǒng)(TrueFFS)的驅動。

NVRAM由電池供電,價格貴,故即使使用也是小容量的。主要用于存放系統(tǒng)引導參數(shù)、配置信息(如MAC地址、IP地址)、實時時鐘(RTC)等。

嵌入式系統(tǒng)的內存管理策略,用戶程序、內核、其他用戶程序處于同一個地址空間,開發(fā)程序不能侵犯其他程序或內核的地址。

實時系統(tǒng)應盡量避免動態(tài)分配、釋放內存。

vxworks 提供2種內存區(qū)域:內存域(region)、內存分區(qū)(partition)

region可變長內存區(qū),可分段(segment,如數(shù)據段、代碼段、未賦值初始值數(shù)據段)。靈活不浪費,但易產生碎片。

partition定長內存區(qū),可分配內存塊(buffer/block)。無碎片、效率高,但浪費。

通常vxworks內核和應用程序對內存的操作都是基于內存分區(qū)進行的。

vxworks對內存的初始化在 romInit.s 文件的romInit 函數(shù)中,主要根據啟動類型(冷啟動/熱啟動),對內存進行不同的初始化,并定義 DRAM的刷新表。這部分代碼由 BSP 開發(fā)者完成。

5.2 vxworks中的內存布局

內存分區(qū)、內存池、內存塊

內存池:一塊連續(xù)的內存區(qū)域,含一或多個內存塊

內存分區(qū):含自身的描述信息(一個結構體)和一個或多個內存池。描述信息保存于系統(tǒng)系統(tǒng)內存分區(qū)中(malloc分配)。初始創(chuàng)建時,只有一個內存池,用戶可添加內存池,池之間地址不一定連續(xù)。

vxworks系統(tǒng)啟動時,創(chuàng)建一個系統(tǒng)內存分區(qū),包含系統(tǒng)內存池。操作系統(tǒng)和通常的應用程序對內存操作都是在系統(tǒng)內存池中。

5.2.1 BootRom運行時的內存布局

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計算機的軟硬件資源,并合理的組織調度計算機的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 12,505評論 3 34
  • 嵌入式系統(tǒng)的內存管理 姓名:張猛 引用自:http://blog.csdn.net/baskmmu/article...
    oliverabc閱讀 2,212評論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 6,039評論 0 9
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,694評論 1 32
  • 我們是同學,三年的同班,在學校,我們從不聊天,從沒有交際,我也只是知道有這么一號人物。 直到那一年的暑假,我們才開...
    你的眼里飽含故事閱讀 428評論 0 0

友情鏈接更多精彩內容