浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程

之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程,接下里我将对某些知识点进行更细致的解析。

浏览器从输入URL到页面渲染过程 系列文章:

(二):浏览器从输入URL到页面渲染过程 ——页面渲染流程

——————————————————————————————————————————————————————————

浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程

我们在使用浏览器的过程中,经常会为了方便,同时打开好几个tab页面,那么这时候 浏览器是如何处理这些页面的呢?(本文以chrome浏览器为例说明)

  • 打开一个页面出现五个进程

当我在浏览器打开csdn写文章的tab页,然后通过的 菜单栏->更多工具->任务管理器 可以看到,浏览器为我们开辟了五个进程。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
我们仅仅是打开一个标签页面,为什么会出现五个进程呢?

进程/线程:一个进程就是一个程序的运行实例——启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。一个进程可以拥有多个线程,但一个线程只对应一个进程。

我们通过一个例子进行说明:计算 num =(1+2)+(2-3)+(1+3)的值。

首先我们开辟一个进程,用于计算表达式 num =(1+2)+(2-3)+(1+3)的值,具体让谁来计算呢,当然是进程的小弟(线程)了。进程可以选择只分配一个小弟(线程)来做这件事情,这个小弟拿到这个任务后,它先计算出 1+2 的值,再计算出 2-3 的值,再计算出1+3的值,最后将这三个值讲起来,获得最终结果。但是进程发现,如果其中一个步骤出错了,程序就不会往下进行了,且前面三个步骤没有必然的联系,完全可以派三个小弟(线程)同时来做这件三件事情,最后其中一个小弟负责收尾工作,效率提升的可不止亿点点。

在这里插入图片描述
当我们打开一个标签页时,首先我们需要进行分配资源进行网络请求,获取数据,然后对数据进行处理,最后进行页面渲染工作。因此,我们分别来解读一下任务管理器中的五个进程:

浏览器进程: 主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。

GPU 进程: 其实,Chrome 刚开始发布的时候是没有 GPU 进程的。而 GPU 的使用初衷是为了实现 3D CSS 的效果,只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。

网络进程: 主要负责页面的网络资源加载。

渲染进程: 核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。

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

这么做有什么好处呢?

最原始浏览器是以单进程为主体思想运行的,当我们打开一个tab页时,相当于所有的操作只有一个人在做,只有他忙完了所有事情,我们才能看到最终结果,弊端也很明显了:

1、不稳定性:很多播放器或者动画需要借助插件得以完成,如果其中一个插件执行错误了,或者我们的渲染引擎出错,那整个进程就崩溃掉了。
2、不流畅性:所有页面的渲染模块、JavaScript 执行环境以及插件都是运行在同一个线程中的,这就意味着同一时刻只能有一个模块可以执行,如果我们的代码出现了死循环,拿它就会独占运行内存,导致浏览器长时间得不到响应。
3、不安全性:不管是插件还是脚本,他们一旦开始执行,就会获得我们电脑的操作权,那我们的个人信息安全就没有保证可言了。

所以,发展到现在,我们的浏览器进入了多进程多线程时代:

1、解决不稳定性:由于进程是相互隔离的,所以当一个页面或者插件崩溃时,影响到的仅仅是当前的页面进程或者插件进程,并不会影响到浏览器和其他页面,这就完美地解决了页面或者插件的崩溃会导致整个浏览器崩溃,也就是不稳定的问题。
2、解决不流畅性:JavaScript 也是运行在渲染进程中的,所以即使 JavaScript 阻塞了渲染进程,影响到的也只是当前的渲染页面,而并不会影响浏览器和其他页面,因为其他页面的脚本是运行在它们自己的渲染进程中的。所以当我们再在 Chrome 中运行上面那个死循环的脚本时,没有响应的仅仅是当前的页面。
3、解决不安全性:采用多进程架构的额外好处是可以使用安全沙箱,你可以把沙箱看成是操作系统给进程上了一把锁,沙箱里面的程序可以运行,但是不能在你的硬盘上写入任何数据,也不能在敏感位置读取任何数据,例如你的文档和桌面。Chrome 把插件进程和渲染进程锁在沙箱里面,这样即使在渲染进程或者插件进程里面执行了恶意程序,恶意程序也无法突破沙箱去获取系统权限。

值得注意的一点就是:虽然一个进程里可以包含多个线程,但是,这要一个线程崩溃了,这个进程就会被卡死了,就和promise.all一样。但有时我们也会遇到,一个tab页卡死了,整个浏览器都卡住了。那是不是多进程就没有起到作用呢?其实不是的——通常情况下是一个页面使用一个进程,但是,有一种情况,叫"同一站点"(根域名 + 协议),比如:
https://blog.csdn.net
https://www.csdn.net:8888
都是属于同一站点,因为它们的协议都是https,而根域名也都是csdn.net。Chrome的默认策略是,每个标签对应一个渲染进程。但是如果从一个页面打开了新页面,而新页面和当前页面属于同一站点时,那么新页面会复用父页面的渲染进程。如果几个页面符合同一站点,那么他们将被分配到一个渲染进程里面去。所以,这种情况下,一个页面崩溃了,会导致同一站点的页面同时崩溃,因为他们使用了同一个渲染进程。

为什么要让他们跑在一个进程里面呢?

因为在一个渲染进程里面,他们就会共享JS的执行环境,也就是说A页面可以直接在B页面中执行脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB 的可视化管理工具~连接腾讯云MongoDB服务

不论是mysql或者redis或者es,我们都会使用远程的客户端工具来连接数据库server,那么目前的linux上锁安装的MongoDB就是server端,我们需要有一个客户端来进行可视化的管理,常用的可以使用Navcat来操作,当然使用其他的GU…

云原生时代业务架构的变革:从单体迈向Serverless

如今,各行各业都在谈数字化转型,尤其是新零售、传媒、交通等行业。数字化的商业形态已经成为主流,逐渐替代了传统的商业形态。在另外一些行业里(如工业制造),虽然企业的商业形态并非以数字化的形式表现&…

冯诺依曼架构的 IO 鸿沟,谁能来填补?

作者 | 宋慧头图 | 下载于视觉中国随着AI技术、数据分析等领域兴起,数据变得越来越重要了,数据处理往往需要用到大量的内存,数据量爆发式增长让各种内存密集型应用层出不穷,如Redis数据库、SAP HANA企业核心系统。在CSDN 2019、20…

使用Git后10件你可能需要“反悔”的事

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Git是目前世界上最优秀最流行的分布式版本控制系统,也是程序员们日常使用最频繁的工具之一(几乎每天都…

SpringBoot 整合MongoDB

文章目录1. 引入依赖2. 在yml中添加配置3. 在启动类中开启mongodb在model中添加依赖&#xff0c;为什么在model中添加&#xff1f;因为会有映射的实体类MongoObject对应mongodb中的数据表对象&#xff1a;1. 引入依赖 <dependency><groupId>org.springframework.b…

浏览器从输入URL到页面渲染过程 ——页面渲染流程

之前我有总结过一篇经典面试题&#xff1a;浏览器从输入URL到页面渲染过程 &#xff0c;接下里我将对某些知识点进行更细致的解析。 浏览器从输入URL到页面渲染过程 系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;浏览器从输入URL到页面渲染过程 —— 浏览器的…

阿里发布2020农产品电商报告数字农业将成风口

完美日记创立于2017年&#xff0c;这家公司上线不到两年即成为天猫彩妆销冠&#xff0c;2019年成为11年来第一个登上天猫双十一彩妆榜首的国货品牌&#xff0c;包揽天猫2019全年彩妆销冠&#xff1b;2020年4月成为首个亮相天猫超级品牌日的国货彩妆品牌&#xff0c;同时勇破彩妆…

【干货】和你谈谈数据分析报告

前言&#xff1a; -更多关于数智化转型、数据中台内容请加入阿里云数据中台交流群—数智俱乐部 &#xff08;文末扫描二维码或点此加入&#xff09; -阿里云数据中台官网 https://dp.alibaba.com/index &#xff08;作者&#xff1a;数智从业者&#xff09; 在当今企业纷纷推动…

Vue3 安装axios使用报错:Uncaught TypeError: Cannot read property ‘use‘ of undefined

最近在学习Vue3&#xff0c;使用vue cli4搭建了一个demo项目&#xff0c;安装axios后&#xff0c;控制台报错&#xff1a; Uncaught TypeError: Cannot read property use of undefinedat eval (axios.js?be3b:59)at Module../src/plugins/axios.js (app.js:1229)at __webpac…

云原生五大趋势预测,K8s安卓化位列其一

作者 | 李响、张磊 Kubernetes 本身并不直接产生商业价值&#xff0c;你不会花钱去购买 Kubernetes 。这就跟安卓一样&#xff0c;你不会直接掏钱去买一个安卓系统。Kubernetes 真正产生价值的地方也在于它的上层应用生态。 “未来的软件一定是生长于云上的”&#xff0c;这是…

centos7 linux 安装 keeplived

文章目录一、简介部署总览1. 简介2. 部署总览二、安装实战2.1. 安装环境2.2. 下载软件包2.3. 同步软件包2.4. 解压、编译、安装三、系统服务3.1. 配置复制3.2. 脚本复制3.3. 服务开机启动四、配置修改4.1. 编辑配置4.2. 140 服务器配置4.3. 141 服务器配置4.4. 启动keepalived4…

阿里人脸识别安全技术获专利可防范3D人脸面具攻击

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 当人脸识别遇上3D技术&#xff0c;谁将是最后的胜利者?长期困扰人脸识别行业的安全问题有了最新的解法。日前&#xff0c;阿…

vue3中 使用 swiper 插件,自定义切换按钮, 将 前进后退 、左右切换 按钮放到容器外部

今天在使用 swiper 时&#xff0c;遇到一个 坑爹的 问题。 swiper 组件的本来样式长这样&#xff1a; 左右切换的按钮在滑动容器内部&#xff0c;但是我们想要它跑到容器外面去。 网上找了一堆方法都不好使 也不知道是不是因为 我使用的是 高版本原因 最终实验结果&#x…

一眼看尽5G江湖,Gartner发布5G网络基础设施魔力象限报告

作者 | 白告天来源 | 边缘计算社区头图 | 下载于视觉中国近日&#xff0c;国际权威分析机构Gartner发布了首份《通信运营商5G网络基础设施魔力象限》报告。以最直观的方式展示了这一领域内各家头部企业的力量对比情况。Gartner通信运营商5G网络基础设施魔力象限该魔力象限帮助通…

一篇小文带你走进RabbitMQ的世界

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 说到消息中间件&#xff0c;大部分人的第一印象可能是Kafka。毕竟Kafka自问世以来&#xff0c;就顶着高并发&#xff0c;大流…

nginx高可用方案:keepalived+nginx vip 动态位移

文章目录一、部署总览常用命令1. 部署总览2. 常用命令二、软件安装配置2.1. 安装keepalived2.2. 安装nginx2.3. 配置静态文件三、测试3.1. 启动nginx3.2. 验证四、vip动态位移测试4.1. 140验证4.2. 141验证4.3. 140停止kp服务4.4. 141 验证4.5. 140 重新启动kp服务一、部署总览…

多角度分析平台即服务?PaaS的类型和用例

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 没有适合所有人的单一PaaS。即使云计算已经发展了10多年&#xff0c;但对云计算服务模型的定义仍然相当模糊。通常&#xff0…

未来,边缘计算的功能支柱是 Kubernetes

来源 | SDNLAB责编 | 寇雪芹头图 | 下载于视觉中国编者按在数字化转型时代&#xff0c;5G网络是一个飞跃。5G正在推动边缘计算的发展&#xff0c;而Kubernetes则是5G与边缘计算之间的粘合剂。云计算的十年云计算之于信息技术(IT)产业&#xff0c;就像石油之于汽车工业一样。云让…

如何在工作中快速成长?致工程师的10个技巧

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 作者 | 江建明 阿里巴巴高级无线开发专家 导读&#xff1a;精英人数的增长速度持续加快后&#xff0c;很多人开始焦虑&#…