浏览器架构-实践篇

2,161 阅读2分钟

1-浏览器架构-实践篇

那么我们来来看看Chrome是对应的浏览器架构是怎样的呢?当我们打开任务管理器的时候,会看到看到浏览器开启会有多个进程(可以通过Chrome的更多工具 -> 任务管理器自行查看。)。

那我们来来看看chrome有哪些主要进程吧。

  • Browser Process:浏览器的主进程(负责协调、主控),只有一个。
    1. 负责包括地址栏,书签栏,前进后退按钮等部分的工作;
    2. 负责各个页面的管理,创建和销毁其他进程;
    3. 将Renderer进程得到的内存中的Bitmap,绘制到用户界面上;
    4. 负责处理浏览器的一些不可见的底层操作,比如网络请求和文件访问;
  • Renderer Process:默认每个Tab页面一个进程,互不影响。
    1. 页面渲染,脚本执行,事件处理等
  • Plugin Process:每种类型的插件对应一个进程,仅当使用该插件时才创建
  • GPU Process:最多一个,用于3D绘制等

不同进程负责的区域

那多进程架构由那些优/劣势呢?

优势 劣势
单一页面的 crash 并不会影响浏览器 不同进程内存不能共享,导致不同进程内存中存有相同信息
插件的 crash 并不会影响浏览器
多进程充分利用多核优势
更为安全,在系统层面上限定了不同进程的权限

chrome 为了节省内存的使用,限制了最多的进程数,最大进程数量由设备的内存和 CPU 能力决定,当达到这一限制时,新打开的 Tab 会共用之前同一个站点的渲染进程。

Chrome 把浏览器不同程序的功能看做服务,这些服务可以方便的分割为不同的进程或者合并为一个进程。以 Broswer Process 为例,如果 Chrome 运行在强大的硬件上,它会分割不同的服务到不同的进程,这样 Chrome 整体的运行会更加稳定,但是如果 Chrome 运行在资源贫瘠的设备上,这些服务又会合并到同一个进程中运行,这样可以节省内存。

以上介绍完了浏览器的基本架构,但是我们最开始的问题还没开始解决呢!回顾一下问题:

「在浏览器地址栏中输入 url 到页面展现的短短几秒内浏览器究竟做了什么?」

下一篇文章

问题-概况篇