20170925_线程和进程的区别

来源:互联网 发布:linux下安装jenkins 编辑:程序博客网 时间:2024/06/05 06:11

20170925_线程和进程的区别

从以下几方面进行阐述:

1、调度。

在传统操作系统中,拥有资源和被操作系统独立调度的基本单位都是进程。但是引入线程之后,线程成为操作系统独立调度的基本单位,而进程则仍是拥有系统资源的独立单位。

在同一进程中,线程的切换不会引起进程的切换。但是,不同进程中线程的切换势必会引起进程之间的切换。

2、拥有资源。

不论是传统的还是引入线程概念的操作系统,进程都是拥有系统资源的基本单位,线程不拥有资源(除了一点线程运行时所必须要的资源),但是线程共享其隶属进程的系统资源。

3、并发性。

在引入线程的操作系统中,不仅操作系统内的进程可以并发执行,而且同一进程内的线程也可以并发执行,从而可以使操作系统具有更好的并发性,大大提高了系统吞吐量。

4、系统开销。

创建和销毁进程时,系统都要为之分配或回收资源,如内存空间、IO设备等,因此操作系统所付出的开销远大于创建或撤销线程的开销。

类似的,在进行进程切换时,涉及当前执行进程CPU环境的保护以及新调度的进程CPU环境的设置,这是需要花时间的;而线程切换时只需要保存和设置少量寄存器内容,因此开销很小。

另外,由于同一进程内的多个线程共享进程的地址空间,因此这些线程之间的同步和通信都比较容易实现。

5、地址空间。

进程的地址空间是相互独立的,同一进程内的线程是共享进程的资源的,某一个进程内的线程对于其他进程来说是不可见的。

6、通信方面。

进程之间的通信需要特殊的IPC机制,需要借助操作系统,而进程内的线程之间的通信可以直接读写数据段(如全局变量等)来进行通信。