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