首页 > 系统相关 >谷歌浏览器的渲染进程

谷歌浏览器的渲染进程

时间:2024-07-26 19:08:04浏览次数:13  
标签:插件 浏览器 渲染 模型 谷歌 HTML 进程

浏览器是一个多进程多线程的,类似于操作系统的。
浏览器的进程模型决定了如何管理和分隔浏览器的各个组件,以提供更好的性能、安全性和稳定性。主要的进程模型包括单进程模型、多进程模型和混合进程模型。

1. 单进程模型
在单进程模型中,浏览器的所有组件(包括用户界面、渲染引擎、插件、网络处理等)都运行在一个进程中。
优点:
内存占用相对较少,因为所有组件共享一个进程。
进程间通信开销低。
缺点:
稳定性差,如果任何一个组件崩溃,整个浏览器都会崩溃。
安全性差,所有组件共享同一个地址空间,恶意插件或脚本更容易影响浏览器的其他部分。
性能受限,单个进程难以充分利用多核CPU的优势。
2. 多进程模型
多进程模型将浏览器的不同组件分隔到多个独立的进程中,例如:一个主浏览器进程(管理用户界面、插件、网络请求等)多个渲染进程(每个标签页或一组标签页一个渲染进程)
独立的插件进程
优点:
稳定性高,一个渲染进程崩溃不会影响其他标签页或浏览器主进程。
安全性高,进程之间的隔离使得恶意代码难以跨进程攻击。
性能更好,多个渲染进程可以并行工作,充分利用多核CPU。
缺点:
内存占用较高,每个进程有独立的内存空间和资源。
进程间通信开销较大,特别是在需要频繁通信的情况下。
3. 混合进程模型
混合进程模型结合了单进程模型和多进程模型的优点。通常是根据需求和资源情况来动态调整进程的数量和类型。浏览器会在某些情况下使用共享的渲染进程,以减少内存消耗,同时在其他情况下使用独立的渲染进程以提高稳定性和安全性。

Chrome采用了多进程模型,每个标签页、插件和扩展都运行在独立的进程中。此外,Chrome还有一个主浏览器进程来管理所有的渲染进程。
Firefox最初是单进程模型,但从Firefox 54开始,逐步引入了多进程架构(称为“Electrolysis”或“e10s”)。现在,Firefox使用一个主进程、多个渲染进程和多个插件进程。
Edge是Chrome类似的多进程模型。

Chrome 包含哪些主要的进程:

  1. 浏览器进程(Browser Process)这是主进程,负责管理和协调其他进程的工作。浏览器进程主要处理:
  • 用户界面(UI):如地址栏、书签、工具栏等。
  • 网络请求:处理所有的网络请求,并将数据传递给适当的渲染进程。
  • 文件访问:管理对本地文件系统的访问。
  • 数据存储:包括书签、历史记录、Cookie 等的管理。
  • 插件进程的管理和维护。
  1. 渲染进程(Renderer Process)渲染进程负责呈现网页内容。这是 Chrome 进程模型的核心部分,主要功能包括:
  • HTML、CSS 和 JavaScript 的解析和执行。
  • DOM 树的构建和布局计算。
  • 图像和视频的解码和渲染。
  • 每个标签页通常使用一个独立的渲染进程,确保一个标签页崩溃不会影响其他标签页。(计划改进:从一个标签页一个进程改为一个站点一个进程;)
  1. 插件进程(Plugin Process)插件进程负责处理浏览器中的所有插件。常见的插件包括 Flash、Java 等。独立的插件进程提供了额外的安全层次,如果一个插件崩溃或被攻击,不会影响浏览器的其余部分。
  2. GPU 进程(GPU Process)GPU 进程负责处理图形渲染任务。它将图形密集型的工作从渲染进程中解放出来,以提高图形渲染的性能和整体浏览体验。具体功能包括:
  • 加速 2D 和 3D 图形渲染。
  • 处理视频解码任务。
  • 支持 WebGL 和硬件加速的 CSS。
  1. 网络服务进程(Network Service Process)网络服务进程是一个专门处理所有网络相关任务的进程。它负责处理网络请求、Cookie 管理、缓存等。网络服务进程的独立化使得网络相关的任务更加高效和安全。
  2. 实用进程(Utility Process)实用进程是一个通用进程,负责处理各种辅助任务,例如 PDF 解析、数据转换等。它提供了额外的隔离和安全性,确保这些任务不会影响主要的渲染和浏览器进程。
  3. 扩展进程(Extension Process)扩展进程用于处理 Chrome 浏览器的扩展。每个扩展通常运行在一个独立的进程中,以确保扩展的崩溃或性能问题不会影响浏览器的其他部分。
  4. 沙盒(Sandboxing)虽然沙盒不是一种具体的进程,但它是 Chrome 安全模型的重要组成部分。沙盒机制通过严格的权限隔离,限制每个进程(尤其是渲染进程和插件进程)的操作范围,防止恶意代码和漏洞利用扩散到系统的其他部分。

Chrome:渲染进程如何工作

  1. 接收和解析数据
    当浏览器进程从网络获取到 HTML 文档后,它会将这些数据传递给渲染进程。渲染进程接收 HTML 数据并开始解析。

  2. 构建 DOM 树
    HTML 解析器(HTML Parser)逐行解析 HTML 标记,构建文档对象模型(DOM)树。DOM 树是 HTML 文档的树状表示,每个节点对应一个 HTML 元素。

  3. 构建 CSSOM 树
    渲染进程还会解析所有的 CSS 文件和内联样式,构建 CSS 对象模型(CSSOM)树。这棵树表示所有样式规则及其应用的方式。

  4. 合并 DOM 和 CSSOM 树为渲染树
    DOM 树和 CSSOM 树会合并成渲染树(Render Tree)。渲染树包含了需要显示在屏幕上的所有节点及其样式。不可见的节点(例如 head 或 display: none 的元素)不会在渲染树中。

  5. 布局(Layout)
    渲染树构建完成后,渲染进程会计算每个节点在屏幕上的确切位置和尺寸,这个过程称为布局(或排版,Layout)。布局从根节点开始,递归计算每个节点的大小和位置。

  6. 绘制(Painting)
    布局完成后,渲染树的每个节点会被转换成屏幕上的实际像素,这个过程称为绘制(Painting)。绘制分多个步骤完成,包括绘制文本、颜色、边框、阴影等。

  7. 合成层(Compositing Layers)
    复杂的页面可能包含多个重叠元素、动画、3D 变换等。渲染进程会将这些元素分成多个合成层(Compositing Layers),并分别绘制每个层。每个层会被绘制到一个独立的位图中。

  8. 合成和显示
    绘制完成后,合成器线程(Compositor Thread)会将所有位图合成到一起,生成最终的页面图像,并通过 IPC 将其发送给浏览器进程。浏览器进程会将这些图像显示在屏幕上。

标签:插件,浏览器,渲染,模型,谷歌,HTML,进程
From: https://www.cnblogs.com/zhaoshiing/p/18326054

相关文章

  • 世界渲染大赛含金量高吗?含金量怎么样?水平要求?
    世界渲染大赛,作为全球3D艺术与渲染领域的顶级赛事,以其高含金量和专业水平要求而闻名。这一赛事不仅吸引了世界各地的专业3D艺术家、设计师和技术爱好者的积极参与,更以其严格的评审标准和创新性的主题设置,确保了参赛作品的高质量和艺术性。每一届比赛都是对参赛者创意思维、技术能......
  • [三、渲染控制法]3. ForEach:循环渲染
    ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,ListItem组件要求ForEach的父容器组件必须为List组件。说明从APIversion9开始,该接口支持在ArkTS卡片中使用。接口描述ForEa......
  • [三、渲染控制法]2. if/else:条件渲染
    ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和elseif渲染对应状态下的UI内容。说明从APIversion9开始,该接口支持在ArkTS卡片中使用。使用规则支持if、else和elseif语句。if、elseif后跟随的条件语句可以使用状态变量。允许在容器......
  • 浏览器本地存储
    浏览器本地存储的四种方式原文链接:https://blog.csdn.net/m0_65335111/article/details/127520150浏览器的本地存储主要分为Cookie、WebStorage和IndexedDB,其中WebStorage又分为localStorage(本地存储)和sessionStorage(会话存储)浏览器的本地存储主要分为Cookie、WebStorage和I......
  • OpenAI深夜发布 SearchGPT:进军大模型搜索领域,挑战谷歌与 Perplexity!
    近期,AI领域竞争愈发激烈,不仅大模型发布频繁,还不断带来新的产品体验。刚刚,OpenAI正式发布了其大模型搜索产品SearchGPT。链接:https://chatgpt.com/searchSamAltman在X上表示:“我们认为搜索功能还有改进的空间。我们推出了一个名为SearchGPT的新原型产品。我......
  • PixiJS源码分析系列:第三章 使用 canvas 作为渲染器
    使用canvasRenderer渲染上一章分析了一下Sprite在默认webgl渲染器上的渲染,这章让我们把目光聚集到canvasRenderer上使用canvas渲染器渲染图片的demo要使用canvas作为渲染器,我们需要引用pixi-legacy.js/bundles/pixi.js-legacy/dist/pixi-legacy.js像下面这样......
  • 实时云渲染的技术原理是什么?哪个实时云渲染系统更好?
    实时云渲染的技术原理:实时云渲染是一种基于服务器GPU云计算资源来实现云端实时渲染终端轻量化交互的技术,通常被应用到需要高性能算力进行图形渲染的场景中,比如数字孪生、虚拟仿真、三维可视化、云游戏等行业。实时云渲染技术的应用流程是通过实时云渲染平台,将大型应用及3D内容......
  • 谷歌语法
    1、基本搜索逻辑与:and逻辑或:or逻辑非:-完整匹配:"关键词"通配符:*?通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。......
  • 低版本安卓home assistant网页浏览器
    试了很久一直有问题的一点,使用普通浏览器加载不出来登录界面只能加载出icon然后就没反应了考虑到了webview的问题但是没想到安卓5.0之前是固定且不可升级的webview从Android5.0开始,系统WebView才可以更新。对于低于Android5.0的版本,应用程序可以包括自己的WebVi......
  • 使用 Tor + Privoxy 抓取谷歌购物结果:如何避免被阻止?
    我已经在我的服务器上安装了Tor+Privoxy并且它们工作正常!(已测试)。但现在当我尝试使用urllib2(python)抓取谷歌购物结果时,当然使用代理,我总是被谷歌阻止(有时是503错误,有时是403错误)。那么任何人有任何解决方案可以帮助我避免这个问题吗?非常感谢!!......