內(nèi)存控制塊OS_MEM的結(jié)構(gòu)
為了使系統(tǒng)能夠感知和有效地管理內(nèi)存分區(qū),μc/os-ii給每個(gè)內(nèi)存分區(qū)定義了一個(gè)叫做內(nèi)存控制塊(os_mem)的數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)就用這個(gè)內(nèi)存控制塊來記錄和跟蹤每個(gè)內(nèi)存分區(qū)的狀態(tài)。內(nèi)存控制塊的結(jié)構(gòu)如下:
當(dāng)應(yīng)用程序調(diào)用函數(shù)osmemcreate()建立了一個(gè)內(nèi)存分區(qū)之后,內(nèi)存控制塊與內(nèi)存分區(qū)和內(nèi)存塊之間的關(guān)系如圖所示。
從圖(b)中可知,內(nèi)存控制塊的內(nèi)存分區(qū)指針osmemaddr指向了內(nèi)存分區(qū),內(nèi)存分區(qū)中的各個(gè)內(nèi)存塊又組成了一個(gè)單向鏈表,內(nèi)存控制塊的鏈表指針osmemfreelist就指向了這個(gè)單向鏈表的頭。
內(nèi)存控制塊的其他三個(gè)變量分別記錄了分區(qū)中內(nèi)存塊的長度、總數(shù)目以及現(xiàn)在還未被分配的內(nèi)存塊數(shù)目。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論