查看原文
其他

微软解析新Edge浏览器的多进程体系结构

微软Edge团队 前端全栈开发者 2022-07-09

来源:https://blogs.windows.com/msedgedev/
作者:Microsoft Edge Team

今天的浏览器更像是操作系统,而不是文档查看器。用户在浏览器中执行的任务越来越多,而在桌面应用程序中执行的任务越来越少。然而,每个网页、Web应用和扩展都会使用内存。因此,用户经常会关心内存使用情况如何影响他们的体验。
我们正在努力开发解决方案,以解决这一问题。这些解决方案包括为网站和扩展开发者提供信息,帮助他们使用更少的资源,并帮助用户了解他们的浏览习惯如何影响Microsoft Edge的资源使用。
我们将在未来几个月内分享更多关于Microsoft Edge的内存使用情况,从今天的文章开始深入探讨Microsoft Edge的多进程架构。我们希望这能让您深入了解Microsoft Edge如何使用您的计算机资源,浏览习惯如何影响资源使用,以及您如何帮助我们让Microsoft Edge变得更好。

多进程体系结构如何帮助提高浏览器的安全性和可靠性

许多浏览器是使用多进程体系结构构建的,这意味着浏览器被划分为不同的进程。
浏览器进程(Browser process): 这是主要的进程,它帮助管理窗口和标签,并控制浏览器框架,如地址栏和前进和后退按钮。它还可以对网络请求和文件访问等实用程序的特权访问进行路由。
渲染进程(Renderer processes): 这些控件通过执行网站提供的代码来控制网站如何在标签页中渲染。它们处理HTML、CSS、JavaScript、图像等。每个渲染器进程的资源使用情况都取决于所托管的内容。
GPU进程(GPU process): 该进程负责与GPU(图形处理单元)进行通信并处理所有GPU任务。GPU是一种硬件,可以快速执行与图形相关的计算,并将输出发送到显示器以进行显示,现代浏览器使用GPU来快速渲染网页。
实用程序进程(Utility processes): 音频播放、网络服务、视频采集、数据解码、收藏管理器都由这些进程来处理,这样Microsoft Edge就可以控制和审核这些资源的访问,协调全局系统资源的使用。
插件进行和扩展程序进程(Plug-in processes and extension processes): 插件进程包含活动插件,例如Adobe Flash,而扩展进程包含活动扩展。每个进程执行由插件或扩展提供的代码,每个进程的资源使用情况根据所提供的代码而不同。每个进程也有允许插件或扩展与浏览器和渲染器进程通信的代码。
Crashpad处理程序进程(Crashpad handler process): 这可以跟踪Microsoft Edge中不同进程的健康状况。如果Microsoft Edge崩溃,这个过程将帮助浏览器捕获并将崩溃报告传输到微软服务器,我们使用这些崩溃报告来寻找和修复崩溃。
现在我们已经介绍了每个进程的作用,让我们来看看一个进程的例子,它将为一个打开了一个标签页并在Microsoft Edge中打开了两个扩展的用户运行。
浏览器实例,其中一个选项卡已打开,两个扩展已打开

如果用户打开Windows任务管理器,则将显示进程:

在此示例中,用户将看到九个进程正在运行:

  • 浏览器框架的浏览器进程
  • 一个帮助显示图形的GPU进程
  • 一个正在运行示例网站提供的代码的渲染器进程
  • 网络服务实用程序进程,帮助处理网络请求
  • 音频服务实用程序进程,可帮助播放音频
  • 运行Flash提供的代码的插件进程
  • 两个扩展进程,每个扩展进程一个,运行扩展提供的代码
  • 一个监控Microsoft Edge健康状况的crashpad处理程序
所有这些过程一起写作,给你今天使用的浏览体验。
现在让我们来看另一个例子。在下一个示例中,用户打开了四个选项卡,并启用了两个扩展(图2)。每个标签都有一个广告(两个来自一个来源,两个来自另一个来源)。
浏览器实例打开了四个选项卡,并且打开了两个扩展

在此示例中,如果用户打开任务管理器,他们将看到14个进程正在运行:

  • 浏览器框架的浏览器进程
  • 一个帮助显示图形的GPU进程
  • 六个渲染器进程:
    • 四个标签页的渲染器进程,每个标签页都有自己的渲染器进程,并运行网站提供的代码。有时,来自同一域的选项卡将共享一个进程。

    • 两个广告的渲染器进程。来自同一域名的广告将共享一个进程,并将运行广告提供的代码。在本例中,第一个来源的两个广告将共享一个进程,第二个来源的两个广告将共享一个单独的进程。这些广告使用称为子帧的东西嵌入网页中。(稍后我们将详细讨论子帧。)

  • 网络服务实用程序进程,帮助处理网络请求
  • 音频服务实用程序进程,可帮助播放音频
  • 一个正在运行Flash的插件进程
  • 两个扩展进程,每个扩展进程一个,运行扩展提供的代码
  • 一个监控Microsoft Edge健康状况的crashpad处理程序
一些例子更加复杂。您可能会看到对您不可见的子框架的其他进程,或者您可能会看到项目(如service workers人员或web workers)与选项卡或子框架共享进程。service workers和web workers是在后台运行的脚本,以提高性能,并允许您在没有互联网连接的情况下使用一些网站和应用程序。

Chromium's多进程架构:https://www.chromium.org/developers/design-documents/multi-process-architecture

多进程架构的好处

每个进程都有不同的目的,影响进程总数的因素很多。那么,Microsoft Edge为什么要使用这种多进程架构呢?
与其他现代浏览器一样,Microsoft Edge使用这种架构来提高安全性、可靠性和对浏览器如何使用资源的可问责性。Microsoft Edge基于Chromium项目构建,并与其他Chromium浏览器共享一个通用实现。

增强的安全性

如果恶意软件利用了一个渲染器进程中的安全漏洞,则很难逃脱该进程并影响另一个进程。
渲染器进程是最有可能受到攻击的进程,因为它是与网站交互的进程。该进程的特权较低,并且对操作系统的访问受到极大限制,因此,如果恶意软件控制该进程,则它将无法控制该计算机。渲染器进程和浏览器进程之间的通信范围狭窄且受到保护,恶意软件很难利用此优势来利用浏览器进程。
另外,进程隔离可以防止一个进程访问另一个进程的内存,这也提高了浏览器的安全性。举例来说,假设您正在网上购买衬衫,并且该网站上有一个广告。您所访问的网站需要访问您的信用卡信息才能完成交易;但是,广告不需要访问此信息。广告将按照自己的流程进行处理,因此即使广告遭到入侵,也无法轻松访问您的敏感信息。

可靠性

如果网页、Web应用、扩展程序或插件发生崩溃,只有正在崩溃的进程才会受到影响,提高浏览器的可靠性。浏览器的其余部分,包括大多数其他选项卡,将保持稳定。

资源问责制

隔离每个进程,可以更容易地在任务管理器中看到哪个进程使用了最多的资源,并提供有关哪些资源使用的信息。Microsoft Edge使用最多的资源,还是网站,扩展程序或插件?您还可以在Microsoft Edge的内部任务管理器中看到这些信息,您可以在Microsoft Edge中按Shift+Esc键打开,或者进入浏览器的上角,选择设置和更多(...)>更多工具>浏览器任务管理器
请继续关注即将发布的博客文章,我们将在其中学习计算机如何管理内存。

Microsoft Edge隐私白皮书:https://docs.microsoft.com/en-us/microsoft-edge/privacy-whitepaper

– Microsoft Edge程序经理Allison Pastewka


相关阅读
引入适用于双屏和可折叠设备的Web API
听说你熟练使用Vue.js,这9种Vue技术你掌握了吗?
在Vue Vite应用程序中实现暗/亮模式
2020 开发人员生态系统现状

粉丝福利

临走前留下,今天的福利
  • 福利1:某慕网课程《React Hooks重构去哪网购票》获取地址和密码请在公众号中回复关键字:002
  • 福利2:在看+留言,张张会在留言区随机抽取一位认真留言的小伙伴,给他发一个红包奖励

 108期留言中奖用户:天使投资@小鸡兄弟

- END -

走心的分享更容易被抽中~
开奖时间 下期文末

点赞 + 在看 + 留言
下一个幸运儿就是你

👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存