新聞中心

EEPW首頁 > 牛人業(yè)話 > 頻繁中斷狂轟亂炸,操作系統(tǒng)很難招架

頻繁中斷狂轟亂炸,操作系統(tǒng)很難招架

作者:光華居士 時(shí)間:2018-12-25 來源:電子產(chǎn)品世界 收藏

6

本文引用地址:http://m.butianyuan.cn/article/201812/396004.htm

疾風(fēng)知?jiǎng)挪?,板蕩識(shí)忠臣,考驗(yàn)灑家能耐的時(shí)刻到了!

顯然,任務(wù)和信號(hào)這些概念必須保留下來,皮之不存,毛將焉附?如果沒有了這些概念,所有基于信號(hào)進(jìn)行控制的代碼都要通通改寫!且不說時(shí)間是否來得及,單是忙活多日,一覺醒來,卻發(fā)現(xiàn)繞回了原點(diǎn),灑家脆弱的心靈也頗有些難以承受。

不過,沒有了ucos的框架,還要使用在其框架下的概念,就必須找出裸機(jī)形式下新的類似框架!既然是照葫蘆畫瓢,我們首先要提取出這顆“葫蘆”的主要特征。

透過代碼的重重迷霧,灑家百般搜索,千般思量,最終認(rèn)定,新瓢和老葫蘆的共同之處乃是:任務(wù)的數(shù)據(jù)結(jié)構(gòu)和調(diào)度機(jī)制

敲敲黑板,畫畫重點(diǎn)。任務(wù)是操作系統(tǒng)執(zhí)行所有功能的載體,操作系統(tǒng)的作用無非是建立各個(gè)任務(wù)的數(shù)據(jù)結(jié)構(gòu),然后設(shè)計(jì)一個(gè)調(diào)度機(jī)制,讓系統(tǒng)資源在這些任務(wù)的執(zhí)行體里面來回切換、輪轉(zhuǎn)而已。顯然,新的框架要解決兩個(gè)問題,“任務(wù)”的數(shù)據(jù)結(jié)構(gòu)、“任務(wù)調(diào)度”機(jī)制。

在ucos的機(jī)制中,每個(gè)任務(wù)都有自己的消息隊(duì)列,向該任務(wù)里發(fā)信號(hào),就是把信號(hào)內(nèi)容放到這個(gè)消息隊(duì)列里。Ucos的主要調(diào)度機(jī)制是每個(gè)時(shí)鐘滴答下檢查一下是否存在就緒態(tài)任務(wù),如果有,進(jìn)行任務(wù)上下文切換,跳轉(zhuǎn)到新任務(wù)體里執(zhí)行即可。

既如此,我們完全可以設(shè)計(jì)一種“邏輯任務(wù)”,每個(gè)任務(wù)都有自己的消息隊(duì)列,任務(wù)執(zhí)行體里面檢查自己的消息隊(duì)列里是否存在新的信號(hào),有信號(hào)就執(zhí)行,和ucos下的形式一模一樣。至于“任務(wù)調(diào)度”,中斷太頻繁,顯然不可能再照搬著搞任務(wù)上下文的存儲(chǔ)和恢復(fù)那一套了,裸機(jī)形式下的整個(gè)系統(tǒng)只有一個(gè)上下文,所謂調(diào)度完全可以借鑒簡(jiǎn)單操作系統(tǒng)里面的按時(shí)間片調(diào)度,弄成循環(huán)執(zhí)行的方式,依次執(zhí)行每個(gè)任務(wù)即可。

如此一來,所有控制任務(wù)的執(zhí)行代碼都不需要進(jìn)行任何改動(dòng),穿梭在各個(gè)“邏輯任務(wù)”之間的信號(hào)依然是之前代碼里定義好的那些信號(hào),最大程度上做到了程序的復(fù)用。

更難得的是,在裸機(jī)形式的系統(tǒng)里,建立了任務(wù)和消息的機(jī)制,模塊之間的低耦合強(qiáng)內(nèi)聚特性得到了保留,為后續(xù)代碼的開發(fā)和維護(hù)提供了大大的方便。

結(jié)語

去年桃花此門中,桃花人面相映紅,人面不知何處去,桃花依舊笑春風(fēng)。Ucos雖然不知跑到那里去了,但是大部分代碼的骨架還在,任務(wù)-消息-模塊的神韻猶在。我們唯一需要牢牢記住的只是:頻繁中斷狂轟亂炸,操作系統(tǒng)很難招架。


上一頁 1 2 3 下一頁

關(guān)鍵詞: 汽車 遙控

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉