【浏览器】浏览器进程简解

深入理解浏览器多进程架构 进程之间是不共享资源和地址空间的,所以不会存在太多的安全问题,而由于多个线程共享着相同的地址空间和资源,所以会存在线程之间有可能会恶意修改或者获取非授权数据等复杂的安全问题。 阅读详情

如何查看我们的浏览器进程呢?

以我们常用的谷歌浏览器为列,我们可以点击右上角的选项菜单,按照如下图所示操作

image

image

通过上图我们知道浏览器打开了很多进程,包括我们打开的页面,还有一些其他进程(插件、GPU、Nework等),可能你现在想玩什么会打开这么多进程,别着急,看完下面你就知道啦,但首先我们要先了解下进程的概念。

进程和线程

什么是并行处理?

在了解上面进程和线程之前,我们可以先了解下什么是并行处理,在了解并行处理后,进程和线程的关系就更加好理解了。

并行处理(Parallel Processing)是计算机系统中能同时执行两个或多个处理的一种计算方法。并行处理可同时工作于同一程序的不同方面。

举个例子,比如我们要同时下面三个表达式的值,并显示出结果。

A = 1 + 1
B = 10/2
C = 5*3

在编写代码的时候,我们可以把这个过程拆分成四个任务:

  • 任务 1 是计算 A = 1 + 1
  • 任务 2 是计算 B = 10/2
  • 任务 3 是计算 C = 5*3
  • 任务 4 是显示上面最后计算的结果。

如果用单线程处理就是按照顺序四步执行;但是如果采用多线程,那么就只需要两步:第一步,三个线程同时执行前三个计算任务;第二步,显示最后的结果。

单线程四步,多线程(并行处理)只需要两步。因此,使用并行处理能够大幅度提升性能。

什么是进程和线程?

多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来启动和管理的。

一个进程就是一个程序的运行实例。

详细来说就是启动一个程序时,操作系统会为该程序创建一块内存,这块内存用来存放代码、运行数据和一个执行任务的主线程,上面的这样一个运行环境统叫进程。

可以按照下图来理解:

image

上图可知,线程是依附于进程的,而进程中可以使用多线程并行处理来提升运算效率和性能。

总结来说:进程如同一个工厂,它有它独特的资源(系统分配的内存资源)。而线程则就相当于是这个工厂(进程)中的工人,工人(线程)需要在工厂(进程)中工作,并且工人(线程)们共享一个工厂(进程)中的资源(内存资源)。

进程是 CPU 资源分配的最小单位;线程是 CPU 资源调度的最小单位

进程和线程关系

1.进程中的任意一线程执行出错,都会导致整个进程的崩溃。

这个很好理解,工人操作错误,工厂肯定会“崩溃”(笑)。

2.线程之间共享进程中的数据。

如下图所示,线程之间可以对进程的公共数据进行读写操作。

image

线程 1、2、3 分别把结果写入 A、B、C 中,然后线程 2 继续从 A、B、C 中读取数据,从而显示结果。

3.当一个进程关闭之后,操作系统会回收进程所占用的内存。

当一个进程退出时,操作系统会回收该进程所申请的所有资源;即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。

4.进程之间的内容相互隔离。

进程互不干扰,每个进程只能访问自己所占有的资源,这样做的目的是防止某一进程崩溃影响其他进程。但也不是完全隔离,进程之间在特定情况下还是可以进行通信(IPC 机制)

IPC(Inter-Process Communication,进程间通信)。进程间通信是指两个进程的数据之间产生交互。

单进程浏览器

单进程浏览器是指浏览器所有功能模块(网络、插件、JavaScript 运行环境、渲染引擎和页面等)都是运行在同一个进程里。谷歌浏览器发布前浏览器多是单进程的。单进程浏览器架构如下图所示:

image

如图所示,这么多功能模块全部放在一个进程里,肯定会导致很多问题。不稳定、不流程和不安全。

  1. 不稳定:插件和渲染引擎会导致整个进程崩溃。

  2. 不流畅:JavaScript 执行环境一旦出现大量计算或者循环就会导致整个进程运行变慢或卡顿。同时内存泄漏也是一大原因。

  3. 不安全:第三方插件可以编写相关调用操作系统底层的恶意代码来获取系统信息;页面脚本可以通过浏览器漏洞获取系统权限造成安全问题。

多进程浏览器

多进程浏览器泛指谷歌浏览器等现代浏览器。

早期多进程架构

下图是 2008 年谷歌发布时的进程架构:

image

从图中我们可以知道,页面、插件都是运行在单独的进程中,进程间的通信通过 IPC 机制进行通信。

1.如何解决不稳定的问题?

由于进程是相互隔离的,所以当一个页面或者插件崩溃时,影响到的仅仅是当前的页面进程或者插件进程,并不会影响到浏览器和其他页面,这就完美地解决了页面或者插件的崩溃会导致整个浏览器崩溃的问题。

2.不流畅的问题是如何解决的?

JavaScript 也是运行在渲染进程中的,所以即使 JavaScript 阻塞了渲染进程,影响到的也只是当前的渲染页面,而并不会影响浏览器和其他页面,因为其他页面的脚本是运行在它们自己的渲染进程中的。所以当我们再在浏览器中运行死循环的代码时,没有响应的仅仅是当前的页面。

3.安全问题是怎么解决的?

采用多进程架构的额外好处是可以使用安全沙箱,你可以把沙箱看成是操作系统给进程上了一把锁,沙箱里面的程序可以运行,但是不能在你的硬盘上写入任何数据,也不能在敏感位置读取任何数据。把插件和渲染进程锁在沙箱里面,即时里面执行了恶意代码,也无法土坯沙箱去获取系统权限。

目前多进程架构

image

按照上图可知最新的谷歌浏览器包括了 5 个进程:

1.浏览器进程

主要负责界面显示、用户交互(如导航栏的前进和后退等);子进程管理(负责各个页面的管理,创建和销毁等其他进程);同时提供存储和处理浏览器底层不可见的操作(如网络请求和文件管理等)等功能。

2.渲染进程

核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页。

3.GPU 进程

主要用于3D CSS的渲染。

4.插件进程

主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

所有,打开一个页面至少要有 4 个进程(网络进程、浏览器进程、GPU 进程、渲染进程),如果还有插件,还得加上一个插件进程,回到最开始的截图,可以明白为什么有那么多进程了吧。

多进程模型的缺点

1.更高的资源占用

因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。

2.更复杂的体系架构

浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了。

未来面向服务的架构

为了解决这些问题,在 2016 年,Chrome 官方团队使用“面向服务的架构”(Services Oriented Architecture,简称SOA)的思想设计了新的 Chrome 架构。也就是说 Chrome 整体架构会朝向现代操作系统所采用的“面向服务的架构” 方向发展,原来的各种模块会被重构成独立的服务(Service),每个服务(Service)都可以在独立的进程中运行,访问服务(Service)必须使用定义好的接口,通过 IPC 来通信,从而构建一个更内聚、松耦合、易于维护和扩展的系统,更好实现 Chrome 简单、稳定、高速、安全的目标。

Chrome 最终要把 UI、数据库、文件、设备、网络等模块重构为基础服务,类似操作系统底层服务,下面是 Chrome “面向服务的架构”的进程模型图:

image

总结

最初的浏览器是单线程的(不稳定、不流畅、不安全),直到谷歌浏览器的出现,创造性的引入了多进程架构,解决了上面的问题(谷歌浏览器,YYDS!)。

目为了应用更多业务场景,Chrome 浏览器架构体系变得越来越复杂。从三个进程(插件、渲染、浏览器主进程)变到五个进程(插件、渲染、网络、浏览器主进程、GPU),业务的发展倒逼 Chrome 的发展,未来的发展则是“面向服务的架构”(Services Oriented Architecture,简称SOA)的思想架构(渲染、插件、浏览器主进程、Chrome 基础服务),但距离我们还远,目前掌握最新的五进程就行。

参考文章

浏览器工作原理与实践

chrome浏览器进程分析 在chrome浏览器 最右侧的设置->更多工具->任务管理器 查看chrome当前进程数。 课程中大概介绍了单进程浏览器、早期多进程架构、当前多进程架构和未来面向服务的架构。本篇主要分析下当前的多进程浏览器架构,如下图所示: 从图中可以看出,最新的 Chrome 浏览器包括:1个浏览器(Browser)主进程、1个 GPU 进程、1个网络(NetWork)进程、多个渲染进程和多个插件进程。 浏览器进程。主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。 渲染进程... 阅读详情

相关推荐

【浏览器】进程与线程

例如信号量的初始值是 1,然后 a 进程来访问内存1的时候,我们就把信号量的值设为 0,然后进程b 也要来访问内存1的时候,看到信号量的值为 0 就知道已经有进程在访问内存1了,这个时候进程 b 就会访问不了内存1。正是因为进程之间的数据是严格隔离的,所以一个进程如果崩溃了,或者挂起了,是不会影响到其他进程的。如果程序很多时,内存可能会不够,操作系统为每个进程提供一套独立的虚拟地址空间,从而使得同一块物理内存在不同的进程中可以对应到不同或相同的虚拟地址,变相的增加了程序可以使用的内存。

Supposelll的博客 1104

浏览器的进程和线程

浏览器的工作原理 1、浏览器的进程与线程 1.1、并行处理 并行处理就是同一时刻处理多个任务 1.2、进程与线程 从本质上说,进程和线程都是 CPU 工作时间片的一个描述: 进程描述了 CPU 在运行指令及加载和保存上下文所需的时间,放在应用上来说就代 表了一个程序。 线程是进程中的更小单位,描述了执行一段指令所需的时间。 一个进程就是一个程序的运行实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。

weixin_43910086的博客 2602

深入理解浏览器进程架构:前端必须掌握的底层知识

本文深入探讨了现代浏览器的多进程架构,解释了浏览器如何通过多进程协作完成页面渲染、脚本执行和网络请求等核心任务。文章首先介绍了理解浏览器进程的重要性,并列举了开发中常见的问题,如页面卡顿、资源隔离等。随后,文章详细描述了浏览器架构从单进程到多进程的演进,重点介绍了Chrome的多进程架构及其核心进程(如Browser进程、Renderer进程、GPU进程等)的职责。此外,文章还探讨了多进程与多线程的协作流程、沙箱机制与安全隔离,以及开发者如何通过理解这些机制进行性能优化和错误调试。最后,文章总结了各进程的职

weixin_67925256的博客 1354

现代浏览器四大进程及渲染线程总结

现代浏览器通常使用多进程架构,其中包括以下四种常见的进程:浏览器进程(Browser Process):浏览器的主进程(负责协调、主控),只有一个该进程是浏览器的核心进程,它控制浏览器的主窗口和各个子进程的创建和销毁。同时,它负责管理用户界面、存储缓存和历史记录等功能。是运行浏览器的主进程。负责管理所有其他进程,并协调他们之间的交互和通信。浏览器窗口和标签页的创建和关闭也由此进程执行。渲染进程(Renderer Process)

suwu150 2630

浏览器的进程

主要负责界面显示、用户交互(如导航栏的前进和后退等);子进程管理(负责各个页面的管理,创建和销毁等其他进程);同时提供存储和处理浏览器底层不可见的操作(如网络请求和文件管理等)等功能。所有,打开一个页面至少要有 4 个进程(网络进程、浏览器进程、GPU 进程、渲染进程),如果还有插件,还得加上一个插件进程,回到最开始的截图,可以明白为什么有那么多进程了吧。主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。主要用于3D CSS的渲染。

秋秋小事 1002

告别Quartus II的漫长等待:用VSCode+iverilog+GTKWave搭建你的轻量级Verilog仿真环境(2024保姆级教程)

本文详细介绍了如何利用VSCode、iverilog和GTKWave构建高效的Verilog/SystemVerilog开发环境,替代传统的Quartus II和ModelSim工具。通过2024年最新的保姆级教程,帮助开发者实现秒级启动、低资源消耗的轻量级仿真环境,显著提升数字电路设计的开发效率和调试体验。

weixin_33690963的博客 561

浏览器进程和线程

进程:当我们启动某个程序时,操作系统会给该程序创建一块内存(当程序关闭时,该内存空间就会被回收),用来存放代码、运行中的数据和一个执行任务的主线程,这样的一个运行环境就叫进程 线程:而线程是依附于进程的,在进程中使用多线程并行处理能提升运算效率,进程将任务分成很多细小的任务,再创建多个线程,在里面并行分别执行 进程和线程的关系 进程与进程之间完全隔离,互不干扰,一个进程崩溃不会影响其他进程,避免一个进程出错影响整个程序 进程与进程之间需要传递某些数据的话,就需要通过进程通信管道IPC来传递 一个进程中可以

weixin_43294560的博客 1064

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理 在物流行业种,托盘是标准化运输的关键的配件,而容器存在丢失、盘点、闲置等管理问题。如何通过信息化的手段提升容器的寿命,提高调配效率,降低闲置是物流容器行业的关键点。 金桔蓝牙网关配合金桔蓝牙资产管理终端可以解决物流行业痛点问题。 容器管理面临的问题: 技术方案 场景描述之库房 场景描述之车辆 场景描述之终端 方案优势 ...

jinjufocus的博客 1183

浏览器基本原理之进程和线程

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。不积跬步无以至千里。

十一 435

离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到Windows 服务器,但在运行labelimg等工具时可能报错,因此用conda-pack来解决。

weixin_44115575的博客 1428

网安保研避坑指南:中科院信工所各研究室真实体验与导师选择建议

本文为中科院信工所网络安全保研生提供深度指南,详细解析了信工所六个研究室的研究方向、真实氛围与导师选择策略。文章特别强调,选择导师是决定研究生体验的关键,并提供了针对各研究室的避坑建议与实战调研方法,帮助学生做出明智选择。

weixin_29210727的博客 1592

深入浏览器之浏览器中的进程与线程

深入浏览器之浏览器中的进程与线程

weixin_52140964的博客 2464

Blender入门教程-3D视图界面介绍

3D视图用于与3D场景交互,可用于各种目的,例如建模、动画、纹理绘制等。在关闭 启动画面 后,启动场景会显示在3D视口中(如果没有加载其他blend文件)。01 标题栏标题栏包含了基于当前 模式 的各种菜单和控制。

weixin_52345129的博客 2291

浏览器常见进程和线程

浏览器常见进程和线程

程序媛的梦工厂 1226

Setup&Hold互卡问题和Useful Skew的影响

setup和hold互卡问题分析

godping的博客 5097

ROS2_Moveit2_Ur5e_Grasp项目详解(二):核心模块功能解析

本文深入解析了ROS2_Moveit2_Ur5e_Grasp项目的核心模块功能。重点阐述了OctoMap建图模块如何为机械臂提供实时三维环境感知,并详细介绍了Robotiq夹爪与MoveIt2的集成控制、UR5e的运动规划策略,以及视觉模块如何协同工作,最终实现从目标检测到动态抓取的完整闭环。

weixin_29254029的博客 113

Chrome浏览器初始启动时的六个进程

但打开的每个网页并不一定会创建一个renderer进程,在资源较少的情况下,浏览器有时候会优化,可以配置域相同的网页共享一个进程,甚至只有一个renderer进程,如多个空白页合并成一个进程。Renderer进程是运行在Sandbox中的,该进程没有访问系统资源的权限,所有对资源的访问需求都通过IPC委托给其他功能进程,如网络进程,GPU进程。第一种情况,打开两个Tab,有两个进程;不过,当不停的打开新的标签页,会合并为一个渲染进程,但是当你在新标签页搜索或者查询之后,也会将该页面独立出来一个渲染进程。

q1003675852的博客 4254

【即插即用模块】卷积篇 | CVPR 2025 | LSConv:大核捕全局,小核提速度,替换 3×3 卷积/自注意力,精度效率双飙升

文章摘要: LSConv是一种新型卷积模块,采用"大核感知+小核聚合"策略,在轻量级视觉任务中表现出色。该模块由两部分组成:7×7深度可分离卷积(LKP)捕捉全局信息,动态3×3卷积(SKA)实现高效特征聚合。相比传统卷积和自注意力机制,LSConv在降低计算量的同时提升了精度,尤其适合高分辨率视觉任务。实验表明,在轻量化模型中用LSConv替代3×3卷积或自注意力,可显著减少计算量并提高准确率。模块支持即插即用,提供Triton优化实现,可直接集成到现有卷积或Transformer架构

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1123

四、浏览器进程与线程

现代浏览器为了提高性能和安全性,采用了多进程和多线程的架构。进程和线程是操作系统的基本概念,浏览器利用这些概念来管理和优化资源的使用。本文将简要介绍浏览器的进程和线程模型,以及它们在浏览器中的具体应用。

weixin_45511682的博客 2169

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

浏览器渲染进程

浏览器渲染进程(前端重点) 1)也称为浏览器内核,Render进程(内部是多线程的),默认的每个Tab页面一个进程,互不影响。 2)浏览器是多进程的,每打开一个Tab页就相当于创建了一个渲染进程,每个渲染进程又是多线程的。 其中,以下都是在渲染进程中进行的 页面的渲染 脚本执行 任务队列轮询 渲染进程中主要的常驻线程: 1.GUI渲染线程 负责渲染浏览器界面,解析HTML、CSS,构建DOM树和RenderObject树,布局和绘制等。 当页面需要重绘(Repaint)或由于某种操作引发回流(ref

Amelian的博客 873

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

浏览器的多进程

区分浏览器多进程和js单线程进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共...

sh435367384的博客 2626

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

浏览器进程

浏览器都包含哪些进程? 浏览器是多进程 1、Browser进程:浏览器的主进程(负责协调、主控),只有一个。作用有: 负责浏览器界面显示,与用户交互。如前进,后退等 负责各个页面的管理,创建和销毁其他进程 将Renderer进程得到内存中的Bitmap,绘制到用户界面上 网络资源的管理,下载等 2、第三方插件进程:每种类型的插件对应一...

abcde1872531的博客 936

浏览器一个Tab对应一个渲染进程?浏览器渲染进程个数究竟与什么有关系(多进程浏览器Chrome为例)

- 父页面的打开的子页面在没有跨域访问的情况下,是会共用父页面的渲染进程的。(more tab one process) - 页面中采用iframe框架引入其他页面,则iframe会独立成辅助框架,有自己的渲染进程。(one tab more process) - 共用渲染进程的数个页面,当顶级的父页面关闭了或者跨域了,则会禅让该渲染进程。 - 新建的标签页也会合并为一个渲染进程,仅限不进行搜索查询的时候,这是谷歌刘浏览器的内存优化策略。

我本可以 2356

从浏览器角度讲进程和线程

查资料的过程中发现以谷歌浏览器为例,先后出现了网络进程和网络线程这两种说法,乍一看觉得不对,既然网络进程已经被独立出来,为什么别的进程(例如主进程)还要分出来一个网络线程呢?共享资源不同:多个进程间不能共享资源,每个进程有自己的堆、栈、虚存空间(页表)、文件描述符等信息,而线程可以共享进程资源文件(堆和方法区)。从属关系不同:进程是正在运行程序的实例,进程中包含了线程,而线程中不能包含进程。

qq_41539461的博客 1167
上一篇: 【CSS】flex 布局 justify-content:space-between;解决最后一排数量不够自动向两端排列问题...
下一篇: 【前端可视化】Echarts 实现环形饼图外层带阴影效果配置
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值