最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 浏览器多进程架构

    正文概述 掘金(pipiyuan)   2021-03-04   525

    浏览器多进程架构

    背景

    最近在学习浏览器工作原理相关知识,会记录一些浏览器相关的学习笔记。当我们使用Chrome打开一个页面时,在Chrome 浏览器右上角的“选项”菜单,选择“更多工具”子菜单,点击“任务管理器”我们会看到Chrome 启动了多个进程,好奇的我决定一探究竟。

    进程 & 线程

    对进程线程不是很了解的同学可以看一下 操作系统之进线程模型

    CPU & GPU

    CPU是计算机的大脑,负责处理各种不同的任务。在过去,大多数CPU是单芯片的,核心被安置在同一个芯片上。更新的CPU可以支持多核心,运算能力大大加强。而最新的的cpu已经达到10核心20线程数的能力了。

    GPU是另一个计算机的组成部分,与CPU不同,GPU更擅长利用多核心同时处理单一的任务。像命名那样,GPU最初被用于处理图像。这就是为什么使用GPU可以更快、更顺畅的渲染页面内容。随着GPU的发展,越来越多的计算任务也可以使用GPU来处理。甚至有人说GPU是人工智能的大功臣,可见GPU已经不再仅用于图像处理上了。

    单进程浏览器

    早在 2007 年之前,市面上浏览器都是单进程的,其架构图如下所示:

    浏览器多进程架构

    单进程浏览器的缺点

    1. 由于浏览器是单进程的,其中一个线程的某项任务出错都会造成浏览器崩溃。
    2. 界面相关的多个任务集中在单一线程,某一项任务阻塞,都会阻塞整个界面的展示,从而造成整个浏览器卡顿。
    3. 当时的单进程浏览器是没有沙箱这一个概念的,浏览器中运行的任务都可能对操作系统造成威胁。

    当前的多进程架构浏览器

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

    浏览器多进程架构

    单进程浏览器的问题得到了解决

    1. 当某个渲染进程和插件进程出现问题时,影响当只是出现问题当那个页面或者插件,其它页面不会受到影响。
    2. 当某个渲染进程里的任务出现阻塞,或者内存泄漏,影响当也只会是这个渲染进程所对应当页面,其它页面和浏览器也不会受到影响。
    3. 至于安全问题,浏览器采用了将渲染进程或者部分操作系统的插件进程放入了沙箱。让其没有办法访问浏览器外部资源,对操作系统造成威胁。

    多进程详解

    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. 采用多进程架构带来了更高的资源占用
    2. 更复杂对体系架构,当前设计个模块耦合性高,扩展性差

    未来

    2016年 Chrome官方使用了 "面向服务架构" (Services Oriented Architecture 简称"SOA")的思想来设计了新的架构。原来的各种模块会被重构成独立的服务(Service),每个服务(Service)都可以在独立的进程中运行,访问服务(Service)必须使用定义好的接口,通过 IPC 来通信,从而构建一个更内聚、松耦合、易于维护和扩展的系统。 同时 Chrome 还提供灵活的弹性架构,在强大性能设备上会以多进程的方式运行基础服务,但是如果在资源受限的设备上,Chrome 会将很多服务整合到一个进程中,从而节省内存占用。

    浏览器多进程架构 浏览器多进程架构

    参考文章

    浏览器工作原理与实践(极客时间)


    下载网 » 浏览器多进程架构

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元