浏览器工作原理

66 阅读2分钟

写在前面: 前端的小伙伴每天都在兢兢业业的撸页面,不管是pc端还是移动web端都离不开浏览器,我也是如此,做了几年开发,发现自己浏览器都没摸清楚,啪啪啪打脸,所以有了下文:

开始之前先了解下进程线程的概念

进程: 一个进程就是一个程序的实例;每启动一个应用程序,操作系统都会为此程序创建一块内存,用来存放代码、数据数据、一个执行任务的主线程,我们把这样的一个运行环境叫进程。

线程:线程是依赖进程的,进程中使用多线程并行能够提升处理效率

进程和线程的关系 (父子关系: 你可以有多个后代)
  1. 进程中的某一线程执行错误,会导致整个程序崩溃;
  2. 线程之间共享进程的公共数据;
  3. 进程与进程之间的内容是相互隔离的;
浏览器是多进程的(一个程序一个进程)
  1. 浏览器主进程
  2. GPU进程:负责图形处理
  3. 网络进程:负责资源下载
  4. 多个渲染进程(浏览器的核心部分,内核):每一个打开的页面都是一个进程,相互隔离,互不影响;渲染进程都是运行在沙箱模式下渲染进程中包含以下线程:
    1. GUI渲染线程
    2. Javascript引擎线程
    3. 事件触发线程(归属于浏览器而不是JS引擎)
    4. 定时触发器线程
    5. 异步http请求线程
    6. 合成线程
    7. IO线程:处理和其他进程进行通信
    GUI渲染线程与JS引擎线程是互斥的不能一并执行
  5. 插件进程:负责页面中的插件运行;也是运行在沙箱模式下各进程之间通过 IPC 来通信