`
yuyongkun4519
  • 浏览: 42572 次
  • 性别: 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

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

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

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

    进程浏览器

    该进程浏览器除了任务管理器的功能外,能方便地在任意时刻进行进程和线程进行快照,获得他们的句柄。另外,可以从进程快照中获得各进程和线程的关系图谱。

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

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

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

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

    单进程浏览器

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

    多线程与进程.docx

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

    python selenium chrome 多开 多线程

    phantomjs.exe,chromedriver.exe文件改个名字 填上绝对路径 就可以打开多个浏览器对象 .包含 phantomjs.exe,chromedriver.exe 和示例

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

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

    进程浏览器Process Monitor

    可以浏览您的电脑现在正在运行的进程和线程

    多线程操作实例源码

    浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。  多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望...

    多线程操作实例源码,,

    浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。  多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望...

    超速浏览器 v5.2 正式版

    多进程多线程架构浏览器,全面防假死和程序奔溃,网页加载达到极速。 2、个性皮肤 提供大量个性皮肤,可在工具菜单对皮肤进行管理,也可到官网下载更多皮肤。 3、鼠标手势 增强了浏览网页的便捷性,鼠标右键...

    远程进程查看器, 查看网络中其它计算机上的进程

    这个远程进程浏览器可以显示所有运行的进程的细节,例如:进程文件名称, 文件的绝对路径, PID(进程标识符),占用的内存,占用的CPU时间, 进程的句柄,父进程的进程标识符,用户的会话ID, 线程的数量以及进程的优先级....

    Procexp进程浏览器

    Procexp,即process explorer,进程浏览器。用来查看计算机上运行的进程的状态。(CPU、内存、句柄、加载dll、线程及堆栈等)

    天网中国浏览器 V.10版.rar

    该款软件是正常进程线程启动,有别于本站点先发的一款光速浏览器,光速浏览器是多线程,为了提高速度,而致使兼容性降低,当前这款浏览器做好优化后,稍逊于光速浏览器的速度,但是比较稳定 需要.net4.0环境 并且把...

    详解JS浏览器事件循环机制

    浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。 浏览器内核有多种线程在工作。 GUI ...

    browser-learn:从0开始学习浏览器

    浏览器之进程与线程 进步的基本概念 程序的一次执行,它占用一个唯一的内存空间。是操作系统执行的基本单元。启动一个程序的时候,操作系统会为该程序创建一块内存,存储代码,运行中的数据和一个执行任务的主线程,...

    C#的多线程机制探索

    一.多线程的概念  Windows是一个多任务的系统,如果你使用的是windows...浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。

    《Python基础实训教程》第3章-多线程.pptx

    3.1 认识线程 在操作系统中,一个任务对应一个进程,例如浏览网页启动一个浏览器进程,听音乐启动一个音乐进程等等,在进程中同样包含多个子任务,多个子任务间同时执行,例如音乐进程,一边有声音的播放,还有字幕...

Global site tag (gtag.js) - Google Analytics