线程与进程有很多类似的性质,因此人们习惯上也陈线程为轻量级进程(lightweight process, LWP),是CPU调度和分派的基本单位;而传统意义上的进程则被称为重量级进程(heavyweight process, HWP),从现代角度看,就是只拥有一个线程的进程。
从调度,并发性,系统开销和拥有资源四方面对线程和进程进行比较。
调度:
线程作为CPU调度和分派的基本单位,进程则作为资源拥有的基本单位。同一
进程中的线程切换不会引起进程切换,从而避免昂贵的系统调用,但是从一个进程
的线程切换到另一个进程的线程时,依然会引起进程切换。
并发性:
在引入线程的操作系统中,不仅进程间可以并发执行,而且在一个进程中的多
个线程之间也可以并发执行,因而是操作系统有更好的并发性,从而能更有效地使
用系统资源和提高系统的吞吐量。
系统开销:
由于在创建或者撤销进程时,系统都要为之分配或回收资源,因此,操作系统
所付出的开销将显著地大于创建或者撤消线程的开销。在进程切换时,涉及到整个
当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置,而线程切
换只需要保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。同时,
由于同一个进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的
实现也变得比较容易。
拥有资源:
进程是拥有系统资源的一个独立的单位,它可以拥有自己的资源。线程自己一
般不拥有资源(有一点必不可少的资源,程序计数器,一组寄存器和栈),但它可以
访问其隶属进程的资源,如进程代码段,数据段以及系统资源(已打开的文件,I/O
设备等)。