瀏覽器基本進程及作用

Chrome 打開一個頁面需要啓動多少進程?你可以點擊 Chrome 瀏覽器右上角的“選項”菜單,選擇“更多工具”子菜單,點擊“任務管理器”,這將打開 Chrome 的任務管理器的窗口,如圖

 

 

只是打開了 1 個頁面,爲什麼要啓動這麼多進程呢?

 

並行處理:同一時刻處理多個任務
A = 1+2
B = 20/5
C = 7*8

 

正常情況下程序可以使用單線程來處理,也就是分四步按照順序分別執行這四個任務

 

如果採用多線程,會怎麼樣呢?我們只需分“兩步走”:第一步,使用三個線程同時執行前三個任務;第二步,再執行第四個顯示任務

 

進程和線程的關係
 
多線程可以並行處理任務,但是線程是不能單獨存在的,它是由進程來啓動和管理的。

 

那什麼又是進程呢?一個進程就是一個程序的運行實例。詳細解釋就是,啓動一個程序的時候,操作系統會爲該程序創建一塊內存,用來存放代碼、運行中的數據和一個執行任務的主線程,我們把這樣的一個運行環境叫進程。

 

進程和線程之間的關係有以下 4 個特點:
1. 進程中的任意一線程執行出錯,都會導致整個進程的崩潰。
2. 線程之間共享進程中的數據。
3. 當一個進程關閉之後,操作系統會回收進程所佔用的內存
4. 進程之間的內容相互隔離。

 

單進程時代:如此多的功能模塊運行在一個進程裏,是導致單進程瀏覽器不穩定、不流暢和不安全的一個主要因素
多進程時代:穩定,流暢,安全



多進程架構
瀏覽器進程。主要負責界面顯示、用戶交互、子進程管理,同時提供存儲等功能。

 

渲染進程。核心任務是將 HTML、CSS 和 JavaScript 轉換爲用戶可以與之交互的網頁,排版引擎 Blink 和 JavaScript 引擎 V8 都是運行在該進程中,默認情況下,Chrome 會爲每個 Tab 標籤創建一個渲染進程。出於安全考慮,渲染進程都是運行在沙箱模式下。

 

GPU 進程。其實,Chrome 剛開始發佈的時候是沒有 GPU 進程的。而 GPU 的使用初衷是爲了實現 3D CSS 的效果,只是隨後網頁、Chrome 的 UI 界面都選擇採用 GPU 來繪製,這使得 GPU 成爲瀏覽器普遍的需求。最後,Chrome 在其多進程架構上也引入了 GPU 進程。

 

網絡進程。主要負責頁面的網絡資源加載,之前是作爲一個模塊運行在瀏覽器進程裏面的,直至最近才獨立出來,成爲一個單獨的進程。

 

插件進程。主要是負責插件的運行,因插件易崩潰,所以需要通過插件進程來隔離,以保證插件進程崩潰不會對瀏覽器和頁面造成影響。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章