1)进程是 cpu 资源分配的最小单位,线程是 cpu 调度的最小单位。
2)进程有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源,包括堆、代码
段、数据段,每个线程只拥有一些在运行中必不可少的私有属性,比如 tcb,线程 Id,栈、寄存器。
3)一个进程崩溃,不会对其他进程产生影响;而一个线程崩溃,会让同一进程内的其他线
程也死掉。
4)进程在创建、切换和销毁时开销比较大,而线程比较小。进程创建的时候需要分配系统
资源,而销毁的的时候需要释放系统资源。进程切换需要分两步:切换页目录、刷新 TLB 以使用
新的地址空间;切换内核栈和硬件上下文(寄存器);而同一进程的线程间逻辑地址空间是一样
的,不需要切换页目录、刷新 TLB。
5)进程间通信比较复杂,而同一进程的线程由于共享代码段和数据段,所以通信比较容易。