iT邦幫忙

2021 iThome 鐵人賽

DAY 18
1

某些Kernel裡面會提供每個任務一個事件指示器(event regiser),就是在任務之內指定需要有哪些條件是任務所需要的。例如說,希望收到的事件的條件有哪些? 接收到的事件時,應該如何篩選? 事件時效是多久?以及何時被通知?當然還可以往下延伸更多條件。

這些事件的存在都是以0與1的方式存在,一個事件指示器是可以以16 bit、32 bit、64 bit....甚至更長的位元存在的,這些就要視條件檢查時的設定,有需要可以繼續增加,如果沒必要,也可以刪減。所以我們從這裡就知道,視條件檢查就是決定事件指示器裡面條件設定的關鍵。

條件檢查,其實就是and/or的一個簡單邏輯,如果兩者皆須存在就用and,如果只要單一個要素存在就用or,透過這種方式就可以設定好條件,然後針對條件,讓任務去接收或者發送訊息。

不過,不管事件指示器如何設定,最後關鍵還是由每個任務自行去做最後決策,假設某個任務在執行的時候,他不願意照事件指示器裡設定的條件去接收或發送訊息,這時這個事件指示器就會變成一個無效的機制。

另外,假設事件指示器裡面設定的條件時,發現有多個來源都符合時,就有可能會出現混亂的情形,此時,要解決這個問題的方式,就是把其他幾個事件指示器的條件做合併,把相同的條件來源,透過合併的條件做篩選,但是這也有缺點,就是在篩選過程會漏掉某些符合某項事件條件,卻因另一個事件關係而被剔除的問題產生。


上一篇
Day 17 管道的應用
下一篇
Day 19 信號
系列文
ARM 組合語言:30天學習心得分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言