浏览器工作原理【1】

DawninShadow 2019-07-10 PM 1545℃ 1条

浏览器工作原理

Chrome架构

Chrome浏览器的进程列表
Chrome浏览器的进程列表
__线程不能单独存在,它是由进程启动和管理的,而进程则是一个程序的运行实例,一个进程中采用多线程并行处理能有效的提升运算效率。
进程中任意线程出错就会导致整个进程崩溃
线程之间可以对进程内公共数据进行读写操作
当一个进程关闭后系统会回收进程所占用的所有内存
进程之间的内容相互隔离__

单进程浏览器架构

2007年以前基本上所有浏览器都是单进程的,单进程浏览器内网络线程,页面线程(包括页面渲染,页面展现,JavaScript环境等),其他线程等都运行在浏览器总进程下。这类架构主要有以下一些问题。

  • 不稳定
    任意一个浏览器插件的崩溃都会导致整个浏览器崩溃,尤其像渲染引擎模块一类容易出错的线程,很容易导致整个进程失效
  • 不流畅
    所有页面的渲染模块,JavaScript执行环境以及插件都是运行在同一线程中的,这就意味着同一时刻只能有一个模块可以执行,而且页面的内存泄漏(页面在关闭时内存回收不完全)也会使导致内存占用过高,引发卡顿
  • 不安全
    很多插件可以由C/C++编写,通过插件就可以获得操作系统的任意资源,页面内的脚本也可以通过浏览器漏洞获取系统权限,引发安全问题。

早期多进程浏览器架构

早期的Chrome架构
早期多进程浏览器架构
可以看出,Chrome页面渲染进程是独立的,页面插件也运行在单独的插件进程中。进程之间则是通过IPC机制进行通信的。

  • 稳定性
    因为进程是相互隔离的,所以当一个界面或者插件崩溃时只会影响到当前页面进程或者插件进程,不会影响到浏览器的其他页面。
  • 流程性
    JavaScript也是运行在渲染进程中的,所以即便JavaScript阻塞了渲染进程,影响的也只是当前渲染页面,不会影响到其他页面。
  • 安全性
    采用多进程架构就可以形成安全沙箱,把进程内数据和进程外数据隔离。

目前的多进程浏览器架构

目前多进程浏览器架构

包括浏览器主进程,GPU进程,网络进程,多个渲染进程和多个插件进程

  • 浏览器进程。 主要负责界面显示,用户交互,子进程管理,同时提供存储功能。
  • 渲染进程。 核心任务是将HTML,CSS和JavaScript转换为页面,排版引擎Blink和JavaScript引擎V8都是运行在这个进程中的,通常每个Tag页面都有对应独立的渲染进程。
  • GPU进程。 用来处理3D CSS效果,CSS动画触发GPU绘制能有效提高网页性能。
  • 网络进程。 主要负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程内的,最近独立出来作为单独进程。
  • 插件进程。 负责插件运行,防止插件崩溃导致页面出错,用单独的进程进行处理。

多进程架构带来了这么多便利,那么,古尔丹,代价是什么呢???就是更高的资源占用。 因为每个进程都会包含公共基础结构的副本,这就意味着会消耗更多内存资源

  标签: 浏览器, Chrome

非特殊说明,本博所有文章均为博主原创。

上一篇 Git
下一篇 Vue温故而知新【1】

评论啦~



唉呀 ~ 仅有一条评论


  1. your baba
    your baba

    所以即便JavaScript阻塞了渲染进程,影响的也只是当钱渲染页面

    错别字 当"前"

    回复 2019-08-13 11:26