音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于uC/OS-II中臨界區(qū)代碼保護(hù)的理解,不知對(duì)否?

作者:ganssle 欄目:嵌入式系統(tǒng)
關(guān)于uC/OS-II中臨界區(qū)代碼保護(hù)的理解,不知對(duì)否?
所謂的“臨界區(qū)代碼”就是指該代碼從邏輯上來說不可分割或中斷。為了確!芭R界區(qū)代碼”,必須在進(jìn)入臨界區(qū)之前關(guān)中斷,退出以后開中斷。

對(duì)于單任務(wù)(或前后臺(tái)系統(tǒng))而言,若關(guān)中斷,即可對(duì)“臨界區(qū)代碼”進(jìn)行有效的保護(hù)。而對(duì)于多任務(wù)的內(nèi)核環(huán)境而言,個(gè)人認(rèn)為有困惑的地方。

禁止中斷可以有效地防止其他的ISR來對(duì)臨界區(qū)代碼進(jìn)行修改。但是,禁止中斷并不能禁止調(diào)度。若此時(shí),出現(xiàn)另外的任務(wù)優(yōu)先級(jí)高的任務(wù)(不會(huì)被ISR激活,但可能延遲時(shí)間到),CPU的執(zhí)行權(quán)將交給該任務(wù)。而該任務(wù)有可能對(duì)臨界區(qū)代碼進(jìn)行修改。這又如何能夠有效地保護(hù)臨界區(qū)代碼呢?

正確的理解在于: 當(dāng)關(guān)閉中斷以后,根本就不會(huì)出現(xiàn)優(yōu)先級(jí)高的任務(wù)處于“ready(等待運(yùn)行)”的狀態(tài)。若進(jìn)入“臨界區(qū)代碼”的任務(wù)優(yōu)先級(jí)較低,而且存在更高優(yōu)先級(jí)的任務(wù)被阻塞。阻塞的原因可能是正在等待某個(gè)資源可用,或自身調(diào)用OSTimeDly()或OSTimeDlyHMSM()進(jìn)行延遲。否則,低優(yōu)先級(jí)的任務(wù)根本就不可能獲得CPU的控制權(quán)。首先,由于關(guān)閉了中斷,就不會(huì)進(jìn)入ISR。因而就不可能在ISR中使得某個(gè)資源可用,進(jìn)而不可能激活高優(yōu)先級(jí)的任務(wù)。第二,由于關(guān)閉了中斷,系統(tǒng)時(shí)鐘節(jié)拍中斷就不會(huì)響應(yīng),因而延遲時(shí)間就不可能到,進(jìn)而也不可能使得高優(yōu)先級(jí)的任務(wù)運(yùn)行。

不知上述理解是否正確,清高手評(píng)判!

謝謝。!

2樓: >>參與討論
dmcz
假如我進(jìn)了臨界5秒鐘的時(shí)間還沒出來,這意味著什么?
 
3樓: >>參與討論
ganssle
沒見過這么設(shè)計(jì)的
設(shè)計(jì)的臨界區(qū)代碼不可能、也不允許占用這么長的時(shí)間。
否則將導(dǎo)致不能響應(yīng)中斷、不能調(diào)度。

4樓: >>參與討論
arwei
什么是rtos ?
rtos要的就是很快響應(yīng)

5樓: >>參與討論
sailz
我的看法
os2有一個(gè)應(yīng)用原則, 就是說在調(diào)用系統(tǒng)應(yīng)用時(shí)中斷必須是開著的, 否則系統(tǒng)可能會(huì)崩潰.你去看JJL的書,上面說的很明白(系統(tǒng)應(yīng)用需要定時(shí)中斷維系它的正常運(yùn)轉(zhuǎn)).

任務(wù)切換算是系統(tǒng)應(yīng)用之一.

所謂調(diào)度的實(shí)現(xiàn)方式如何呢? 我想這你的程序設(shè)計(jì)結(jié)構(gòu)有關(guān),你可以把調(diào)度
任務(wù)切換寫在中斷里,也可以寫在中斷之外(某些系統(tǒng)應(yīng)用就是如此!).

所以我覺得"禁止中斷并不能禁止調(diào)度" 不對(duì),應(yīng)該是禁止中斷時(shí)不要引發(fā)調(diào)度.

還有這句" 當(dāng)關(guān)閉中斷以后,根本就不會(huì)出現(xiàn)優(yōu)先級(jí)高的任務(wù)處于“ready(等待運(yùn)行)”的狀態(tài)"........應(yīng)該是: 關(guān)閉中斷之前,你是否正確的進(jìn)行了調(diào)度,如果正確的調(diào)度了,當(dāng)然不會(huì)有優(yōu)先級(jí)高的任務(wù)處于ready...(普通情況) 它和關(guān)閉中斷與否沒有必然的因果關(guān)系.

大家是怎么想的?

6樓: >>參與討論
eleven11
一句話:“盡可能不通過關(guān)中斷保護(hù)會(huì)有預(yù)料之外數(shù)值的寄存器”
真正的理解關(guān)中斷的意義就這一句話了,并非是全局變量就關(guān)中斷,也并非會(huì)被破壞的全局變量一定要關(guān)中斷保護(hù)……………………

很多很多,總結(jié)的就那一句話,具體的情況應(yīng)用只有個(gè)人自己實(shí)踐和思考中才能體會(huì)

* - 本貼最后修改時(shí)間:2005-9-30 10:09:43 修改者:eleven11

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
SD卡的讀寫問題請(qǐng)教,關(guān)于R1的解析!
廈門哪里有零售ATF1508(CPLD)?
做嵌入式應(yīng)用開發(fā)第一步要做的……
求教調(diào)試網(wǎng)口驅(qū)動(dòng)的具體方法和調(diào)試工具.
請(qǐng)問 嵌入式  和  FPGA
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)