|
|||||||||||
| 技術(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 |
RTOS和while(1)系統(tǒng)的實時性哪一個更好? |
| 作者:碧水長天 欄目:嵌入式系統(tǒng) |
最近,在應(yīng)用系統(tǒng)中嵌入式RTOS,似乎成為一股潮流,但是還有相當(dāng)多的應(yīng)用系統(tǒng),盡管其任務(wù)相當(dāng)多,系統(tǒng)也很復(fù)雜,對實時性要求也比較高,但是依然采用while(1)系統(tǒng)(在這里我把它等同成前/后臺系統(tǒng))。 其實“哪一個實時性更好?”的提問方式太過簡單了,準(zhǔn)確地說,在一個對實時性要求比較高的應(yīng)用系統(tǒng)里面,若硬件可滿足采用RTOS的條件,而更優(yōu)異的實時性能成了關(guān)鍵指標(biāo),那么,是選擇RTOS還是傳統(tǒng)的while(1)系統(tǒng)呢(前/后臺系統(tǒng))? 有或者這樣理解:如何評判RTOS和while(1)的實時性能? 最近和同事在討論這個問題,我認(rèn)為在中斷頻繁且要求中斷都能及時響應(yīng)的應(yīng)用系統(tǒng)里面,采用while(1)的軟件結(jié)構(gòu)能比RTOS獲得更好的實時性能。 具體的分析下次再補(bǔ)充,在這里先拋磚引玉,請各位前輩高人談?wù)勛约旱目捶ā?br> * - 本貼最后修改時間:2005-10-28 11:16:38 修改者:碧水長天 |
| 2樓: | >>參與討論 |
| 作者: AIRWILL 于 2005/10/28 23:19:00 發(fā)布:
呵呵,本人也頗有同感 其實未必 RTOS 才能完成實時性.合理的軟件安排更關(guān)鍵 |
|
| 3樓: | >>參與討論 |
| 作者: qjy_dali 于 2005/10/29 22:22:00 發(fā)布:
其實,合理的軟件安排就帶有RTOS的思想了 也就是說,在使用while(1)的方式中,有些時候仍然能寫出很直觀的程序,很RTOS樣的程序 |
|
| 4樓: | >>參與討論 |
| 作者: bluearia 于 2005/10/31 10:18:00 發(fā)布:
看軟件的復(fù)雜性 如果軟件很復(fù)雜,代碼量大,用RTOS更好分配、調(diào)度任務(wù)。 相反,軟件不是很復(fù)雜,考慮一下:如果運行一個大循環(huán)只要數(shù)MS時間,而RTOS的調(diào)度周期是10MS或更長(中斷后產(chǎn)生調(diào)度除外),哪個實時性更好呢? 使用RTOS,主要不在乎實時性,更應(yīng)該是任務(wù)調(diào)度更容易。當(dāng)然相對于那些非實時系統(tǒng)而言,RTOS的實時性當(dāng)然更好了。 * - 本貼最后修改時間:2005-10-31 10:43:54 修改者:bluearia |
|
| 5樓: | >>參與討論 |
| 作者: tusimbe 于 2005/11/2 18:48:00 發(fā)布:
問題很奇怪 如果任務(wù)不能被調(diào)度,哪有什么實時性可言?前后臺系統(tǒng)如果任務(wù)可以被調(diào)度,那就有OS的特征。 |
|
| 6樓: | >>參與討論 |
| 作者: bjwlgh 于 2005/11/3 13:40:00 發(fā)布:
前后臺的程序的實時性應(yīng)該高過RTOS 個人認(rèn)為,前后臺的程序的實時性應(yīng)該高過RTOS,但是我認(rèn)為使用RTOS更多的是從軟件的角度來說,提供了多種任務(wù)之間的通訊機(jī)制,方便大型嵌入式軟件模塊話的開發(fā),比如通訊協(xié)議的開發(fā),從這個角度來說RTOS要優(yōu)于前后臺。 另外的話所有的RTOS都有一個響應(yīng)時間的問題,只要這個響應(yīng)時間在可接收范圍內(nèi)就可以了。 |
|
| 7樓: | >>參與討論 |
| 作者: publicrtos 于 2005/11/3 22:01:00 發(fā)布:
我不認(rèn)為是這樣 我認(rèn)為RTOS的實時性要好一些。 原因: 如果一個while(1): while(1) { if(flag1)task1(); if(flag2)task2(); if(flag3)task3(); if(flag4)task4(); ... } 當(dāng)程序剛剛判斷完后flag1不成立之后,如果正好flag2、flag3、flag4都成立的話,那么task1開始的時間就要延時好長了。就算不會出錯,每個事件的發(fā)生到開始運行處理程序的這段時間每次都很難相等。 如果是RTOS: if(falg1)wakeup(task1); ... if(flag1)wakeup(task2); ... 這樣可以使每個任務(wù)都能得到確切時間的響應(yīng),程序可以更清楚的了解自己的系統(tǒng)性能,而且不會出現(xiàn)死鎖的情況。while(1)循環(huán)中加一個任務(wù)或加一段代碼,都要從最壞的條件來仔細(xì)評估每個任務(wù)會不會響應(yīng)不及時。 “實時”的含義是程序員確切知道每個任務(wù)的從觸發(fā)到響應(yīng)的時間。 |
|
| 8樓: | >>參與討論 |
| 作者: AIRWILL 于 2005/11/3 22:58:00 發(fā)布:
publicrtos 提到了切實的問題 大家都要等待,看等待的結(jié)果. while(1) 做好了,大概能達(dá)到的就是非占先式 RTOS 的特性,當(dāng)然效率應(yīng)該會比其高些. 所以,軟件里如何安排是關(guān)鍵的問題,也是軟件設(shè)計者水準(zhǔn)的表達(dá). |
|
| 9樓: | >>參與討論 |
| 作者: zhuph 于 2005/11/4 9:42:00 發(fā)布:
同意AIRWILL 關(guān)鍵要看目標(biāo)要求,達(dá)到要求即可! |
|
| 10樓: | >>參與討論 |
| 作者: fineamy 于 2005/11/4 9:51:00 發(fā)布:
os的歷史! 在計算機(jī)剛誕生時,那時的電腦編程沒有操作系統(tǒng),大家各行其事,真是八仙過海,各顯神通,軟件編程非常講究技巧(就像現(xiàn)在的單片機(jī))。后來硬件的提升,以及軟件的復(fù)雜化,這種編程方法越來越不能適應(yīng)這種變化的發(fā)展。于是操作系統(tǒng)誕生了,它簡化了軟件的復(fù)雜性,使得軟件模塊化,利于多人合作。(當(dāng)然不止這些憂點)。(這時有點像嵌入式了),后來隨著硬件進(jìn)步提升,外設(shè)增多,沒有操作系統(tǒng)已經(jīng)是不可能了。。! 操作系統(tǒng)幾乎是軟件技術(shù)的結(jié)晶,它帶動了軟件技術(shù)的發(fā)展,而軟件技術(shù)的方展反過萊又促進(jìn)了os的發(fā)展,由于不同的目的又出現(xiàn)了所謂分時操作系統(tǒng),分布式操作系統(tǒng),并行操作系統(tǒng)等等。這些都代表著軟件技術(shù)的發(fā)向。 隨著計算機(jī)技術(shù)的發(fā)展,我們的單片機(jī)出現(xiàn)了,潛入式出現(xiàn)了,既然軟件技術(shù)已經(jīng)取得了這么多的成就,這些成就自然而然的就會在我們開發(fā)這些系統(tǒng)中或多或少的應(yīng)用,無論你是有意或是無意,你都可能從那些軟件技術(shù)中或多或少獲益,并應(yīng)用于開發(fā)中。 然而,現(xiàn)在,我們開始討論到底用while(1)結(jié)構(gòu)rt好,還是用rtos好,到底哪個好,這個問題并不能一概而論,但是可以肯定的是:隨著任務(wù)的增多,軟件復(fù)雜性的提高,rtos的優(yōu)越性就會凸顯。拿一些單任務(wù)或較少任務(wù)的程序來對兩者進(jìn)行比較對rtos是不公平的。 當(dāng)然我們不排除有高手對于大量任務(wù)編程不用rtos也是得心應(yīng)手,就像我不排除計算機(jī)剛誕生時依然有復(fù)雜軟件系統(tǒng)一樣。 |
|
| 11樓: | >>參與討論 |
| 作者: forest_j 于 2005/11/4 14:03:00 發(fā)布:
安排比較好的前后臺系統(tǒng) 其實已經(jīng)自覺不自覺地引入了RTOS的思想。 如果將主循環(huán)的周期固定為數(shù)十個毫秒,那就有OS的雛形,只是放在定時中斷外來調(diào)度任務(wù)了。 |
|
| 12樓: | >>參與討論 |
| 作者: athlon64fx 于 2005/11/4 22:25:00 發(fā)布:
基本同意樓主所言 相對來說, RTOS任務(wù)實時性高, 中斷實時性低. 實時不是全部. |
|
| 13樓: | >>參與討論 |
| 作者: elelab 于 2005/11/5 3:20:00 發(fā)布:
RTOS的響應(yīng)時間是確定的,不隨任務(wù)數(shù)變化 while(1),響應(yīng)時間隨任務(wù)數(shù)變化,前邊的帖子說過了 一般RTOS給出的響應(yīng)時間是最壞值,和while(1)結(jié)構(gòu)比較時要注意這個可比前題 感覺兩者沒有結(jié)構(gòu)上的可比性,因為差別太大了,不是誰好誰壞的問題 |
|
| 14樓: | >>參與討論 |
| 作者: gouki_s 于 2006/1/25 11:04:00 發(fā)布:
實時性?任務(wù)響應(yīng)速度? 樓主要搞清楚任務(wù)響應(yīng)速度的問題。 也就是說,數(shù)據(jù),信號,事件等東西,用中斷接受保存或置標(biāo)志位都是很快的,但是什么時候處理就有區(qū)別了。 呵呵,當(dāng)然你可以完全用匯編做,實時性最高。因為匯編的話,你知道從一個任務(wù)切換到另一個任務(wù)需要對那些東西加以保護(hù)。 |
|
| 15樓: | >>參與討論 |
| 作者: AIRWILL 于 2006/1/25 21:54:00 發(fā)布:
有些不是很贊同 也許,匯編的執(zhí)行效率比C會高些, 但不會是主要因素, 我覺得我們更需要關(guān)注的是人的因素. 實時性,響應(yīng)速度更關(guān)鍵的在于對系統(tǒng)的分析和最合理乃至最優(yōu)化安排和分配(cpu資源). |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |