01 Chrome 架构:仅仅打开一个页面,为什么有 4 个进程?

一、浏览器架构

1.1 进程和线程

一个进程对应一个程序的运行实例。启动一个程序,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,这样的一个环境叫主线程
线程依附于进程,线程之间共享进程中的数据

1.2 单进程架构

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

模块包括

  • 网络
  • 插件
  • JavaScript 运行环境
  • 渲染引擎
  • 页面

产生的问题

  1. 不稳定
    单进程浏览器实现各种强大功能,需要借助插件,但是插件是容易出问题的模块,又因为各模块都运行在浏览器进程中,一个插件的崩溃会引起整个浏览器的崩溃
  2. 不流畅
    所有页面的渲染模块、JavaScript 运行环境以及插件运行在同一个线程(页面线程),所以同一时刻只能有一个模块得到执行
    如果存在一个无限循环的页面脚本,则会独占整个线程
    导致运行在当前页面线程的其他模块没有机会被执行
    浏览器中所有页面都运行在该线程中,因此所有页面都没有机会执行任务
  3. 不安全
    通过插件解压获取到操作系统的任意资源,然后可以做任意操作
    页面脚本可以通过浏览器的漏洞来获取系统权限,然后可以做任意操作

1.3 多进程架构

如何解决单进程架构的不稳定、不流畅、不安全
早起多进程架构
打开的页面和页面中使用的插件分别运行在渲染进程、插件进程中,进程之间通过 IPC 机制进行通信

  • 解决不稳定:避免一个页面崩溃,然后整个浏览器崩溃
    当一个页面或插件的崩溃,影响的只是当前的页面进程或插件进程,并不会影响到浏览器和浏览器中的其它页面
  • 解决不流畅:让不同页面的执行是并行的
    某个页面的不流畅,影响的只是当前页面进程,并不会影响到浏览器和浏览器中的其它页面
  • 解决不安全:隔离渲染进程和插件进程,放到安全沙箱中执行
    沙箱是操作系统给进程上了一把锁,沙箱里的程序可以运行,但是不能在硬盘上写数据,也不能在敏感位置(桌面、文档等)读数据,即使渲染进程和插件进程中的恶意程序执行了,也无法突破安全沙箱而获取系统权限

1.4 目前多进程架构

目前多进程架构
最新的 Chrome 浏览器包括:1 个浏览器主进程、1 个 GPU 进程、1 个网络进程、多个渲染进程、多个插件进程

  • 浏览器主进程:主要负责界面显示、用户交互、子进程管理,提供存储等功能
  • 渲染进程:核心任务是将 HTML、CSS、JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 运行在该进程,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程(渲染进程运行在沙箱模式下)
  • GPU 进程:网页、Chrome 的 UI 界面采用 GPU 绘制
  • 网络进程:主要负责页面的网络资源加载
  • 插件进程:主要负责插件的运行,插件易崩溃,所以运行在单独的插件进程中,确保插件崩溃使插件进程崩溃,但不会对浏览器和浏览器其它页面产生影响

二、标题答案

打开一个页面,至少有 4 个进程:浏览器主进程、GPU 进程、网络进程、渲染进程(如果有扩展,那么还会多一个插件进程)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值