關於EROFS(Extendable Read-Only File System ),這是個新的linux文件系統,基於ROM的只讀文件系統。不過這個文件系統算是主要是針對Android只讀分區設計的,不過也可以用於其他存儲和性能有要求的嵌入式系統領悟。

壓縮比可觀,正常壓縮可以比EXT4好很多(大概3倍),高壓縮比性能與之相當。這也是華為為什麼當初說可以騰出更多可利用空間給用戶的原因。

其他相關信息可以百度看詳細的介紹。

至於你說的方舟編譯器,我沒留意,不好意思


華為在P30上市的時候,順勢推出了EMUI 9.1,其中的EPOFS(超級文件系統)引發了各方關注。按照華為在巴黎發布會上演示的EMUI9.1流暢體驗,依次啟動Google Play法國排行榜的Top15應用,P30 Pro比iPhone XS Max平均每個應用啟動時間快1秒以上。

在很多人意識中,現在的蘋果手機優勢也只剩下了系統干、凈運行速度快,如今,華為手機也在這方面不斷突破,著實震驚業內。

不僅如此,華為還宣布,超級文件系統已經開源併合入Linux內核主線(隨4.19版本發布),未來會讓更多的安卓廠商手機能夠體驗到華為超級文件系統帶來的流暢體驗,這可是要幫著安卓陣營集體推倒iOS的節奏。

什麼是安卓分區和文件系統?

對於普通群眾來說,要真正理解華為超級文件系統並不容易。其實,文件系統是一種用於向用戶提供底層數據訪問的機制。

簡單的理解,假設是有一個目錄冊來記錄你硬碟中所有的文件名,文件所在位置以及文件的大小。在讀寫文件時,通過目錄索引就能快速的找到目標文件和位置。

不管是手機還是電腦,儲存文件都是一個大「硬碟」,你每次發出指令,系統都要在硬碟裡面讀寫操作,先要檢索找到,然後還要執行命令。那麼,文件越大越多,便會影響運行速度,這就得不停的找解決方案。

比如,如果你去圖書館看書,以前就需要在圖書館裡先「翻箱倒櫃」找到圖書卡片,然後才能按照上面提供的位置去書庫里把書找出來。這樣簡便高效,否則大海撈針,你根本無法找到自己要看的書。

不管是電腦還是手機,都是需要大量的存儲文件。在電腦端,硬碟很大,就進行分區,C盤存儲系統文件,D盤、E盤等各自區隔,提高效率。在安卓手機上,也進行了與之類似的分區,例如System 分區: 顧名思義,系統分區,這裡是安裝系統文件的位置。為了保證系統安全,這一分區默認是不可修改的,我們常說的Root就是取得這一分區的更改許可權;Data 分區:就是我們裝應用的地方;Catch分區:存放系統產生臨時文件的緩存區;SD Card分區: 就是掛載的SD卡……

從Ext4到EROFS,文件系統的讀取效率不斷提升

任何軟體,都存在一個不斷進化的過程。因為不斷的添加新功能,文件會越來越多、越來越大,老的處理方式就會落伍,於是,新的模式便會被創新出來。

在電腦端,當單文件突破4GB+後,FAT32格式已經無法支持,於是就升級到了NTFS格式。做過電腦硬碟格式化的人都知道這個。

在手機發展中,存儲介質在進步,系統功能在進化,我們也在不斷的嘗試改進文件系統。當年,因為Android系統由於基於Linux開發,順理成章的就選擇了Linux的主流文件系統Ext4。那還是在遙遠的2006年,當時的儲存介質普遍還是機械硬碟(HDD),所以,現在習以為常的快閃記憶體就被「忽略」了。這也是沒辦法的事情,畢竟人們沒必要也沒能力為未來做準確的打算。

後來,快閃記憶體取代機械硬碟成了主流,Ext4管理能力不適合了,F2FS誕生。F2FS則是為快閃記憶體定製,能改善快閃記憶體長期使用後的讀寫性能。F2FS對高速快閃記憶體的隨機讀寫做了大量優化,據測算使流暢度提升20%。

在華為Mate 9推出的時候,EMUI 5.0採用F2FS取代Ext4,使得流暢度提升。後來,谷歌也在自家的旗艦Pixel 3中使用了F2FS,此後其他的安卓廠商也全面使用F2FS。

不過, F2FS文件系統改進還是留有一個「釘子戶」問題沒有解決。F2FS文件系統只是對安卓底層用戶分區的改造,而運行安卓內核的系統分區仍然保留了EXT4的結構。因為,系統區不同於用戶區,會涉及到最重要的安卓內核,改造的難度很大,廠商必須兼顧穩定與效率。

現在,這關鍵的一步由華為來完成了。2018年6月,華為工程師在開源社區展示了基於Linux的全新只讀文件系統EROFS(Extendable Read-Only File System),採用改進的壓縮演算法,致力於提高文件訪問性能,特別是隨機讀性能。在EROFS面世後的半年後,這一技術在P30手機上實現了規模商用。

如果說F2FS文件系統是對電腦D盤的整理,那麼EROFS則相當於對C盤進改造。資料顯示,EROFS是一種壓縮文件系統,採用了一種叫做fixed-sized output文件壓縮演算法,壓縮後的物理塊大小為固定值(4K)。相比於以固定大小為輸入,變長輸出的fixed-size input文件壓縮演算法(如squashfs文件系統),前者的壓縮率更高,並且能夠有效的減少讀放大問題,降低IO讀取量。

有付出就有收穫,EROFS給安卓系統帶來了飛一樣的新體驗

華為超級文件系統針對C盤「動刀」,大大提升了安卓系統分區的隨機讀取能力,從系統底層提升效率,實現20%的隨機讀性能提升。同時,更優的文件壓縮演算法,使得系統ROM空間佔用節省2GB(以P30 Pro 128G為例,不同機型節省空間不一樣),節省的空間可以給用戶使用。

此外,技術上看,EROFS是天然只讀,沒有辦法通過任何手段掛載成可寫,這就相當於築了一道難以逾越的牆,使用EROFS的系統分區更加安全。

此前,因為Ext4本身是可寫的,Android只是通過Ext4的只讀掛載參數和掛載dm-verity虛擬塊設備(用於文件系統校驗)來配合實現只讀,一旦有人通過去除Ext4隻讀掛載選項並且不掛載dm-verity設備,就可以繞過這兩把鎖對系統分區進行寫操作,存在很多的安全隱患。

華為超級文件系統在設計之初就是只讀的設計,系統分區不可被三方改寫,安卓系統的安全性能大幅度提升。

EROFS的帶來的性能提升也非常明顯:2018年公布的測試數據現實,在執行隨機讀取數據時,EROFS有著一邊倒的優勢,並且文件壓縮率越小時優勢越明顯:當文件壓縮率為4%(即100MB文件壓縮為4MB)時,提升高達172%。在最新發布的P30上,壓縮率為4%時隨機讀性能提升接近300%。而綜合了各級壓縮率的整體用戶使用場景來看,系統的隨機讀性能提昇平均也達到了20%,用戶能感受到應用啟動更快,操作也更流暢。

我們看到,華為EMUI一直圍繞著用戶體驗進行創新,特別是在性能領域持續推出了」天生快一生快「,GPU Turbo,Link Turbo等技術,解決了系統長期使用後卡頓,移動圖形處理性能瓶頸,網路覆蓋不均導致的用戶上網體驗不暢的產業痛點。

也正是因為華為在軟體方面的持續改進,大大提升用戶體驗,才有了如今的大好局面。按照余承東的說法,華為非常有可能在2019年成為世界第一,最差也會在2020年實現這一目標。

最後,我們得感謝華為的工程師們,敢於在系統分區「太歲頭上動土」,以巨大的科研投入和持之不懈的努力,給整個Android系統生態帶來了脫胎換骨的進化。據2017的Linux內核開發報告指出,有500多家公司的4300多名開發商對內核做出了貢獻, Linux內核代碼,谷歌貢獻度是3%,而華為佔1.5%,可見華為付出多大。


二更:

匿名不能上傳視頻...emmm...取匿了。

1分鐘了解方舟編譯器

方舟編譯器編譯的應用在開發階段就已完成。也就是說,只要是經過編譯器編譯的應用,在應用市場上上架了以後,用戶下載的就是編譯過的了。以上摘自「花粉俱樂部」,侵刪。

不是對安卓系統動手術,而是對開發的編譯器動手術,直接繞過ART虛擬機。方舟編譯器是個通用技術,基於目前ARM指令集開發、適用於所有ARM晶元平台。也就是說,經過方舟編譯器編譯的應用,再經過其他品牌廠商的適配,就可以適用於包括小米、OPPO、vivo等其他品牌手機上的Android系統。[1]那位說「就一個提前編譯還是運行時編譯的事情,邊解釋邊執行那都啥年代的事情了?」 @雨震 可以拉出來槍斃了。

上面這位講PPT的老人叫王成錄,華為消費者BG軟體工程部總裁,他講的PPT應該不會假吧?這裡說一下題外話,去年在華為實習的時候,他特地在東莞松山湖會議室接見了我們幾位實習生,那時候他講了大概幾十分鐘,對比了如今的淘寶、美團等等互聯網企業和華為現今形式,給人醍醐灌頂的感覺,他站的層次真的比我高太多Level,我還需潛心修行啊!


一更:

杠精真可怕... 沒代碼、不懂原理就在bb...

Talk is cheap.Show me code. 反正我不想跟這種杠精說話……降低智商……


原答案:

補一個方舟編譯器,擔心碰見熟人,匿一個。

先來看看效果吧:

1. 什麼是位元組碼、機器碼、ART、Davik虛擬機、JIT?

  • 位元組碼:是Java虛擬機執行的一種指令格式。大多數操作碼都是一個位元組長,而有些操作需要參數,導致了有一些多位元組的操作碼。而且並不是所有可能的256個操作碼都被使用。位元組碼是一種中間碼,它比機器碼更抽象,需要直譯器轉譯後才能成為機器碼的中間代碼。
  • 機器碼:計算機CPU能直接讀懂的二進位指令,如:01100110...,位元組碼被虛擬機解析之後,即可生成機器碼。
  • ART、Davik:這兩個為什麼要一塊講呢?因為從本質上講他們都是經過特殊定製的Java虛擬機(JVM),這兩種虛擬機只能用在安卓上。Davik虛擬機是ART(Android Runtime,引入了AOT——Ahead of Time,預先編譯機制)的前身,我們的apk安裝到手機之後,當我們運行程序的時候,安卓系統會載入apk裡面的位元組碼到虛擬機里,以生成CPU能讀懂的機器碼。
  • JIT:Just-in-time(即時編譯)在運行時 JIT 會把翻譯過的機器碼保存起來,以備下次使用,因此從理論上來說,採用該 JIT 技術可以接近以前純編譯技術。

JIT工作原理圖

2. 什麼是編譯器?

各大程序猿用C/C++/Java/C#等語言寫完之後,電子設備的「大腦」 ——CPU是無法直接看懂這些語言的,它只能讀懂二進位格式的指令,即01011101...,那要怎樣把這些上層代碼轉成二進位格式的指令呢?我們就需要編譯器了。可以說,編譯器是連接程序猿大腦和計算機大腦的橋樑,讓CPU執行程序猿寫的代碼。

3. 方舟編譯器跟普通編譯器有什麼不同?

有人說是直接把Java位元組碼編譯成機器碼。個人感覺不完全對,應該是JIT+AOT模式下的優化。

AOT+JIT

我沒說到點子上?是的,我也不可能說到點子上,否則我就在負責方舟編譯器的開發了。想要知道原理還是等方舟編譯器開源出來吧。


題外話

讓我吃驚的是,雷布斯及其麾下大將看到大嘴這麼吹這兩個神器居然在微博毫無舉動,不應該專門 @大嘴,讓他出來科普一下么?或者買點稿子黑一下這兩個吹牛逼的「黑科技」?總之,這次表現得風平浪靜實在讓我訝異。

方舟編譯器,毋庸置疑是麒麟OS戰略上重要的一環,以後直接用安卓APP源碼編譯成麒麟OS的APK,零成本?希望華為生態能夠越做越好,這將會拉開國產手機產業競爭的新序幕,使整個生態向底層系統、技術邁進,最終受益的終歸消費者。


參考鏈接

說說 方舟編譯器 - 掘金?

juejin.im

https://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/index.html?

www.ibm.com

https://source.android.com/devices/tech/dalvik?

source.android.com

參考

  1. ^https://www.pingwest.com/a/187017


我做一個猜測,華為多半會設置一個時刻,在這個時刻之後,只有通過方舟編譯器編譯的安裝包才能上架華為應用市場。就算開發者要發布新版本,也必須在方舟編譯器上編譯,不然不給上架。


4月18日下午,由華為開發者聯盟主辦的活動在西安成功舉辦。本次大會上,華為介紹了統一推送開發工作進展及時間表,並宣布將在今年10月份正式發布支持統一推送標準的華為推送服務。除此以外,華為針對存量終端的升級也會同步開展,讓老用戶享受到更好服務體驗。

按時間來算,應該是Mate 30 時候了,華為接連更新 EROFS 文件系統,還有發布方舟編譯器,以及制定華為統一推送標準。

不管是不是在為國產系統預熱,但是可以肯定的是,華為要對安卓底層架構大動刀了。相比於提升系統的美觀度,華為似乎更想在系統體驗與流暢度上追趕IOS。就目前來看。華為的新技術接二連三發布。

但是其實有很多小細節小瑕疵並沒有做到位,就比如華為P30 Pro 用了RYYB,白天成像白平衡經常翻車,被吐槽體驗不如三星。

我覺得華為在大踏步邁進的時候,除了做快還要做穩,期待華為帶來的系統大變革吧~

「歡迎大家關注公眾號:微回收(whs-gf),賣手機就來微回收!」


推薦閱讀:
相关文章