当前位置: 首页 > 科技观察

微软分析新版Edge浏览器的多进程架构

时间:2023-03-22 11:51:11 科技观察

来源:https://blogs.windows.com/msedgedev/作者:MicrosoftEdgeTeam今天的浏览器更像是操作系统,而不是文档查看器。用户在浏览器中执行的任务越来越多,而在桌面应用程序中执行的任务越来越少。但是,每个网页、Web应用程序和扩展程序都会使用内存。因此,用户通常关心内存使用如何影响他们的体验。我们正在努力开发解决此问题的解决方案。这些解决方案包括为网站和扩展开发人员提供信息以帮助他们使用更少的资源,并帮助用户了解他们的浏览习惯如何影响MicrosoftEdge的资源使用。在接下来的几个月里,我们将分享更多关于MicrosoftEdge内存使用情况的信息,从今天的文章开始,深入探讨MicrosoftEdge的多进程架构。我们希望这能让你深入了解MicrosoftEdge如何使用你的计算机资源、你的浏览习惯如何影响资源使用,以及你如何帮助我们使MicrosoftEdge变得更好。多进程架构如何帮助提高浏览器的安全性和可靠性许多浏览器都是使用多进程架构构建的,这意味着浏览器分为不同的进程。浏览器进程:这是帮助管理窗口和选项卡并控制浏览器框架(例如地址栏和前进和后退按钮)的主要进程。它还可以将特权访问路由到实用程序,例如网络请求和文件访问。渲染器进程:这些控件通过执行网站提供的代码来控制网站如何在选项卡中呈现。他们处理HTML、CSS、JavaScript、图像等。每个渲染器进程的资源使用情况取决于托管的内容。GPU进程:该进程负责与GPU(GraphicsProcessingUnit)通信,处理所有GPU任务。GPU是一种硬件,可以快速执行与图形相关的计算并将输出发送到监视器进行显示。现代浏览器使用GPU来快速呈现网页。实用程序进程:音频播放、网络服务、视频捕获、数据解码和收集管理器都由这些进程处理,以便MicrosoftEdge可以控制和审核对这些资源的访问并协调全局系统资源的使用。插件进程和扩展进程:插件进程包含活动插件,例如Adob??eFlash,扩展进程包含活动扩展。每个进程执行插件或扩展提供的代码,每个进程的资源使用根据提供的代码而变化。每个进程还具有允许插件或扩展与浏览器和渲染器进程通信的代码。Crashpad处理程序进程:这跟踪MicrosoftEdge中不同进程的运行状况。如果MicrosoftEdge崩溃,此过程可帮助浏览器捕获崩溃报告并将其传输到Microsoft服务器,我们使用这些服务器来查找和修复崩溃。现在我们已经介绍了每个进程的作用,让我们来看一个进程示例,该进程将为在MicrosoftEdge中打开一个选项卡和两个扩展的用户运行。打开一个选项卡并打开两个扩展程序的浏览器实例如果用户打开Windows任务管理器,将显示进程:在本例中,用户将看到九个进程正在运行:浏览器框架的浏览器一个GPU进程有助于显示图形一个运行示例网站提供的代码的渲染器进程一个帮助处理网络请求的网络服务实用程序进程一个帮助播放音频的音频服务实用程序进程运行Flash提供的代码的插件进程两个扩展进程,每个进程一个扩展进程,运行扩展提供的代码监控MicrosoftEdge运行状况的crashpad处理程序所有这些进程一起编写,为你提供今天使用的浏览体验。现在让我们看另一个例子。在下一个示例中,用户打开了四个选项卡并启用了两个扩展(图2)。每个选项卡都有一个广告(两个来自一个来源,两个来自另一个来源)。浏览器实例有四个打开的选项卡和两个打开的扩展程序在这个例子中,如果用户打开任务管理器,他们将看到14个进程正在运行:一个用于浏览器框架的浏览器进程一个显示图形的助手GPU进程六个渲染器进程:四个选项卡页面渲染进程,每个标签页都有自己的渲染进程,运行网站提供的代码。有时来自同一域的选项卡会共享一个进程。两个广告的渲染器进程。来自同一域的广告将共享一个进程,并将运行广告提供的代码。在此示例中,来自第一个来源的两个广告将共享一个进程,而来自第二个来源的两个广告将共享一个单独的进程。这些广告使用称为子框架的东西嵌入到网页中。(稍后我们将更详细地讨论子帧。)网络服务实用进程,它有助于处理网络请求音频服务实用进程,它有助于播放音频一个运行Flash的插件进程两个扩展进程,每个扩展进程一个,run扩展提供的代码提供了一个监控MicrosoftEdge运行状况的crashpad处理程序。有些例子更复杂。您可能会看到您不可见的子框架的其他进程,或者您可能会看到项目(例如serviceworker或webworker)与选项卡或子框架共享进程。ServiceWorker和WebWorker是在后台运行的脚本,用于提高性能并允许您在没有Internet连接的情况下使用某些网站和应用程序。Chromium的多进程架构:https://www.chromium.org/developers/design-documents/multi-process-architecture多进程架构的好处每个进程都有不同的目的,影响整体的因素有很多进程数。那么MicrosoftEdge为什么要使用这种多进程架构呢?与其他现代浏览器一样,MicrosoftEdge使用此体系结构来提高浏览器如何使用资源的安全性、可靠性和问责制。MicrosoftEdge基于Chromium项目构建,并与其他Chromium浏览器共享一个通用实现。增强的安全性如果恶意软件利用一个渲染器进程中的安全漏洞,则很难逃脱该进程并影响另一个进程。渲染器进程是最有可能受到攻击的进程,因为它是与网站交互的进程。该进程的权限较低,对操作系统的访问权限极其有限,因此如果恶意软件控制了该进程,它将无法控制计算机。渲染器进程和浏览器进程之间的通信是狭窄和受保护的,使得恶意软件很难利用这一点来利用浏览器进程。此外,进程隔离可以防止一个进程访问另一个进程的内存,这也提高了浏览器的安全性。例如,假设您要在线购买衬衫,并且该网站上有一则广告。您访问的网站需要访问您的信用卡信息才能完成交易;但是,广告不需要访问此信息。广告将通过自己的流程,因此即使广告遭到破坏,它也无法轻易访问您的敏感信息。可靠性如果网页、Web应用程序、扩展程序或插件崩溃,只有崩溃过程会受到影响,从而提高浏览器的可靠性。浏览器的其余部分,包括大多数其他选项卡,将保持稳定。ResourceAccountability将每个进程隔离开来,这样可以更轻松地在任务管理器中查看哪个进程使用的资源最多,并提供有关正在使用哪些资源的信息。MicrosoftEdge使用最多的资源或网站、扩展或插件是什么?您还可以在MicrosoftEdge的内部任务管理器中看到此信息,您可以通过在MicrosoftEdge中按Shift+Esc打开它,或者转到浏览器的右上角,选择设置和更多(...)>更多工具>浏览器任务管理器。本文转载自微信公众号“前端全栈开发者”,可通过以下二维码关注。转载本文请联系前端全栈开发公众号。