瀏覽器多進程架構

跟不少多線程瀏覽器不同,chrome使用多個進程來隔離不一樣的標籤頁,所以打開一個標籤頁,就等因而開了一個新的進程,固然,進程之間是不共享資源和地址空間的,因此每一個進程之間不太會出現互相影響的安全問題,而多個線程,是共享着相同的資源和地址空間的,因此線程之間就有可能會存在惡意修改或者獲取非受權數據的複雜性安全問題。chrome

多進程:相似於一個工廠,每一個工廠有每一個工廠本身作的時間,互不影響

多線程:相似於每個工廠裏面的工人,一個工廠能夠有不少個工人 
複製代碼

瀏覽器也會有本身的優化機制,好比打開多個空白的標籤頁,在chrome的任務管理器裏面,就會發現把這些空白頁,都合成了一個進程,因此一個tab標籤頁對應一個進程也不是絕對的瀏覽器

瀏覽器除了主進程,還有一個其餘進程來輔助支撐主進程安全

Browser進程網絡

  • 瀏覽器的主進程(負責調控、主控),只存在一個,做用有
  • 負責瀏覽器界面顯示,與用戶交互,前進、後退等
  • 負責各個頁面間的管理,建立和銷燬其餘進程
  • 網絡資源管理,下載等

第三方插件多線程

  • 每種類型的插件是一個進程,當使用時建立

GPU進程優化

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

瀏覽器渲染進程(瀏覽器內核)(Renderer進程,內部是多線程的):默認每個tab頁都是一個進程,互不影響,主要做用爲:spa

  • 頁面渲染
  • 腳本執行
  • 時間處理等

相對於單進程瀏覽器,多進程瀏覽器的優點有

  • 避免單個頁面奔潰影響整個瀏覽器
  • 避免第三方插件奔潰影響整個瀏覽器
  • 多進程充分利用多核優點
  • 方便使用沙盒模式隔離插件等流程,提升瀏覽器穩定性
相關文章
相關標籤/搜索