浏览器工作原理(3)浏览器是多进程架构

Chrome 打开一个页面需要启动多少进程

启动 Chrome 任务管理器查看 —— chrome 选项 -> more tools -> task manager
windows 可查看任务管理器
img

  • process id
  • cpu
  • network
  • mermory footprint
  • task

一个 task 对应 一个 process id,可以理解为一个任务启动一个进程

进程

是一个程序的运行实例。即启动一个程序时,操作系统为该程序创建一块内存。用于存放代码、运行中的数据及一个执行任务的主线程。它是一个运行环境。

  • 进程是 CPU 资源分配的最小单位,是拥有资源和独立运行的最小单位

如:有任务 A,B,C,D

并行处理

计算机中的并行处理是指同一时刻处理多个任务

线程

  • 线程是 CPU 调度的最小单位

单线程

一个线程是指执行一个任务, A,B,C,D 依次执行

    graph LR
    subgraph 进程
        subgraph 主线程
            taskA[任务 A] --> taskB[任务 B] --> taskC[任务 C] --> taskD["任务 A,B,C 结论"]
        end
        data[(数据)]
        file[文件]
    end

多线程

同时开启多个线程执行多个任务, 即,三个线程分别执行 A,B,C,再执行 D

    graph LR
    subgraph 进程
        subgraph 线程
            subgraph 线程A
                taskA[任务 A]
            end
            subgraph 线程B
                taskB[任务 B]
                taskD[任务 D]
            end
            subgraph 线程C
                taskC[任务 C]
            end
        end
        data[(数据)]
        file[文件]
    end

多进程的浏览器

浏览器主进程

负责浏览器界面显示,用户交互;
负责各页面管理,创建、销毁其它进程
将Renderer进程得到的内存中的Bitmap,绘制到用户界面上
子进程管理;
文件存储等

网络进程

页面浏览器主进程和渲染进程提交网络资源下载功能

GPU(Graphics Processing Unit) 进程

GPU,图形处理器,设计初衷是为了 3D CSS 效果。Chrome 的 UI 界面都选择采用 GPU 来绘制,因 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。

插件进程

因插件易崩溃,独立为单独的进程,避免因插件崩溃引起整个浏览器无法运行。插件进程,只有使用插件时才会创建

utility进程

有时候浏览器主进程需要做一些“危险”的事情,比如图片解码、文件解压缩。如果这些“危险”的操作发生了失败,会导致整个主进程发生异常崩溃,这是我们不愿意看到的。因此Chromium设计出了一个utility进程的机制。主进程临时需要做一些不方便的任务的情况下,可以启动一个utility进程来代替主进程执行,主进程与utility进程之间通过IPC消息来通信。

渲染进程