chrome浏览器构架学习笔记

最直观方法:打开更多工具中的任务管理器,可查看有几个进程。

结论:

现代浏览器是多进程架构,包括:1个浏览器进程,1个网络进程,1个GPU进程,多个渲染进程和多个插件进程。
通常情况下,打开2个页面会有5个进程,即浏览器进程、网络进程、GPU进程、两个渲染进程。
特殊情况:

  1. 页面中有插件,每个插件算一个进程
  2. 页面有iframe,会运行在单独的进程中
  3. 装了扩展,也会占用进程
  4. 如果两个页面属于同一个站点,并且B从A中打开,会共用一个渲染进程。
    例子:多标签共用一个进程场景

并行并发概念:

并行:指的是两个互不影响的独立进程同时进行。
并发:指的是一个时间段内程序处于已启动到完毕之间,且这几个程序都是在同一个处理机上运行的(划分时间段,几个时间段来回切换执行程序,只是用户感觉多个应用程序同时进行)

线程进程

多线程可以并行处理任务,但是线程是不能单独存在的,是由进程来启动管理。
线程执行出错,会导致进程崩溃。
线程之间共享进程中的数据。

进程是一个程序的运行实例。启动程序时,操作系统会为其创建内存,用来存放代码、数据和执行任务的主线程。
进程间相互独立。
当进程关闭后,操作系统会回收进程所占用的内存。

多进程解决单进程的问题

  • 不稳定问题:进程相互隔离,一个崩溃,并不会影响其他页面。
  • 不流畅问题:js运行在渲染进程中,当前页面阻塞,并不会影响其他页面渲染进程。
  • 安全问题:安全沙箱,插件进程和渲染进程没有办法获取系统权限。

各进程作用

  • 浏览器进程:负责页面显示,用户交互,子进程管理,存储功能。
  • 渲染进程:将html、css、js转换为页面,排版引擎blink和js引擎v8都在该进程中。沙箱模式。
  • GPU进程:UI界面选择用GPU绘制。
  • 网络进程:网络资源加载;
  • 插件进程:负责插件运行,插件易蹦,需要其来隔离,保证浏览器其他进程不受影响。

多进程构架的问题

  • 更高资源占用:每个进程都包含公共基础结构(js运行环境),会占用更多浏览器内存资源
  • 更复杂的体系架构:浏览器模块间的耦合性高、扩展性差

就有了 未来面向服务架构
在这里插入图片描述