浏览器多进程架构
跟很多多線程瀏覽器不一樣,chrome使用多個進程來隔離不同的標(biāo)簽頁,因此打開一個標(biāo)簽頁,就等于是開了一個新的進程,當(dāng)然,進程之間是不共享資源和地址空間的,所以每個進程之間不太會出現(xiàn)互相影響的安全問題,而多個線程,是共享著相同的資源和地址空間的,所以線程之間就有可能會存在惡意修改或者獲取非授權(quán)數(shù)據(jù)的復(fù)雜性安全問題。
多進程:類似于一個工廠,每個工廠有每個工廠自己做的時間,互不影響多線程:類似于每一個工廠里面的工人,一個工廠可以有很多個工人 復(fù)制代碼瀏覽器也會有自己的優(yōu)化機制,比如打開多個空白的標(biāo)簽頁,在chrome的任務(wù)管理器里面,就會發(fā)現(xiàn)把這些空白頁,都合成了一個進程,所以一個tab標(biāo)簽頁對應(yīng)一個進程也不是絕對的
瀏覽器除了主進程,還有一個其他進程來輔助支撐主進程
Browser進程:
- 瀏覽器的主進程(負責(zé)調(diào)控、主控),只存在一個,作用有
- 負責(zé)瀏覽器界面顯示,與用戶交互,前進、后退等
- 負責(zé)各個頁面間的管理,創(chuàng)建和銷毀其他進程
- 網(wǎng)絡(luò)資源管理,下載等
第三方插件:
- 每種類型的插件是一個進程,當(dāng)使用時創(chuàng)建
GPU進程:
- 最多一個,用于3D繪制等
瀏覽器渲染進程(瀏覽器內(nèi)核)(Renderer進程,內(nèi)部是多線程的):默認(rèn)每一個tab頁都是一個進程,互不影響,主要作用為:
- 頁面渲染
- 腳本執(zhí)行
- 時間處理等
相對于單進程瀏覽器,多進程瀏覽器的優(yōu)勢有
- 避免單個頁面奔潰影響整個瀏覽器
- 避免第三方插件奔潰影響整個瀏覽器
- 多進程充分利用多核優(yōu)勢
- 方便使用沙盒模式隔離插件等流程,提高瀏覽器穩(wěn)定性
總結(jié)
- 上一篇: 15个PHP库,你值得拥有!(下)
- 下一篇: 前端特效demo | 值得收藏的6个 H