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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

提示:这里可以添加本文要记录的大概内容:

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

一、进程和线程的关系

   进程和线程的关系,不需要过多描述,一个进程可以包含多个线程,一个应用也可以开多个进程(每个网页就是一个单独
的渲染进程,同时打开多个网页,其实就是开了多个进程,但是有时候,一个页面关闭了,其他页面都是正常的),说明进程之间
互不影响,就算一个进程崩溃了,也不会不会影响其他的进程。

  但是每个进程中的线程就不一样了,一个进程之间的多个线程可能互相依赖,就像流水线一样,一个崩溃,进程就完犊子了。

二、浏览器中的进程

1. 浏览器主进程
2. GUI进程
3. 网络进程
4. 渲染进程
5. 多个插件进程
在这里插入图片描述

(1)浏览器主进程

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

(2)GPU进程

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

(3)网络进程

   主要负责页面的网络资源加载

(4)渲染进程

    核心任务是将HTML、CSS和JavaScript转换为用户可以与之交互的网页,排版引擎Blink和JavaScript引擎V8都运行
在该进程中,默认情况下,Chrome为每一个Tab标签页创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下
的。此进程包括了GUI线程、javascript解析引擎、事件触发线程。

(5)多个插件进程

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

三、浏览器主进程内的线程

渲染进程是浏览器运行最核心的工作,渲染进程是多线程的,包含5个线程:
在这里插入图片描述

(1)GUI渲染线程

负责渲染浏览器界面,解析HTMLCSS,构建DOM树和RenderObject树,布局和绘制等。当界面需要重绘(Repaint)或由于
某种操作引发回流(reflow)时,该线程就会执行注意,GUI渲染线程与JS引擎线程是互斥的,当JS引擎执行时GUI线程会被
挂起(相当于被冻结了),GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。

(2)JS引擎线程(单线程)

    也称为JS内核,负责处理Javascript脚本程序。(例如常常听到的谷歌浏览器的V8引擎,新版火狐的JaegerMonkey引
擎等)JS引擎线程负责解析Javascript脚本,运行代码。JS引擎一直等待着任务队列中任务的到来,然后加以处理,一个Tab
页(renderer进程)中无论什么时候都只有一个JS线程在运行JS程序同样注意,GUI渲染线程与JS引擎线程是互斥的,所以如
果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞。

(3)事件触发线程

   归属于渲染进程而不是JS引擎,用来控制事件轮询(可以理解,JS引擎自己都忙不过来,需要浏览器另开线程协助)JS引
擎执行代码块如鼠标点击、AJAX异步请求等,会将对应任务添加到事件触发线程中。当对应的事件符合触发条件被触发时,该
线程会把事件添加到待处理任务队列的队尾,等待JS引擎的处理注意,由于JS的单线程关系,所以这些待处理队列中的事件都
得排队等待JS引擎处理(当JS引擎空闲时才会去执行)

(4)定时触发器线程

定时器 setInterval与setTimeout 所在线程浏览器定时计数器并不是由JavaScript引擎计数的,(因为JavaScript引擎
是单线程的, 如果任务队列处于阻塞线程状态就会影响记计时的准确)因此通过单独线程来计时并触发定时(计时完毕后,添
加到js引擎的事件队列中,等待JS引擎空闲后执行)

注意,W3CHTML标准中规定,规定要求setTimeout中低于4ms的时间间隔算为4ms。

(5) 异步http请求线程

    用于处理请求XMLHttpRequest,在连接后是通过浏览器新开一个线程请求。如ajax,是 浏览器新开一个http线程将
检测到状态变更(如ajax返回结果)时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入js引擎线
程的事件队列中。再由JavaScript引擎执行。

总结:

不积跬步无以至千里

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值