|
為什么Google需要Fuchsia操作系統(tǒng), Google正在密集開發(fā)Fuchsia操作系統(tǒng)。近日,Google剛剛上線了Fuchsia的開發(fā)者網(wǎng)站(https://fuchsia.dev)。這是一個非常明顯的信號,谷歌要將這個全新的操作系統(tǒng),從幕后帶到臺前了。
Google已經(jīng)坐擁2個非常出名的操作系統(tǒng)了,Android和Chrome OS。其中的Android更是全球范圍內(nèi)使用最為廣泛的移動操作系統(tǒng)。那么谷歌為何還需要開發(fā)第三個操作系統(tǒng)呢?
我給出的回答是:Android無法滿足Google快速發(fā)展的業(yè)務(wù)的需要。
分裂的安卓生態(tài)
tim Cook在每年的WWDC和秋季發(fā)布會上,最喜歡干的就是數(shù)落Android的碎片化。通常來說iOS的最新版本能取得70%以上的升級率,而Android只有可憐的個位數(shù)。
而生態(tài)的分裂會影響用戶的體驗和用戶設(shè)備的安全。
Google每年都投入大量的人力、物力來開發(fā)、升級Android,以期在與iOS的競爭中取得優(yōu)勢(有時只是追趕)。Android每年會增加數(shù)以百計的API,但是在一個分裂的生態(tài)系統(tǒng),開發(fā)者只能面向2、3年前的API版本進(jìn)行開發(fā)。(根據(jù)statcounter的數(shù)據(jù),截至19年6月為止,有大約81.5%的iOS設(shè)備運(yùn)行的是iOS 12,而同時,Android 9 (Pie)只有18.6%的比例。如果想要支持85%的設(shè)備,能使用的API就只能是5年前的Android 5.1 (Lollipop)了。這就導(dǎo)致了Android生態(tài)中的App無法從一年一次的OS升級中獲益。
此外,所有的軟件都會存在Bug,Android也是一樣。然而,Android操作系統(tǒng)是一體式的設(shè)計。你要不就是更新整個操作系統(tǒng)固件,要不就無法獲得任何更新。所以,設(shè)備的制造商(比如小米)必須通過修改AOSP(Android Open-Source Project)的代碼,才能發(fā)布他們修改過的OS版本。如果在Linux Kernel(Android基于Linux開發(fā),并做了大量修改)中發(fā)現(xiàn)了安全漏洞(17年發(fā)現(xiàn)了454個,18年發(fā)現(xiàn)了176個),這個補(bǔ)丁需要先應(yīng)用于Linux Kernel,然后再合并到Android的代碼樹中,然后SoC廠商(比如高通)再將代碼合并到BSP中,然后設(shè)備制造商才能合并補(bǔ)丁到他們的Android發(fā)行版,最后再推送到終端用戶手中。在這個鏈條上的每個玩家都需要經(jīng)歷開發(fā)、測試和發(fā)布流程。所以通常情況下,我們需要6~24個月才能收到新發(fā)現(xiàn)的漏洞的補(bǔ)丁,有時甚至根本收不到補(bǔ)丁。
安卓無法解決問題
在安卓的生態(tài)系統(tǒng)中,有一個很明顯的鏈條:
1.png (26.49 KB, 下載次數(shù): 0)
下載附件 保存到相冊
半小時前 上傳
所以,如果Google想要升級終端客戶的設(shè)備,他們只能祈禱在中間的SoC和設(shè)備制造商能夠主動合并他的變更,并進(jìn)行新的操作系統(tǒng)發(fā)布。
所以,Google隨著版本的更迭,將越來越多的服務(wù)從AOSP中,移動到了GMS(Google Mobile Service)中,以期達(dá)到讓Android更加模塊化,以及更加容易升級。這樣,Google可以跳過中間兩級,直接給終端用戶推送更新:
2.jpg (18.83 KB, 下載次數(shù): 0)
下載附件 保存到相冊
半小時前 上傳
但這個路徑無法更新內(nèi)核、驅(qū)動和底層的系統(tǒng)服務(wù)。
就如上文所言,Android是基于Linux內(nèi)核開發(fā)的。而Linux內(nèi)核(以及Linux社區(qū))拒絕提供一個穩(wěn)定的設(shè)備驅(qū)動二進(jìn)制接口。
所以大家只要將代碼整合到Linux Kernel的代碼樹,并將它合并到主線Linux內(nèi)核中(有一些廠商是這么做的),也可能他們只是復(fù)制了一份Linux Kernel,然后修改并發(fā)布,并不向上游合并(大多數(shù)廠商其實(shí)是這么干的)。
3.jpg (24.61 KB, 下載次數(shù): 0)
下載附件 保存到相冊
半小時前 上傳
由于設(shè)備驅(qū)動是內(nèi)核的一部分,所以Google無法采用GMS相同的方式來更新。
Fuchsia的解決方案
Google決心從Fuchsia設(shè)計的源頭上來避免Android的這些設(shè)計缺陷。
模塊化設(shè)計。Fuchsia是完全模塊化且層級化設(shè)計的。
你可以想象Fuchsia操作系統(tǒng)是一個蛋糕,由四層組成:
4.jpg (28.98 KB, 下載次數(shù): 0)
下載附件 保存到相冊
半小時前 上傳
Zircon內(nèi)核是一個微內(nèi)核。所有的設(shè)備驅(qū)動并不在內(nèi)核內(nèi),而是在內(nèi)核外作為獨(dú)立的進(jìn)程存在。設(shè)備驅(qū)動和內(nèi)核之間通過IPC(inter-process call,一種消息通訊機(jī)制)來互相協(xié)作。而設(shè)備驅(qū)動的界面是精心設(shè)計過的、穩(wěn)定的、并且是通過一種平臺、語言無關(guān)的描述語言banjo描述的。因此,SoC 制造商可以獨(dú)立基于穩(wěn)定的接口開發(fā)和發(fā)布設(shè)備驅(qū)動,而且驅(qū)動可以跨不同的OS或內(nèi)核版本使用。
同時,Google引入一個新的多倉庫源代碼管理工具jiri。它與Android中使用的repo之間最大的區(qū)別是,它允許引用另一個manIFest文件作為基礎(chǔ),并替換其中的部分組件。這樣SoC和設(shè)備制造商就無需復(fù)制上游的源代碼,只需引用上游的代碼即可。(事實(shí)上,在Fuchsia中,topaz層引用了peridot層,peridot 層引用了garnet層,garnet層又引用了zircon)。
5.jpg (25.75 KB, 下載次數(shù): 0)
下載附件 保存到相冊
半小時前 上傳
這樣就使得這個依賴的鏈條得到了解耦。所有的開發(fā)和更新可以并行進(jìn)行:
6.jpg (24.45 KB, 下載次數(shù): 0)
下載附件 保存到相冊
半小時前 上傳
超越Android
Fuchsia的模塊化設(shè)計并不僅僅用于為手機(jī)創(chuàng)建定制的系統(tǒng)鏡像。Google更進(jìn)一步,使得Fuchsia實(shí)現(xiàn)了極大的可伸縮性。分層模塊化的設(shè)計使得Fuchsia可以非常方便的剪裁定制操作系統(tǒng),以用于手機(jī)、平板、筆記本電腦,以及路由器、智能音箱、機(jī)器人,甚至是Google的無人駕駛汽車。
它將成為第一個AI原生(內(nèi)建深度學(xué)習(xí)、語音語義、人臉識別、圖像分類等人工智能算法),云原生(與各種云服務(wù)無縫集成),適用于各種設(shè)備的超級操作系統(tǒng)。
文章來源:黃玨珅
https://zhuanlan.zhihu.com/p/72752268
已獲得作者授權(quán) |
|