新聞中心

        EEPW首頁 > 嵌入式系統 > 編輯觀點 > 嵌入式OS的核心是任務優先、安全與可靠

        嵌入式OS的核心是任務優先、安全與可靠

        作者:王瑩 時間:2016-11-24 來源:電子產品世界 收藏

          一些愛琢磨的軟件人員會心里癢癢,想自己做一個操作系統(OS);微軟等軟件巨頭為何很少涉足操作系統?操作系統的真諦是什么?近日,公司的工作人員向電子產品世界編輯講了一些鮮為人知的故事。

        本文引用地址:http://www.104case.com/article/201611/340674.htm

          OS貴在可靠

          幾年前,美國某大型零售公司的老板過去用別家軟件,臨近圣誕節大促銷,系統一旦壞了承受不起。銷售人員把他帶到最高長官那里,“我想買你的軟件,但你得讓我放心。”風河最高長官說,“我把我的私人電話給你,你任何時候可以打給我。”這樣這家公司變成了風河的客戶。

          幾年后,這家零售商又來風河簽新合同,恰巧碰到了最高長官。風河長官得知情況后,說:“順便告訴你,從明天開始,你剛剛買的這款產品就免費了。但是,免費后,圣誕節的時候不準給我打電話!”那個零售商想了想,還是付了錢。

          客戶明明知道將要宣布要免費,花錢干什么?當企業做大了以后,其實最難的是風險管理,是控制那些不確定的因素,而不是說你怎么把成本降下來。具體地,商業決策的時候你要考慮成本,這是基本的要素,但是隨著你的業務規模擴大,你會發現比成本、收入更重要的是風險,風險你是承受不起的。所以那位零售商愿意在降低風險上投資。

          其實代碼就是代碼,哪個代碼不能跑?可是你要保證它不出問題很難。因為能做和安全可靠是兩碼事。你要經過反復的實驗,十幾年的時間驗證。

          一個極端保守的例子,據說NASA(美國航空航天局)某個部門的實驗室里,有一幫人的工作就是清理代碼,諸如火箭上的代碼,大概十幾萬行,并不多,那個軟件都已經用了幾十年,他們這個團隊每天還是在清理,看看里面有什么bug。他們雖然在做枯燥無味的工作,這個代碼不知看了多少遍,甚至已經把這些代碼背得滾瓜爛熟了,但是還是要查,如果能發現一個bug可能會是救命的——宇航員在太空涉及到生命安全。

          風河的競爭對手是誰?

          其實做嵌入式操作系統的廠商不多。風河的競爭對手其實主要是In-House(公司內部)操作系統。因為嵌入操作系統本來不大,非常容易給人那種沖動,我自己做一個!尤其是做嵌入式軟件的人員往往都有能力往底下沉。風河現在很重的任務之一是去說服這些企業的決策層,不要讓開發人員去做操作系統,開發人員的時間可以投入到應用方面,讓應用做得更好。這就像不需要重新發明一個輪子一樣。

          按風河的邏輯,操作系統沒有那么重要,它就是一個勞務,不要以為操作系統沒有自己做就不行。

          另外,操作系統如果開始沒有做完善,盡管產品在很短時間就出來了,但到一定階段,企業會面臨兩難的選擇。例如你選了開源操作系統,有一天你發現不行,因為再繼續用這個技術的話,由于根扎得不夠牢和深,很難繼續長大了。

          為何做商用嵌入式OS的廠商寥寥?

          既然很多軟件人員都有能力做操作系統,按理說,很多企業也應該像風河一樣能提供操作系統這種服務?

          的確,操作系統的門檻不高,但反而不容易形成巨頭。

          那么,是否是因為其他公司的市場能力沒風河那么強?

          其實,關鍵的考量是是否值得去做這么大投入。例如微軟也做自己的嵌入式操作系統,但是目前沒做起來。微軟的市場能力不強嗎?這恐怕還是一個取舍的問題。

          首先要明確我要做什么樣的系統?如果要做宇宙飛船、飛機、坦克這種非常關鍵的應用,要用的設計思路與普通計算是不一樣的。微軟并非沒有這個能力,但是假設微軟是一頭大象,現在去抓一只小螞蟻,一是抓不住,另外抓了也不夠吃。所以這就剛好給風河這樣規模的公司一個機會。

          從技術路線的決策方面,安全性、可靠性和性能這三個方面是三個不同的方向,但是歸根到底是解決一件事——隔離性的問題。即在做軟件設計的時候,這一部分很專注的,我就解決這個問題,我也不想去解決別的模塊的問題;同時我也絕不允許別的模塊想伸到我這個模塊里面。從CPU的分配,到存儲空間的分配,都是非常嚴格的限制,這樣嚴格的限制就比較安全。但是你犧牲了交叉時的通信效率,就好比你一個小區的門衛特別嚴格的時候,小區的安全性提高了,你在里面也會很安全,但是你跟外界的溝通、交流就變差了,因為進門很麻煩。

          任務優先vs資源優先

          這就引申到一個概念:什么是嵌入式操作系統?即所有的操作系統有涉及到一個共同的問題:職能是什么?操作系統是做資源管理的,要讓所有的資料都能最有效地被利用起來,諸如熒幕、鍵盤、內存、CPU等,這些都是資源。但是有一個優先的取舍問題,就是你是資源優先還是任務優先?即我要把資源最充分地利用,還是要讓我的任務是最佳的執行。

          Windows是一個典型的資源優先的系統。意思是可讓CPU、內存等計算機資源最高效地利用,但是你的任務有沒有最好的完成?在盡量追求,但是沒那么在意。例如,當你強調每個任務要按照確定的順序打開,你這個窗口先打開一兩秒鐘,那個窗口后打開一兩秒鐘沒什么影響,所以任務是什么時間完成沒有特別提到。但是要讓計算機里所有的資源都被充分利用,不要這個閑得無聊、那個忙得不可開交。總之,資源要充分利用。

          但是嵌入式系統,例如,飛機在空中飛的時候,飛行員的一個動作指令,要讓機翼各個部分按順序執行,順序可能一毫秒都不能差。所以當計算機處理器發出一個請求的時候,你必須立刻做,你不能說等一下,我這邊還在忙這件事情。這時,為了讓任務能夠最及時地完成(即任務實時地完成),其實計算機的資源很多時候是空閑的,導致資源利用率會降低,因為關鍵任務系統把內部資源犧牲掉了。所以真正的嵌入式系統強調的是關鍵任務的任務優先,不是資源優先。

          因此,需要在任務優先和資源優先之間進行一個取舍。

          所以風河是以這樣的思路去設計嵌入式操作系統也的。當然,不是說微軟不懂,但是微軟的戰略選擇上不能做這塊,做這塊公司就活不了。

          風河的操作系統本質是嵌入式

          風河的特點是想怎么樣用新的方法去解決一個老問題。

          提出新問題,然后解決它,這是創新,像阿里公司。不提出新問題,而是提出新方法去解決人們長期沒解決的問題,這也是一種創新。

          風河這么多年一直專注于嵌入式,它的產品結構都是呈現操作系統、中間件到最終的應用。風河最核心的還是操作系統。你如果需要比較高精尖的,即特別精致的操縱系統,那你就選VxWorks;你要選比較大眾、開放的,可選Linux。所以風河多年來沿襲了這種雙操作系統架構。

          最近幾年風河又拆分了,變成了四個操作系統:增加了Rocket,是一個縮小版、精簡版的VxWorks;Linux也加了Pulsar Linux,主要是針對輕巧應用,例如可穿戴。

          圖:風河部分操作系統組合(注:Helix是風河物聯網產品集)

          但是一旦到了中間件及以上,就有了合作伙伴、生態系統,使客戶有了更多的選擇。風河在中間層的產品有“風河智能設備平臺XT”等,是可定制的中間件開發環境,用于打造安全、可擴展、高性能物聯網網關。

          到了應用層,嚴苛程度又降低了。

          所以風河這么多年來,比較專注在操作系統這一核心基礎。到了物聯網時代,跟云有關了,風河還運用了云的技術和環境,但是解決的問題還是嵌入式的問題。具體地,在云端做了設備的虛擬現實,像云端有個設備在那做開發一樣,不需要真的有那個設備或芯片,就像在實驗室拿了一個實驗設備。即風河在云端可以有VR(虛擬現實)的實驗室。

          總之風河比較專注于操作系統。你只要是個設備,你就會有操作系統,你就會有開發工具,你就是上了云端我還可以弄個虛擬的操作系統環境。我讓你這個操縱系統既可以在云端里面虛擬的設備里,也可以在你開發自己做出來的實實在在的設備里面,它兩個最好是完全一樣的,在云端開發好多軟件裝到你實體的設備里面實際的運行。

          值得一提的是,風河的Wind River Helix App Cloud的基本想法是借鑒了蘋果和安卓的的App概念,意思是:就算你是個路由器設備,抑或汽車、飛機等,你也可以從云端拿到需要的應用軟件,方法是在App Store上一點立刻就下載了。但是你可以想象,如果一架飛機也可以像手機一樣用這個軟件一點就下來,有多恐怖!首先安全性怎么保證?但是風河能夠給客戶這樣的保障,贏得客戶的信任。風河有這個能力,能保證下載的軟件是安全的,是不會經過篡改的,風河有一整套的相關技術。

          小結

          嵌入式操作系統看著簡單,但是做好不容易,涉及安全、可靠與任務優先等,購買現成的操作系統是一種提升效率、適合長遠發展的良策。另,在物聯網時代,風河的嵌入式操作系統增加了云連接功能,也增加到4種,但本質仍然是嵌入式。



        關鍵詞: 嵌入式 風河

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 扎兰屯市| 南充市| 比如县| 彩票| 灌南县| 类乌齐县| 公主岭市| 台中县| 康定县| 孟连| 吉安市| 烟台市| 邻水| 田阳县| 隆子县| 赞皇县| 平谷区| 天水市| 屏东县| 定西市| 黄冈市| 台安县| 南郑县| 安陆市| 洮南市| 九龙县| 集安市| 武威市| 莱州市| 新和县| 宿松县| 梁河县| 临沂市| 台南县| 樟树市| 肇庆市| 乌鲁木齐市| 塔城市| 武强县| 禹城市| 泗水县|