- 嵌入式操作系統原理及應用
- 嚴海蓉編著
- 573字
- 2018-12-27 15:16:52
4.1 數組
數組可以看成固定長度的連續內存單元,可以用做同一數據類型數據的集合,占用連續內存空間,其中的所有元素名稱都相同,但每個元素都有一個編號。數組的名稱可以作為指針來使用,通過“數組名+1”操作,可以完成所有數據元素的訪問。如圖4.1所示,a+1和a[1]起到的作用是相同的。
在嵌入式操作系統中數組常用做記錄同類事物的表,方便分類存放。它的檢索速度快且恒定。但是其缺點是占用連續內存空間大,當內存分配過程中產生碎片太多時,可能無法安排數組的存放,這個問題在內存資源有限的嵌入式系統編程中體現比較突出。

圖4.1數組內存存放和訪問方式
在μCOS中任務優先級別表(OSTCBPrioTbl)就是采用數組完成的。如圖4.2所示,中間的OSTCBPrioTbl[]是一個指針數組,它以優先級為序號,將OSTCBTbl數組中的元素的指針形成一個數組,連續、等寬。每個元素在數組中的索引就是優先級號,而OSTCBPrioTbl中每個元素指向OSTCBTbl數組中相應的優先級的任務控制塊。

圖4.2 μCOS-Ⅱ初始化的數據結構
數組的不便就在于它必須預先知道最大的容量。在使用這樣的數據結構時,如果有不用的單元,也不能回收,比較浪費;而如果超過最大容量,就會數組越界,可能會造成系統的災難。嵌入式操作系統的要求就是必須滿足各種量的任務在上面運行,因此數組并不是最好的辦法。例如,在μCOS中任務優先級別表(OSTCBPrioTbl)采用數組,就使系統最大只能運行64個任務。如果只有1個任務在運行,那么系統的很多資源就被浪費了。