【浏览器系列】Chrome为什么打开1个页面,会有4个进程?

目录

1. 进程和线程

1.1 进程

1.2 进程和线程之间的关系

2. 单进程浏览器时代

3. 多进程浏览器时代

3.1 早期多进程架构

3.2 目前多进程架构

4. 未来面向服务的架构

5. 总结:

5.1 答案

1. 进程和线程

        什么是并行处理:计算机中的并行处理就是同一时刻处理多个任务

        

        线程是不能单独存在的,它是由进程来启动和管理的。

1.1 进程

一个进程就是一个程序的运行实例。

        启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程

 线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。

1.2 进程和线程之间的关系

1、进程中的任意一线程执行出错,都会导致整个进程的崩溃。

2、线程之间共享进程中的数据。

3、当一个进程关闭之后,操作系统会回收进程所占用的内存。

4、进程之间的内容相互隔离。

2. 单进程浏览器时代

单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里。

单进程浏览器的架构如下图所示:

问题:

  • 不稳定
  • 不流畅
  • 不安全

3. 多进程浏览器时代

3.1 早期多进程架构

2008 年 Chrome 发布时的进程架构

进程之间是通过 IPC 机制进行通信

IPC机制了解链接:(30条消息) 进程间通信(IPC机制)精炼详解_Chin_style的博客-CSDN博客_ipc通信机制

进程是相互隔离:解决不稳定的问题。

JavaScript 也是运行在渲染进程中:即使 JavaScript 阻塞了渲染进程,影响到的也只是当前的渲染页面

安全问题:采用多进程架构的额外好处是可以使用安全沙箱

3.2 目前多进程架构

最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程。

1、浏览器进程。

主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。

2、渲染进程。

核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。

3、GPU 进程。

其实,Chrome 刚开始发布的时候是没有 GPU 进程的。而 GPU 的使用初衷是为了实现 3D CSS 的效果,只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。

4、网络进程。

主要负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的,直至最近才独立出来,成为一个单独的进程。

5、插件进程。

主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

打开 1 个页面至少需要 1 个网络进程、1 个浏览器进程、1 个 GPU 进程以及 1 个渲染进程,共 4 个;如果打开的页面有运行插件的话,还需要再加上 1 个插件进程。

多进程模型带来了一些问题:

  • 更高的资源占用
  • 更复杂的体系架构

4. 未来面向服务的架构

        在 2016 年,Chrome 官方团队使用“面向服务的架构”(Services Oriented Architecture,简称 SOA)的思想设计了新的 Chrome 架构。

下面是 Chrome“面向服务的架构”的进程模型图:

 

 资源受限的设备上

 

5. 总结:

早期浏览器:

不稳定(单独进程)
不流畅(单独进程)
不安全(沙箱)

早期多进程架构:

主进程 渲染进程 插件进程

现代多进程架构:

主进程 渲染进程 插件进程 GPU进程 网络进程

未来:

面向服务架构

所以

5.1 答案:

        因为打开1个页面:至少需要1个网络进程1个浏览器进程1个GPU进程以及1个渲染进程

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值