热搜:前端 nest neovim nvim

浏览器运行原理

lxf2023-05-14 01:22:59

参考:developer.aliyun.com/article/900…

一、概述

开始之前,我们先来简单聊聊浏览器的组成:

浏览器运行原理

  • 用户界面:包括地址栏,前进/后退/刷新/书签菜单等等。
  • 网络:用来完成 网络调用资源下载 的模块。
  • UI 后端:UI后端提供绘图和窗口原语,包括:用户界面控件集合、字体集合。
  • 浏览器引擎:可在用户界面和渲染引擎之间 传送指令 或在客户端本地缓存中 读写数据 等,是浏览器中各个部分之间相互 通信的核心
  • 数据持久层:浏览器在硬盘中保存 cookie、localStorage等各种数据,可通过浏览器引擎提供的API进行调用。
  • 渲染引擎:用来 绘制 请求的内容。(我们常说的浏览器内核主要指的就是渲染引擎
  • JS 引擎:用来 解析执行 JavaScript 代码。(如 V8 引擎、JavaScriptCore

提示:与大多数浏览器不同的是,谷歌(Chrome)浏览器的每个标签页都分别对应一个呈现引擎实例。每个标签页都是一个独立的进程。

二、浏览器架构

1. 进程与线程

Chrome 打开一个页面会启动4个进程:浏览器主进程、GPU进程、网络进程和渲染进程。

一个进程就是一个程序的运行实例,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,这样一个运行环境叫进程。

线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。

进程和线程之间的关系有以下 4 个特点:

(1)进程中的任意一线程执行出错,都会导致整个进程的崩溃。

(2)线程之间共享进程中的数据。

(3)当一个进程关闭之后,操作系统会回收进程所占用的内存。

(4)进程之间的内容相互隔离。

2. 进程架构

浏览器运行原理

最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程,如下图所示:

浏览器运行原理

三、渲染进程