嵌入式OS的核心是任務(wù)優(yōu)先、安全與可靠
一些愛琢磨的軟件人員會心里癢癢,想自己做一個操作系統(tǒng)(OS);微軟等軟件巨頭為何很少涉足嵌入式操作系統(tǒng)?嵌入式操作系統(tǒng)的真諦是什么?近日,風(fēng)河公司的工作人員向電子產(chǎn)品世界編輯講了一些鮮為人知的故事。
本文引用地址:http://www.ex-cimer.com/article/201611/340674.htm嵌入式OS貴在可靠
幾年前,美國某大型零售公司的老板過去用別家軟件,臨近圣誕節(jié)大促銷,系統(tǒng)一旦壞了承受不起。風(fēng)河銷售人員把他帶到風(fēng)河最高長官那里,“我想買你的軟件,但你得讓我放心?!憋L(fēng)河最高長官說,“我把我的私人電話給你,你任何時候可以打給我?!边@樣這家公司變成了風(fēng)河的客戶。
幾年后,這家零售商又來風(fēng)河簽新合同,恰巧碰到了最高長官。風(fēng)河長官得知情況后,說:“順便告訴你,從明天開始,你剛剛買的這款產(chǎn)品就免費了。但是,免費后,圣誕節(jié)的時候不準(zhǔn)給我打電話!”那個零售商想了想,還是付了錢。
客戶明明知道將要宣布要免費,花錢干什么?當(dāng)企業(yè)做大了以后,其實最難的是風(fēng)險管理,是控制那些不確定的因素,而不是說你怎么把成本降下來。具體地,商業(yè)決策的時候你要考慮成本,這是基本的要素,但是隨著你的業(yè)務(wù)規(guī)模擴(kuò)大,你會發(fā)現(xiàn)比成本、收入更重要的是風(fēng)險,風(fēng)險你是承受不起的。所以那位零售商愿意在降低風(fēng)險上投資。
其實代碼就是代碼,哪個代碼不能跑?可是你要保證它不出問題很難。因為能做和安全可靠是兩碼事。你要經(jīng)過反復(fù)的實驗,十幾年的時間驗證。
一個極端保守的例子,據(jù)說NASA(美國航空航天局)某個部門的實驗室里,有一幫人的工作就是清理代碼,諸如火箭上的代碼,大概十幾萬行,并不多,那個軟件都已經(jīng)用了幾十年,他們這個團(tuán)隊每天還是在清理,看看里面有什么bug。他們雖然在做枯燥無味的工作,這個代碼不知看了多少遍,甚至已經(jīng)把這些代碼背得滾瓜爛熟了,但是還是要查,如果能發(fā)現(xiàn)一個bug可能會是救命的——宇航員在太空涉及到生命安全。
風(fēng)河的競爭對手是誰?
其實做嵌入式操作系統(tǒng)的廠商不多。風(fēng)河的競爭對手其實主要是In-House(公司內(nèi)部)操作系統(tǒng)。因為嵌入操作系統(tǒng)本來不大,非常容易給人那種沖動,我自己做一個!尤其是做嵌入式軟件的人員往往都有能力往底下沉。風(fēng)河現(xiàn)在很重的任務(wù)之一是去說服這些企業(yè)的決策層,不要讓開發(fā)人員去做操作系統(tǒng),開發(fā)人員的時間可以投入到應(yīng)用方面,讓應(yīng)用做得更好。這就像不需要重新發(fā)明一個輪子一樣。
按風(fēng)河的邏輯,操作系統(tǒng)沒有那么重要,它就是一個勞務(wù),不要以為操作系統(tǒng)沒有自己做就不行。
另外,操作系統(tǒng)如果開始沒有做完善,盡管產(chǎn)品在很短時間就出來了,但到一定階段,企業(yè)會面臨兩難的選擇。例如你選了開源操作系統(tǒng),有一天你發(fā)現(xiàn)不行,因為再繼續(xù)用這個技術(shù)的話,由于根扎得不夠牢和深,很難繼續(xù)長大了。
為何做商用嵌入式OS的廠商寥寥?
既然很多軟件人員都有能力做操作系統(tǒng),按理說,很多企業(yè)也應(yīng)該像風(fēng)河一樣能提供操作系統(tǒng)這種服務(wù)?
的確,操作系統(tǒng)的門檻不高,但反而不容易形成巨頭。
那么,是否是因為其他公司的市場能力沒風(fēng)河那么強(qiáng)?
其實,關(guān)鍵的考量是是否值得去做這么大投入。例如微軟也做自己的嵌入式操作系統(tǒng),但是目前沒做起來。微軟的市場能力不強(qiáng)嗎?這恐怕還是一個取舍的問題。
首先要明確我要做什么樣的系統(tǒng)?如果要做宇宙飛船、飛機(jī)、坦克這種非常關(guān)鍵的應(yīng)用,要用的設(shè)計思路與普通計算是不一樣的。微軟并非沒有這個能力,但是假設(shè)微軟是一頭大象,現(xiàn)在去抓一只小螞蟻,一是抓不住,另外抓了也不夠吃。所以這就剛好給風(fēng)河這樣規(guī)模的公司一個機(jī)會。
從技術(shù)路線的決策方面,安全性、可靠性和性能這三個方面是三個不同的方向,但是歸根到底是解決一件事——隔離性的問題。即在做軟件設(shè)計的時候,這一部分很專注的,我就解決這個問題,我也不想去解決別的模塊的問題;同時我也絕不允許別的模塊想伸到我這個模塊里面。從CPU的分配,到存儲空間的分配,都是非常嚴(yán)格的限制,這樣嚴(yán)格的限制就比較安全。但是你犧牲了交叉時的通信效率,就好比你一個小區(qū)的門衛(wèi)特別嚴(yán)格的時候,小區(qū)的安全性提高了,你在里面也會很安全,但是你跟外界的溝通、交流就變差了,因為進(jìn)門很麻煩。
任務(wù)優(yōu)先vs資源優(yōu)先
這就引申到一個概念:什么是嵌入式操作系統(tǒng)?即所有的操作系統(tǒng)有涉及到一個共同的問題:職能是什么?操作系統(tǒng)是做資源管理的,要讓所有的資料都能最有效地被利用起來,諸如熒幕、鍵盤、內(nèi)存、CPU等,這些都是資源。但是有一個優(yōu)先的取舍問題,就是你是資源優(yōu)先還是任務(wù)優(yōu)先?即我要把資源最充分地利用,還是要讓我的任務(wù)是最佳的執(zhí)行。
Windows是一個典型的資源優(yōu)先的系統(tǒng)。意思是可讓CPU、內(nèi)存等計算機(jī)資源最高效地利用,但是你的任務(wù)有沒有最好的完成?在盡量追求,但是沒那么在意。例如,當(dāng)你強(qiáng)調(diào)每個任務(wù)要按照確定的順序打開,你這個窗口先打開一兩秒鐘,那個窗口后打開一兩秒鐘沒什么影響,所以任務(wù)是什么時間完成沒有特別提到。但是要讓計算機(jī)里所有的資源都被充分利用,不要這個閑得無聊、那個忙得不可開交??傊?,資源要充分利用。
但是嵌入式系統(tǒng),例如,飛機(jī)在空中飛的時候,飛行員的一個動作指令,要讓機(jī)翼各個部分按順序執(zhí)行,順序可能一毫秒都不能差。所以當(dāng)計算機(jī)處理器發(fā)出一個請求的時候,你必須立刻做,你不能說等一下,我這邊還在忙這件事情。這時,為了讓任務(wù)能夠最及時地完成(即任務(wù)實時地完成),其實計算機(jī)的資源很多時候是空閑的,導(dǎo)致資源利用率會降低,因為關(guān)鍵任務(wù)系統(tǒng)把內(nèi)部資源犧牲掉了。所以真正的嵌入式系統(tǒng)強(qiáng)調(diào)的是關(guān)鍵任務(wù)的任務(wù)優(yōu)先,不是資源優(yōu)先。
因此,需要在任務(wù)優(yōu)先和資源優(yōu)先之間進(jìn)行一個取舍。
所以風(fēng)河是以這樣的思路去設(shè)計嵌入式操作系統(tǒng)也的。當(dāng)然,不是說微軟不懂,但是微軟的戰(zhàn)略選擇上不能做這塊,做這塊公司就活不了。
風(fēng)河的操作系統(tǒng)本質(zhì)是嵌入式
風(fēng)河的特點是想怎么樣用新的方法去解決一個老問題。
提出新問題,然后解決它,這是創(chuàng)新,像阿里公司。不提出新問題,而是提出新方法去解決人們長期沒解決的問題,這也是一種創(chuàng)新。
風(fēng)河這么多年一直專注于嵌入式,它的產(chǎn)品結(jié)構(gòu)都是呈現(xiàn)操作系統(tǒng)、中間件到最終的應(yīng)用。風(fēng)河最核心的還是操作系統(tǒng)。你如果需要比較高精尖的,即特別精致的操縱系統(tǒng),那你就選VxWorks;你要選比較大眾、開放的,可選Linux。所以風(fēng)河多年來沿襲了這種雙操作系統(tǒng)架構(gòu)。
最近幾年風(fēng)河又拆分了,變成了四個操作系統(tǒng):增加了Rocket,是一個縮小版、精簡版的VxWorks;Linux也加了Pulsar Linux,主要是針對輕巧應(yīng)用,例如可穿戴。
圖:風(fēng)河部分操作系統(tǒng)組合(注:Helix是風(fēng)河物聯(lián)網(wǎng)產(chǎn)品集)
但是一旦到了中間件及以上,就有了合作伙伴、生態(tài)系統(tǒng),使客戶有了更多的選擇。風(fēng)河在中間層的產(chǎn)品有“風(fēng)河智能設(shè)備平臺XT”等,是可定制的中間件開發(fā)環(huán)境,用于打造安全、可擴(kuò)展、高性能物聯(lián)網(wǎng)網(wǎng)關(guān)。
到了應(yīng)用層,嚴(yán)苛程度又降低了。
所以風(fēng)河這么多年來,比較專注在操作系統(tǒng)這一核心基礎(chǔ)。到了物聯(lián)網(wǎng)時代,跟云有關(guān)了,風(fēng)河還運用了云的技術(shù)和環(huán)境,但是解決的問題還是嵌入式的問題。具體地,在云端做了設(shè)備的虛擬現(xiàn)實,像云端有個設(shè)備在那做開發(fā)一樣,不需要真的有那個設(shè)備或芯片,就像在實驗室拿了一個實驗設(shè)備。即風(fēng)河在云端可以有VR(虛擬現(xiàn)實)的實驗室。
總之風(fēng)河比較專注于操作系統(tǒng)。你只要是個設(shè)備,你就會有操作系統(tǒng),你就會有開發(fā)工具,你就是上了云端我還可以弄個虛擬的操作系統(tǒng)環(huán)境。我讓你這個操縱系統(tǒng)既可以在云端里面虛擬的設(shè)備里,也可以在你開發(fā)自己做出來的實實在在的設(shè)備里面,它兩個最好是完全一樣的,在云端開發(fā)好多軟件裝到你實體的設(shè)備里面實際的運行。
值得一提的是,風(fēng)河的Wind River Helix App Cloud的基本想法是借鑒了蘋果和安卓的的App概念,意思是:就算你是個路由器設(shè)備,抑或汽車、飛機(jī)等,你也可以從云端拿到需要的應(yīng)用軟件,方法是在App Store上一點立刻就下載了。但是你可以想象,如果一架飛機(jī)也可以像手機(jī)一樣用這個軟件一點就下來,有多恐怖!首先安全性怎么保證?但是風(fēng)河能夠給客戶這樣的保障,贏得客戶的信任。風(fēng)河有這個能力,能保證下載的軟件是安全的,是不會經(jīng)過篡改的,風(fēng)河有一整套的相關(guān)技術(shù)。
小結(jié)
嵌入式操作系統(tǒng)看著簡單,但是做好不容易,涉及安全、可靠與任務(wù)優(yōu)先等,購買現(xiàn)成的操作系統(tǒng)是一種提升效率、適合長遠(yuǎn)發(fā)展的良策。另,在物聯(lián)網(wǎng)時代,風(fēng)河的嵌入式操作系統(tǒng)增加了云連接功能,也增加到4種,但本質(zhì)仍然是嵌入式。
評論