进程与线程

进程

进程是资源分配的基本单元.

进程控制块(Process Control Block, PCB)描述进程的基本信息和运行状态, 所谓的创建进程和撤销进程, 都是对于PCB的操作.

线程

线程是独立调度的基本单位.

一个进程中可以有多个线程, 他们共享进程资源.

区别

  1. 拥有资源

    进程是资源分配的基本单位, 但是线程不拥有资源, 线程可以访问隶属进程的资源.

  2. 调度

    线程是独立调度的基本单位, 在同一进程中, 线程的切换不会引起进程切换, 从一个进程内的线程切换到另一个进程的线程时会引起进程的切换.

  3. 系统开销

    由于创建或撤销进程时, 系统都要为之分配或回收资源, 如内存空间, I/O设备, 所付出的开销远大于创建或撤销线程时的开销. 类似的, 在进行进程切换, 设计当前执行进程CPU环境的保存以及新调度进程CPU环境的设置, 而线程切换时只需要保存和设置少量寄存器内容, 开销很小.

  4. 通信方面

    进程间通信(IPC)需要进程同步和互斥手段的辅助, 以保证数据的一致性. 而线程间可以通过直接读/写同一进程中的数据段(如全局变量)来进行通信.