|
現(xiàn)在多任務(wù)操作系統(tǒng)在國內(nèi)的工程師界形成了一陣狂風(fēng)!做為一名在這方面有幾年工作經(jīng)驗(yàn)的小資人員,對項(xiàng)目要不要用多任務(wù)操作系統(tǒng)用什么操作系統(tǒng)有我自已的一些看法,現(xiàn)在拿出來和大家談為論一下。
現(xiàn)在的實(shí)時(shí)多任務(wù)操作系統(tǒng)從工作方式來說可以分兩類,一種是搶占式的,一種是時(shí)分式的,前者多用于實(shí)時(shí)性較高的應(yīng)用,后者用于實(shí)時(shí)性不高可用性較高的大型操作系統(tǒng),當(dāng)然現(xiàn)在許多操作系統(tǒng)都是兩者的綜合品,還有一些就是協(xié)作式多任務(wù)操作系統(tǒng)。這兩者分別有什么好處和壞處呢?
像現(xiàn)在的許多小實(shí)時(shí)多任務(wù)操作系統(tǒng)都是前者,要求每個(gè)任務(wù)的優(yōu)先級不同,當(dāng)某個(gè)高于現(xiàn)任務(wù)優(yōu)先級的任務(wù)就緒就一定會產(chǎn)生新的任務(wù)調(diào)度,這種操作系統(tǒng)最大的提升了系統(tǒng)的實(shí)時(shí)性,但是也帶來了編程者的一些麻煩,比如有些時(shí)侯有些任務(wù)本身就是平等的,我們希望能各個(gè)任務(wù)各持行一陣時(shí)間再切換就會感到相當(dāng)為難,每個(gè)任務(wù)除非自已放棄或者有更高優(yōu)先級的任務(wù)就緒,否則是不會產(chǎn)生任務(wù)調(diào)度的,當(dāng)軟件任務(wù)較多時(shí),低優(yōu)先級任務(wù)的協(xié)調(diào)是很麻煩的。如AMX時(shí)分式的多任務(wù)操作系統(tǒng)則是采用系統(tǒng)時(shí)鐘分出一個(gè)個(gè)的時(shí)間片,每個(gè)任務(wù)聲明時(shí)分配給任務(wù)若干個(gè)時(shí)間片,一個(gè)任務(wù)的時(shí)間片結(jié)束后產(chǎn)生任務(wù)調(diào)度。這樣做能使任務(wù)的獨(dú)立性較好,但是實(shí)時(shí)性就會相應(yīng)下降。
現(xiàn)在比較好的VXWORKS、NECLUE等多任務(wù)操作系統(tǒng)則是上面兩者的結(jié)合品,即可由任務(wù)的優(yōu)先級產(chǎn)生調(diào)度,也可以由時(shí)間片到產(chǎn)生新的任務(wù)調(diào)度。
工程師在選用多任務(wù)操作系統(tǒng)前要先看看自已的項(xiàng)目是不是真需要用操作系統(tǒng)!如果你的任務(wù)可折分性較差,折分后的各個(gè)任務(wù)之間有N多的同步問題和復(fù)用資源問題,那么算了,我覺得你還是不要用多任務(wù)操作系統(tǒng),或者將這些功能都放在一個(gè)任務(wù)里面,不要有事沒事就覺得多任務(wù)好!多任務(wù)是用降低實(shí)時(shí)性來換取軟件開發(fā)的獨(dú)立性,不要被實(shí)時(shí)多任務(wù)操作系統(tǒng)的實(shí)時(shí)兩個(gè)字騙了,這個(gè)實(shí)時(shí)只是相對于其它非實(shí)時(shí)性多任務(wù)操作系統(tǒng)來講的,實(shí)時(shí)性最高的當(dāng)然是你自已編寫的單任務(wù)程序。
如果你的任務(wù)的可折分性強(qiáng),那么就可以用多任務(wù)操作系統(tǒng),如果各個(gè)任務(wù)的實(shí)時(shí)性要求不高,獨(dú)立性較高,互相之間的依存關(guān)系不強(qiáng),那么你可以采用分時(shí)式的多任務(wù)操作系統(tǒng),這樣做會使你的代碼編寫真正體會到多任務(wù)的優(yōu)點(diǎn);反之你就最好要先一個(gè)帶搶占式核的多任務(wù)操作系統(tǒng)。
同時(shí)你還要對操作系統(tǒng)的內(nèi)存管理機(jī)制、任務(wù)間的通信機(jī)制、同步機(jī)制等做了比較祥細(xì)的調(diào)查后再先定用什么操作系統(tǒng)。
目前國內(nèi)的研發(fā)廠商和公司形成了一個(gè)怪圈,就是人人研發(fā)LINX的嵌入式應(yīng)用,好象LINX是一塊不要錢的肥肉就會很好用一樣。LINX本身是為桌上系統(tǒng)研發(fā)的多進(jìn)程多線程操作系統(tǒng),2.0的代碼量有幾百萬行,其中的大多數(shù)是我們嵌入式應(yīng)用不需要的,而且里面本沒有搶占式多任務(wù)核,如果你的應(yīng)用對實(shí)時(shí)性要求較高那你就要自已寫這個(gè)搶占式核,當(dāng)然是可以寫出來的,但是你要在里面發(fā)上很多時(shí)間才能寫出一個(gè)沒經(jīng)過實(shí)際應(yīng)用的不可靠的實(shí)時(shí)多任務(wù)操作系統(tǒng)。對此我是相當(dāng)不以為然的!我認(rèn)為有一兩個(gè)專門的公司去研究LINX的嵌入式應(yīng)用就行了,用不著人人皆兵。一個(gè)成功的嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)只需要5個(gè)一般的工程師就可以寫出來,但要50個(gè)相當(dāng)歷害的工程師來調(diào)試和DEBUG,還要500個(gè)工程師試用,F(xiàn)在選用LINX一方面是商業(yè)的抄作,一方面是老板們的惜小錢而失大利,更多的是工程師們希望能做一些有挑戰(zhàn)性的工作。但這結(jié)果一般是不理想的,大多性況是項(xiàng)目流產(chǎn),工程師們又跑到另一家公司接著玩,我狂暈,這樣的惡性循環(huán)什么時(shí)侯才能結(jié)束!
這個(gè)世界本來就是有分工的,有些人研發(fā)操作系統(tǒng),有些人用操作系統(tǒng)開發(fā)產(chǎn)品,不要想從種大米開始!買的那怕是個(gè)最爛的操作系統(tǒng)也一定比幾個(gè)工程師花上一年改出來的面目全非的LINX好N倍,嵌入式LINX的結(jié)構(gòu)和應(yīng)用遲早會有一個(gè)國際化的標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)不會是由一兩個(gè)工程師的改寫而決定,我們不過是些炮灰而已,如果是專門研發(fā)操作系統(tǒng)為生的公司,我給與100倍的支持,如果是想自已改一個(gè)操作系統(tǒng)自已用,我覺得那還是算了!還不如買一個(gè)操作系統(tǒng),把你的智慧用在產(chǎn)品的優(yōu)化和早日面市上吧!可能有人會說人家的操作系統(tǒng)不如自已的好用!我狂暈!別人現(xiàn)成的市品化操作系統(tǒng)你都用不好,那你在LINX這口大井里改出來的操作系統(tǒng)能用嗎!哈哈哈!
以上只是我個(gè)人意見,是對是錯(cuò)只有時(shí)間來說明了,我預(yù)見3年內(nèi)LINX的嵌入式應(yīng)用會標(biāo)準(zhǔn)化,而且主要是用在PDA上為主。
|
|