剛剛看了網(wǎng)絡(luò)上一篇文章,他說,現(xiàn)在多任務(wù)OS在國內(nèi)的工程師界形成了一陣狂風(fēng)!我沒有調(diào)查,不敢茍同。但本月初,與本校一位老教授談到嵌入式OS,他好像也是對于Linux情有獨(dú)鐘。
現(xiàn)在的RTOS從任務(wù)管理方式可分兩類,一種是搶占式的,一種是時(shí)分式的,前者多用于實(shí)時(shí)性較高的應(yīng)用,后者用于實(shí)時(shí)性不高而事務(wù)較復(fù)雜的大型OS,當(dāng)然現(xiàn)在許多OS都是兩者兼有,還有一些就是協(xié)作式多任務(wù)OS。
像現(xiàn)在的許多小RTOS都是前者,要求每個(gè)任務(wù)的優(yōu)先級不同,當(dāng)某個(gè)高于現(xiàn)任務(wù)優(yōu)先級的任務(wù)就緒就會(huì)產(chǎn)生新的任務(wù)調(diào)度,這種OS提升了系統(tǒng)的實(shí)時(shí)性,但也帶來了編程者的一些麻煩,比如有時(shí)有些任務(wù)本身就是平等的,我們希望能各個(gè)任務(wù)各執(zhí)行一定時(shí)間再切換就會(huì)感到相當(dāng)為難,每個(gè)任務(wù)除非自已放棄或有更高優(yōu)先級的任務(wù)就緒,否則是不會(huì)產(chǎn)生任務(wù)調(diào)度的,當(dāng)任務(wù)較多時(shí),低優(yōu)先級任務(wù)的協(xié)調(diào)是很麻煩的。
現(xiàn)在較好的VXWORKS、NECLUE、μCOS-III等多任務(wù)OS則是上面兩者的結(jié)合,既可由任務(wù)的優(yōu)先級產(chǎn)生調(diào)度,也可由時(shí)間片到產(chǎn)生新的任務(wù)調(diào)度。
實(shí)際在選用多任務(wù)OS前,建議先看看項(xiàng)目是不是真需要用OS!如果任務(wù)可折分性較差,折分后的各任務(wù)間有N多的同步問題和復(fù)用資源問題,那還是放棄用多任務(wù)OS,或?qū)⑦@些功能都放在一個(gè)任務(wù)里,多任務(wù)未必就好!
如果你的任務(wù)獨(dú)立性強(qiáng),互相間的依存關(guān)系不強(qiáng),那么采用分時(shí)OS,這樣做會(huì)使你的代碼編寫真正體會(huì)到多任務(wù)的優(yōu)點(diǎn);如果任務(wù)相互有一定關(guān)聯(lián)度,你還要對OS的內(nèi)存管理機(jī)制、任務(wù)間的通信機(jī)制、同步機(jī)制等做較詳細(xì)的調(diào)查后再先定用什么OS。
他認(rèn)為目前國內(nèi)的研發(fā)廠商和公司形成了一個(gè)怪圈,就是人人研發(fā)LINX的嵌入式應(yīng)用,好象LINX是塊不要錢的肥肉就會(huì)很好用一樣。LINX本身是為桌上系統(tǒng)研發(fā)的多進(jìn)程多線程OS,2.0的代碼量有幾百萬行,其中的大多數(shù)是嵌入式應(yīng)用不需要的,而且里面本沒有搶占式多任務(wù)核,如果你的應(yīng)用對實(shí)時(shí)性較高,那你就要自已寫這個(gè)搶占式核,當(dāng)然是可以寫出來的,但你要在里面花上很多時(shí)間才能寫出一個(gè)沒經(jīng)過實(shí)際應(yīng)用的不可靠的RTOS,絕不是明智之舉。一個(gè)成功的嵌入式RTOS可能只需要5個(gè)一般的工程師就可以寫出來,但要50個(gè)相當(dāng)歷害的工程師來調(diào)試和DEBUG,還要500個(gè)工程師試用,F(xiàn)在選LINX一方面是商業(yè)的抄作,一方面是老板們的惜小錢而失大利,更多的是工程師們希望能做一些有挑戰(zhàn)性的工作。但這結(jié)果有多少是如人愿呢?事實(shí)上,大多情況是項(xiàng)目流產(chǎn),工程師們又跑到另一家公司接著玩,這樣的惡性循環(huán)何時(shí)才能結(jié)束!
這個(gè)世界本來就是有分工的,有些人研發(fā)OS,有些人用OS開發(fā)產(chǎn)品,不要想從種大米開始!買的那怕是個(gè)最爛的OS也一定比幾個(gè)工程師花上一年改出來的面目全非的LINX好N倍,嵌入式LINX的結(jié)構(gòu)和應(yīng)用遲早會(huì)有一個(gè)國際化的標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)不會(huì)是由一兩個(gè)工程師的改寫而決定,如果是專門研發(fā)OS為生的公司,我給100倍的支持,如果是想自已改一個(gè)OS自已用,我覺得那還不如買一個(gè)OS,把你的智慧用在產(chǎn)品的優(yōu)化和早日面市上吧!可能有人會(huì)說人家的OS不如自已的好用!別人現(xiàn)成的商品化OS你都用不好,那你在LINX這口大井里改出來的OS能好用嗎?!