操作系统 · 主观题 · 第 30 题
计算机基础面试八股 · 第 30 题
进程、线程、协程有什么区别?
参考答案
1. 进程是资源分配的基本单位,有独立的地址空间;进程间相互隔离,一个崩溃一般不影响其他进程,通信要用 IPC。
2. 线程是 CPU 调度的基本单位,同一进程的线程共享地址空间和资源,各有自己的栈、寄存器和程序计数器;通信方便,但需要同步,一个线程崩溃可能拖垮整个进程。
3. 协程是用户态的轻量执行单元,由程序或运行时调度(如 Go 的 goroutine、Java 21 的虚拟线程、Kotlin 协程),切换不进入内核,栈很小,可以开到几十万个,适合 IO 密集型高并发。
4. 开销:进程创建与切换最重(要换页表),线程次之,协程最轻。
5. 协作式协程遇到阻塞式系统调用会卡住所在线程,所以要配合非阻塞 IO 使用。
解析
从资源、调度、开销、隔离性四个维度对比。