进程与线程的区别

基本概念

进程:资源分配的基本单位 一个软件就是一个进程
线程:cpu调度的基本单位 一个进程可以有多个线程在运行

相同

进程和线程在Linux中都是由task_struct结构体定义的

不同

并发性

  • 进程切换效率低
    需要上下文切换(cpu寄存器、程序计数器、用户空间信息、内核空间pcb)
  • 线程切换效率高
    需要上下文切换(cpu寄存器、程序计数器)

内存

  • 进程有独立的虚拟地址空间
  • 线程没有独立的虚拟地址空间,共享进程的内存,有栈、程序计数器、本地存储等独立空间。

所属关系

  • 线程必须依靠进程才能运行
  • 进程包含多个线程

健壮性

  • 进程的健壮性更好
    一个进程出错不会影响到其他进程(进程间是相对独立的)
    一个线程出错整个进程都会出错。