浏览器复习-架构
2021-05-24 04:58:322021-05-24 22:02:57
浏览器是多进程的
浏览器主要包含以下进程:
browser
进程,浏览器的主进程,负责协调各进程;有且只有一个- 负责浏览器界面的显示,与用户交互(前进/后退等)
- 负责各个页面的管理,创建和销毁其他进程
- 将
render
进程得到的内存中的位图绘制到用户界面上 - 网络资源的下载与管理等
- 第三方插件进程,每种类型的插件对应一个进程,仅当使用该插件时创建
- GUI进程,最多只有一个,用户3D图形的绘制
render
进程(浏览器内核),默认为一个tab页一个进程,互不影响- 页面渲染,脚本执行,事件处理等
浏览器使用多线程的优势
- 避免单个page crash后影响到整个浏览器
- 避免第三方插件crash后影响到整个浏览器
- 多进程充分利用多核cpu优势
浏览器内核(render进程)
浏览器核心,页面渲染、JavaScript执行等都在这个进程内执行,主要包含以下线程:
- 渲染线程 负责渲染页面。解析html构建dom树,解析css构建cssom树,合并成为render树,布局,绘制,合成等。与JavaScript引擎互斥
- JavaScript引擎线程 负责解释执行事件循环队列中的JavaScript代码。与渲染线程互斥
- 事件触发线程 专注于处理event-loop
- 定时器触发线程
setTimeout
与setInteval
- 异步http请求线程
发送
http
请求
一些问题
渲染线程与JavaScript引擎线程互斥?
为了防止在渲染线程工作时JavaScript修改DOM造成显示出错的问题
CSS加载不会阻塞DOM树构建,会阻塞render树构建