线程与进程的比较
1.调度单位
传统操作系统中,拥有资源的基本单位和独立调度独立调度的基本单位都是进程,进程具有独立性;再引入进程的操作系统中,进程只作为资源分配的基本单位,线程则作为调度和分派的基本单位,县城可以不背负资源或者只需要很少的资源,可以轻装上阵,显著提高系统的并发执行程度。
2.并发性
在引入线程的操作系统中,不仅进程之间可以并发执行,作为比进程更小的执行单位,一个进程之间的多个线程之间也是可以并发执行,因而操作系统具有更好的并发性,从而更有效的使用系统中的资源,提高系统的吞吐量。
3.拥有资源
传统的操作系统中,进程使拥有资源的独立单位,在多进程环境中,进程仍然有一个进程控制快和用户地址空间。线程本身基本上不用有资源,只拥有少量必不可少的资源。线程具有共享性,属于同一进程的线程共享进程的资源。一个进程的代码段,数据段及系统资源,如打开的文件,设备等,可供同一进程的左右进程共享。
4.系统开销
由于创建和撤销进程时,系统都要为之分配或回收资源,操作系统所付出的时间和空间开销将显著的大于重建和撤销线程的开销。在一个进程中川建一个新的线程比一个全新的进程做要的时间要少,撤销一个线程比撤销一个撤销一个进程要的时间少,进程切换涉及当前进程的CPU环境的保存及新被带调度运行的进程CPU环境的设置,包括程序地址和数据地址等,而线程的切换只需要保存和设置少量寄存器的内容。线程之间的切换比进程之间的切换话费的时间要少。由于同一进程中的多个线程具有相同的地址空间,同一进程中的线程共享存储空间和文件,他们无需内核的支持就可以相互通信。