一,首先使用快捷键Shift+Esc打开浏览器Chrome任务管理器,看到如下图界面:
可以看到浏览器默认有三个进程:
1,浏览器主进程(Browser进程)
浏览器主进程只有一个,作用有:
- 负责浏览器界面显示,用户交互(前进、后退,关闭等)
- 负责各个页面的管理,如创建和销毁其它进程
- 将Render进程中得到的内存中的bitmap,绘制到用户界面上
- 网络资源的管理,如下载
2,GPU进程
用于3d绘制等,如为dom元素添加css3样式-webkit-transform:translateZ(0),将使浏览器的渲染从cup转向gpu,开启gpu加速。
3,浏览器渲染进程(Render进程)
也被称为浏览器内核。
浏览器渲染进程的主要作用是页面渲染、脚本执行、事件处理等。
每一个标签页的打开都会创建一个浏览器渲染进程,默认打开的标签页根据域名划分在不同的进程中,不同域名之间的进程互不影响。
二,Browser进程,Render进程,GPU进程三者是如何协作的呢?
下面是一张关系图:
可以看到用户打开一个页面,首先控制的还是Browser主进程,然后我们再看一下chromium多线程模型:
基本工作方式如下:
Browser进程收到用户的请求,首先由UI线程处理,而且将相应的任务转给IO线程,他随机将该任务传递给Render进程;
Render进程的IO线程经过简单解释后交给渲染线程,渲染线程接收请求,加载网页并渲染网页,这其中可能需要Browser进程获取资源和需要GPU进程来帮助渲染,最后Render进程将结果由IO线程传递给Browser进程;
Browser进程接收到结果并将结果绘制出来;
三,浏览器渲染进程(Render进程)有哪些线程?
- GUI渲染线程
负责浏览器界面渲染,解析HTML和CSS,构建Dom树和RenderObject树,布局、绘制等。
如果用户的操作引发了回流(reflow),或者界面发生重绘(repaint)时都会启动该线程。
- JS引擎线程
也称为JS内核,主要负责JS脚本的解析执行,如Chrome的V8引擎。
JS引擎一直等待着任务队列中任务的到来,然后加以处理,一个Render进程中无论什么时候都只有一个JS引擎线程。
需要注意:GUI渲染线程和JS引擎线程是互斥的,如果JS脚本执行时间过长就会造成页面的渲染不连贯。
- 事件触发线程
当JS引擎执行代码块如点击事件document.onclick=function(){}或者$.ajax({})或者setTimeout(function(){},1000)等等代码块时,会将对应的任务添加到事件线程中,当符合条件的任务被触发时,事件触发线程会将该任务添加到待处理任务队列的末尾,等待JS引擎的处理。
- 定时触发器线程
setInterval和setTimeout所在线程。
计时完毕后,添加到事件队列中,等待JS引擎的处理。
- 异步http请求线程
在异步http请求触发后,浏览器会新打开一个线程请求。
该线程检测到状态变更时,如果设置有回调函数,异步线程就会产生事件变更,就会将该回调函数添加到事件队列,等待JS引起的处理。
四,JS为什么是单线程?
众所周知进程之间相互隔离互补影响,线程之间资源共享相互影响,试想一下如果JS是多线程,假如有thread1和thread2两个线程同时操作同一个Dom元素,thread1删除该Dom元素,thread2修改该Dom元素,同时下达两个矛盾任务让浏览器怎么执行呢,这就是为什么JS被设计成单线程。
参考链接:https://blog.csdn.net/it_rod/article/details/79880745
相关推荐
1. **浏览器进程**:负责用户界面的处理和所有其他进程的管理,位于整个浏览器架构的最高层。 2. **渲染进程**:处理独立浏览器标签中的内容渲染,值得注意的是,一个渲染进程可以同时处理多个标签,但通常每个标签...
进程线程和句柄 在进程浏览器中,用户不仅可以查看进程,还可以深入到**线程**层面。线程是执行代码的基本单位,一个进程可能包含多个线程,每个线程执行不同的任务。通过进程浏览器,用户可以查看每个线程的详细...
标题中的“arry-good.rar_进程与线程”表明这是一个关于进程和线程的讨论,可能包含了一个相关的程序或文档集合。描述中的“Staff information management system, very good”提示我们这可能是一个优秀的员工信息...
在IT领域,进程和线程是操作系统中的两个核心概念,对于理解系统性能和多任务处理至关重要。本资源"ewcq.rar_进程与线程"似乎包含了一些与图像处理相关的源代码文件,可能是一个用于处理图像格式转换的软件或库。 ...
在计算机科学中,进程和线程是操作系统中的两个基本概念,它们对于理解程序的执行机制至关重要。...在“进程线程作业”这个资料中,你可能会找到相关的代码示例和练习,帮助你更好地掌握这些概念。
1、浏览器进程接收到用户输入的URL请求,浏览器进程便将URL转发给网络进程。 2、网络进程中发起真正的URL请求。 3、网络进程接收到响应头数据,便解析响应头数据,并将数据转发给浏览器进程。 4、浏览器进程接收到...
本主题聚焦于如何使用Python的Selenium与Chrome浏览器进行多开和多线程操作,结合phantomjs和chromedriver这两个关键组件来实现。首先,让我们详细了解一下这些概念。 1. **Selenium**: Selenium是一个强大的Web...
进程: 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一...
多进程架构是Chrome浏览器的一个关键创新点,它将浏览器的不同功能分散到多个独立的进程中,提高了浏览器的稳定性和安全性。每个进程都有自己的内存空间,因此即使一个进程崩溃,也不会影响其他进程,从而避免了整个...
根据给定文件的标题、描述、标签以及部分内容,本文将详细介绍与进程、线程以及网络协议相关的知识要点,特别关注其在Windows环境下的应用。 ### 一、进程和线程 #### 1.1 进程 进程是操作系统中一个可独立运行的...
单进程浏览器 可以方便你用WPE、CE等截取封包数据 方便有快捷
微软出品的进程浏览器 能详细看到进程 线程信息 与资源分布 CPU 内存 堆栈等等 比自带的任务管理器强大百倍
浏览器中的五个进程包括浏览器进程、渲染进程、GPU 进程、网络进程和插件进程。浏览器进程负责界面显示、用户交互、子进程管理、同时提供存储等功能。渲染进程负责将 HTML、CSS 和 JavaScript 转换为用户可以与之...
浏览器自动化与仿真技术 Python 资源之浏览器自动化与仿真是指使用 Python 语言来实现浏览器的自动化和仿真,以便实现自动浏览、数据爬取、自动交互等功能。常见的浏览器自动化技术有: 1. Selenium:是一个...
在“小舞易语言多进程浏览器”项目中,开发者巧妙地利用了易语言的多线程和进程管理功能,实现了这一复杂的功能。 易语言的多线程编程是实现多进程浏览器的关键。在易语言中,可以创建并管理多个线程,每个线程独立...
`top`命令能够实时显示系统中各个进程(包括线程)的资源占用状况,帮助开发者快速定位问题。 - **操作步骤**: - 打开终端。 - 输入`top`命令。 - 在显示的界面中,按`u`键,然后输入需要查询的用户名(例如`...
糖果浏览器是一款“永不崩溃”的浏览器,全球首款多进程多线程架构浏览器,糖果浏览器3。0 将使用户彻底摆脱浏览器假死或真死(崩溃)的困扰。糖果浏览器3。0实现了以下目标: 1 行云流水,操作流畅,决不出现鼠标...
总的来说,理解和掌握进程与线程的概念,以及如何在.NET中使用`Process`类进行进程管理,对于编写高效的多线程应用程序至关重要。了解线程的并发性、互斥和死锁问题的解决方案,有助于编写出更加健壮和安全的代码。
在多进程浏览器的实现中,每个标签页通常对应一个独立的进程,以确保各个网页的加载和运行不会相互影响,提高系统的稳定性和安全性。`CreateProcess`负责启动新的浏览器实例,每个实例处理一个单独的网页。调用`...