美文网首页
浏览器的进程与线程

浏览器的进程与线程

作者: _于曼丽_ | 来源:发表于2022-04-28 16:45 被阅读0次

进程:cpu 资源分配的最小单位,每个进程有自己的内存空间,进程之间相互独立
线程:cpu 调度的最小单位,一个进程包括多个线程,线程共享所属进程的内存空间,线程之间协作完成任务

浏览器的进程与线程.png

GUI 线程和 JS 引擎线程互斥
事件处理线程、计时器线程、Ajax 请求线程、worker 线程一开始并不存在,是由于 JS 引擎线程中的某些操作,而由 Render 进程动态创建出的线程,这些线程可以帮助 JS 引擎线程来完成一些工作

  1. 浏览器输入 url
  2. Browser 进程开一个下载线程,请求资源,将资源交给 Render 进程
  3. Render 命令 GUI 渲染页面
  4. 需要 3D 渲染,则 GUI 向 Render 报告,Render 告诉 Browser,Browser 请来 GPU 来帮助渲染
  5. 需要加载其他资源,则 GUI 向 Render 报告,Render 告诉 Browser,Browser 开一个下载线程请求资源,然后将资源返回给 Render
  6. 遇到 JS 脚本,GUI 挂起,JS 引擎开始工作,解析并运行脚本

GUI 渲染页面:

  1. html -> dom 树
    css -> css 树
  2. dom 树 + css 树 -> render 树
  3. layout/reflow render 树,负责各元素尺寸、位置的计算
  4. paint/repaint render 树,绘制页面像素信息
  5. GUI 渲染完了告诉 Render,Render 告诉 Browser,Browser 将各层信息交给 GPU,GPU 会将各层合成(composite),显示在屏幕上

GUI 线程一边渲染,css 下载线程一边下载,它们同时进行。 GUI 线程是 Render 进程的,css 下载线程是 Browser 进程的。

总结:

浏览器的每个选项卡是一个 Render 进程
Render 进程包括 GUI 线程和 JS 线程
GUI 线程和 JS 线程互斥,一个工作另一个停止
JS 线程可以开启其他帮助线程,例如定时器线程、Ajax 线程等
JS 线程和帮助线程可以并行运行
所有 JS 代码运行在单个 JS 线程,通过事件循环和消息队列来执行异步代码

相关文章

  • js运行机制

    进程与线程 进程是cpu资源分配的最小单位,进程可以包含多个线程。 浏览器就是多进程的,每打开的一个浏览器窗口就是...

  • 解析浏览器打开网页过程

    浏览器是什么,浏览器是用户用来查看网页的软件程序,它是由多个进程构成,那么什么是进程?什么又是线程呢? 进程与线程...

  • 【day 3】深入理解浏览器工作原理—架构设计

    浏览器五部分 一.浏览器架构设计 (1)线程与进程 多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来...

  • 浏览器进程

    浏览器是多进程的. 浏览器的渲染进程是多线程的。js是阻塞单线程的。Browser进程:浏览器的主进程(负责协调,...

  • 浏览器工作原理

    一、浏览器的进程与线程 【概述】 当浏览器由多个进程组成(如Chrome),每个进程都有自己核心的职责,它们相互配...

  • Python 多线程&多进程

    进程与线程 进程:一个任务成为一个进程(Process),比如打开浏览器就是启动一个浏览器进程、打开Tim就是启动...

  • js有趣的事件循环

    进程&线程 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS) 进程大线程小:一个进程中包含多个线...

  • Javascript的循环机制

    总结: 浏览器是多进程的; 其中一个进程是浏览器渲染进程;浏览器渲染进程包括多个线程; 其中一个线程是 JS引擎线...

  • 从输入URL到页面加载的过程

    从浏览器接收url到开启网络请求线程(这一部分可以展开浏览器的机制以及进程与线程之间的关系)浏览器是多进程的,有一...

  • 2019-04-29 JavaScript的事件队列

    浏览器的渲染进程 浏览器的渲染进程(默认每个Tab页面一个渲染进程,互不影响)是多线程的,这个进程有以下主要线程:...

网友评论

      本文标题:浏览器的进程与线程

      本文链接:https://www.haomeiwen.com/subject/qyedyrtx.html