进程和线程在Linux内核源码中的表示都是一样的,都是task_struct一个结构体来描述的
本质区别:进程是资源分配的基本单位,线程是CPU调度的基本单位
其他方面的比较:并发性、内存、所属关系、健壮性等
并发性,通常看切换效率。最主要的是上下文切换,包括CPU 寄存器、程序计数器、用户空间的信息、内核空间 pcb,如果是进程切换,所有的信息都需要切换;多个进程间的线程切换和进程切换是一样的;如果只是在一个进程中,多个线程之间切换,只需要切换CPU寄存器和程序寄存器(运行的相对应的信息),
所以进程切换效率低,线程切换效率高。
内存,进程有独立的虚拟地址空间,线程没有独立的地址空间,但有栈、PC、本地存储等独立空间
所属关系,一个线程属于一个进程,一个进程可以拥有多个线程
健壮性,进程的健壮性高(有独立的运行环境,一个进程崩溃,不会影响其他进程)
在Linux内核源码中,进程和线程都用task_struct结构体描述。本质上,进程是资源分配基本单位,线程是CPU调度基本单位。还从并发性、内存、所属关系、健壮性等方面进行比较,如进程切换效率低、有独立虚拟地址空间、健壮性高等。
829

被折叠的 条评论
为什么被折叠?



