|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于多任務(wù)操作系統(tǒng)中變量保存的問題 |
| 作者:crying_p 欄目:MCU技術(shù) |
假設(shè)現(xiàn)在我有2個任務(wù),任務(wù)1和任務(wù)2中所定義的都是局部變量,比如任務(wù)1中有1個10字節(jié)的數(shù)組需要填充,在傳統(tǒng)的前后臺系統(tǒng)中,當(dāng)數(shù)據(jù)被填滿進(jìn)入任務(wù)2后,原有的任務(wù)1中的局部變量所占用的RAM空間被釋放,那么在多任務(wù)操作系統(tǒng)中,假設(shè)填充到第五個字節(jié)的時候,任務(wù)1切換到了任務(wù)2,那么這個時候這10個字節(jié)的數(shù)據(jù)空間在任務(wù)切換過后是否被釋放了呢?(假設(shè)我給任務(wù)1定義的這個數(shù)組為局部變量)舉個例子,比如我要向任務(wù)1的數(shù)組內(nèi)依次填充0-9這10個數(shù),現(xiàn)在填充到4的時候,任務(wù)2搶占了CPU,任務(wù)切換了,那么當(dāng)我執(zhí)行完任務(wù)2再回到任務(wù)1中繼續(xù)對后續(xù)數(shù)組內(nèi)的數(shù)據(jù)進(jìn)行填充,這時,以前填充過0-4的數(shù)組成員,它們里面存儲的數(shù)據(jù)還是0-4嗎?請DX指點 |
| 2樓: | >>參與討論 |
| 作者: 平常人 于 2007/3/14 11:29:00 發(fā)布:
任務(wù)的調(diào)度是不會改變?nèi)魏稳蝿?wù)的局部變量,除非那個任務(wù)被殺死 否則操作系統(tǒng)的任務(wù)調(diào)度就沒有意義了。 |
|
| 3樓: | >>參與討論 |
| 作者: crying_p 于 2007/3/14 12:51:00 發(fā)布:
謝謝樓上的 那也就是說,只要任務(wù)不被DEL,它所定義的局部變量實際跟static定義的全局變量一樣都會占用固定的RAM空間了,看來操作系統(tǒng)移植入MCU后所增加的RAM占用量不僅僅是操作系統(tǒng)建立需要占用的RAM空間以及各任務(wù)所占用的獨立堆棧空間,還有各任務(wù)中本來在前后臺系統(tǒng)中被調(diào)用后就自動釋放的RAM空間,對RAM的占用看來不小哦。 |
|
| 4樓: | >>參與討論 |
| 作者: 平常人 于 2007/3/16 22:53:00 發(fā)布:
局部變量與static定義的全局變量不同,它不一定占用固定RAM空間 實際上在很多系統(tǒng)中,局部變量被分配到堆棧中。 |
|
| 5樓: | >>參與討論 |
| 作者: computer00 于 2007/3/17 1:14:00 發(fā)布:
暈死,使用操作系統(tǒng)又不是為了在讓任務(wù)切換時節(jié)省內(nèi)存 剛好相反,要增加內(nèi)存的開銷. 使用操作系統(tǒng)只是為了增加管理功能和通用功能,是以犧牲硬件的性能換來的。 否則做一個任務(wù)切換,原來任務(wù)的RAM空間被釋放了,那原來的任務(wù)怎么辦?在創(chuàng)建任務(wù)時要保存程序控制塊, 并且在做任務(wù)切換時,要保存上下文,有些操作系統(tǒng)甚至要為每個任務(wù)花幾百甚至上千的字節(jié)來保存這些東東。 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |