標籤:

Chrome 的 Blink 內核,跟 Webkit 內核相比,安全的細節方面有什麼差異?

Chrome 28瀏覽器更新 更換新內核加入通知功能這個是介紹

chrome 更換成了blink內核,和webkit內核的安全性有什麼差異么?然後這個內核的安全相關的問題有人研究過么?因為我們說瀏覽器的安全的時候,分ie內核的,webkit內核的,Gecko內核等等。


在多進程架構上,Google一開始就獨自開發了一套沙盒多進程架構,它和後來由Apple主導的WebKit2多進程架構差異很大,為了支持WebKit2架構而加入WebCore的大量代碼,對Google不但一點用也沒有,還不得不花時間去處理兼容性的問題,而Google需要修改WebCore來支持自己架構的代碼又很難進入WebKit主幹,必須很小心處理避免影響其它的Port,大量的代碼不得不通過迂迴的方式放在外部處理,一些沒方法在外部處理而需要對WebCore進行大改的特性不得不暫時放棄。

並且,因為歷史原因,WebCore本身一開始就沒有多線程或者多進程的概念,現有的架構對並行處理的支持非常困難,Google也認為必須對WebCore進行整體架構上的大改才能更好的支持並行處理,更充分利用多核CPU的能力,避免主線程過度擁擠(雖然現在大部分的WebKit Port都把主要的渲染工作分離到其它線程,但是主線程仍然需要負擔HTML解析,CSS樣式計算和匹配,排版,JS執行等繁重的任務,為了避免單項任務長時間阻塞主線程,WebCore目前是用延時Timer的方式將一個複雜任務分解成多段來順序執行,這種方式即不優雅,更無法充分利用多核的能力)。

另外,WebCore現在的模塊化比較混亂;一些歷史遺留的代碼和僅僅用於支持某些特定平台的代碼導致WebCore代碼臃腫不堪;平台相關的處理也沒有一個統一的標準和方式,沒有一個很好的抽象層去隔離平台相關和平台無關的部分;WebCore為了可以同時支持不同的JS虛擬機(如JSC和V8)導致了額外的性能開銷和妨礙了對JS性能更多的改進;除此以外,更安全的隔離機制;對現有的網路層進行更大的結構優化等等這些原因也是Google需要自己發展Blink的主要原因。

總之,Chrome有太多激進的改進需要對WebCore進行大改,而原來那種在外圍做文章,曲線救國的方式再也行不通,為了能夠自行主導架構的演進方向,避免跟其它Port相互干擾,相互扯皮給雙方帶來的困擾和痛苦,加快開發的速度,從WebKit主幹分離,自己發展新的瀏覽器引擎就成了必然的選擇。

摘自 Why Blink and Why not BlinkWhy Blink and Why not Blink


blink和webkit並沒有什麼大的差異,blink其實就是webkit的一個分支,但是因為google的Chromium需要一些webkit不能實現的功能,才會有blink,總之blink依然是基於webkit的。


推薦閱讀:

Chrome 瀏覽器設計的神細節有哪些?
如何說服使用 360 安全瀏覽器(甚至不是 Webkit 核心的)的朋友嘗試 Chrome?
Chrome 總是崩潰的原因可能是什麼?
在chrome瀏覽器的彩蛋遊戲里,最高可以達到多少分?

TAG:GoogleChrome |