久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6365|回復: 0
打印 上一主題 下一主題
收起左側

uC/OS-II 學習筆記—任務管理數據結構

[復制鏈接]
跳轉到指定樓層
樓主
                                                                                                
任務管理的數據結構包括任務控制塊、任務空閑鏈表和任務就緒鏈表、任務優先級指針表、任務堆棧等,是uC/OS-II內核的核心部分之一。離開了這些數據結構,內核什么功能也完成不了。這些數據的內容完全反映了任務的運行情況。
任務控制塊是任務管理的核心數據結構,操作系統在啟動的時候,首先要在內存中創建一定數量的任務控制塊。任務控制塊的數量等于操作系統能同時管理的最多任務數。
uC/OS將任務控制塊劃分為兩個鏈表:就緒鏈表和空閑鏈表。創建一個任務,就從空閑鏈表中取出一個空閑的任務控制塊,將任務的各種屬性添入該控制塊,并將該任務控制塊移到就緒鏈表,更改就緒表和就緒組,任務就從睡眠態轉換到就緒態,當沒有更高優先級的任務在運行時,任務就可以得到運行。相反,要結束一個任務的運行,就要將該任務的任務控制塊從就緒鏈表移到空閑鏈表,然后修改就緒表和就緒組,取消任務的就緒標志,就緒就從就緒態轉換到其他狀態,而只有再回到就緒態才有可能得到運行。
任務控制塊的基本結構體在ucos_ii.h文件中定義:



對任務控制塊結構OS_TCB說明如下:
(1)*OSTCBStkPtr是指向OS_STK數據類型的指針。OS_STKOS_CPU.h文件中定義:

因此,OS_STK就是無符號整形。OS_STK是任務堆棧的每個數據項的類型,對于不同的硬件系統是不同的,在做移植的時候就需要進行修改。OS_CPU.h中定義了和CPU有關的數據結構和全局變量。
任務堆棧的操作是最底層的,要用匯編語言來寫代碼,因此指針在整個結構體的第一句開始定義。那么在定義結構體的實體后,控制塊的0地址就存儲了任務堆棧的棧頂地址,方便了匯編語言操作。
換句話說,OSTCBStkPtr是只想任務堆棧棧頂的指針。每個任務都有自己的任務堆棧,任務堆棧是進行任務切換的關鍵數據結構,任務運行的CPU環境,包括任務的代碼的地址都保存在任務堆棧中。
(2)結構體OS_TCB中,使用了條件編譯語句(#if#endif)。條件編譯的含義是只有在OS_TASK_CREATE_EXT_EN>0的情況下,#if#endif之間的代碼才會被編譯,任務控制塊才會包含這些字段。OS_TASK_CREATE_EXT_EN是在頭文件中定義的宏,當它為1時,表示使用任務創建擴展功能,該段代碼就會被編譯,OS_TCB中就包含了#if#endif之間的5種結構體字段。相反,如果OS_TASK_CREATE_EXT_EN=0,那么該5種字段不會被包含。這樣的設計能最小化程序的代碼和使用最小的內存空間。
在操作系統的設計過程中,空間和效率是至關重要的,條件編譯語句使用的非常多。
(3)接下來又是一個條件編譯,含義為如果使用消息隊列或消息郵箱或信號量(包括普通信號量和互斥信號量),那么任務要用到事件控制塊,OSTCBEventPtr即指向事件控制塊的指針。否則不定義該字段。在默認情況下,是要用到事件控制塊的。從這個條件編譯指令可以知道,消息、隊列、信號量等都要用到事件控制塊。
(4)任務狀態OSTCBStat。任務狀態的取值范圍和對應的宏如表
取值
含義
OS_STAT_RDY
0x00
任務未等待事件且未掛起
OS_STAT_SEM
0x01
任務等待信號量
OS_STAT_MBOX
0x02
任務等待郵箱
OS_STAT_Q
0x04
任務等待消息隊列
OS_STAT_SUSPEND
0x08
任務掛起
OS_STAT_MUTEX
0x10
任務等待互斥信號量
OS_STAT_FLAG
0x20
任務等待事件標志
(5)任務優先級OSTCBPrio。每個任務有唯一的優先級,因此uC/OS-II以優先級作為事件的標志,作為任務管理的主鍵。任務的優先級可以是0~63,但優先級6263被統計任務和空閑任務占用,用戶任務的優先級可以選擇0~61,數字越低,優先級越高。
6)
該處4項都與設置就緒表有關,而就緒表中的內容對應著任務的優先級,因此,這4項都是關于優先級的運算。其目的在于提前進行運算,即在任務創建時運行一次,而在任務調度的時候不需要反復進行運算,以節省時間,含義如表所示:
參數
含義
OSTCBY
任務優先級右移3位,相當于優先級除以8
OSTCBBitY
任務在優先級組表中的位置
OSTCBX
任務優先級低3
OSTCBBitX
任務優先級在對應的任務就緒表中的位置



                                                                                            

                                                                                                                                                                                                                                                                                                                                                                                                                        
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 男女激情网| 黑色丝袜三级在线播放 | 国产精品美女久久久久久免费 | 日韩一区二区三区在线视频 | 性高湖久久久久久久久3小时 | 成人久久久 | 日韩高清国产一区在线 | 俺去俺来也www色官网cms | 欧美精品在线观看 | 国产一区二区影院 | 天天爽网站 | 国产99精品 | 91色综合| 天天碰日日操 | 亚洲一区免费在线 | www.操.com | 午夜综合 | 国产一区二区三区色淫影院 | 欧美亚洲国产成人 | 在线观看亚洲 | 成人欧美一区二区三区白人 | 国产一级片一区二区 | 欧美成人h版在线观看 | 国产高清自拍视频在线观看 | 99免费在线视频 | 日韩视频一区二区三区 | 国内自拍第一页 | 国产精品91网站 | 日本午夜一区二区三区 | 欧美一级二级视频 | 亚洲精品久久国产高清情趣图文 | 亚洲精品一区二区 | 国产一级片av | 青青草视频免费观看 | 一级毛片免费视频观看 | h在线免费观看 | 亚洲欧美中文日韩在线v日本 | 国产综合精品 | 日韩影音 | 密色视频 |