进程和线程的区别?

操作系统面试题发布于

一、定义

  • 进程:程序运行的实例,资源分配的基本单位,有独立地址空间。
  • 线程:进程内的执行单元,CPU 调度的基本单位,共享进程资源。

二、对比

维度 进程 线程
资源 独立地址空间 共享进程资源
切换开销 大(切换页表、TLB) 小
通信 IPC(管道、消息队列、共享内存) 共享内存(需同步)
健壮性 一个崩不影响其他 一个崩整个进程崩

三、线程切换开销

线程切换只需要保存/恢复寄存器、栈指针;进程切换还要切换页表、刷新 TLB,开销大得多。

四、协程

用户态轻量级线程,由程序自己调度,不依赖内核,切换开销极小。适合高并发 I/O 场景。