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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

uC/OS-II學習筆記—事件管理的重要數(shù)據(jù)結構

[復制鏈接]
跳轉到指定樓層
樓主
ID:51773 發(fā)表于 2013-7-31 14:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
                                                                                                uC/OS-II作為實時多任務操作系統(tǒng),是時間驅動的,必然支持如信號量、消息等機制。事件主要包括信號量和互斥信號量,而事件的組合可以用事件標志組來管理。
在任務管理中任務控制塊承載了任務的相關信息。在時間管理中,這個載體就變成了事件控制塊(ECB)。
事件控制塊(ECB)在事件管理中占據(jù)著舉足輕重的作用。雖然事件控制塊ECB并沒有任務控制塊(TCB)的內(nèi)容豐富,但是在事件處理中仍然是核心的數(shù)據(jù)結構,頻繁被訪問。ECB的定義出現(xiàn)在操作系統(tǒng)的頭文件ucos_ii.h中。定義如下所示:

事件控制塊結構體中第一項OSEventType是時間控制塊的類型。為了增加代碼的可讀性,每種類型都在ucos_ii.h中定義了相應的宏,如下所示:

可見,OSEventType的取值可以從0到5,如果事件是基于信號量的,那么這個域的值就應該是OS_EVENT_TYPE_SEM,也就是3,單是OS_EVENT_TYPE_SEM比3具有更強的可讀性。

可見,事件等待表的大小與任務數(shù)是密切相關的。OS_LOWEST_PRIO是最低優(yōu)先級的任務的優(yōu)先級,也就是空閑任務的優(yōu)先級,這里應該是63,那么(OS_LOWEST_PRIO)/8u+1就是8,和就緒表的大小是一樣的。
事件等待組和事件等待表的關系與任務管理中就緒組和就緒表的關系式一樣的,只不過事件等待組和事件等待表用于管理等待事件發(fā)生的任務,而這兩者都在事件控制塊中,不像就緒組和就緒表是獨立的。
操作系統(tǒng)在ucos_ii.h中,以數(shù)組的形式定義了事件控制塊的實體事件ECB表:

該語句在內(nèi)存中分配了OS_MAX_EVENTS個事件控制塊,宏OS_MAX_EVENTS的默認值是10。
注意不要混淆:該表是在ucos_ii.h中聲明的全局變量,類型是OS_EVENT,與ECB中同名的OSEventTbl是不同的。ECB中的OSEventTbl被稱為事件等待表,是ECB中的一項。
一個事件塊標志著一個事件,等待這個事件的任務在事件塊的事件等待組合事件等待表中標記自己的存在,然后被阻塞。當事件發(fā)生時,操作系統(tǒng)回找到優(yōu)先級最高的等待事件發(fā)生的任務,并將該任務就緒,然后在事件等待組和事件等待表中取消該任務的標記。事件等待組合事件等待表的關系同就緒組和就緒表的關系式完全相同的。如下所示:

上圖中沒有任務等待事件發(fā)生,因此就緒組位0,就緒表的內(nèi)容頁全是0.假設有優(yōu)先級為20和32的任務在等待事件發(fā)生,那么就緒組和就緒表應該如下圖所示:

可見,事件等待組和事件等待表的關系和就緒組與就緒表的關系式完全相同的,結構也是完全相同的。
在事件管理中,將空閑的事件塊連接成一個單向的鏈表——事件控制塊空閑鏈表。這個鏈表的形式和TCB的空閑鏈表的形式是完全相同的。
當創(chuàng)建一個事件的時候,要在事件控制塊(ECB)空閑鏈表中查找是否有空閑的ECB可用。如果有,就從鏈表中取出,分配給事件。要做這件事,首先要找到鏈表的表頭,因此聲明了一個重要的全局變量OSEventFreeList指向表頭的地址,稱為事件空閑鏈表指針。OSEventFreeList的定義如下所示:

事件控制塊的OSEventPtr在事件塊未使用的時候沒有其他作用,就被用來指示下一個ECB的指針。在事件控制塊初始化程序結束的時候,該鏈表如下所示:




                                                                                            

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女黄网站 | 午夜精品一区二区三区在线播放 | 久久三区 | 99热都是精品 | 成人在线小视频 | 一区欧美 | 国产伦一区二区三区久久 | 国产精品美女久久久久久久网站 | 狠狠狠色丁香婷婷综合久久五月 | 人人鲁人人莫人人爱精品 | 欧美日韩亚洲国产综合 | 欧美日韩黄色一级片 | 91精品国产一区二区三区蜜臀 | 免费午夜视频在线观看 | 一级在线观看 | 国产亚洲欧美日韩精品一区二区三区 | 老司机成人在线 | 精品国产乱码久久久久久果冻传媒 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 成人在线观 | 中文精品视频 | 精品国产乱码久久久久久影片 | 欧美一级视频免费看 | 日韩成人av在线 | 欧洲精品久久久久毛片完整版 | 成人在线免费视频 | 亚洲一区二区三区四区五区中文 | 日韩在线免费视频 | 玖玖综合在线 | 毛片久久久 | 国产成人免费 | 日本精品一区二区三区视频 | 国产视频一区二区三区四区五区 | 国产精品久久久亚洲 | 欧美日韩在线播放 | 国产精品精品视频一区二区三区 | 日本久草| 国产精品99精品久久免费 | 日韩欧美亚洲一区 | 亚洲精久| 在线免费看毛片 |