`
yuyongkun4519
  • 浏览: 44554 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

请您先登录,才能继续操作

浏览器中进程与线程

阅读更多

一,首先使用快捷键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

 

 

 

 

 

分享到:
评论

相关推荐

    详解主流浏览器多进程架构:Chrome、IE

    1. **浏览器进程**:负责用户界面的处理和所有其他进程的管理,位于整个浏览器架构的最高层。 2. **渲染进程**:处理独立浏览器标签中的内容渲染,值得注意的是,一个渲染进程可以同时处理多个标签,但通常每个标签...

    进程浏览器

    进程线程和句柄 在进程浏览器中,用户不仅可以查看进程,还可以深入到**线程**层面。线程是执行代码的基本单位,一个进程可能包含多个线程,每个线程执行不同的任务。通过进程浏览器,用户可以查看每个线程的详细...

    arry-good.rar_进程与线程

    标题中的“arry-good.rar_进程与线程”表明这是一个关于进程和线程的讨论,可能包含了一个相关的程序或文档集合。描述中的“Staff information management system, very good”提示我们这可能是一个优秀的员工信息...

    ewcq.rar_进程与线程

    在IT领域,进程和线程是操作系统中的两个核心概念,对于理解系统性能和多任务处理至关重要。本资源"ewcq.rar_进程与线程"似乎包含了一些与图像处理相关的源代码文件,可能是一个用于处理图像格式转换的软件或库。 ...

    进程线程作业

    在计算机科学中,进程和线程是操作系统中的两个基本概念,它们对于理解程序的执行机制至关重要。...在“进程线程作业”这个资料中,你可能会找到相关的代码示例和练习,帮助你更好地掌握这些概念。

    一、浏览器渲染原理(进程、线程)http请求全过程-浏览器输入url整个过程

    1、浏览器进程接收到用户输入的URL请求,浏览器进程便将URL转发给网络进程。 2、网络进程中发起真正的URL请求。 3、网络进程接收到响应头数据,便解析响应头数据,并将数据转发给浏览器进程。 4、浏览器进程接收到...

    python selenium chrome 多开 多线程

    本主题聚焦于如何使用Python的Selenium与Chrome浏览器进行多开和多线程操作,结合phantomjs和chromedriver这两个关键组件来实现。首先,让我们详细了解一下这些概念。 1. **Selenium**: Selenium是一个强大的Web...

    Python实战系列培训课程之进程和线程.pptx

    进程: 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一...

    C#多进程浏览器-仿Chrome浏览器

    多进程架构是Chrome浏览器的一个关键创新点,它将浏览器的不同功能分散到多个独立的进程中,提高了浏览器的稳定性和安全性。每个进程都有自己的内存空间,因此即使一个进程崩溃,也不会影响其他进程,从而避免了整个...

    C__进程、线程与网络协议及实现

    根据给定文件的标题、描述、标签以及部分内容,本文将详细介绍与进程、线程以及网络协议相关的知识要点,特别关注其在Windows环境下的应用。 ### 一、进程和线程 #### 1.1 进程 进程是操作系统中一个可独立运行的...

    单进程浏览器

    单进程浏览器 可以方便你用WPE、CE等截取封包数据 方便有快捷

    Windows进程浏览器(process explorerV16.20)64位

    微软出品的进程浏览器 能详细看到进程 线程信息 与资源分布 CPU 内存 堆栈等等 比自带的任务管理器强大百倍

    浏览器渲染过程及优化策略

    浏览器中的五个进程包括浏览器进程、渲染进程、GPU 进程、网络进程和插件进程。浏览器进程负责界面显示、用户交互、子进程管理、同时提供存储等功能。渲染进程负责将 HTML、CSS 和 JavaScript 转换为用户可以与之...

    Python资源之浏览器自动化与仿真-多进程并发-异步

    浏览器自动化与仿真技术 Python 资源之浏览器自动化与仿真是指使用 Python 语言来实现浏览器的自动化和仿真,以便实现自动浏览、数据爬取、自动交互等功能。常见的浏览器自动化技术有: 1. Selenium:是一个...

    小舞易语言多进程浏览器.zip易语言项目例子源码下载

    在“小舞易语言多进程浏览器”项目中,开发者巧妙地利用了易语言的多线程和进程管理功能,实现了这一复杂的功能。 易语言的多线程编程是实现多进程浏览器的关键。在易语言中,可以创建并管理多个线程,每个线程独立...

    解决python线程卡死的问题

    `top`命令能够实时显示系统中各个进程(包括线程)的资源占用状况,帮助开发者快速定位问题。 - **操作步骤**: - 打开终端。 - 输入`top`命令。 - 在显示的界面中,按`u`键,然后输入需要查询的用户名(例如`...

    糖果浏览器3.0版。速度最快的人性化浏览器

    糖果浏览器是一款“永不崩溃”的浏览器,全球首款多进程多线程架构浏览器,糖果浏览器3。0 将使用户彻底摆脱浏览器假死或真死(崩溃)的困扰。糖果浏览器3。0实现了以下目标: 1 行云流水,操作流畅,决不出现鼠标...

    第7章 进程和多线程.ppt [兼容模式].pdf

    总的来说,理解和掌握进程与线程的概念,以及如何在.NET中使用`Process`类进行进程管理,对于编写高效的多线程应用程序至关重要。了解线程的并发性、互斥和死锁问题的解决方案,有助于编写出更加健壮和安全的代码。

    基于对话框的多标签多进程浏览器实现

    在多进程浏览器的实现中,每个标签页通常对应一个独立的进程,以确保各个网页的加载和运行不会相互影响,提高系统的稳定性和安全性。`CreateProcess`负责启动新的浏览器实例,每个实例处理一个单独的网页。调用`...

Global site tag (gtag.js) - Google Analytics