线程进程协程2:线程进程和协程初探

439 阅读2分钟

进程(Process)

计算机有各种各样的资源,比如计算资源(CPU,GPU),存储资源(内存,磁盘),网络资源。

操作系统的作用是统一管理着这些资源,实现对资源的抽象。进程就是操作系统进行资源分配和调度的基本单位,进程作为程序独立运行的载体保障程序正常执行,使得操作系统资源的利用率大幅提升。

我们可以通过windows的任务管理器,去直观的感受进程。

image.png

线程(Thred)

一个进程可包含多个线程,线程存在的目的是提高进程并发执行的程度。

线程是操作系统进行运行调度的最小单位,包含在进程之中,是进程中实际运行工作的单位。

进程和线程

两者联系:进程的线程共享进程资源

两者区别总结为如下表格:

进程线程
资源资源分配的基本单位不拥有资源
调度调度开销大调度开销小
系统开销进程系统开销大线程系统开销小
并发性进程间并发进程间并发,进程内多线程并发

上下文切换

上下文包括

  • 寄存器级上下文(cpu的运算器,控制器,高速缓存)
  • 用户级上下文(缓存,主存,辅存)
  • 系统级上下文

上下文切换的步骤

  • 准备就绪进程运行数据
  • 保存当前进程运行装填
  • 迁出当前进程数据
  • 迁入就绪进程数据
  • 恢复就绪进程上一次运行状态
  • 就绪进程开始运行

进程切换的成本要远大于线程切换成本的

协程(Coroutine)

协程是比线程更小的粒度的执行单元,运行效率更高,可以支持更高的并发。

进程包含线程,线程包含协程,协程的本质就是用户级线程。

协程对比线程,即用户级线程对比内核级线程。

协程由用户自行调度,内核无法干涉。

协程优缺点

  • 调度、切换、管理更加轻量

  • 内核无法感知协程的存在(对内核来说只有一个线程,当一个协程阻塞,所有协程都阻塞了)