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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
                                                                                                uC/OS-II作為實時多任務操作系統,是時間驅動的,必然支持如信號量、消息等機制。事件主要包括信號量和互斥信號量,而事件的組合可以用事件標志組來管理。
在任務管理中任務控制塊承載了任務的相關信息。在時間管理中,這個載體就變成了事件控制塊(ECB)。
事件控制塊(ECB)在事件管理中占據著舉足輕重的作用。雖然事件控制塊ECB并沒有任務控制塊(TCB)的內容豐富,但是在事件處理中仍然是核心的數據結構,頻繁被訪問。ECB的定義出現在操作系統的頭文件ucos_ii.h中。定義如下所示:

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

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

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

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

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

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

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




                                                                                            

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内精品视频免费观看 | 欧美成人h版在线观看 | 超碰日本| 日韩精品在线观看一区二区 | 日韩在线欧美 | 狠狠操电影 | 久久一及片 | 日本一区精品 | 欧美日本韩国一区二区 | 久久国产精品一区二区三区 | 亚洲劲爆av | 美女视频三区 | 久久99精品久久久 | 国产精品久久久久久久久久软件 | 久热免费在线 | 美女爽到呻吟久久久久 | 玖玖精品 | 日本精品裸体写真集在线观看 | 亚洲成人精品 | 日韩在线中文字幕 | 欧美国产视频一区二区 | 91免费观看视频 | 日韩视频精品 | 国产精品视频一二三区 | 久久成人免费视频 | 精品国产一区二区三区久久狼黑人 | 欧美群妇大交群中文字幕 | 蜜桃免费av | 国产精品久久久久久久久久久久久久 | 久久精品小视频 | 国产一级淫片免费视频 | 国产美女福利在线观看 | 精精国产视频 | 天天艹日日干 | 欧美亚洲国产一区二区三区 | 亚洲精品免费视频 | 国产乱码高清区二区三区在线 | 日韩精品一区二区三区在线播放 | 国产精品免费一区二区三区四区 | 日韩欧美手机在线 | 成人免费看 |