Chrome 架构

· words · 4 min

本文中所有的讨论都基于目前使用率最高的 Chrome 浏览器。你可以点击 Chrome 浏览器右上角(选项/更多工具/任务管理器)打开 Chrome 的任务管理器的窗口。

浏览器开启了多进程,通过并行处理能够大大提升性能。

进程(Process)& 线程(Thread)

一个进程就是一个程序的运行实例,用来存放代码、运行中的数据、执行任务的内存,这样的一个环境就叫做进程。每个进程至少有一个线程,线程不能单独存在,由进程来启动和管理。多线程可以并行处理任务,大大提升工作效率。

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f58e4c92-9916-4b06-ae52-8750f1d42095/Untitled.png

进程和线程的关系如下:

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/889a8850-669a-4b0e-9c6d-911583a74379/Untitled.png

单进程浏览器时代

单进程浏览器是指浏览器所有的功能模块都运行在同一个进程里。包括网络、插件、JS 运行环境、渲染引擎和页面等。如此多的功能模块几种在一个进程里,是导致进程不稳定、不流畅、不安全的主要因素。

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ccdf558c-f933-47d2-af6d-45ccd2e9138e/Untitled.png

目前浏览器多进程架构

目前多进程包括:一个浏览器主进程、一个 GPU 进程,一个网络进程,多个渲染进程和多个插件进程。

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/71bc968b-2719-4d06-bac7-9f3d0d696faa/Untitled.png

虽然多进程模型提升了浏览器的稳定性、流畅性和安全性,但是带来了一些问题: