什么是进/线程
进程是资源分配的最小单位,线程是CPU调度的最小单位,一个应用程序至少有一个进程,一个进程中至少有一个线程。
线程私有:线程栈,内核栈,程序计数器,寄存器
线程共享:地址空间,堆内存(共享变量,静态变量)
进程私有:地址空间,堆,栈,寄存器
进程共享:我知道的有一个共享内存
各自优缺点:
因为线程共享进程的地址空间,所以线程切换不会导致TLB缓存过期,所以线程切换的代价更低。同时因为进程的创建需要分配大量的资源并为其创建一个独立的地址空间,而线程只需要自己的栈还有寄存器等即可,所以线程创建的代价也更低。
但是因为线程共享虚拟地址空间,所以他们之间的隔离程度也更小,一个线程的崩溃可能会影响到其他线程。而进程不会,所以进程更稳健。