进程是资源分配的基本单位 线程是CPU调度的基本单位
地址空间
-
进程有独立的地址空间(OS可见)而线程没有
-
线程可以有独立的堆栈、局部变量(OS不管)
开销
进程切换,操作系统会进行上下文切换(Context Switch),其中开销比较大。
但是线程是在用户态的,本来就是OS提供的轻量级线程,没有频繁上下文切换的开销。
更细节来讲,进程切换需要保存所有寄存器到内存,而线程只需要切换Caller Saved寄存器
并发性
开销越小并发越高,进程的并发性较低,线程的并发性较高。
内存
线程之间共享内存,但是OS会对每个进程分配独立的内存空间