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

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(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

學(xué)習(xí)uC/OS-II任務(wù)調(diào)度的疑惑,就緒態(tài)如何進(jìn)入運(yùn)行態(tài)?

作者:birder 欄目:嵌入式系統(tǒng)
學(xué)習(xí)uC/OS-II任務(wù)調(diào)度的疑惑,就緒態(tài)如何進(jìn)入運(yùn)行態(tài)?
看《uC/OS-II(第二版)》P79的那個(gè)任務(wù)切換的狀態(tài)機(jī),結(jié)合它的源碼,
感覺很不明白:
就緒態(tài)進(jìn)入運(yùn)行態(tài)只能通過(guò)三個(gè)系統(tǒng)調(diào)用,即OSStart(),OSIntExit(), OS_TASK_SW()。
但是,比如當(dāng)前運(yùn)行的是空閑任務(wù)OS_TaskIdle(),而空閑任務(wù)當(dāng)中不包含它們當(dāng)中的任何一個(gè)系統(tǒng)調(diào)用;我還看了OSTimeTick()中的代碼也不包含它們中的任何一個(gè)。
那么,其它高優(yōu)先級(jí)的任務(wù)就緒了,怎么能從就緒態(tài)進(jìn)入到運(yùn)行態(tài)呢?

小弟剛接觸操作系統(tǒng),請(qǐng)大家不吝賜教,謝謝!:)


2樓: >>參與討論
WalKerOne
這個(gè)任務(wù)是在沒有其他任何任務(wù)進(jìn)入就緒態(tài)時(shí)才運(yùn)行的把?
 
3樓: >>參與討論
birder

但如果其它任務(wù)進(jìn)入就緒狀態(tài),其它任務(wù)怎么獲得處理器呢?

4樓: >>參與討論
birder
任務(wù)狀態(tài)定義
書上那個(gè)任務(wù)狀態(tài)機(jī)轉(zhuǎn)換的圖中,那些狀態(tài)uC/OS-II中都沒有定義呀?
相反的,uCOS_II.H中有如下的狀態(tài)定義:
*********************************************************************************************************
*                              TASK STATUS (Bit definition for OSTCBStat)
*********************************************************************************************************
*/
#define  OS_STAT_RDY            0x00        /* Ready to run                                            */
#define  OS_STAT_SEM            0x01        /* Pending on semaphore                                    */
#define  OS_STAT_MBOX           0x02        /* Pending on mailbox                                      */
#define  OS_STAT_Q              0x04        /* Pending on queue                                        */
#define  OS_STAT_SUSPEND        0x08        /* Task is suspended                                       */
#define  OS_STAT_MUTEX          0x10        /* Pending on mutual exclusion semaphore                   */
#define  OS_STAT_FLAG           0x20        /* Pending on event flag GROUP                             */

跟書上的狀態(tài)也不一樣啊,連一個(gè)起碼的"OS_STAT_RUNNING"都沒有,書上的狀態(tài)機(jī)哪兒來(lái)的?


5樓: >>參與討論
mabaoqiu
OS_TASK_SW()
系統(tǒng)定時(shí)中斷函數(shù)中有OS_TASK_SW()。應(yīng)該是在OSTimeTick()中,再找一下吧!

6樓: >>參與討論
heaven_wu
再仔細(xì)看一下代碼
外部事件發(fā)生時(shí),就會(huì)引起相關(guān)信號(hào)量或一些可用資源的產(chǎn)生,就會(huì)使就續(xù)的任務(wù)進(jìn)入就緒態(tài),你可以再看一下信號(hào)量發(fā)送和等待的一段代碼,具體我就不詳細(xì)說(shuō)了。

7樓: >>參與討論
焊出個(gè)未來(lái)
我也是新手,多看源碼
我?guī)缀鯖]看過(guò)書,看源碼幫助挺大的,半天基本可以初步了解uCOS最基本的運(yùn)行機(jī)制,比你啃書好多了。

OSIntCtxSw()在OSIntExit()中有調(diào)用,每發(fā)生一次時(shí)鐘節(jié)拍都會(huì)產(chǎn)生一次if (--ptcb->OSTCBDly == 0) ,然后你應(yīng)該知道會(huì)發(fā)生什么,不知道就看代碼吧。

8樓: >>參與討論
birder
謝謝大家
我想我應(yīng)該清楚了:)

9樓: >>參與討論
zhuph
uc/os中沒有OS_STAT_RUNNING
uc/os中沒有運(yùn)行狀態(tài)所對(duì)應(yīng)的宏定義。

一個(gè)低優(yōu)先級(jí)任務(wù)被高優(yōu)先級(jí)任務(wù)搶先,而進(jìn)行上下文切換的時(shí)機(jī),在于當(dāng)高優(yōu)先級(jí)任務(wù)就緒時(shí),會(huì)調(diào)用OSSched()。

這一點(diǎn)很關(guān)鍵。

10樓: >>參與討論
最愛韶涵
OSSched()中調(diào)用OS_TASK_SW(),使就緒任務(wù)進(jìn)入運(yùn)行狀態(tài)
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)問(wèn)什么是IP核?
ucosii2.52中怎么沒有OS_CPU_C.C文件?
我有MCU和DSP基礎(chǔ),想學(xué)嵌入式系統(tǒng),從何入手?
8019 tcp
如何登入到一臺(tái)linux電腦上?
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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