瀏覽器多程式架構

熱情的劉大爺發表於2018-11-16

跟很多多執行緒瀏覽器不一樣,chrome使用多個程式來隔離不同的標籤頁,因此開啟一個標籤頁,就等於是開了一個新的程式,當然,程式之間是不共享資源和地址空間的,所以每個程式之間不太會出現互相影響的安全問題,而多個執行緒,是共享著相同的資源和地址空間的,所以執行緒之間就有可能會存在惡意修改或者獲取非授權資料的複雜性安全問題。

多程式:類似於一個工廠,每個工廠有每個工廠自己做的時間,互不影響

多執行緒:類似於每一個工廠裡面的工人,一個工廠可以有很多個工人 
複製程式碼

瀏覽器也會有自己的優化機制,比如開啟多個空白的標籤頁,在chrome的工作管理員裡面,就會發現把這些空白頁,都合成了一個程式,所以一個tab標籤頁對應一個程式也不是絕對的

瀏覽器除了主程式,還有一個其他程式來輔助支撐主程式

Browser程式

  • 瀏覽器的主程式(負責調控、主控),只存在一個,作用有
  • 負責瀏覽器介面顯示,與使用者互動,前進、後退等
  • 負責各個頁面間的管理,建立和銷燬其他程式
  • 網路資源管理,下載等

第三方外掛

  • 每種型別的外掛是一個程式,當使用時建立

GPU程式

  • 最多一個,用於3D繪製等

瀏覽器渲染程式(瀏覽器核心)(Renderer程式,內部是多執行緒的):預設每一個tab頁都是一個程式,互不影響,主要作用為:

  • 頁面渲染
  • 指令碼執行
  • 時間處理等

相對於單程式瀏覽器,多程式瀏覽器的優勢有

  • 避免單個頁面奔潰影響整個瀏覽器
  • 避免第三方外掛奔潰影響整個瀏覽器
  • 多程式充分利用多核優勢
  • 方便使用沙盒模式隔離外掛等流程,提高瀏覽器穩定性

相關文章