进程

  1. 进程是资源分配的最小单位,每个进程都有自己的独立内存空间,进程由进程控制块、程序段和数据段组成。
    1. 进程控制块(PCB)保存进程运行期间相关的数据,是进程存在的唯一标志。
    2. 程序段是能被进程调度程序调度到CPU 运行的程序的代码段。
    3. 数据段用来存储程序运行期间的相关数据。
  2. 进程是应用程序运行的载体,可看做是正在执行的程序。程序本身是没有生命周期的,只是存在于磁盘上的一些指令集合,但程序一旦被运行起来就是进程。启动后的进程,会依赖操作系统的调度完成生命周期的转换。由于每个进程都有独立的代码和数据空间,所以进程间的切换会有较大的开销。

线程

  1. 线程是CPU任务调度和执行的最小单位,一个进程中可以包含多个线程,这些线程可以并发运行,且共享进程提供的相同的代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程间切换的开销小。

协程

  1. 协程,又称微线程,是一种用户态的轻量级线程,一个线程可以有多个协程。协程的调度完全由用户控制(也就是在用户态执行)。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到线程的堆区,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以协程的上下文切换非常快。
  2. 线程在进程的内部,它不能独立执行,必须依存于进程中,由进程提供多个线程的执行控制,进程和线程都可以并发的执行。
  3. 协程抽象于线程之上,线程是被分割的CPU资源, 协程是组织好的代码流程, 协程需要线程来承载运行。与线程相比,协程占用资源小,由用户调度,切换开销小,同一个线程中的协程不需要使用锁,执行效率更高。
Last modification:October 23, 2023
如果觉得我的文章对你有用,请收藏本站