<-Home

进程&&线程

进程

进程:CPU资源分配的最小单位,程序的一次执行

  1. 程序的执行是需要其对应的相关资源的
  2. 这些相关资源就构成了所说的程序上下文
  3. 程序被分配到CPU之后开始执行
  4. 程序执行完成或者CPU分配时间到了,会被切出去,执行下一个程序
  5. 在被切出去之前,需要保存程序上下文,这是程序下一次被CPU执行时的上下文

所以说: 进程 = 程序的一次执行 = CPU加载上下文+CPU执行+CPU保存上下文

线程

线程:CPU的基本调度单位

一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线

线程共享了进程的程序上下文环境

进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。

多进程与多线程

  • 多进程:同一时间段,系统允许同时有两个或者两个以上进程同时处于运行状态;多进程带来的好处是明显的,比如你可以听歌的同时,打开编辑器敲代码,编辑器和听歌软件的进程之间丝毫不会相互干扰;
  • 多线程: 程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务;

以Chrome浏览器中为例,当你打开一个 Tab 页时,其实就是创建了一个进程,一个进程中可以有多个线程(下文会详细介绍),比如渲染线程、JS 引擎线程、HTTP 请求线程等等。当你发起一个请求时,其实就是创建了一个线程,当请求结束后,该线程可能就会被销毁。


参考:

  1. 线程和进程的区别是什么?
  2. 进程与线程的一个简单解释-阮一峰

名词:

  1. IPC (Inter-Process Communication)

Chrome 架构:

  1. 主进程
  2. 插件进程
  3. 网络进程
  4. 备用渲染进程
  5. GPU 进程
  6. Storage 进程
  7. Audio Service 进程
  8. 代码编译工具进程(V8)
  9. Tab 渲染进程
    1. GUI 渲染线程
    2. JS引擎线程
    3. 事件触发线程
    4. 定时触发线程
    5. 异步http线程

浏览器页面加载完成触发顺序:DOMContentLoaded(dom) -> load(dom cssom image)