Skip to content

浏览器多进程架构

进程和线程 / Process and Thread

当用户启动一个应用程序时,就启动了一个进程。 一个进程可以让操作系统启动另一个进程去运行不同的任务。进行可以创建线程帮助其完成任务。

使用多进程的好处是,当一个工作进程未响应时,可以由没有停止响应的其他进程来重新启动。

IPC

不同的进程之间需要通信,使用 IPC(Inter-Process Communication)。

线程

线程是位于进程内部并执行其进程程序任何部分的线程。

浏览器架构

浏览器进程 / Browser process

浏览器架构的顶部是浏览器进程,协调浏览器其他进程的工作。

浏览器进程控制浏览器的地址栏,书签,返回和前进按钮, 同时也会处理一下不可见的功能,比如网络请求和文件访问。

浏览器包含 UI 线程、网络线程和存储线程。

渲染进程 / Render process

在比较新的 Chrome 浏览器中,会为每个标签页创建一个渲染进程。

现在它试图为每个站点创建一个渲染进程,包括 iframes。

渲染进程控制在每个网页中显示的所有内容。

插件进程 / Plugin process

控制网站所使用的的任何插件,比如 Flash。我们常常使用的浏览器扩展,是由扩展进程(extension process)来控制的,而不是插件进程。

GPU 进程 / GPU process

独立于其他进程处理 GPU 任务。它被分为不同的进程,因为 GPU 需要处理来自多个应用程序的请求,并且将它们绘制于同一个屏幕上。

多进程架构的好处

不把鸡蛋放在同一个篮子里

当用户同时打开了多个 Tab 页,每个 Tab 页都有一个渲染进程。

这样的话,当其中一个 Tab 页未响应时,用户仍然可以切换到其他可用的 Tab 页中, 而不会所有的 Tab 页都是未响应的状态。

各司其职,安全和沙盒

操作系统提供了一个管理进程的机制,可以控制进程的权限。比如为渲染进程限制了访问任意文件的访问。