浏览器架构 | 青训营笔记

116 阅读2分钟

浏览器架构演进

  1. 单进程架构:所有模块运行在一个进程,包含网络、插件、JavaScript运行环境等
  2. 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程
  3. 面向服务架构:将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务

早期的浏览器是单进程的架构;而多进程架构是现在的浏览器,目前大部分浏览器都是多进程架构,进程之间的相互独立的;面向服务架构也是一种多进程架构,可以说是他的一个升级版本 image.png

浏览器架构对比

浏览器架构从扩展性、安全性、稳定性、流畅性的对比

架构类型扩展性安全性稳定性流畅性
单进程架构,所有模块运行在同一进程里,访问同一块内存区域,数据没有隔离,第三方插件可直接访问操作系统里任意资源,三方插件漏洞或者JavaScript脚本容易导致浏览器崩溃卡顿,所有页面运行在同一进程中
多进程架构,各进程分配独立的内存区域,有些进程功能较大,耦合度高,运行在独立沙箱中,不能访问系统敏感资源,进程相互隔离。当一个页面或者插件崩溃的时候,不会影响其他进程流畅,每个页面运行在独立的渲染进程中,充分利用系统资源
面向服务架构,服务模块划分更细,更内聚、耦合性低,易于扩展,运行在独立沙箱中,不能访问系统敏感资源,进程相互隔离。当一个页面或者插件崩溃的时候,不会影响其他进程流畅,每个页面运行在独立的渲染进程中,充分利用系统资源

浏览器架构

任务管理器

以chrome浏览器为例子,如何打开任务管理器:

image.png

打开任务管理器之后就可以看到浏览器的里面的进程,有GPU进程等,而这个标签页就是渲染的进程

image.png

多进程分工

每个进程都负责着不同的功能作用 image.png

渲染进程

常见浏览器内核

image.png

多线程架构

内部都是多线程实现,主要负责:

  • 页面渲染
  • 脚本执行
  • 事件处理
  • 网络请求

image.png