為什麼谷歌會從零開始構建乙個全新的作業系統?

2021-07-17 05:30:22 字數 2672 閱讀 4105

上週,谷歌乙個團隊做了一件很奇怪的事情:他們悄悄透露自己在構建乙個新的作業系統,名叫fuchsia。從理論上說,fuchsia是谷歌android的競爭對手。

fuchsia是乙個正在開發中的開源作業系統。它可以在各種裝置上執行,無論是單一用途的裝置(比如自動取款機atm和gps單元),還是桌面電腦,都是它的用武之地。但是,與android不同的是,fuchsia並不是乙個基於linux的系統,也沒有以其他支柱型軟體為基礎。它是從零開始構建的。

fuchsia仍處在構建的早期階段,而且有可能是個實驗性專案。谷歌目前尚未提及它將如何使用fuchsia。軟體發展已經有數十年的歷史,為什麼谷歌要從零開始構建作業系統呢?它的理由有很多。

核心的問題

對於你的手機、平板電腦和膝上型電腦,有一些事情可能你還不知道:大多數時候,它們使用的都是稍加改動過的古老軟體「核心」。 android使用linux核心是2023年開發的,mac os x、ios和蘋果的其他平台是基於unix系統的,那是at&t貝爾實驗室在2023年啟動的乙個專案。windows計算機則是基於windows nt核心,其歷史可追溯到2023年。

unix、linux和windows nt這樣的老式核心一直在挑大樑,似乎與科技業一向求新求變的風尚相矛盾,但行業分析師賀拉斯•德度(horace dediu)認為,從最底層的角度來看,計算基本上是相同的,和幾十年前區別不大。舉例來說,如今windows計算機上使用的晶元,就是首颱ibm pc上英特爾處理器的嫡傳後裔。從這個意義上說,核心不過是一種通用產品。

「我們使用的仍然是完全相同的架構,完全相同的計算方式——暫存器、邏輯門、電晶體——出於這個原因,我們沒有必要開發乙個更好的核心,」德度說。 「核心我們已經搞定了。」

可能是我們以為已經搞定了。現如今,我們正在把感測器和計算能力塞進更多的裝置裡面,比如把普通住宅改裝為智慧型住宅,讓所有東西都能聯網(也就是物聯網)的時候。谷歌之所以開發fuchsia,可能是覺得linux這樣的老式核心不適用於這一代新的裝置。因此他們想為新的世代研發出乙個新的核心。 (核心本身被稱為magenta,它以谷歌近期的另乙個實驗性專案littlekernel為基礎)。

扎克•蘇帕拉(zach supalla)在硬體開發工具和物聯網服務提供商particle公司工作。他指出,linux用在小型計算裝置上時有些問題。

首先,對於這類裝置來說,linux過於龐大了。儘管linux核心是模組化的,開發者可以去除多餘的部分,但它還是會占用大量空間。這意味著要把linux核心塞到乙個**便宜的微控制器裡比較困難,你必須選用更大、**更高,更加耗電的處理器。

「整個**鏈本來可以以遠遠更低的成本製造品質更高的東西,」蘇帕拉說。

另乙個問題是,linux不是「實時」的。自動取款機、醫療產品和其他單一用途裝置採用了嵌入式作業系統,和它們不一樣的是,linux是靠乙個時間表來處理多工的。雖然這可以最大限度地發揮通用計算機的效能,但卻也會給那些需要精確定時的裝置帶來麻煩。像3d印表機,汽車內部的很多電動控制裝置等等,都對精確定時有很高的要求。

「如果你想確保這些裝置在某個微秒準時啟動,你真的不希望由乙個程序來決定執行時間,」蘇帕拉說。

對於物聯網應用來說,像linux這種通用的作業系統可能會不太安全,蘇帕拉說。它的**更多,這也就意味著需要防範的漏洞也會更多,你必須使用防火牆或者vpn來解決或封堵這些安全漏洞。

「使用實時作業系統(嵌入式系統)的優點之一,就是不需要封堵任何東西,」蘇帕拉說。 「你不需要執行一堆你必須小心留神的東西。它只執行你寫的軟體,不會執行其他任何東西。」

但在軟硬體通訊方面,linux仍然有很大的優勢。蘇帕拉認為,谷歌開發fuchsia是希望把linux和嵌入式系統這兩者的長處結合起來。當今主流的嵌入式系統包括freertos和threadx等,

「他們可能想要開發乙個抽象程度達到linux水平,但效能、體量和實時性與rtos相當的作業系統,」蘇帕拉說。 「這樣的作業系統有很大的價值,我覺得從理論上說是可以辦到的。只是以前從來沒有人這麼做過。」

擴充套件性問題

如果fuschia針對的只是小型裝置,它可能沒有那麼引人矚目。但是fuchsia的開發人員有更遠大的雄心,他們聲稱該作業系統可以擴充套件到智慧型手機和台式電腦上。從理論上講,fuchsia可以直接替代谷歌的android和chrome os。

谷歌為什麼要這麼做?蘇帕拉認為,從零開始或許可以構建出更高效的作業系統,從而獲得更高效的伺服器——谷歌一向都對這方面很感興趣。他還指出,相容台式電腦有助於模擬大量小型裝置同時執行,確保它們可以在大規模使用的時候正常執行。

「和開動一千臺伺服器,每台同時執行一千個同樣的程式相比,啟動一百萬個小型裝置遠遠麻煩得多,不有利於開展測試,」蘇帕拉說。

德度的看法與蘇帕拉不同,他認為谷歌android受到了智財權方面的限制,而乙個全新的作業系統則沒有這樣的問題。 「因為這是乙個全新的設計,在智財權方面它沒有任何麻煩,」他說。 「這可能是乙個合理的假設,因為linux確實存在一些難纏的智財權問題。」

別忘了,這可能純粹是個學術研究。fuchsia的開發人員表示,最終他們會發布這個作業系統,但可能還有很長的路要走,而且目前也不清楚谷歌是否會支援這個專案。 android生態系統已經是十分龐大(而且正在開始和chromebook合併)。而且谷歌還在開發乙個嵌入式的輕量級物聯網作業系統brillo,它是android的乙個簡化版本——brillo正在形成乙個成熟的平台,而不僅僅是乙個基礎性的作業系統。

話又說回來,unix最開始也是乙個志願性專案,並沒有貝爾實驗室的正式立項,而林納斯•托瓦茲最初開發linux的時候也只是把它當作業餘愛好。也許幾十年後,當我們談到fuchsia的時候,也會說到它在谷歌的誕生有多麼不可思議。

IntelliJ IDEA 從零開始建立乙個專案

1 如果intellij idea中當前沒有開啟的專案,單擊歡迎介面上的建立新專案。否則,選擇 然後會開啟新建專案嚮導視窗 2 在嚮導的第一頁,在左側窗格中,選擇專案類別。這可能是你要使用的技術,專案的目標平台或執行時等。在頁面的右側部分以及後續步驟中的設定取決於所選專案類別。對於相應的說明,請參閱...

IntelliJ IDEA 從零開始建立乙個專案

1 如果intellij idea中當前沒有開啟的專案,單擊歡迎介面上的建立新專案。否則,選擇 然後會開啟新建專案嚮導視窗 2 在嚮導的第一頁,在左側窗格中,選擇專案類別。這可能是你要使用的技術,專案的目標平台或執行時等。在頁面的右側部分以及後續步驟中的設定取決於所選專案類別。對於相應的說明,請參閱...

IntelliJ IDEA 從零開始建立乙個專案

1 如果intellij idea中當前沒有開啟的專案,單擊歡迎介面上的建立新專案。否則,選擇 然後會開啟新建專案嚮導視窗 2 在嚮導的第一頁,在左側窗格中,選擇專案類別。這可能是你要使用的技術,專案的目標平台或執行時等。在頁面的右側部分以及後續步驟中的設定取決於所選專案類別。對於相應的說明,請參閱...