视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
浏览器缓存机制的深入解析(图文) 浏览器事件循环的深入了解(代码示例) 浏览器与NodeJS的EventLoop异同以及部分机制 浏览器互相跳转并传递参数(附代码) 新手必看的js实现异步方法 新手入门如何学习vue 新手必看的Ajax技术组成与核心原理分析 新手必学的Ajax总结 新手如何通过Vue.js+Node.js打造个人博客 浏览器的多线程机制详解 浏览器访问路径不提示下载而显示新页面应该如何解决 浏览器html代码快速预览小工具 浏览器文件分段断点上传 新手学习vue详解 浏览器不兼容我写的代码怎么办 浏览器变动时进行自适应代码分享 浏览器调试动态js脚本的方法图解教程 浏览器记住密码后input黄色背景处理方法 华硕笔记本怎么开启uefi引导 美的冰箱冷藏室为什么会结冰 浏览器输入url到发起http请求的具体过程介绍 浏览器与Node的事件循环(EventLoop)之间的区别总结 浏览器解析渲染HTML文档的过程详解(图文) 浏览器缓存策略的详细介绍(图文) 脚本是什么 alert是什么意思 新手学习PHP的一些基础知识分享 新手配置 PHP 调试环境(IIS+PHP+MYSQL) 浏览器兼容解决FF/IE6/IE7背景专用CSSHACK_经验交流 史上最强大的40多个纯CSS绘制的图形 浏览器Firefox与IE在CSS样式表中的差异 浏览器默认样式及css初始化 新手必看的css命名规则 浏览器CSSHack收集 浏览器实现移动端高性能css3动画 沙盘Sandboxie 史上最全前端面试题(含答案)-1565783227 浏览器兼容性常见-地球小子 浏览器内部工作原理-jerrylsxu 虎扯:纯css3各方向小三角的制作原理分析-小老虎的牙
浏览器的进程与线程的介绍
2020-11-27 19:29:01 责编:小采
文档

本篇文章给大家带来的内容是关于浏览器的进程与线程的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

进程

进程是cpu的资源分配的最小单位。

多进程:多进程指的是在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态。多进程带来的好处是明显的,比如你可以听歌的同时,打开编辑器敲代码,编辑器和听歌软件的进程之间丝毫不会相互干扰。

浏览器是多进程的,浏览器的进程主要包括以下几种:

  1. Browser进程:浏览器的主进程(负责协调,主控)

  2. 第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建

  3. GPU进程:最多一个,用于3D绘制

  4. 浏览器渲染进程(内核):默认每个Tab页面一个进程,互不影响,控制页面渲染,脚本执行,事件处理等(有时候会优化,如多个空白tab会合并成一个进程)

在浏览网页时,同时打开几个新的页面, 这就要打开几个浏览窗口,但一旦开启十几个窗口,整个计算机就会越来越慢。

多进程浏览器的优点

避免页面渲染影响整个浏览器

避免第三方插件影响整个浏览器

多进程充分利用多核优势

方便使用沙盒模型隔离插件等进程,提高浏览器稳定性

通俗的讲,就是用户打开多个窗口,如果其中一个窗口崩掉了,也不会影响整个浏览器,其他的界面照样正常运行

线程

  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号)。

  • 浏览器的渲染进程(浏览器内核),是多线程的,主要以下几大类:

    1. GUI线程

    2. Javascript引擎线程

    3. 事件触发线程

    4. 定时器线程

    5. 网络请求线程

    GUI线程

    负责渲染浏览器界面HTML元素,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。在Javascript引擎运行脚本期间,GUI渲染线程都是处于挂起状态的,也就是说被”冻结”了.

    Javascript引擎线程

    也可以称为JS内核,主要负责处理Javascript脚本程序,例如V8引擎。Javascript引擎线程理所当然是负责解析Javascript脚本,运行代码。

    Javascript是单线程的

    这是因为Javascript这门脚本语言诞生的使命所致:JavaScript为处理页面中用户的交互,以及操作DOM树、CSS样式树来给用户呈现一份动态而丰富的交互体验和服务器逻辑的交互处理。如果JavaScript是多线程的方式来操作这些UI DOM,则可能出现UI操作的冲突; 如果Javascript是多线程的话,在多线程的交互下,处于UI中的DOM节点就可能成为一个临界资源,假设存在两个线程同时操作一个DOM,一个负责修改一个负责删除,那么这个时候就需要浏览器来裁决如何生效哪个线程的执行结果。当然我们可以通过锁来解决上面的问题。但为了避免因为引入了锁而带来更大的复杂性,Javascript在最初就选择了单线程执行。

    GUI 渲染线程 与 JavaScript引擎线程互斥!

    由于JavaScript是可操纵DOM的,如果在修改这些元素属性同时渲染界面(即JavaScript线程和UI线程同时运行),那么渲染线程前后获得的元素数据就可能不一致了。因此为了防止渲染出现不可预期的结果,浏览器设置GUI渲染线程与JavaScript引擎为互斥的关系,当JavaScript引擎执行时GUI线程会被挂起,GUI更新会被保存在一个队列中等到引擎线程空闲时立即被执行。

    JS阻塞页面加载

    由于GUI渲染线程与JavaScript执行线程是互斥的关系,当浏览器在执行JavaScript程序的时候,GUI渲染线程会被保存在一个队列中,直到JS程序执行完成,才会接着执行。因此如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

    定时触发器线程

    浏览器定时计数器并不是由JavaScript引擎计数的, 因为JavaScript引擎是单线程的, 如果处于阻塞线程状态就会影响记计时的准确, 因此通过单独线程来计时并触发定时是更为合理的方案。

    事件触发线程

    当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。这些事件可以是当前执行的代码块如定时任务、也可来自浏览器内核的其他线程如鼠标点击、AJAX异步请求等,但由于JS的单线程关系所有这些事件都得排队等待JS引擎处理。

    异步http请求线程

    在XMLHttpRequest在连接后是通过浏览器新开一个线程请求, 将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件放到 JavaScript引擎的处理队列中等待处理。

    下载本文
    显示全文
    专题苹果笔记本截屏的快捷键是什么苹果笔记本截屏的快捷键是什么专题iphone照片永久删除怎么恢复iphone照片永久删除怎么恢复专题废手机怎样提炼黄金废手机怎样提炼黄金专题手机卡没信号怎么回事手机卡没信号怎么回事专题电脑启动不了反复启动电脑启动不了反复启动专题iphone视频怎么转音频iphone视频怎么转音频专题qq个人文件夹中的文件被占用暂时无法登录qq个人文件夹中的文件被占用暂时无法登录专题word表格每页固定表头word表格每页固定表头专题注册微信怎么跳过辅助注册微信怎么跳过辅助专题微信收藏占用手机存储空间吗微信收藏占用手机存储空间吗专题无手机号怎么注册qq无手机号怎么注册qq专题橡胶刺鼻气味如何去除橡胶刺鼻气味如何去除专题家里的蟑螂是怎么来的家里的蟑螂是怎么来的专题怎么赶走黄鼠狼妙招怎么赶走黄鼠狼妙招专题蟑螂怎么来的蟑螂怎么来的专题相互宝怎么取消相互宝怎么取消专题相互保怎么退出相互保怎么退出专题雪是怎么形成的雪是怎么形成的专题蟑螂是怎么进入家里的蟑螂是怎么进入家里的专题洁厕灵蓝泡泡怎么用洁厕灵蓝泡泡怎么用专题如何判断面粉变质如何判断面粉变质专题房间里有老鼠用什么方法可以解决房间里有老鼠用什么方法可以解决专题家庭野生菌冷冻保存技巧家庭野生菌冷冻保存技巧专题竹荪煮多长时间熟竹荪煮多长时间熟专题老鼠胶怎么洗掉老鼠胶怎么洗掉专题怎么杀蟑螂怎么杀蟑螂专题航班号怎么看航班号怎么看专题花雕酒怎么喝花雕酒怎么喝专题板栗壳怎么好剥板栗壳怎么好剥专题烤红薯没有锡纸怎么办烤红薯没有锡纸怎么办专题线程查看器专题跨线程访问控件专题swoole多进程专题界面线程专题进程的异步性专题进程集专题进程器专题kworker进程专题libevent 多进程专题线程上下文类加载器专题易语言多线程浏览器专题启动多进程webview专题安卓 进程注入专题php进程和线程专题浏览器 多线程专题net线程专题浏览器多进程专题线程池设置线程名称专题线程池运行状态专题进程线程切换专题