|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
弱弱的問:os上下文切換的問題 |
| 作者:mxinfa 欄目:單片機 |
不管是ucos還是small rtos中都把上下文切換時的現(xiàn)場保護做的及其重要,小弟初學不太明白,這些工作編譯器不會做嗎?我們不用os,就做普通的前后臺系統(tǒng)為什么不用管這些,如果是startup.a51做了這些事的話,那么在os里面加上startup.a51能解決問題嗎? |
| 2樓: | >>參與討論 |
| 作者: computer00 于 2005/11/29 17:41:00 發(fā)布:
編譯器不會做這些工作。必須由你的程序做。 |
|
| 3樓: | >>參與討論 |
| 作者: mxinfa 于 2005/11/30 9:27:00 發(fā)布:
前后臺系統(tǒng)的時候上下文切換是誰做的。 做前后臺系統(tǒng)的時候我們并沒有去管上下文切換的問題啊,那不是編譯器做的嗎?小弟我更糊涂了 |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2005/11/30 10:01:00 發(fā)布:
那是中斷處理函數(shù)。在函數(shù)聲明時,必須要指明。 中斷處理函數(shù)會將一些寄存器壓棧,這是由編譯器添加進去的。 如果你有足夠多的中斷源,你也可以做一個完全基于中斷的任務調(diào)度,這樣就不用 切換保護現(xiàn)場了,全部都由編譯器完成。 |
|
| 5樓: | >>參與討論 |
| 作者: mxinfa 于 2005/11/30 10:57:00 發(fā)布:
謝謝computer00,不過還有問題,別笑話我弱啊! 即使沒有中斷,普通函數(shù)調(diào)用的時候不也得保護現(xiàn)場嗎?怎么到了os下面就得自己做,而不用os的時候編譯器就可以幫著做呢,再次感謝 |
|
| 6樓: | >>參與討論 |
| 作者: computer00 于 2005/11/30 11:33:00 發(fā)布:
操作系統(tǒng)的任務切換不是函數(shù)調(diào)用那么簡單。 函數(shù)調(diào)用的時候,地址是由硬件自動壓棧,然后函數(shù)運行完畢后,返回到函數(shù)調(diào)用的地方。 而操作系統(tǒng)不一樣,任務切換時,返回的不一定是原來進入任務切換時的地方,而可能是運行 到另外一個函數(shù)中間去了。 表面上看起來,操作系統(tǒng)是多個函數(shù)在同時運行的(實際上是不同的任務在一定的時間片內(nèi)運行)。 打個簡單的比方,播放MP3歌曲。沒有操作系統(tǒng)時,你只能一首首的播放,而有操作系統(tǒng)時,你可以 兩首或多首歌同時播放。 這個問題解釋起來要花不少力氣,你還是先去學習操作系統(tǒng)吧,等你學習到一定程度,自然對這個問題理解了。 |
|
| 7樓: | >>參與討論 |
| 作者: mxinfa 于 2005/11/30 11:39:00 發(fā)布:
非常感謝! |
|
| 8樓: | >>參與討論 |
| 作者: qjy_dali 于 2005/11/30 12:31:00 發(fā)布:
很有耐心的老師,哈哈 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |