第七章 動態記憶體管理
7.1 記憶體控制塊
μc/os-ⅱ對記憶體進行兩級管理,即把乙個連續的記憶體空間分為若干各分割槽,每個分割槽分為若干個大小相等的記憶體塊。作業系統以分割槽為單位來管理動態記憶體,而任務以記憶體塊為單位來獲取和釋放動態記憶體。
7.1.1 可動態分配記憶體劃分
1. 記憶體塊
μc/os-ⅱ以記憶體塊為單位向應用程式提供動態記憶體。記憶體塊的大小由使用者定製。
2. 記憶體分割槽
大小相等的多個記憶體塊可以組成乙個記憶體分割槽。記憶體分割槽是系統對記憶體進行管理的基本單位。
3. 記憶體分割槽與記憶體塊的定義
int16u intmembuf[10][10]; 有10個記憶體塊,每個記憶體塊長度為10的記憶體分割槽。
7.1.2 記憶體控制塊os_mem的結構
記憶體控制塊(os_mem):記錄和跟蹤每乙個記憶體分割槽的狀態。
7.1.3 空記憶體控制塊鍊錶
在μc/os-ⅱ初始化時,會呼叫記憶體控制塊的初始化函式os_meminit()定義並初始化乙個空記憶體控制塊鍊錶。
7.2 動態記憶體的管理
7.2.1 建立動態記憶體分割槽osmemcreate()
注:分割槽的記憶體塊至少有兩塊;每個記憶體塊的空間至少能存放乙個指標。
7.2.2 請求獲得乙個記憶體塊osmemget()
在呼叫函式
osmemget()
時,應該事先知道該分割槽中記憶體塊的大小,並且在使用時不能超過該記憶體長度。
7.2.3 釋放乙個記憶體塊osmemput()
在呼叫osmemput()
函式的乙個記憶體塊時,一定要確保把該記憶體塊釋放到它原來所屬的記憶體分割槽中。
7.2.4 查詢乙個記憶體分割槽的狀態osmemquery()
int8uosmemquery(os_mem *pmem, os_mem_data *pdata);
嵌入式作業系統uCOSII
2.4 常用資料結構 2.4.1 程式控制塊 本質上是結構體 typedef struct tbctcb 2.4.2 控制塊的組織 鍊錶 typedef struct tcbtcb 位圖!3 ucossii中的任務 任務組成 任務程式 函式 任務堆疊和任務控制塊 具有私有空間的任務叫做程序,沒有私有...
嵌入式 實時作業系統導論
排程任務和資料 訊號量和共享資料 可重入性和訊號量 多個訊號量 訊號量作為訊號裝置 使用訊號量的易出現問題 訊號量變數 所謂任務,是指在乙個rtos中所寫的軟體的基本構造塊,也就是通常所說的子程式。有關任務是如何呼叫 它與rots是如何配合工作的等問題稍後再討論。在rtos中乙個任務總是處在下列三種...
嵌入式系統 實時作業系統 RTOS
一 rtos中的基本概念 背景 rtos具有的功能 作業系統中的程序與執行緒 二 嵌入式作業系統的主要種類 1 uc os ii 2 linux 作業系統 3 vxworks 4 wince os 作業系統,operating system 是嵌入式系統中的靈魂,是其軟體系統中的重要組成部分,嵌入式...