进程与线程架构

浏览器的进程与线程架构

CPU,GPU,进程与线程

CPU 是计算机里面的一块芯片,上面有一个或者多个核心(core)。我们可以把 CPU 的一个核心(core)比喻成一个办公室工人,他功能强大,上知天文下知地理,琴棋书画无所不能,它可以串行地一件接着一件处理交给它的任务。很久之前的时候大多数 CPU 只有一个核心,不过在现在的硬件设备上 CPU 通常会有多个核心,因为多核心 CPU 可以大大提高手机和电脑的运算能力。

四个 CPU 核心愉快地在各自工位上一个接着一个地处理交给它们的任务

图形处理器或者说 GPU(Graphics Processing Unit)是计算机的另外一个重要组成部分。和功能强大的 CPU 核心不一样的是,单个 GPU 核心只能处理一些简单的任务,不过它胜在数量多,单片 GPU 上会有很多很多的核心可以同时工作,也就是说它的并行计算能力是非常强的。图形处理器(GPU)顾名思义一开始就是专门用来处理图形的,所以在说到图形使用 GPU(using)或者 GPU 支持(backed)时,人们就会联想到图形快速渲染或者流畅的用户体验相关的概念。最近几年来,随着 GPU 加速概念的流行,在 GPU 上单独进行的计算也变得越来越多了。

GPU

当你在手机或者电脑上打开某个应用程序的时候,背后其实是 CPU 和 GPU 支撑着这个应用程序的运行。通常来说,你的应用要通过操作系统提供的一些机制才能跑在 CPU 和 GPU 上面。

计算机的三层架构

就像我们在 《Linux-Notes》中介绍的进程与线程之间的关系,进程(process)是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,线程(thread)是 CPU 调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。浏览器属于一个应用程序,而应用程序的一次执行,可以理解为计算机启动了一个进程,进程启动后,CPU 会给该进程分配相应的内存空间,当我们的进程得到了内存之后,就可以使用线程进行资源调度,进而完成我们应用程序的功能。

而在应用程序中,为了满足功能的需要,启动的进程会创建另外的新的进程来处理其他任务,这些创建出来的新的进程拥有全新的独立的内存空间,不能与原来的进程内向内存,如果这些进程之间需要通信,可以通过 IPC 机制(Inter Process Communication)来进行。

应用程序进程与线程示意

那么浏览器是怎么使用进程和线程来工作的呢?其实大概可以分为两种架构,一种是单进程架构,也就是只启动一个进程,这个进程里面有多个线程工作。第二种是多进程架构,浏览器会启动多个进程,每个进程里面有多个线程,不同进程通过 IPC 进行通信。

单进程和多进程浏览器的架构图

上面的图表架构其实包含了浏览器架构的具体实现了,在现实中其实并没有一个大家都遵循的浏览器实现标准,所以不同浏览器的实现方式可能会完全不一样。

上一页