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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6394|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

uC/OS-II 學(xué)習(xí)筆記—任務(wù)管理數(shù)據(jù)結(jié)構(gòu)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51773 發(fā)表于 2013-7-14 04:01 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
                                                                                                
任務(wù)管理的數(shù)據(jù)結(jié)構(gòu)包括任務(wù)控制塊、任務(wù)空閑鏈表和任務(wù)就緒鏈表、任務(wù)優(yōu)先級(jí)指針表、任務(wù)堆棧等,是uC/OS-II內(nèi)核的核心部分之一。離開(kāi)了這些數(shù)據(jù)結(jié)構(gòu),內(nèi)核什么功能也完成不了。這些數(shù)據(jù)的內(nèi)容完全反映了任務(wù)的運(yùn)行情況。
任務(wù)控制塊是任務(wù)管理的核心數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng)在啟動(dòng)的時(shí)候,首先要在內(nèi)存中創(chuàng)建一定數(shù)量的任務(wù)控制塊。任務(wù)控制塊的數(shù)量等于操作系統(tǒng)能同時(shí)管理的最多任務(wù)數(shù)。
uC/OS將任務(wù)控制塊劃分為兩個(gè)鏈表:就緒鏈表和空閑鏈表。創(chuàng)建一個(gè)任務(wù),就從空閑鏈表中取出一個(gè)空閑的任務(wù)控制塊,將任務(wù)的各種屬性添入該控制塊,并將該任務(wù)控制塊移到就緒鏈表,更改就緒表和就緒組,任務(wù)就從睡眠態(tài)轉(zhuǎn)換到就緒態(tài),當(dāng)沒(méi)有更高優(yōu)先級(jí)的任務(wù)在運(yùn)行時(shí),任務(wù)就可以得到運(yùn)行。相反,要結(jié)束一個(gè)任務(wù)的運(yùn)行,就要將該任務(wù)的任務(wù)控制塊從就緒鏈表移到空閑鏈表,然后修改就緒表和就緒組,取消任務(wù)的就緒標(biāo)志,就緒就從就緒態(tài)轉(zhuǎn)換到其他狀態(tài),而只有再回到就緒態(tài)才有可能得到運(yùn)行。
任務(wù)控制塊的基本結(jié)構(gòu)體在ucos_ii.h文件中定義:



對(duì)任務(wù)控制塊結(jié)構(gòu)OS_TCB說(shuō)明如下:
(1)*OSTCBStkPtr是指向OS_STK數(shù)據(jù)類(lèi)型的指針。OS_STKOS_CPU.h文件中定義:

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



                                                                                            

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久999 | 不卡一区 | 国产成人99 | 91豆花视频| 国产高清在线 | 毛片网络| 麻豆精品一区二区三区在线观看 | 91影片 | 天堂中文在线播放 | 色噜噜狠狠色综合中国 | 欧美激情a∨在线视频播放 成人免费共享视频 | 偷拍自拍网 | 日韩电影一区二区三区 | 日本天天色 | 国产伊人精品 | 久久中文字幕一区 | 成人欧美一区二区三区黑人孕妇 | 91中文字幕在线观看 | 精品一区二区久久久久久久网精 | 国产欧美精品在线 | 亚洲免费一区 | 国产一区亚洲 | 成人免费看片 | 欧美一区二区久久 | 91麻豆精品国产91久久久资源速度 | 亚洲综合精品 | 欧美不卡一区二区 | wwwxxx国产 | 人成在线 | 久久99这里只有精品 | 国内精品久久久久 | 亚洲高清在线视频 | 欧美日韩在线免费 | 久久不卡 | 国产精品视频 | 精品一区二区三区不卡 | 久久久精品一区二区三区 | 精品真实国产乱文在线 | 激情一区二区三区 | 日本高清视频在线播放 | 五月婷婷激情网 |