“下午是實操環節,大家可以帶著自己的問題來,我們現場除錯、現場解答。”
盧為冰說完,側身讓出講臺,陳洋走上來,開啟電腦,投影幕布上出現了一張深藍色的幻燈片。
“各位好,我是陳洋。”他推了一下眼鏡,目光掃過全場。
“深藍系統從S1到S3,一共經歷了一個大版本和兩個小版本的迭代。我今天不講細節,講思路。”
他按了一下翻頁筆,螢幕上出現了一張時間線圖,從2008年9月到2009年10月,標記了三個關鍵節點。
“S1釋出的時候,我們在做一件沒有人做過的事,把一個智慧作業系統塞進聯發科K6225這種主頻不到200z的晶片裡。
當時市面上的主流觀念是,智慧機系統需要至少400z以上的處理器才能流暢執行。
但我們做到了,在K6225上跑深藍系統1.0,第一次實現了多工。”
臺下響起一陣低低的議論聲。
坐在第三排的一個天語工程師小聲跟旁邊同事說:“那時候我們還在用K做功能機,完全沒想到還能跑智慧系統。”
陳洋等議論聲平息後,繼續翻到下一頁。
“S2我們換到了K6268,246z的CPU跑WCD協議棧,再加上深藍系統1.5的多工排程,這套方案在當時是唯一的。
市場上沒有任何一款246z處理器能同時跑3G協議棧和智慧作業系統,除了我們。”
“為什麼能做到?”他切換了一張幻燈片,上面是一張對比表格。
“因為深藍系統的任務排程器是事件驅動的,不是時間片輪轉的。安卓的任務排程器是基於Linux核心的CFS完全公平排程器,適用於通用計算場景,但在移動裝置上,這種排程器天然存在三個問題。”
螢幕上的對比表格,左邊是安卓,右邊是深藍,逐行列出了差距:
“第一,響應延遲。安卓的CFS排程器為了保證公平性,會頻繁進行上下文切換,每次切換都有微秒級的開銷。在後臺任務多的時候,前臺應用的響應延遲會被拉高。
深藍的事件驅動排程器不做時間片輪轉,只響應中斷和事件。沒有後臺任務排隊的時候,前臺應用能獨佔CPU資源,響應速度更快。
第二,記憶體管理。安卓應用是用Java寫的,執行在Dalvik虛擬機器上,GC垃圾回收機制會不定期觸發。
每次GC都會暫停所有執行緒幾毫秒到幾十毫秒不等,使用者感知到的就是卡頓。深藍應用用C/C++原生開發,沒有虛擬層,沒有GC暫停,記憶體管理是手動控制的。
第三,電源管理。安卓的電源管理策略基於Linux核心的wakeup機制,任何一個應用都可以申請wakeup鎖,後臺應用鎖住CPU導致耗電增加。
深藍系統沒有後臺wakeup機制,所有後臺任務都走推送通道,系統會在沒有任務時進入深度睡眠狀態。”
雷俊的手裡的筆從剛才開始就沒有停過,他寫得很快,幾個關鍵點在他筆記本上已經被畫了圈。
安卓的排程器是公平導向的,深藍的排程器是響應導向的。
安卓有GC暫停,深藍沒有虛擬層。
安卓的電源管理是應用主動控制,深藍的電源管理是系統主動控制。
這三條差異,單獨看每一處都是微小的最佳化,但合在一起,就是深藍系統在低端硬體上能跑得更流暢的底層原因。
而這也意味著,安卓在底層架構上就輸了。
。格表比對的上布幕影投著看頭起抬,筆下放俊雷
。化變質本有沒也略策理管源電,用在還機擬虛kivlaD,改沒程排SFC,變有沒並構架層底的它但,出釋剛剛然雖0.2卓安,楚清很裡心他
。進改的面介機相、級升的擎引覽瀏、援支的控點多如比,的用應層上是化佳最的做上0.2卓安在歌谷
。題問天先的構架層底了不決解但,助幫有實確驗者用使升提於對化佳最些這
。的裡因基在刻是,頓卡的卓安
。的裡因基在刻是也,暢流的統系藍深而
。些一了注專更才剛比,臺講向看新重,頭起抬他
。圖層分構架統系的單簡張一了現出上幕螢,片燈幻翻了翻洋陳
。了本版個二第是經已在現,心核藍深它們我,研自構架NC於基,心核是層底最。構架層分的統系藍深下一過速快我來下接“
。驅心核些這理管源電、訊音、帶基、控括包,層象是層二第
。面介店商用應、系號賬、務服送推括包,層務服統系是層三第
”。的製定可全完是層一這,板面定設、畫渡過、布桌、示圖,面桌IU是層上最
。放開不些哪、放開商廠作合對些哪了明註邊旁,來出註標的同不用都層一每,圖層分的細詳更張一現出上幕螢,筆頁翻下一了按他
。面介製定IU的層四第和IPA務服統系的層三第是要主,的到接能員盟聯“
。務服些這合整裡象映統系的己自在以可商廠作合,供提式方的KDS以們我,面介店商用應、系號賬、務服送推的層三第
。域區的面上最下一了圈點紅的筆頁翻用他”。層四第是點重“
。製定放開全完們我些這,式樣的板面定設、面介屏鎖、布桌、包示圖、啟面桌“
。題問沒都些這,畫改、示圖改、面桌改,格風的己自做想們你
”。揮發己自以可都的他其,議協送推改不,IPA統系改不,務服層底改不要只
。手舉後然,號問個一了畫邊旁在,筆幾了記速快俊雷
。手下放他”。題問的個一有我,總陳“








