chrome瀏覽器構架學習筆記

最直觀方法:打開更多工具中的任務管理器,可查看有幾個進程。

結論:

現代瀏覽器是多進程架構,包括:1個瀏覽器進程,1個網絡進程,1個GPU進程,多個渲染進程和多個插件進程。
通常情況下,打開2個頁面會有5個進程,即瀏覽器進程、網絡進程、GPU進程、兩個渲染進程。
特殊情況:

  1. 頁面中有插件,每個插件算一個進程
  2. 頁面有iframe,會運行在單獨的進程中
  3. 裝了擴展,也會佔用進程
  4. 如果兩個頁面屬於同一個站點,並且B從A中打開,會共用一個渲染進程。
    例子:多標籤共用一個進程場景

並行併發概念:

並行:指的是兩個互不影響的獨立進程同時進行。
併發:指的是一個時間段內程序處於已啓動到完畢之間,且這幾個程序都是在同一個處理機上運行的(劃分時間段,幾個時間段來回切換執行程序,只是用戶感覺多個應用程序同時進行)

線程進程

多線程可以並行處理任務,但是線程是不能單獨存在的,是由進程來啓動管理。
線程執行出錯,會導致進程崩潰。
線程之間共享進程中的數據。

進程是一個程序的運行實例。啓動程序時,操作系統會爲其創建內存,用來存放代碼、數據和執行任務的主線程。
進程間相互獨立。
當進程關閉後,操作系統會回收進程所佔用的內存。

多進程解決單進程的問題

  • 不穩定問題:進程相互隔離,一個崩潰,並不會影響其他頁面。
  • 不流暢問題:js運行在渲染進程中,當前頁面阻塞,並不會影響其他頁面渲染進程。
  • 安全問題:安全沙箱,插件進程和渲染進程沒有辦法獲取系統權限。

各進程作用

  • 瀏覽器進程:負責頁面顯示,用戶交互,子進程管理,存儲功能。
  • 渲染進程:將html、css、js轉換爲頁面,排版引擎blink和js引擎v8都在該進程中。沙箱模式。
  • GPU進程:UI界面選擇用GPU繪製。
  • 網絡進程:網絡資源加載;
  • 插件進程:負責插件運行,插件易蹦,需要其來隔離,保證瀏覽器其他進程不受影響。

多進程構架的問題

  • 更高資源佔用:每個進程都包含公共基礎結構(js運行環境),會佔用更多瀏覽器內存資源
  • 更復雜的體系架構:瀏覽器模塊間的耦合性高、擴展性差

就有了 未來面向服務架構
在這裏插入圖片描述