浏览器工作原理——chrome架构

October 15, 2021

进程:

  • 正在执行的程序。
  • 正在计算机上执行的程序实例。
  • 能分配给处理器并由处理器执行的实体。
  • 具有以下特征的活动单元:一组指令序列的执行,一个当前状态和相关系统资源集。

进程的两个基本元素:程序代码和代码相关联的数据集。

线程:

程序执行的路径。可被操作系统调度和分派的实体。

进程和线程的特点

  • 一个进程可以包含多个线程。
  • 线程之间可以共享进程中的数据。
  • 进程与进程之间的资源(内存,文件操作符,套接字,CPU等)相互隔离,通过 IPC 机制互相通信。
  • 进程关闭后,操作系统会回收其所占用的资源。

单进程架构

以前的浏览器采用的单线程,网络,页面渲染,浏览器界面,均在同一个进程中。

缺点:

在于不同的工作模块的隔离性差,可能会相互影响,影响主要在一以下几个方面。

  1. 稳定性
    一个进程中一个线程的崩溃可能会导致整个进程崩溃,产生不必要的影响。
  2. 性能
    一个进程负责负责任务太多,不能充分利用并发优势,一个线程有可能会被其他的线程阻塞。
  3. 安全性
    一个进程中的多个线程可以共享数据,JavaScript 执行线程可能访问浏览器进程中的数据。

现代多进程架构

新的架构包括:

  • 浏览器进程
  • GPU 进程
  • 网络进程
  • 多个渲染进程
  • 多个插件进程

渲染进程

渲染进程将 HTML、CSS、JavaScript 转换成可交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。渲染进程都是运行在沙箱模式下。

优势

将不同职责的任务分配到多个进程,进程之间相互隔离。大大减小了不同模块之间的影响。并且每个网页都会分配渲染进程,网页之间互相影响的可能性更小,并且每个渲染进程都运行在沙箱中,提高了安全性。

缺陷

资源占用更高

面向服务的架构(未来)

各个模块被分成服务,每个服务在独立的进程中运行,服务暴露出接口,通过 IPC 来通信。目的是构建高内聚,松耦合,易于维护和扩展的系统。

总结

主要是介绍了目前浏览器的架构,不同线程负责的模块,以及浏览器架构的发展。


Profile picture

这里是要没时间了

职业是前端开发,早餐喜欢吃 711 的芝士猪排饭团。喜欢写代码,爱折腾

© 2021, 分享知识和生活,记录成长与感动。